package fitnesse.revisioncontrol.svn.client; import fitnesse.html.HtmlTag; import fitnesse.revisioncontrol.ActionStyle; import static fitnesse.revisioncontrol.ActionStyle.*; import fitnesse.revisioncontrol.RevisionControlHtmlUtils; import org.tmatesoft.svn.core.wc.SVNStatus; import org.tmatesoft.svn.core.wc.SVNStatusType; import java.util.HashMap; import java.util.Map; public class SVNStatusEventTags { private static Map<SVNStatusType, HtmlTag> tagsByType = new HashMap<SVNStatusType, HtmlTag>(); static { registerStatusType(SVNStatusType.STATUS_NONE, "", OK); registerStatusType(SVNStatusType.STATUS_NORMAL, "", OK); registerStatusType(SVNStatusType.STATUS_MODIFIED, "Modified", OK); registerStatusType(SVNStatusType.STATUS_CONFLICTED, "Conflicted", ALERT); registerStatusType(SVNStatusType.STATUS_DELETED, "Deleted", OK); registerStatusType(SVNStatusType.STATUS_ADDED, "Added", OK); registerStatusType(SVNStatusType.STATUS_UNVERSIONED, "Unversioned", WARNING); registerStatusType(SVNStatusType.STATUS_EXTERNAL, "External", WARNING); registerStatusType(SVNStatusType.STATUS_IGNORED, "Ignored", WARNING); registerStatusType(SVNStatusType.STATUS_MISSING, "Missing", ALERT); registerStatusType(SVNStatusType.STATUS_MERGED, "Merged", ALERT); registerStatusType(SVNStatusType.STATUS_INCOMPLETE, "Incomplete", ALERT); registerStatusType(SVNStatusType.STATUS_OBSTRUCTED, "Obstructed", ALERT); registerStatusType(SVNStatusType.STATUS_REPLACED, "Replaced", ALERT); registerStatusType(SVNStatusType.INAPPLICABLE, "Inapplicable", ALERT); registerStatusType(SVNStatusType.UNKNOWN, "Unknown", ALERT); tagsByType.put(SVNStatusType.UNCHANGED, RevisionControlHtmlUtils.makeTextTag(" ")); registerStatusType(SVNStatusType.MISSING, "Missing", WARNING); registerStatusType(SVNStatusType.OBSTRUCTED, "Obstructed", ALERT); registerStatusType(SVNStatusType.CHANGED, "Updated", OK); registerStatusType(SVNStatusType.MERGED, "Merged", WARNING); registerStatusType(SVNStatusType.CONFLICTED, "Conflicted", ALERT); registerStatusType(SVNStatusType.CONFLICTED_UNRESOLVED, "Conflicted", ALERT); registerStatusType(SVNStatusType.LOCK_INAPPLICABLE, "Lock inapplicable", ALERT); registerStatusType(SVNStatusType.LOCK_UNKNOWN, "Lock unkown", ALERT); registerStatusType(SVNStatusType.LOCK_UNCHANGED, "Lock unchanged", OK); registerStatusType(SVNStatusType.LOCK_LOCKED, "File locked", ALERT); registerStatusType(SVNStatusType.LOCK_UNLOCKED, "File unlocked", ALERT); } private static void registerStatusType(SVNStatusType type, String title, ActionStyle style) { tagsByType.put(type, RevisionControlHtmlUtils.makeTextTag(title, style.getStyle())); } public static void verifyStatusKnown(SVNStatus status) { verifyStatusTypeKnown(status.getContentsStatus()); verifyStatusTypeKnown(status.getPropertiesStatus()); } public static void verifyStatusTypeKnown(SVNStatusType statusType) { if (tagsByType.get(statusType) == null) System.err.println( "\n" + "###########################################################################\n" + "########### " + statusType + " not recognized! The fitnesse svn plugin and svnkit are not compatible!\n" + "###########################################################################\n" + "\n"); } public static Map<SVNStatusType, HtmlTag> getTagsByType() { return tagsByType; } public static HtmlTag getTag(SVNStatusType type) { verifyStatusTypeKnown(type); return tagsByType.get(type); } }