package org.occiware.clouddesigner.occi.xtext.tests; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collections; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.occiware.clouddesigner.occi.OCCIPackage; import org.occiware.clouddesigner.occi.xtext.OCCIStandaloneSetup; public final class XTextUtils { public static ResourceSet resourceSet = new ResourceSetImpl(); static { resourceSet.getPackageRegistry().put(OCCIPackage.eNS_URI, OCCIPackage.eINSTANCE); OCCIStandaloneSetup.doSetup(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("occie", new XMIResourceFactoryImpl()); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("occic", new XMIResourceFactoryImpl()); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("txt", resourceSet.getResourceFactoryRegistry().getFactory(URI.createURI("temp.occi"))); } public static void parse(URI input, URI output) throws IOException { Resource source = resourceSet.getResource(input, true); // SUPER IMPORTANT for resolving cross-references. EcoreUtil.resolveAll(source); Resource target = resourceSet.createResource(output); target.getContents().addAll(source.getContents()); target.save(Collections.EMPTY_MAP); } public static void serialize(URI input, URI output) throws IOException { Resource source = resourceSet.getResource(input, true); Resource target = resourceSet.createResource(output); target.getContents().addAll(source.getContents()); target.save(Collections.EMPTY_MAP); } public static String getFileAsString(File file) throws IOException { String result = ""; FileInputStream fis = null; BufferedInputStream bis = null; BufferedReader dis = null; StringBuffer sb = new StringBuffer(); fis = new FileInputStream(file); bis = new BufferedInputStream(fis); dis = new BufferedReader(new InputStreamReader(bis)); while (dis.ready()) { sb.append(dis.readLine() + "\n"); } fis.close(); bis.close(); dis.close(); result = sb.toString(); return result; } }