aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2012-12-28 13:13:14 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2012-12-28 13:13:14 +0100
commitc9ff3d5495b0229d837fa0ec23486cc7b6b191d0 (patch)
treeb978427f431aa41c59115978c6a017db84b9f2ec /src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java
parent422b1caeaa9f7d069a9208ecb0d0249485b1a05e (diff)
downloadesper-testing-c9ff3d5495b0229d837fa0ec23486cc7b6b191d0.tar.gz
esper-testing-c9ff3d5495b0229d837fa0ec23486cc7b6b191d0.tar.bz2
esper-testing-c9ff3d5495b0229d837fa0ec23486cc7b6b191d0.tar.xz
esper-testing-c9ff3d5495b0229d837fa0ec23486cc7b6b191d0.zip
o Listing builds on the person view.
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java')
-rw-r--r--src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java b/src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java
new file mode 100644
index 0000000..284d90e
--- /dev/null
+++ b/src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java
@@ -0,0 +1,86 @@
+package io.trygvis.esper.testing.web.resource;
+
+import fj.data.*;
+import io.trygvis.esper.testing.*;
+import io.trygvis.esper.testing.jenkins.*;
+import org.joda.time.*;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.*;
+import java.net.*;
+import java.sql.*;
+import java.util.*;
+import java.util.List;
+
+import static fj.data.Option.*;
+
+@Path("/resource/jenkins")
+public class JenkinsResource extends AbstractResource {
+
+ public JenkinsResource(DatabaseAccess da) {
+ super(da);
+ }
+
+ @GET
+ @Path("/server")
+ @Produces(MediaType.APPLICATION_JSON)
+ public List<JenkinsServerJson> getServers() throws Exception {
+ return da.inTransaction(new DatabaseAccess.DaosCallback<List<JenkinsServerJson>>() {
+ public List<JenkinsServerJson> run(Daos daos) throws SQLException {
+ List<JenkinsServerJson> list = new ArrayList<>();
+ for (JenkinsServerDto server : daos.jenkinsDao.selectServers(false)) {
+ list.add(getJenkinsServerJson(daos, server));
+ }
+ return list;
+ }
+ });
+ }
+
+ @GET
+ @Path("/server/{uuid}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public JenkinsServerJson getServer(@PathParam("uuid") String s) throws Exception {
+ final UUID uuid = parseUuid(s);
+
+ return get(new DatabaseAccess.DaosCallback<Option<JenkinsServerJson>>() {
+ public Option<JenkinsServerJson> run(final Daos daos) throws SQLException {
+ Option<JenkinsServerDto> o = daos.jenkinsDao.selectServer(uuid);
+
+ if (o.isNone()) {
+ return Option.none();
+ }
+
+ return some(getJenkinsServerJson(daos, o.some()));
+ }
+ });
+ }
+
+ private JenkinsServerJson getJenkinsServerJson(Daos daos, JenkinsServerDto server) throws SQLException {
+ int count = daos.jenkinsDao.selectJobCountForServer(server.uuid);
+ return new JenkinsServerJson(server.uuid, server.createdDate, server.url, server.enabled, count);
+ }
+
+ public static UUID parseUuid(String s) {
+ try {
+ return UUID.fromString(s);
+ } catch (IllegalArgumentException e) {
+ throw new WebApplicationException(Response.Status.BAD_REQUEST);
+ }
+ }
+}
+
+class JenkinsServerJson {
+ public final UUID uuid;
+ public final DateTime createdDate;
+ public final URI url;
+ public final boolean enabled;
+ public final int jobCount;
+
+ JenkinsServerJson(UUID uuid, DateTime createdDate, URI url, boolean enabled, int jobCount) {
+ this.uuid = uuid;
+ this.createdDate = createdDate;
+ this.url = url;
+ this.enabled = enabled;
+ this.jobCount = jobCount;
+ }
+}