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;
}
}