]>
Commit | Line | Data |
---|---|---|
e5e1ddb4 | 1 | package no.uio.ifi.refaktor.analyze.checkers; |
5748b416 EK |
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 | ||
39c13d6f | 7 | public 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 | } |