]> git.uio.no Git - ifi-stolz-refaktor.git/blame - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/checkers/LastStatementFinder.java
Some talks, mostly identical.
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / analyze / checkers / LastStatementFinder.java
CommitLineData
e5e1ddb4 1package no.uio.ifi.refaktor.analyze.checkers;
5748b416
EK
2
3import org.eclipse.jdt.core.dom.ASTNode;
4import org.eclipse.jdt.core.dom.ASTVisitor;
5import org.eclipse.jdt.core.dom.Statement;
6
39c13d6f 7public class LastStatementFinder extends ASTVisitor {
b3d0ff3a 8 private final ASTNode parent;
5748b416
EK
9 private Statement lastStatement;
10
b3d0ff3a
EK
11 public LastStatementFinder(ASTNode parent) {
12 this.parent = parent;
5748b416
EK
13 }
14
15 @Override
16 public boolean preVisit2(ASTNode node) {
b3d0ff3a 17 if (node == parent)
5748b416
EK
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}