]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/refaktor-before/src/no/uio/ifi/refaktor/analyze/checkers/LastStatementFinder.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / refaktor-before / src / no / uio / ifi / refaktor / analyze / checkers / LastStatementFinder.java
1 package no.uio.ifi.refaktor.analyze.checkers;
2
3 import org.eclipse.jdt.core.dom.ASTNode;
4 import org.eclipse.jdt.core.dom.ASTVisitor;
5 import org.eclipse.jdt.core.dom.Statement;
6
7 class LastStatementFinder extends ASTVisitor {
8         private final ASTNode parent;
9         private Statement lastStatement;
10
11         public LastStatementFinder(ASTNode parent) {
12                 this.parent = parent;
13         }
14
15         @Override
16         public boolean preVisit2(ASTNode node) {
17                 if (node == parent)
18                         return true;
19                 
20                 if (node instanceof Statement && isPlacedAfterLastStatement(node)) {
21                         lastStatement = (Statement) node;
22                 }
23
24                 return false;
25         }
26
27         private boolean isPlacedAfterLastStatement(ASTNode node) {
28                 if (lastStatement == null)
29                         return true;
30                 
31                 int nodeEndPosition = node.getStartPosition() + node.getLength();
32                 int lastStatementEndPosition = lastStatement.getStartPosition() + lastStatement.getLength();
33                 return nodeEndPosition > lastStatementEndPosition;
34         }
35
36         public Statement getLastStatement() {
37                 return lastStatement;
38         }
39 }