package hudson.plugins.cigame; import net.sf.json.JSONObject; import org.kohsuke.stapler.StaplerRequest; import hudson.Extension; import hudson.model.AbstractProject; import hudson.plugins.cigame.model.RuleBook; import hudson.plugins.cigame.model.RuleSet; import hudson.plugins.cigame.rules.build.BuildRuleSet; import hudson.plugins.cigame.rules.plugins.checkstyle.CheckstyleRuleSet; import hudson.plugins.cigame.rules.plugins.findbugs.FindBugsRuleSet; import hudson.plugins.cigame.rules.plugins.opentasks.OpenTasksRuleSet; import hudson.plugins.cigame.rules.plugins.pmd.PmdRuleSet; import hudson.plugins.cigame.rules.plugins.violation.ViolationsRuleSet; import hudson.plugins.cigame.rules.plugins.warnings.WarningsRuleSet; import hudson.plugins.cigame.rules.unittesting.UnitTestingRuleSet; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.Publisher; @Extension public class GameDescriptor extends BuildStepDescriptor<Publisher> { public static final String ACTION_LOGO_LARGE = "/plugin/ci-game/icons/game-32x32.png"; //$NON-NLS-1$ public static final String ACTION_LOGO_MEDIUM = "/plugin/ci-game/icons/game-22x22.png"; //$NON-NLS-1$ private transient RuleBook rulebook; private boolean namesAreCaseSensitive = true; public GameDescriptor() { super(GamePublisher.class); load(); } /** * Returns the default rule book * * @return the rule book that is configured for the game. */ public RuleBook getRuleBook() { if (rulebook == null) { rulebook = new RuleBook(); addRuleSetIfAvailable(rulebook, new BuildRuleSet()); addRuleSetIfAvailable(rulebook, new UnitTestingRuleSet()); addRuleSetIfAvailable(rulebook, new OpenTasksRuleSet()); addRuleSetIfAvailable(rulebook, new ViolationsRuleSet()); addRuleSetIfAvailable(rulebook, new PmdRuleSet()); addRuleSetIfAvailable(rulebook, new FindBugsRuleSet()); addRuleSetIfAvailable(rulebook, new WarningsRuleSet()); addRuleSetIfAvailable(rulebook, new CheckstyleRuleSet()); } return rulebook; } private void addRuleSetIfAvailable(RuleBook book, RuleSet ruleSet) { if (ruleSet.isAvailable()) { book.addRuleSet(ruleSet); } } @Override public String getDisplayName() { return Messages.Plugin_Title(); } @Override public GamePublisher newInstance(StaplerRequest req, JSONObject formData) throws hudson.model.Descriptor.FormException { return new GamePublisher(); } @Override public boolean configure(StaplerRequest req, JSONObject json) throws FormException { req.bindJSON(this, json); save(); return true; } public boolean getNamesAreCaseSensitive() { return namesAreCaseSensitive; } public void setNamesAreCaseSensitive(boolean namesAreCaseSensitive) { this.namesAreCaseSensitive = namesAreCaseSensitive; } @Override public boolean isApplicable(Class<? extends AbstractProject> arg0) { return true; } }