package fitnesse.revisioncontrol.svn; import fitnesse.revisioncontrol.RevisionControlOperation; import static fitnesse.revisioncontrol.RevisionControlOperation.*; import fitnesse.revisioncontrol.State; public abstract class SVNState implements State { private String state; public static final SVNState VERSIONED = new Versioned("Versioned"); public static final SVNState UNKNOWN = new Unknown("Unknown"); public static final SVNState DELETED = new Deleted("Deleted"); public static final SVNState ADDED = new Added("Added"); protected SVNState(String state) { this.state = state; } public boolean isUnderRevisionControl() { return true; } public boolean isCheckedOut() { return true; } public boolean isDeleted() { return false; } @Override public String toString() { return state; } protected boolean contains(String msg, String searchString) { return msg.indexOf(searchString) != -1; } } class Versioned extends SVNState { protected Versioned(String state) { super(state); } public RevisionControlOperation[] operations() { return new RevisionControlOperation[]{CHECKIN, UPDATE, REVERT, STATUS}; } public boolean isCheckedIn() { return true; } } class Unknown extends SVNState { protected Unknown(String state) { super(state); } public RevisionControlOperation[] operations() { return new RevisionControlOperation[]{ADD}; } @Override public boolean isUnderRevisionControl() { return false; } public boolean isCheckedIn() { return false; } @Override public boolean isCheckedOut() { return false; } } class Deleted extends SVNState { protected Deleted(String state) { super(state); } public RevisionControlOperation[] operations() { return new RevisionControlOperation[]{CHECKIN, REVERT, STATUS}; } public boolean isCheckedIn() { return true; } @Override public boolean isDeleted() { return true; } } class Added extends SVNState { protected Added(String state) { super(state); } public RevisionControlOperation[] operations() { return new RevisionControlOperation[]{CHECKIN, REVERT, STATUS}; } public boolean isCheckedIn() { return false; } }