package hudson.plugins.javancss; import hudson.Extension; import hudson.maven.MavenModule; import hudson.maven.MavenModuleSet; import hudson.model.AbstractProject; import hudson.model.Action; import hudson.plugins.helpers.AbstractPublisherImpl; import hudson.plugins.helpers.Ghostwriter; import hudson.plugins.helpers.health.HealthMetric; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.BuildStepMonitor; import hudson.tasks.Publisher; import net.sf.json.JSONObject; import org.apache.commons.beanutils.ConvertUtils; import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.StaplerRequest; /** * TODO javadoc. * * @author Stephen Connolly * @since 08-Jan-2008 21:24:06 */ public class JavaNCSSPublisher extends AbstractPublisherImpl { private String reportFilenamePattern; private JavaNCSSHealthTarget[] targets; @DataBoundConstructor public JavaNCSSPublisher(String reportFilenamePattern, JavaNCSSHealthTarget[] targets) { reportFilenamePattern.getClass(); this.reportFilenamePattern = reportFilenamePattern; this.targets = targets == null ? new JavaNCSSHealthTarget[0] : targets; } public String getReportFilenamePattern() { return reportFilenamePattern; } public JavaNCSSHealthTarget[] getTargets() { return targets; } /** * {@inheritDoc} */ @Override public boolean needsToRunAfterFinalized() { return false; } public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.BUILD; } @Extension public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl(); /** * {@inheritDoc} */ @Override public BuildStepDescriptor<Publisher> getDescriptor() { return DESCRIPTOR; } /** * {@inheritDoc} */ @Override public Action getProjectAction(AbstractProject<?, ?> project) { return new JavaNCSSProjectIndividualReport(project); } protected Ghostwriter newGhostwriter() { return new JavaNCSSGhostwriter(reportFilenamePattern, targets); } public static final class DescriptorImpl extends BuildStepDescriptor<Publisher> { /** * Do not instantiate DescriptorImpl. */ private DescriptorImpl() { super(JavaNCSSPublisher.class); } /** * {@inheritDoc} */ public String getDisplayName() { return "Publish " + PluginImpl.DISPLAY_NAME; } @Override public Publisher newInstance(StaplerRequest req, JSONObject formData) throws FormException { ConvertUtils.register(JavaNCSSHealthMetrics.CONVERTER, JavaNCSSHealthMetrics.class); return req.bindJSON(JavaNCSSPublisher.class, formData); } public boolean isApplicable(Class<? extends AbstractProject> aClass) { return !MavenModuleSet.class.isAssignableFrom(aClass) && !MavenModule.class.isAssignableFrom(aClass); } public HealthMetric[] getMetrics() { return JavaNCSSHealthMetrics.values(); } } }