jet templates added
diff --git a/org.eclipse.emf.refactor.smells.generator/templates/JavaFinderClassTemplate.javajet b/org.eclipse.emf.refactor.smells.generator/templates/JavaFinderClassTemplate.javajet
new file mode 100644
index 0000000..4bedb37
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.generator/templates/JavaFinderClassTemplate.javajet
@@ -0,0 +1,20 @@
+<%@ jet package="org.eclipse.emf.refactor.smells" class="ModelSmellFinderClass"
+imports="org.eclipse.emf.refactor.smells.generator.core.ModelSmellInfo"%>
+<%ModelSmellInfo info = (ModelSmellInfo)argument; %>
+package <%=info.getPackage()%>;
+
+import java.util.LinkedList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.smells.interfaces.IModelSmellFinderClass;
+
+
+public final class <%=info.getClassName()%> implements IModelSmellFinderClass {
+
+ @Override
+ public LinkedList<LinkedList<EObject>> findSmell(EObject root) {
+ LinkedList<LinkedList<EObject>> results = new LinkedList<LinkedList<EObject>>();
+ // TODO Fill results
+ return results;
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.smells.generator/templates/MetricBasedFinderClassTemplate.javajet b/org.eclipse.emf.refactor.smells.generator/templates/MetricBasedFinderClassTemplate.javajet
new file mode 100644
index 0000000..f665afe
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.generator/templates/MetricBasedFinderClassTemplate.javajet
@@ -0,0 +1,55 @@
+<%@ package="org.eclipse.emf.refactor.smells" class="ModelSmellFinderClass"
+imports="org.eclipse.emf.refactor.smells.generator.core.MetricBasedModelSmellInfo"%>
+<%MetricBasedModelSmellInfo info = (MetricBasedModelSmellInfo)argument; %>
+package <%=info.getPackage()%>;
+
+import java.util.LinkedList;
+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.smells.core.MetricBasedModelSmellFinderClass;
+
+
+public final class <%=info.getClassName()%> extends MetricBasedModelSmellFinderClass {
+
+ private String metricId = "<%=info.getMetricID()%>";
+ private Metric localMetric = Metric.getMetricInstanceFromId(metricId);
+
+ @Override
+ public LinkedList<LinkedList<EObject>> findSmell(EObject root) {
+ LinkedList<EObject> rootList = new LinkedList<EObject>();
+ rootList.add(root);
+ ICalculateClass localCalculateClass = localMetric.getCalculateClass();
+ double globalLimit = this.getLimit();
+ return findSmellyObjectGroups(root, globalLimit, localCalculateClass);
+ }
+
+ private LinkedList<LinkedList<EObject>> findSmellyObjectGroups(EObject root, double globalLimit,
+ ICalculateClass localCalculateClass){
+ String context = localMetric.getContext();
+ LinkedList<LinkedList<EObject>> smellyEObjects = new LinkedList<LinkedList<EObject>>();
+ List<EObject> containedEObjects = root.eContents();
+ for(EObject object : containedEObjects){
+ String objectType = object.eClass().getInstanceClass().getSimpleName();
+ if(objectType.equals(context)){
+ LinkedList<EObject> rootList = new LinkedList<EObject>();
+ rootList.add(object);
+ localCalculateClass.setContext(rootList);
+ double localValue = localCalculateClass.calculate();
+ if (limitReached(localValue, globalLimit)) {
+ LinkedList<EObject> currentObjects = new LinkedList<EObject>();
+ currentObjects.add(object);
+ smellyEObjects.add((currentObjects));
+ }
+ } else {
+ smellyEObjects.addAll(findSmellyObjectGroups(object, globalLimit, localCalculateClass));
+ }
+ }
+ return smellyEObjects;
+ }
+
+ private boolean limitReached(double localValue, double globalLimit) {
+ return (localValue <%=info.getComparator()%> globalLimit);
+ }
+}
\ No newline at end of file