diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2012-12-28 13:13:14 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2012-12-28 13:13:14 +0100 |
commit | c9ff3d5495b0229d837fa0ec23486cc7b6b191d0 (patch) | |
tree | b978427f431aa41c59115978c6a017db84b9f2ec /src/main/java/io/trygvis/esper/testing/web/resource/JenkinsResource.java | |
parent | 422b1caeaa9f7d069a9208ecb0d0249485b1a05e (diff) | |
download | esper-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.java | 86 |
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; + } +} |