Author: rob.stryker(a)jboss.com
Date: 2011-01-13 00:56:35 -0500 (Thu, 13 Jan 2011)
New Revision: 28186
Added:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/blue.gif
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/computer.gif
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/gear.gif
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/grey.gif
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/help.png
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/pview.gif
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/red.gif
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/yellow.gif
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/.classpath
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/META-INF/MANIFEST.MF
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/build.properties
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonJobJob.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider$1$1.class
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider$1.class
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider$DelayObject.class
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.class
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.class
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonManagerView.class
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonManagerView.java
Log:
more hudson stuff for nick
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/.classpath
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/.classpath 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/.classpath 2011-01-13
05:56:35 UTC (rev 28186)
@@ -6,5 +6,6 @@
<classpathentry kind="lib" path="libs/dom4j-1.6.1.jar"/>
<classpathentry kind="lib"
path="libs/commons-httpclient-3.1.jar"/>
<classpathentry kind="lib"
path="libs/maven-plugin-api-2.0.jar"/>
+ <classpathentry kind="lib" path="libs/jaxen-1.1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/META-INF/MANIFEST.MF
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/META-INF/MANIFEST.MF 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/META-INF/MANIFEST.MF 2011-01-13
05:56:35 UTC (rev 28186)
@@ -14,4 +14,5 @@
Bundle-ClassPath: libs/commons-httpclient-3.1.jar,
libs/dom4j-1.6.1.jar,
libs/maven-plugin-api-2.0.jar,
- .
+ .,
+ libs/jaxen-1.1.1.jar
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/build.properties
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/build.properties 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/build.properties 2011-01-13
05:56:35 UTC (rev 28186)
@@ -4,4 +4,5 @@
.,\
libs/commons-httpclient-3.1.jar,\
libs/dom4j-1.6.1.jar,\
- libs/maven-plugin-api-2.0.jar
+ libs/maven-plugin-api-2.0.jar,\
+ libs/jaxen-1.1.1.jar
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonJobJob.java
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonJobJob.java 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonJobJob.java 2011-01-13
05:56:35 UTC (rev 28186)
@@ -18,7 +18,6 @@
this(server);
postJob = r;
}
-
@Override
protected IStatus run(IProgressMonitor monitor) {
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java 2011-01-13
05:56:35 UTC (rev 28186)
@@ -2,12 +2,15 @@
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
+import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.eclipse.core.runtime.Path;
@@ -42,12 +45,15 @@
if( fdetails == null ) {
fdetails = loadDetails();
}
+ if( fdetails == null ) {
+ System.out.println("WAIT");
+ }
return fdetails;
}
private JobExtendedDetails loadDetails() {
try {
- String url = fserver.getUrl() + "job" + Path.SEPARATOR + fname +
Path.SEPARATOR + HudsonModel.API_XML;
+ String url = fserver.getUrl() + "job" + Path.SEPARATOR + fname +
Path.SEPARATOR + HudsonModel.API_XML_DEPT_1;
URL url2 = new URL(url);
Document dom;
dom = new SAXReader().read(url2);
@@ -79,11 +85,15 @@
ArrayList<JobBuild> list = new ArrayList<JobBuild>();
Document d = getDocument();
for (Element job : (List<Element>)
d.getRootElement().elements("build")) {
- String number = job.elementText("number");
- String url = job.elementText("url");
- list.add(new JobBuild(number, url));
- builds = (JobBuild[]) list.toArray(new JobBuild[list.size()]);
+ list.add(new JobBuild(job));
}
+ Comparator<JobBuild> c = new Comparator<JobBuild>() {
+ public int compare(JobBuild o1, JobBuild o2) {
+ return o2.getNumberInt() - o1.getNumberInt();
+ }
+ };
+ Collections.sort(list, c);
+ builds = (JobBuild[]) list.toArray(new JobBuild[list.size()]);
}
private Document getDocument() {
@@ -98,28 +108,125 @@
}
public static class JobBuild {
- private String number, url;
- public JobBuild(String number, String url) {
- this.number = number;
- this.url = url;
+ private Element job;
+ private BuildCause cause = null;
+ public JobBuild(Element job) {
+ this.job = job;
+ getBuildCause();
}
+ public Element getElement() {
+ return job;
+ }
+
+ public int getNumberInt() {
+ String num = getNumber();
+ return Integer.parseInt(num);
+ }
public String getNumber() {
- return number;
+ return job.elementText("number");
}
public String getUrl() {
- return url;
+ return job.elementText("url");
}
+ public String getResult() {
+ return job.elementText("result");
+ }
+ public String getId() {
+ return job.elementText("id");
+ }
+ public String getBuiltOn() {
+ return job.elementText("builtOn");
+ }
+ public BuildCause getBuildCause() {
+ if( cause == null ) {
+ cause = new BuildCause(this);
+ }
+ return cause;
+ }
}
- public static class OtherProject {
- public static final boolean UP_STREAM = true;
- public static final boolean DOWN_STREAM = false;
- private boolean fdirection;
- private String fname, furl;
- public OtherProject(boolean direction, String name, String url) {
- this.fdirection = direction;
- this.fname = name;
- this.furl = url;
+ public static class BuildCause {
+ public static final int KICKED_BY_USER_TYPE = 0;
+ public static final int SVN_CHANGE_TYPE = 1;
+ public static final int UPSTREAM_PROJECT_TYPE = 2;
+
+ public static final String ACTION_CAUSE = "action/cause";
+ public static final String USERNAME = "userName";
+ public static final String UPSTREAM_BUILD = "upstreamBuild";
+ public static final String UPSTREAM_PROJECT = "upstreamProject";
+ public static final String UPSTREAM_URL= "upstreamUrl";
+ public static final String SHORT_DESCRIPTION = "shortDescription";
+
+ private JobBuild build;
+ private int type = -1;
+ private Node cause;
+ public BuildCause(JobBuild build) {
+ this.build = build;
+ setType();
+// System.out.println(build.getId());
+// System.out.println(" " + getType());
+// System.out.println(" " + getDescription());
+// System.out.println(" " + getUpstreamBuild());
+// System.out.println(" " + getUpstreamUrl());
+// System.out.println(" " + getUserName());
+//
}
+
+ protected void setType() {
+ String xml = build.getElement().asXML();
+ List list = build.getElement().selectNodes(ACTION_CAUSE);
+ if( list.size() > 0 ) {
+ if( list.size() == 2)
+ cause = (Node)list.get(1);
+ else
+ cause = (Node)list.get(0);
+ List child = cause.selectNodes(USERNAME);
+ if( child.size() > 0 ) {
+ type = KICKED_BY_USER_TYPE;
+ } else {
+ child = cause.selectNodes(UPSTREAM_BUILD);
+ if( list.size() > 0 )
+ type = UPSTREAM_PROJECT_TYPE;
+ else
+ type = SVN_CHANGE_TYPE;
+ }
+ }
+ }
+ public int getType() {
+ return type;
+ }
+ public String getCauseNode(String name) {
+ List list = cause.selectNodes(name);
+ if( list.size() > 0 )
+ return ((Node)list.get(0)).getText().trim();
+ return null;
+ }
+ public String getDescription() {
+ return getCauseNode(SHORT_DESCRIPTION);
+ }
+ public String getUpstreamBuild() {
+ return getCauseNode(UPSTREAM_BUILD);
+ }
+ public String getUpstreamProject() {
+ return getCauseNode(UPSTREAM_PROJECT);
+ }
+ public String getUpstreamUrl() {
+ return getCauseNode(UPSTREAM_URL);
+ }
+ public String getUserName() {
+ return getCauseNode(USERNAME);
+ }
}
+
+// public static class OtherProject {
+// public static final boolean UP_STREAM = true;
+// public static final boolean DOWN_STREAM = false;
+// private boolean fdirection;
+// private String fname, furl;
+// public OtherProject(boolean direction, String name, String url) {
+// this.fdirection = direction;
+// this.fname = name;
+// this.furl = url;
+// }
+// }
}
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java 2011-01-13
05:56:35 UTC (rev 28186)
@@ -5,6 +5,7 @@
public class HudsonModel {
public static final String API_XML = "api/xml";
+ public static final String API_XML_DEPT_1 = API_XML + "?depth=1";
private static HudsonModel instance = null;
public static HudsonModel getInstance() {
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider$1$1.class
===================================================================
(Binary files differ)
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider$1.class
===================================================================
(Binary files differ)
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider$DelayObject.class
===================================================================
(Binary files differ)
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.class
===================================================================
(Binary files differ)
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.class
===================================================================
(Binary files differ)
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/bin/org/jboss/tools/hudson/manager/ui/views/HudsonManagerView.class
===================================================================
(Binary files differ)
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/blue.gif
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/blue.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/computer.gif
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/computer.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/gear.gif
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/gear.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/grey.gif
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/grey.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/help.png
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/help.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/pview.gif
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/pview.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/red.gif
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/red.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/yellow.gif
===================================================================
(Binary files differ)
Property changes on:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/icons/yellow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java 2011-01-13
05:56:35 UTC (rev 28186)
@@ -4,6 +4,7 @@
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
+import org.jboss.tools.hudson.manager.core.jobs.LoadHudsonBuildsJob;
import org.jboss.tools.hudson.manager.core.jobs.LoadHudsonJobJob;
import org.jboss.tools.hudson.manager.core.jobs.LoadHudsonModelJob;
import org.jboss.tools.hudson.manager.core.model.HudsonJob;
@@ -56,7 +57,7 @@
}
return HudsonModel.getInstance().getServers();
}
-
+
private Object[] handleHudsonServer(HudsonServer parent) {
if( !parent.jobsLoaded()) {
DelayObject delay = getDelayObject(parent);
@@ -66,6 +67,15 @@
return parent.getHudsonJobs();
}
+ private Object[] handleHudsonJob(HudsonJob parent) {
+ if( !parent.detailsLoaded()) {
+ DelayObject delay = getDelayObject(parent);
+ new LoadHudsonBuildsJob(parent, refreshParentRunnable(v, parent)).schedule();
+ return new Object[]{delay};
+ }
+ return parent.getDetails().getBuilds();
+ }
+
@Override
public Object[] getChildren(Object parentElement) {
if( parentElement instanceof HudsonManagerView ) {
@@ -75,9 +85,9 @@
return handleHudsonServer((HudsonServer)parentElement);
}
if( parentElement instanceof HudsonJob ) {
- return ((HudsonJob)parentElement).getDetails().getBuilds();
+ return handleHudsonJob((HudsonJob)parentElement);
}
- return new String[]{"a", "b", "c"};
+ return new String[]{};
}
public Object getParent(Object element) {
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java 2011-01-13
05:56:35 UTC (rev 28186)
@@ -6,11 +6,32 @@
import org.jboss.tools.hudson.manager.core.model.HudsonJob;
import org.jboss.tools.hudson.manager.core.model.HudsonServer;
import org.jboss.tools.hudson.manager.core.model.HudsonJob.JobBuild;
+import org.jboss.tools.hudson.manager.ui.HudsonSharedImages;
import org.jboss.tools.hudson.manager.ui.views.HudsonContentProvider.DelayObject;
public class HudsonLabelProvider extends LabelProvider implements
ILabelProvider {
public Image getImage(Object element) {
+ if( element instanceof HudsonServer) {
+ return HudsonSharedImages.getImage(HudsonSharedImages.SERVER);
+ }
+ if( element instanceof HudsonJob) {
+ return HudsonSharedImages.getImage(HudsonSharedImages.GEAR);
+ }
+ if( element instanceof JobBuild) {
+ String xy = ((JobBuild)element).getResult();
+ if( "SUCCESS".equals(xy)) {
+ return HudsonSharedImages.getImage(HudsonSharedImages.BLUE_BALL);
+ } else if("FAILURE".equals(xy)) {
+ return HudsonSharedImages.getImage(HudsonSharedImages.RED_BALL);
+ } else if("ABORTED".equals(xy)) {
+ return HudsonSharedImages.getImage(HudsonSharedImages.GREY_BALL);
+ } else if( "UNSTABLE".equals(xy)) {
+ return HudsonSharedImages.getImage(HudsonSharedImages.YELLOW_BALL);
+ } else {
+ return HudsonSharedImages.getImage(HudsonSharedImages.PROGRESS);
+ }
+ }
return null;
}
@@ -19,7 +40,8 @@
return "Loading...";
}
if( element instanceof HudsonServer ) {
- return ((HudsonServer)element).getName();
+ HudsonServer hs = (HudsonServer)element;
+ return hs.getName() + " [ " + hs.getUrl() + " ]";
}
if( element instanceof HudsonJob) {
return ((HudsonJob)element).getName();
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonManagerView.java
===================================================================
---
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonManagerView.java 2011-01-13
05:33:28 UTC (rev 28185)
+++
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonManagerView.java 2011-01-13
05:56:35 UTC (rev 28186)
@@ -1,6 +1,8 @@
package org.jboss.tools.hudson.manager.ui.views;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.navigator.CommonNavigator;
+import org.eclipse.ui.navigator.CommonViewerSorter;
public class HudsonManagerView extends CommonNavigator {
@@ -10,4 +12,8 @@
protected Object getInitialInput() {
return this;
}
+ public void createPartControl(Composite aParent) {
+ super.createPartControl(aParent);
+ getCommonViewer().setSorter(null);
+ }
}