diff options
author | tarendt | 2014-03-03 04:18:42 +0000 |
---|---|---|
committer | tarendt | 2014-03-03 04:18:42 +0000 |
commit | f0dde124b64dc5c9c7502f96fa4f4c6036581a25 (patch) | |
tree | 870da5916979f08c1a400deebfe139f01a7ab2fa | |
parent | 1dfe23d3098b519671fa99e7169ac17fdb054d87 (diff) | |
download | org.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
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());
+ }
+
+}
|