package no.uio.ifi.refaktor.analyze.collectors; import no.uio.ifi.refaktor.utils.CompilationUnitTextSelection; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Statement; public class LastStatementCollector extends PropertyCollector { private final ASTNode coveringNode; private Statement lastStatement; public LastStatementCollector(CompilationUnitTextSelection selection, ASTNode coveringNode) { super(selection); this.coveringNode = coveringNode; } @Override public boolean preVisit2(ASTNode node) { if (node == coveringNode) return true; if (!nodeInSelection(node)) return false; if (node instanceof Statement && isPlacedAfterLastStatement(node)) { lastStatement = (Statement) node; } return false; } private boolean isPlacedAfterLastStatement(ASTNode node) { if (lastStatement == null) return true; int nodeEndPosition = node.getStartPosition() + node.getLength(); int lastStatementEndPosition = lastStatement.getStartPosition() + lastStatement.getLength(); return nodeEndPosition > lastStatementEndPosition; } public Statement getLastStatement() { return lastStatement; } @Override public void clearData() { lastStatement = null; } }