001 package com.hammurapi.eventbus.snapshot.io;
002
003 import java.io.File;
004 import java.io.IOException;
005
006 import org.eclipse.emf.common.util.EList;
007 import org.eclipse.emf.common.util.URI;
008 import org.eclipse.emf.ecore.EObject;
009 import org.eclipse.emf.ecore.resource.Resource;
010 import org.eclipse.emf.ecore.resource.ResourceSet;
011 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
012 import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
013
014 import com.hammurapi.convert.ConvertingService;
015 import com.hammurapi.eventbus.EventBusException;
016 import com.hammurapi.extract.Predicate;
017
018 /**
019 * Class to dump predicates into snapshot model for troubleshooting.
020 * @author Pavel Vlasov
021 */
022 public class PredicateOutput {
023
024
025 public static void output(Predicate<?, ?> predicate, File out) {
026
027 com.hammurapi.eventbus.snapshot.Predicate sp = ConvertingService.convert(predicate, com.hammurapi.eventbus.snapshot.Predicate.class);
028
029 ResourceSet resourceSet = new ResourceSetImpl();
030 // Register the appropriate resource factory to handle all file extensions.
031 //
032 resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
033
034 URI uri = URI.createFileURI(out.getAbsolutePath());
035 Resource predicateResource = resourceSet.createResource(uri);
036 EList<EObject> contents = predicateResource.getContents();
037 contents.add(sp);
038 try {
039 predicateResource.save(null);
040 } catch (IOException e) {
041 throw new EventBusException("Could not save snapshot: "+e, e);
042 }
043 }
044
045 }