Added option to filter out the analysis features on the plantUML view
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/AnalyseTraceModel.java b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/AnalyseTraceModel.java new file mode 100644 index 0000000..aeb6dfc --- /dev/null +++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/AnalyseTraceModel.java
@@ -0,0 +1,75 @@ +package org.eclipse.capra.ui.plantuml; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel; +import org.eclipse.capra.GenericTraceMetaModel.RelatedTo; +import org.eclipse.capra.core.adapters.Connection; +import org.eclipse.capra.core.adapters.TraceMetaModelAdapter; +import org.eclipse.capra.core.adapters.TracePersistenceAdapter; +import org.eclipse.capra.core.helpers.ExtensionPointHelper; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +public class AnalyseTraceModel { + + private static TraceMetaModelAdapter traceAdapter = ExtensionPointHelper.getTraceMetamodelAdapter().get(); + private static TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get(); + private static ResourceSet resource = new ResourceSetImpl(); + private static EObject traceModel = persistenceAdapter.getTraceModel(resource); + private static GenericTraceModel tModel = (GenericTraceModel) traceModel; + + public static double getThresholdPerTraceaLinkSet() { + + Set<EObject> allItems = new HashSet<>(); + for (RelatedTo trace : tModel.getTraces()) { + allItems.addAll(trace.getItem()); + } + + List<Integer> numberofConnections = new ArrayList<>(); + + for (EObject item : allItems) { + numberofConnections.add(traceAdapter.getConnectedElements(item, traceModel).size()); + } + + double sum = 0; + double avg = 0; + for (double i : numberofConnections) { + sum = sum + i; + } + avg = sum / numberofConnections.size(); + + double intermediateSum = 0; + for (double i : numberofConnections) { + double n = i - avg; + intermediateSum = intermediateSum + Math.pow(n, 2); + } + intermediateSum = intermediateSum / numberofConnections.size(); + double stdv = Math.sqrt(intermediateSum); + return stdv + avg; + + } + + public static int getNumberOfNodesInNetwork(EObject selection) { + + List<Connection> connections = traceAdapter.getTransitivelyConnectedElements(selection, + persistenceAdapter.getTraceModel(selection.eResource().getResourceSet())); + + Set<EObject> elements = new HashSet<>(); + for (Connection c : connections) { + elements.add(c.getOrigin()); + elements.addAll(c.getTargets()); + } + + return elements.size(); + + } + + // Number of connections in a sub network. Total reachable connections from + // one node + +}
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/ShowAnalysisFeatures.java b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/ShowAnalysisFeatures.java new file mode 100644 index 0000000..60c2721 --- /dev/null +++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/ShowAnalysisFeatures.java
@@ -0,0 +1,47 @@ +package org.eclipse.capra.ui.plantuml; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.preferences.InstanceScope; +import org.osgi.service.prefs.BackingStoreException; +import org.osgi.service.prefs.Preferences; + +public class ShowAnalysisFeatures extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + if (isShowAnalysis()) + setAnalysis(false); + else + setAnalysis(true); + + return null; + } + + public static boolean isShowAnalysis() { + Preferences showAnalysis = getPreference(); + + return showAnalysis.get("option", "dontShow").equals("Show"); + } + + private static Preferences getPreference() { + Preferences preferences = InstanceScope.INSTANCE.getNode("org.eclipse.capra.ui.plantuml.showAnalysisFeatures"); + Preferences transitivity = preferences.node("Show"); + return transitivity; + } + + public static void setAnalysis(boolean value) { + Preferences transitivity = getPreference(); + + transitivity.put("option", value ? "Show" : "dontShow"); + + try { + // forces the application to save the preferences + transitivity.flush(); + } catch (BackingStoreException e) { + e.printStackTrace(); + } + } + +}