]> git.uio.no Git - ifi-stolz-refaktor.git/blobdiff - case-study/refaktor-before/src/no/uio/ifi/refaktor/analyze/checkers/DoubleClassInstanceCreationChecker.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / refaktor-before / src / no / uio / ifi / refaktor / analyze / checkers / DoubleClassInstanceCreationChecker.java
diff --git a/case-study/refaktor-before/src/no/uio/ifi/refaktor/analyze/checkers/DoubleClassInstanceCreationChecker.java b/case-study/refaktor-before/src/no/uio/ifi/refaktor/analyze/checkers/DoubleClassInstanceCreationChecker.java
new file mode 100644 (file)
index 0000000..8a3419e
--- /dev/null
@@ -0,0 +1,41 @@
+package no.uio.ifi.refaktor.analyze.checkers;
+
+import no.uio.ifi.refaktor.analyze.CollectorManager;
+import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector;
+import no.uio.ifi.refaktor.analyze.exceptions.IllegalExpressionFoundException;
+import no.uio.ifi.refaktor.analyze.exceptions.IllegalStatementFoundException;
+import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
+
+import org.eclipse.jdt.core.dom.ClassInstanceCreation;
+
+class DoubleClassInstanceCreationChecker extends PropertyCollector implements Checker {
+
+       public DoubleClassInstanceCreationChecker(CompilationUnitTextSelection selection) {
+               super(selection);
+       }
+
+       @Override
+       public void check() throws IllegalStatementFoundException, IllegalExpressionFoundException {
+               CollectorManager.collectProperties(selection, this);
+       }
+
+       @Override
+       public void clearData() {
+       }
+
+       @Override
+       public boolean visit(ClassInstanceCreation node) {
+               if (!nodeInSelection(node))
+                       return false;
+               
+               if (isDoubleClassInstanceCreation(node))
+                       node.accept(new NoReferenceToFieldChecker(node));
+
+               return true;
+       }
+
+       private boolean isDoubleClassInstanceCreation(ClassInstanceCreation node) {
+               return node.getParent() instanceof ClassInstanceCreation;
+       }
+
+}