new UML metrics context Model added
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());
+	}
+
+}