Loading de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/T3Q.java +5 −1 Original line number Diff line number Diff line Loading @@ -95,6 +95,10 @@ public class T3Q { TTCN3ResourceProvider resourceProvider = new TTCN3ResourceProvider(inputPaths, logger, activeProfile); resourceProvider.loadResources(); resourceProvider.analyzeResources(); // TODO: this should be a configurable option resourceProvider.createXMI(); // only for testing purposes resourceProvider.printStatistics(); } Loading de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3ResourceProvider.java +65 −2 Original line number Diff line number Diff line Loading @@ -4,17 +4,24 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.DirectoryFileFilter; import org.apache.commons.io.filefilter.RegexFileFilter; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.Resource.Diagnostic; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.util.Diagnostician; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.resource.XtextResourceSet; import org.eclipse.xtext.validation.FeatureBasedDiagnostic; Loading Loading @@ -97,7 +104,7 @@ public class TTCN3ResourceProvider { public void analyzeResources() { for (Resource r : resourceSet.getResources()) { System.out.println("Analyzing file: " + r.getURI().lastSegment() + " ..."); System.out.println("Analyzing file: " + r.getURI().devicePath().replaceFirst("///", "") + " ..."); stopwatch.start(); EcoreUtil.resolveAll(r); Loading Loading @@ -204,4 +211,60 @@ public class TTCN3ResourceProvider { System.out.println('\t' + "Test Suite Modularization: " + TTCN3StatisticsProvider.getInstance().getCountModularization()); } } public void createXMI() { for (Resource r : resourceSet.getResources()) { String extension = fileExtensionOrPath(r.getURI().devicePath(), true) + "m"; storeResourceContents(r.getContents(), r.getURI().devicePath() + "m", extension); } } @SuppressWarnings({ "unchecked", "rawtypes" }) private void storeResourceContents(EList<EObject> contents, String outputPath, String extension) { //TODO: duplicated from loadResourceFromXMI => move to a more appropriate location Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; Map<String, Object> m = reg.getExtensionToFactoryMap(); m.put(extension, new XMIResourceFactoryImpl()); ResourceSet resSet = new ResourceSetImpl(); Resource outputResource = resSet.createResource(URI.createURI(outputPath)); outputResource.getContents().addAll(contents); try { Map options = new HashMap<>(); options.put(XMIResourceImpl.OPTION_ENCODING, "UTF-8"); // options.put(XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF, XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF_DISCARD); outputResource.save(options); } catch (IOException e) { e.printStackTrace(); } } // @SuppressWarnings({ "rawtypes", "unchecked" }) // private Resource loadResourceFromXMI(String inputPath, String extension) { // Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; // Map<String, Object> m = reg.getExtensionToFactoryMap(); // m.put(extension, new XMIResourceFactoryImpl()); // ResourceSet resSetIn = new ResourceSetImpl(); // Resource inputResource = resSetIn.createResource(URI.createURI(inputPath)); // try { // Map options = new HashMap<>(); // options.put(XMIResourceImpl.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE); //// options.put(XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF, XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF_DISCARD); // inputResource.load(options); // } catch (IOException e) { // e.printStackTrace(); // } // return inputResource; // } private static String fileExtensionOrPath(String filename, boolean extension) { String[] res = filename.split("\\."); int size = res.length; if (extension) { return res[size-1]; } else { return res[0]; } } } Loading
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/T3Q.java +5 −1 Original line number Diff line number Diff line Loading @@ -95,6 +95,10 @@ public class T3Q { TTCN3ResourceProvider resourceProvider = new TTCN3ResourceProvider(inputPaths, logger, activeProfile); resourceProvider.loadResources(); resourceProvider.analyzeResources(); // TODO: this should be a configurable option resourceProvider.createXMI(); // only for testing purposes resourceProvider.printStatistics(); } Loading
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3ResourceProvider.java +65 −2 Original line number Diff line number Diff line Loading @@ -4,17 +4,24 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.DirectoryFileFilter; import org.apache.commons.io.filefilter.RegexFileFilter; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.Resource.Diagnostic; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.util.Diagnostician; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.resource.XtextResourceSet; import org.eclipse.xtext.validation.FeatureBasedDiagnostic; Loading Loading @@ -97,7 +104,7 @@ public class TTCN3ResourceProvider { public void analyzeResources() { for (Resource r : resourceSet.getResources()) { System.out.println("Analyzing file: " + r.getURI().lastSegment() + " ..."); System.out.println("Analyzing file: " + r.getURI().devicePath().replaceFirst("///", "") + " ..."); stopwatch.start(); EcoreUtil.resolveAll(r); Loading Loading @@ -204,4 +211,60 @@ public class TTCN3ResourceProvider { System.out.println('\t' + "Test Suite Modularization: " + TTCN3StatisticsProvider.getInstance().getCountModularization()); } } public void createXMI() { for (Resource r : resourceSet.getResources()) { String extension = fileExtensionOrPath(r.getURI().devicePath(), true) + "m"; storeResourceContents(r.getContents(), r.getURI().devicePath() + "m", extension); } } @SuppressWarnings({ "unchecked", "rawtypes" }) private void storeResourceContents(EList<EObject> contents, String outputPath, String extension) { //TODO: duplicated from loadResourceFromXMI => move to a more appropriate location Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; Map<String, Object> m = reg.getExtensionToFactoryMap(); m.put(extension, new XMIResourceFactoryImpl()); ResourceSet resSet = new ResourceSetImpl(); Resource outputResource = resSet.createResource(URI.createURI(outputPath)); outputResource.getContents().addAll(contents); try { Map options = new HashMap<>(); options.put(XMIResourceImpl.OPTION_ENCODING, "UTF-8"); // options.put(XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF, XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF_DISCARD); outputResource.save(options); } catch (IOException e) { e.printStackTrace(); } } // @SuppressWarnings({ "rawtypes", "unchecked" }) // private Resource loadResourceFromXMI(String inputPath, String extension) { // Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; // Map<String, Object> m = reg.getExtensionToFactoryMap(); // m.put(extension, new XMIResourceFactoryImpl()); // ResourceSet resSetIn = new ResourceSetImpl(); // Resource inputResource = resSetIn.createResource(URI.createURI(inputPath)); // try { // Map options = new HashMap<>(); // options.put(XMIResourceImpl.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE); //// options.put(XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF, XMIResourceImpl.OPTION_PROCESS_DANGLING_HREF_DISCARD); // inputResource.load(options); // } catch (IOException e) { // e.printStackTrace(); // } // return inputResource; // } private static String fileExtensionOrPath(String filename, boolean extension) { String[] res = filename.split("\\."); int size = res.length; if (extension) { return res[size-1]; } else { return res[0]; } } }