Commit f645c0b8 authored by Leonard Faecke's avatar Leonard Faecke
Browse files

* Restructured and modularized counting of definitions

parent 258695e9
Loading
Loading
Loading
Loading
+19 −21
Original line number Diff line number Diff line
@@ -79,7 +79,6 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> {
			
			*/
			//TODO: very inefficient, better to traverse tree once, e.g.
			List<ModuleDefinition> definitions = EcoreUtil2.getAllContentsOfType(module, ModuleDefinition.class);

			//process with a stream
			
@@ -96,28 +95,9 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> {
			
			//...or with a loop
			
			//Guarantee the existence of entries in map to save if-statements later
			output.getOutput().put("TotalDef", 0);
			output.getOutput().put("ConstDef", 0);
			output.getOutput().put("FunctionDef", 0);
			output.getOutput().put("ImportDef", 0);
			output.getOutput().put("GroupDef", 0);
			output.getOutput().put("TypeDef", 0);
			output.getOutput().put("TestcaseDef", 0);
			output.getOutput().put("SignatureDef", 0);
			output.getOutput().put("AltstepDef", 0);
			output.getOutput().put("TemplateDef", 0);
			output.getOutput().put("ModuleParDef", 0);
			output.getOutput().put("ExtFunctionDef", 0);
			output.getOutput().put("ExtConstDef", 0);
			
			countDefinitions(module, output);
			
			for (ModuleDefinition d : definitions) {
				String eClassName = d.getDef().eClass().getName();
				//System.out.println("Processing " + eClassName);
				output.getOutput().put("TotalDef", output.getOutput().get("TotalDef") + 1);
				output.getOutput().put(eClassName, output.getOutput().get(eClassName) + 1);
			}
		}

		stopwatch.stop();
@@ -129,6 +109,24 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> {
		return output;
	}


	private void countDefinitions(TTCN3Module module, TTCN3Usage output) {
		System.out.println("Processing Definitions");
		List<ModuleDefinition> definitions = EcoreUtil2.getAllContentsOfType(module, ModuleDefinition.class);
		output.getOutput().put("TotalDef", definitions.size());
		
		for (ModuleDefinition d : definitions) {
			String eClassName = d.getDef().eClass().getName();
			if(output.getOutput().containsKey(eClassName)) {
				output.getOutput().put(eClassName, output.getOutput().get(eClassName) + 1);
			} else {
				output.getOutput().put(eClassName, 1);
			}
		}
		System.out.println("Definitions done");
	}
	
	
	@Override
	public TTCN3Usage call() throws Exception {
		return analyze();