]> git.uio.no Git - ifi-stolz-refaktor.git/blame - 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
CommitLineData
1b2798f6
EK
1package no.uio.ifi.refaktor.analyze.checkers;
2
3import org.eclipse.jdt.core.dom.ASTNode;
4import org.eclipse.jdt.core.dom.ASTVisitor;
5import org.eclipse.jdt.core.dom.Statement;
6
7class 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}