new UML metrics (context Operation) added
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
index e589d13..f0b7ed6 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
@@ -133,6 +133,7 @@
metric_name="NAPTC">
</metric>
</extension>
+
<extension point="org.eclipse.emf.refactor.metrics">
<metric id="org.eclipse.emf.refactor.metrics.uml24.ninppo"
metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlop.NINPPO"
@@ -141,5 +142,20 @@
metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
metric_name="NINPPO">
</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.ninpo"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlop.NINPO"
+ metric_context="Operation"
+ metric_description="Number of in-parameters within the operation"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NINPO">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.niopo"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlop.NIOPO"
+ metric_context="Operation"
+ metric_description="Number of inout-parameters within the operation"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NIOPO">
+</metric>
</extension>
+
</plugin>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlop/NINPO.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlop/NINPO.java
new file mode 100644
index 0000000..5bec048
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlop/NINPO.java
@@ -0,0 +1,28 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlop;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NINPO implements IMetricCalculator {
+
+ private final String expression =
+ "self.ownedParameter -> " +
+ "select(direction = uml::ParameterDirectionKind::in) " +
+ "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlop/NIOPO.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlop/NIOPO.java
new file mode 100644
index 0000000..fcab9b3
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlop/NIOPO.java
@@ -0,0 +1,28 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlop;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NIOPO implements IMetricCalculator {
+
+ private final String expression =
+ "self.ownedParameter -> " +
+ "select(direction = uml::ParameterDirectionKind::inout) " +
+ "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}