
hudson.plugins.view.dashboard.Dashboard Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dashboard-view Show documentation
Show all versions of dashboard-view Show documentation
Hudson view that shows various cuts of build information via configured portlets.
The newest version!
package hudson.plugins.view.dashboard;
import hudson.DescriptorExtensionList;
import hudson.Extension;
import hudson.Util;
import hudson.model.Descriptor;
import hudson.model.Job;
import hudson.model.TopLevelItem;
import hudson.model.ViewDescriptor;
import hudson.model.Descriptor.FormException;
import hudson.model.ListView;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
//import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.*;
import javax.servlet.ServletException;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
/**
* View that can be customized with portlets to show the selected jobs information
* in various ways.
*
* @author Peter Hayes
*/
public class Dashboard extends ListView {
/*
* Use custom CSS style provided by the user
*/
private boolean useCssStyle = false;
/*
* Show standard hudson jobs list at the top of the page
*/
private boolean includeStdJobList = false;
/*
* The width of the left portlets
*/
private String leftPortletWidth = "50%";
/*
* The width of the right portlets
*/
private String rightPortletWidth = "50%";
private List leftPortlets = new ArrayList();
private List rightPortlets = new ArrayList();
private List topPortlets = new ArrayList();
private List bottomPortlets = new ArrayList();
@DataBoundConstructor
public Dashboard(String name) {
super(name);
}
public boolean isUseCssStyle() {
return useCssStyle;
}
public boolean isIncludeStdJobList() {
return includeStdJobList;
}
public List getLeftPortlets() {
return leftPortlets;
}
public List getRightPortlets() {
return rightPortlets;
}
public List getTopPortlets() {
return topPortlets;
}
public List getBottomPortlets() {
return bottomPortlets;
}
public String getLeftPortletWidth() {
return leftPortletWidth;
}
public String getRightPortletWidth() {
return rightPortletWidth;
}
public DashboardPortlet getPortlet(String name) {
ArrayList allPortlets = new ArrayList(topPortlets);
allPortlets.addAll(leftPortlets);
allPortlets.addAll(rightPortlets);
allPortlets.addAll(bottomPortlets);
for (DashboardPortlet portlet : allPortlets) {
if (name.equals(portlet.getId())) {
return portlet;
}
}
return null;
}
public DescriptorExtensionList> getDashboardPortletDescriptors() {
DescriptorExtensionList> list = DashboardPortlet.all();
//Collections.sort(list);
// Collections.sort(list, new Comparator>() {
// public int compare(Descriptor p1, Descriptor p2) {
// return p1.getDisplayName().compareTo(p2.getDisplayName());
// }
// });
return list;
}
/* Use contains */
//@Deprecated
public synchronized boolean HasItem(TopLevelItem item) {
List items = getItems();
return items.contains(item);
// return this.contains(item);
}
/* Use getItems */
//@Deprecated
public synchronized List getJobs() {
List jobs = new ArrayList();
for (TopLevelItem item : getItems()) {
if (item instanceof Job) {
jobs.add((Job) item);
}
}
return jobs;
}
@Override
protected synchronized void submit(StaplerRequest req) throws IOException,
ServletException, FormException {
super.submit(req);
try {
req.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Dashboard.class.getName()).log(Level.SEVERE, null, ex);
}
JSONObject json = req.getSubmittedForm();
String sIncludeStdJobList = Util.nullify(req.getParameter("includeStdJobList"));
includeStdJobList = sIncludeStdJobList != null && "on".equals(sIncludeStdJobList);
String sUseCssStyle = Util.nullify(req.getParameter("useCssStyle"));
useCssStyle = sUseCssStyle != null && "on".equals(sUseCssStyle);
if (useCssStyle) {
if (req.getParameter("leftPortletWidth") != null) {
leftPortletWidth = req.getParameter("leftPortletWidth");
}
if (req.getParameter("rightPortletWidth") != null) {
rightPortletWidth = req.getParameter("rightPortletWidth");
}
}
else {
leftPortletWidth = rightPortletWidth = "50%";
}
topPortlets = Descriptor.newInstancesFromHeteroList(req, json, "topPortlet", DashboardPortlet.all());
leftPortlets = Descriptor.newInstancesFromHeteroList(req, json, "leftPortlet", DashboardPortlet.all());
rightPortlets = Descriptor.newInstancesFromHeteroList(req, json, "rightPortlet", DashboardPortlet.all());
bottomPortlets = Descriptor.newInstancesFromHeteroList(req, json, "bottomPortlet", DashboardPortlet.all());
}
@Override
public void rename(String newName) throws FormException {
super.rename(newName);
// Bug 6689
// TODO: if this view is the default view configured in Hudson, the we must keep it after renaming
}
@Extension
public static final class DescriptorImpl extends ViewDescriptor {
@Override
public String getDisplayName() {
return Messages.Dashboard_DisplayName();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy