All Downloads are FREE. Search and download functionalities are using the official Maven repository.

au.com.centrumsystems.hudson.plugin.buildpipeline.dashboard.BuildPipelineDashboard Maven / Gradle / Ivy

Go to download

This plugin provides build pipeline functionality to Hudson and Jenkins. This allows a chain of jobs to be visualised in a new view. Manual jobs in the pipeline can be triggered by a user with the appropriate permissions manually confirming.

The newest version!
////////////////////////////////////////////////////////////////////////////////
//
//  ADOBE SYSTEMS INCORPORATED
//  Copyright 2012 Adobe Systems Incorporated
//  All Rights Reserved.
//
//  NOTICE: Adobe permits you to use, modify, and distribute this file
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////
package au.com.centrumsystems.hudson.plugin.buildpipeline.dashboard;

import au.com.centrumsystems.hudson.plugin.buildpipeline.DownstreamProjectGridBuilder;
import au.com.centrumsystems.hudson.plugin.buildpipeline.ProjectGridBuilder;
import hudson.Extension;
import hudson.model.Descriptor;
import hudson.model.Hudson;
import hudson.plugins.view.dashboard.DashboardPortlet;

import java.util.ArrayList;
import java.util.List;

import org.kohsuke.stapler.DataBoundConstructor;

import au.com.centrumsystems.hudson.plugin.buildpipeline.BuildPipelineView;
import au.com.centrumsystems.hudson.plugin.buildpipeline.Strings;


/**
 * This class provides the entry point to use this plugin in the dashboard-plugin
 * 
 * @author Ingo Richter ([email protected])
 * @since 03/30/2012
 */
public class BuildPipelineDashboard extends DashboardPortlet {
    /**
     * @deprecated
     *      For backward compatibility. Back when we didn't have {@link #gridBuilder},
     *      this field stored the first job to display.
     */
    @Deprecated
    private String selectedJob;

    /** Controls the layout. */
    private ProjectGridBuilder gridBuilder;

    /**
     * noOfDisplayedBuilds.
     */
    private String noOfDisplayedBuilds;

    /**
     * a brief description of this portlet.
     */
    private String description;

    /**
     * Constructor
     * 
     * @param name
     *            the name of this view
     * @param description
     *            a brief description of this view
     * @param gridBuilder
     *            controls the layout
     * @param noOfDisplayedBuilds
     *            how many builds will be displayed for this job
     */
    @DataBoundConstructor
    public BuildPipelineDashboard(final String name, final String description,
                                  final ProjectGridBuilder gridBuilder, final String noOfDisplayedBuilds) {
        super(name);
        this.description = description;
        this.gridBuilder = gridBuilder;
        this.noOfDisplayedBuilds = noOfDisplayedBuilds;
    }

    public ProjectGridBuilder getGridBuilder() {
        return gridBuilder;
    }

    public void setGridBuilder(ProjectGridBuilder gridBuilder) {
        this.gridBuilder = gridBuilder;
    }

    /**
     * @return
     *      always this.
     */
    protected Object readResolve() {
        if (gridBuilder == null && selectedJob != null) {
            gridBuilder = new DownstreamProjectGridBuilder(selectedJob);
            selectedJob = null;
        }
        return this;


    }

    public String getNoOfDisplayedBuilds() {
        return noOfDisplayedBuilds;
    }

    public void setNoOfDisplayedBuilds(final String noOfDisplayedBuilds) {
        this.noOfDisplayedBuilds = noOfDisplayedBuilds;
    }

    public String getSelectedJob() {
        return selectedJob;
    }

    public void setSelectedJob(final String selectedJob) {
        this.selectedJob = selectedJob;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(final String description) {
        this.description = description;
    }

    public BuildPipelineView getBuildPipelineView() {
        return new ReadOnlyBuildPipelineView(getDisplayName(), getDescription(), getGridBuilder(), getNoOfDisplayedBuilds(), false);
    }

    /**
     * Extension point registration.
     */
    // TODO: create a class and use this code also in BuildPipelineView
    @Extension(optional = true)
    public static class BuildPipelineDashboardDescriptor extends Descriptor {

        @Override
        public String getDisplayName() {
            return Strings.getString("Portlet.BuildPipelineDashboardDescriptor");
        }

        /**
         * Display Job List Item in the Edit View Page
         * 
         * @return ListBoxModel
         */
        public hudson.util.ListBoxModel doFillSelectedJobItems() {
            final hudson.util.ListBoxModel options = new hudson.util.ListBoxModel();
            for (final String jobName : Hudson.getInstance().getJobNames()) {
                options.add(jobName);
            }
            return options;
        }

        /**
         * Display No Of Builds Items in the Edit View Page
         * 
         * @return ListBoxModel
         */
        public hudson.util.ListBoxModel doFillNoOfDisplayedBuildsItems() {
            final hudson.util.ListBoxModel options = new hudson.util.ListBoxModel();
            final List noOfBuilds = new ArrayList();
            noOfBuilds.add("1");
            noOfBuilds.add("2");
            noOfBuilds.add("3");
            noOfBuilds.add("5");
            noOfBuilds.add("10");
            noOfBuilds.add("20");
            noOfBuilds.add("50");
            noOfBuilds.add("100");
            noOfBuilds.add("200");
            noOfBuilds.add("500");

            for (final String noOfBuild : noOfBuilds) {
                options.add(noOfBuild);
            }
            return options;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy