package slacknotifications.teamcity.settings.converter; import java.util.HashMap; import java.util.Map; public final class OldStyleBuildState { public static final Integer BUILD_STARTED = Integer.parseInt("00000001",2); public static final Integer BUILD_FINISHED = Integer.parseInt("00000010",2); public static final Integer BUILD_CHANGED_STATUS = Integer.parseInt("00000100",2); public static final Integer BEFORE_BUILD_FINISHED = Integer.parseInt("00001000",2); public static final Integer RESPONSIBILITY_CHANGED = Integer.parseInt("00010000",2); public static final Integer BUILD_INTERRUPTED = Integer.parseInt("00100000",2); public static final Integer ALL_ENABLED = Integer.parseInt("11111111",2); private static final Map<Integer, String> shortNameMessages; private static final Map<Integer, String> descriptionMessages; static { shortNameMessages = new HashMap<Integer, String>(); shortNameMessages.put(BUILD_STARTED, "buildStarted"); shortNameMessages.put(BUILD_FINISHED, "buildFinished"); shortNameMessages.put(BUILD_CHANGED_STATUS, "statusChanged"); shortNameMessages.put(BEFORE_BUILD_FINISHED, "beforeBuildFinish"); shortNameMessages.put(RESPONSIBILITY_CHANGED, "responsibilityChanged"); shortNameMessages.put(BUILD_INTERRUPTED, "buildInterrupted"); descriptionMessages = new HashMap<Integer, String>(); descriptionMessages.put(BUILD_STARTED, "started"); descriptionMessages.put(BUILD_FINISHED, "finished"); descriptionMessages.put(BUILD_CHANGED_STATUS, "changed status"); descriptionMessages.put(BEFORE_BUILD_FINISHED, "nearly finished"); descriptionMessages.put(RESPONSIBILITY_CHANGED, "changed responsibility"); descriptionMessages.put(BUILD_INTERRUPTED, "been interrupted"); } private OldStyleBuildState(){} /** * Takes the currentBuildState, for which the SlackNotification is being triggered * and compares it against the build states for which this SlackNotification is configured * to notify. * * @param currentBuildState * @param buildStatesToNotify * @return Whether or not the slacknotifications should trigger for the current build state. */ public static boolean enabled(Integer currentBuildState, Integer buildStatesToNotify) { return ((currentBuildState & buildStatesToNotify) > 0); } /** * Convert build state Integer into short string * * @param Build state as an Integer constant. * @return A string representing the shortname of the state. Is used in messages. */ public static String getShortName(Integer stateInt) { return shortNameMessages.get(stateInt); } /** * Convert build state Integer into descriptive string * * @param Build state as an Integer constant. * @return A string that fits into the sentence "The build has...<state>" */ public static String getDescriptionSuffix(Integer stateInt) { return descriptionMessages.get(stateInt); } }