Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortarendt2014-03-03 04:18:42 +0000
committertarendt2014-03-03 04:18:42 +0000
commitf0dde124b64dc5c9c7502f96fa4f4c6036581a25 (patch)
tree870da5916979f08c1a400deebfe139f01a7ab2fa
parent1dfe23d3098b519671fa99e7169ac17fdb054d87 (diff)
downloadorg.eclipse.emf.refactor.examples-f0dde124b64dc5c9c7502f96fa4f4c6036581a25.tar.gz
org.eclipse.emf.refactor.examples-f0dde124b64dc5c9c7502f96fa4f4c6036581a25.tar.xz
org.eclipse.emf.refactor.examples-f0dde124b64dc5c9c7502f96fa4f4c6036581a25.zip
new UML metrics context Model added
-rw-r--r--org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml36
-rw-r--r--org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/DEPvsC.java37
-rw-r--r--org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/MaxHAgg.java52
-rw-r--r--org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NDEPM.java37
-rw-r--r--org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NTDM.java37
5 files changed, 197 insertions, 2 deletions
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
index bdd9569..aff7ef3 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
@@ -160,6 +160,14 @@
metric_name="MaxDIT">
</metric>
<metric
+ id="org.eclipse.emf.refactor.metrics.uml24.maxhagg"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.MaxHAgg"
+ metric_context="Model"
+ metric_description="Maximum of aggregation trees"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="MaxHAgg">
+ </metric>
+ <metric
id="org.eclipse.emf.refactor.metrics.uml24.gevsc"
metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.GEvsC"
metric_context="Model"
@@ -184,7 +192,7 @@
metric_name="OPvsC">
</metric>
<metric
- id="agvsc"
+ id="org.eclipse.emf.refactor.metrics.uml24.agvsc"
metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.AGvsC"
metric_context="Model"
metric_description="Ratio between number of aggregations and number of classes in the model"
@@ -192,13 +200,37 @@
metric_name="AGvsC">
</metric>
<metric
- id="asvsc"
+ id="org.eclipse.emf.refactor.metrics.uml24.asvsc"
metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.ASvsC"
metric_context="Model"
metric_description="Ratio between number of associations and number of classes in the model"
metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
metric_name="ASvsC">
</metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ntdm"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.NTDM"
+ metric_context="Model"
+ metric_description="Number of class type dependencies in the model"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NTDM">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ndepm"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.NDEPM"
+ metric_context="Model"
+ metric_description="Number of class dependencies in the model"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NDEPM">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.depvsc"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.DEPvsC"
+ metric_context="Model"
+ metric_description="Ratio between number of class dependencies and number of classes in the model"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="DEPvsC">
+ </metric>
</extension>
<extension
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/DEPvsC.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/DEPvsC.java
new file mode 100644
index 0000000..46d4b78
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/DEPvsC.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class DEPvsC implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.ndepm";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.ncm";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/MaxHAgg.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/MaxHAgg.java
new file mode 100644
index 0000000..1fa1eb8
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/MaxHAgg.java
@@ -0,0 +1,52 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.uml2.uml.Class;
+
+public class MaxHAgg implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricId = "org.eclipse.emf.refactor.metrics.uml24.hagg";
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context=context;
+ }
+
+ @Override
+ public double calculate() {
+ EList<Double> haggs = new BasicEList<Double>();
+ Metric metric = Metric.getMetricInstanceFromId(metricId);
+ IMetricCalculator calc = metric.getCalculateClass();
+ TreeIterator<EObject> iter = context.get(0).eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Class) {
+ ArrayList<EObject> context = new ArrayList<EObject>();
+ context.add(eObject);
+ calc.setContext(context);
+ haggs.add(calc.calculate());
+ }
+ }
+ return maxHAgg(haggs);
+ }
+
+ private double maxHAgg(EList<Double> doubles) {
+ Double result = 0.0;
+ for (Double d : doubles) {
+ if (d > result) {
+ result = d;
+ }
+ }
+ return result;
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NDEPM.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NDEPM.java
new file mode 100644
index 0000000..f59ed10
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NDEPM.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NDEPM implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.ntdm";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nim";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NTDM.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NTDM.java
new file mode 100644
index 0000000..ae73e63
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NTDM.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NTDM implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nactm";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nnoem";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}

Back to the top