package sk.stuba.fiit.perconik.core.java.dom.difference; import javax.annotation.Nullable; import org.eclipse.jdt.core.dom.ASTNode; import sk.stuba.fiit.perconik.core.java.dom.Nodes; import sk.stuba.fiit.perconik.utilities.SmartStringBuilder; public final class NodeModification<N extends ASTNode> extends NodeDelta<N> { private final N original; private final N revised; private NodeModification(@Nullable final N original, @Nullable final N revised) { this.original = original; this.revised = revised; } public static <N extends ASTNode> NodeModification<N> of(final N original, final N revised) { return new NodeModification<>(original, revised); } @Override public String toString(final int indent) { SmartStringBuilder builder = this.toStringBuilder(indent); builder.append("original: ").appendln(Nodes.toTypeString(this.original)); builder.tab().lines(this.original).untab(); builder.append("revised: ").appendln(Nodes.toTypeString(this.revised)); builder.tab().lines(this.revised); return builder.toString(); } @Override public N getOriginalNode() { return this.original; } @Override public N getRevisedNode() { return this.revised; } @Override public NodeDeltaType getType() { return NodeDeltaType.MODIFICATION; } }