Commit 6b59ac1f authored by Leonard Faecke's avatar Leonard Faecke
Browse files

+ Added counting of constants within a module

parent f645c0b8
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.HashMap;
import java.util.HashSet;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -97,7 +98,6 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> {
			
			
			countDefinitions(module, output);
			
		}

		stopwatch.stop();
@@ -111,10 +111,11 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> {


	private void countDefinitions(TTCN3Module module, TTCN3Usage output) {
		System.out.println("Processing Definitions");
		System.out.println("Counting Definitions");
		List<ModuleDefinition> definitions = EcoreUtil2.getAllContentsOfType(module, ModuleDefinition.class);
		output.getOutput().put("TotalDef", definitions.size());
		
		Set<Class<?>> toAnalyze = new HashSet<Class<?>>();
		for (ModuleDefinition d : definitions) {
			String eClassName = d.getDef().eClass().getName();
			if(output.getOutput().containsKey(eClassName)) {
@@ -122,10 +123,35 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> {
			} else {
				output.getOutput().put(eClassName, 1);
			}
			
			
			toAnalyze.add(d.getDef().eClass().getInstanceClass());
		}
		
		//How to generalize? Dynamic casting [d.getDef().eClass().getInstanceClass() c = (d.getDef().eClass().getInstanceClass()) d] doesn't seem to work
		//Perhaps some list of classes kept globally, easy to change and append?
		if(toAnalyze.contains(ConstDef.class)) {
			countConstants(module, output);
		}
		//if(...) ...
		
		System.out.println("Definitions done");
	}
	
	private void countConstants(TTCN3Module module, TTCN3Usage output) {
		List<ConstDef> c =EcoreUtil2.getAllContentsOfType(module, ConstDef.class);
		if(c.size() > 0) {
			for(ConstDef constant : c) {
				String name = "Constant:" + constant.getType().getPre(); //Added "Constant:" to identifier for better readability of output
				if(output.getOutput().containsKey(name)) {
					output.getOutput().replace(name, output.getOutput().get(name) + 1);
				} else {
					output.getOutput().put(name, 1);
				}
			}
		}
	}
	
	
	@Override
	public TTCN3Usage call() throws Exception {