aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2013-01-03 15:09:43 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2013-01-03 15:09:43 +0100
commit35ba1a6f765f72a1d91a5456c7556e6274f8c3a9 (patch)
tree18d069a4512cec4fca1c93964adcb039b9ee6167 /src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java
parent84fb49088a14cff8b453e0e32f6ad7007eb2184a (diff)
downloadesper-testing-35ba1a6f765f72a1d91a5456c7556e6274f8c3a9.tar.gz
esper-testing-35ba1a6f765f72a1d91a5456c7556e6274f8c3a9.tar.bz2
esper-testing-35ba1a6f765f72a1d91a5456c7556e6274f8c3a9.tar.xz
esper-testing-35ba1a6f765f72a1d91a5456c7556e6274f8c3a9.zip
o Moving Jenkins XML objects and parsing to it's own package.
o Removing fields from JenkinsBuild that's read from the XML later on.
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java')
-rwxr-xr-x[-rw-r--r--]src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java52
1 files changed, 43 insertions, 9 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java b/src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java
index bfcd013..3270db1 100644..100755
--- a/src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java
+++ b/src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java
@@ -1,22 +1,28 @@
package io.trygvis.esper.testing.core.jenkins;
import com.jolbox.bonecp.*;
+import fj.data.*;
import io.trygvis.esper.testing.*;
import io.trygvis.esper.testing.core.*;
import io.trygvis.esper.testing.core.db.*;
import io.trygvis.esper.testing.jenkins.*;
+import io.trygvis.esper.testing.jenkins.xml.*;
+import io.trygvis.esper.testing.util.*;
import io.trygvis.esper.testing.util.sql.*;
+import org.joda.time.*;
import org.slf4j.*;
+import java.io.*;
import java.sql.*;
import java.util.*;
import static fj.data.Option.*;
import static io.trygvis.esper.testing.Config.*;
-import static io.trygvis.esper.testing.EntityRef.*;
+import static io.trygvis.esper.testing.EntityRef.jenkinsBuildRef;
public class JenkinsBuildPoller implements TablePoller.NewRowCallback<JenkinsBuildDto> {
- Logger logger = LoggerFactory.getLogger(getClass());
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+ private final XmlParser xmlParser = new XmlParser();
public static void main(String[] args) throws Exception {
String pollerName = "jenkins_build";
@@ -32,17 +38,43 @@ public class JenkinsBuildPoller implements TablePoller.NewRowCallback<JenkinsBui
new TablePoller<>(pollerName, tableName, columnNames, some("array_length(users, 1) > 0"), f, callback).work(dataSource);
}
- public void process(Connection c, JenkinsBuildDto jenkinsBuild) throws SQLException {
+ public void process(Connection c, final JenkinsBuildDto jenkinsBuild) throws SQLException {
Daos daos = new Daos(c);
- BuildDao buildDao = daos.buildDao;
- PersonDao personDao = daos.personDao;
+ final BuildDao buildDao = daos.buildDao;
- UUID uuid = buildDao.insertBuild(jenkinsBuild.timestamp, "SUCCESS".equals(jenkinsBuild.result), jenkinsRef(jenkinsBuild.uuid));
+ SqlOption<InputStream> file = daos.fileDao.load(jenkinsBuild.file);
+
+ if (file.isNone()) {
+ logger.warn("File unavailable: " + jenkinsBuild.file);
+ return;
+ }
+
+ Option<JenkinsBuildXml> o = file.toFj().
+ bind(xmlParser.parseDocument).
+ bind(JenkinsBuildXml.parse);
+
+ if (o.isNone()) {
+ logger.warn("Unable to parse and process xml: " + jenkinsBuild.file);
+ return;
+ }
+
+ final JenkinsBuildXml jenkinsBuildXml = o.some();
+
+ SqlOption<UUID> uuidBuildO = buildDao.findBuildByReference(jenkinsBuild.toRef());
+
+ UUID uuidBuild = uuidBuildO.getOrElse(new SqlP0<UUID>() {
+ public UUID apply() throws SQLException {
+ return buildDao.insertBuild(
+ new DateTime(jenkinsBuildXml.timestamp),
+ "SUCCESS".equals(jenkinsBuildXml.result.orSome("")),
+ jenkinsBuildRef(jenkinsBuild.uuid));
+ }
+ });
int knownPersons = 0, unknownPersons = 0;
for (UUID user : jenkinsBuild.users) {
- SqlOption<PersonDto> personO = personDao.selectPersonByJenkinsUuid(user);
+ SqlOption<PersonDto> personO = daos.personDao.selectPersonByJenkinsUuid(user);
// This happens if no one has claimed the user id.
if (personO.isNone()) {
@@ -54,10 +86,12 @@ public class JenkinsBuildPoller implements TablePoller.NewRowCallback<JenkinsBui
UUID person = personO.get().uuid;
logger.info("Created build participant, person={}", person);
- buildDao.insertBuildParticipant(uuid, person);
+ buildDao.insertBuildParticipant(uuidBuild, person);
}
- logger.info("Created build uuid={}, #participants={}, #knownPersons={}, #unknonwnPersons={}", uuid,
+ logger.info("Created build uuid={}, #participants={}, #knownPersons={}, #unknonwnPersons={}", uuidBuild,
jenkinsBuild.users.length, knownPersons, unknownPersons);
+
+ throw new SQLException("wat");
}
}