diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2013-01-03 15:09:43 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2013-01-03 15:09:43 +0100 |
commit | 35ba1a6f765f72a1d91a5456c7556e6274f8c3a9 (patch) | |
tree | 18d069a4512cec4fca1c93964adcb039b9ee6167 /src/main/java/io/trygvis/esper/testing/core/jenkins/JenkinsBuildPoller.java | |
parent | 84fb49088a14cff8b453e0e32f6ad7007eb2184a (diff) | |
download | esper-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.java | 52 |
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"); } } |