diff options
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/core/db')
-rw-r--r-- | src/main/java/io/trygvis/esper/testing/core/db/BuildDao.java (renamed from src/main/java/io/trygvis/esper/testing/core/db/CoreDao.java) | 44 | ||||
-rw-r--r-- | src/main/java/io/trygvis/esper/testing/core/db/BuildDto.java | 10 | ||||
-rw-r--r-- | src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeDto.java | 25 | ||||
-rw-r--r-- | src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeProgressDto.java | 20 | ||||
-rw-r--r-- | src/main/java/io/trygvis/esper/testing/core/db/PersonDao.java | 154 |
5 files changed, 221 insertions, 32 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/core/db/CoreDao.java b/src/main/java/io/trygvis/esper/testing/core/db/BuildDao.java index 5eab2c9..24ecfd3 100644 --- a/src/main/java/io/trygvis/esper/testing/core/db/CoreDao.java +++ b/src/main/java/io/trygvis/esper/testing/core/db/BuildDao.java @@ -7,46 +7,30 @@ import org.joda.time.*; import java.sql.*; import java.util.*; -import static io.trygvis.esper.testing.util.sql.SqlOption.*; +import static io.trygvis.esper.testing.util.sql.ResultSetF.*; import static java.lang.System.*; -public class CoreDao { +public class BuildDao { private final Connection c; - public static final String PERSON = "uuid, created_date, name"; + public static final String BUILD = "uuid, created_date, timestamp, success, reference_type, reference_uuid"; - public static final SqlF<ResultSet, PersonDto> person = new SqlF<ResultSet, PersonDto>() { - public PersonDto apply(ResultSet rs) throws SQLException { + public static final SqlF<ResultSet, BuildDto> build = new SqlF<ResultSet, BuildDto>() { + public BuildDto apply(ResultSet rs) throws SQLException { int i = 1; - return new PersonDto( + return new BuildDto( UUID.fromString(rs.getString(i++)), new DateTime(rs.getTimestamp(i++).getTime()), - rs.getString(i)); + new DateTime(rs.getTimestamp(i++).getTime()), + rs.getBoolean(i++), + EntityRef.fromRs(rs, i)); } }; - public static final String BUILD = "uuid, created_date, timestamp, success, reference_type, reference_uuid"; - - public CoreDao(Connection c) { + public BuildDao(Connection c) { this.c = c; } - public SqlOption<PersonDto> selectPerson(String id) throws SQLException { - try (PreparedStatement s = c.prepareStatement("SELECT " + PERSON + " FROM person WHERE id=?")) { - int i = 1; - s.setString(i, id); - return fromRs(s.executeQuery()).map(person); - } - } - - public SqlOption<PersonDto> selectPersonByJenkinsUuid(UUID jenkinsUser) throws SQLException { - try (PreparedStatement s = c.prepareStatement("SELECT " + PERSON + " FROM person WHERE uuid=(SELECT person FROM person_jenkins_user WHERE jenkins_user=?)")) { - int i = 1; - s.setString(i, jenkinsUser.toString()); - return fromRs(s.executeQuery()).map(person); - } - } - public UUID insertBuild(DateTime timestamp, boolean success, EntityRef ref) throws SQLException { try (PreparedStatement s = c.prepareStatement("INSERT INTO build(" + BUILD + ") VALUES(?, ?, ?, ?, ?, ?)")) { UUID uuid = UUID.randomUUID(); @@ -70,4 +54,12 @@ public class CoreDao { s.executeUpdate(); } } + + public List<UUID> selectPersonsFromBuildParticipant(UUID build) throws SQLException { + try (PreparedStatement s = c.prepareStatement("SELECT person FROM build_participant WHERE build=?")) { + int i = 1; + s.setString(i, build.toString()); + return Util.toList(s, getUuid); + } + } } diff --git a/src/main/java/io/trygvis/esper/testing/core/db/BuildDto.java b/src/main/java/io/trygvis/esper/testing/core/db/BuildDto.java index 5cc6b0a..305c93a 100644 --- a/src/main/java/io/trygvis/esper/testing/core/db/BuildDto.java +++ b/src/main/java/io/trygvis/esper/testing/core/db/BuildDto.java @@ -5,17 +5,15 @@ import org.joda.time.*; import java.util.*; -class BuildDto extends AbstractEntity { +public class BuildDto extends AbstractEntity { public final DateTime timestamp; public final boolean success; - public final UUID referenceUuid; - public final String referenceType; + public final EntityRef ref; - BuildDto(UUID uuid, DateTime createdDate, DateTime timestamp, boolean success, UUID referenceUuid, String referenceType) { + public BuildDto(UUID uuid, DateTime createdDate, DateTime timestamp, boolean success, EntityRef ref) { super(uuid, createdDate); this.timestamp = timestamp; this.success = success; - this.referenceUuid = referenceUuid; - this.referenceType = referenceType; + this.ref = ref; } } diff --git a/src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeDto.java b/src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeDto.java new file mode 100644 index 0000000..5bbe159 --- /dev/null +++ b/src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeDto.java @@ -0,0 +1,25 @@ +package io.trygvis.esper.testing.core.db; + +import io.trygvis.esper.testing.*; +import org.joda.time.*; + +import java.util.*; + +public class PersonBadgeDto extends AbstractEntity { + public enum Type { + UNBREAKABLE + } + + public final UUID person; + public final Type type; + public final int level; + public final int count; + + public PersonBadgeDto(UUID uuid, DateTime createdDate, UUID person, Type type, int level, int count) { + super(uuid, createdDate); + this.person = person; + this.type = type; + this.level = level; + this.count = count; + } +} diff --git a/src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeProgressDto.java b/src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeProgressDto.java new file mode 100644 index 0000000..e572bb2 --- /dev/null +++ b/src/main/java/io/trygvis/esper/testing/core/db/PersonBadgeProgressDto.java @@ -0,0 +1,20 @@ +package io.trygvis.esper.testing.core.db; + +import io.trygvis.esper.testing.*; +import org.joda.time.*; + +import java.util.*; + +public class PersonBadgeProgressDto extends AbstractEntity { + + public final UUID person; + public final String badge; + public final String state; + + public PersonBadgeProgressDto(UUID uuid, DateTime createdDate, UUID person, String badge, String state) { + super(uuid, createdDate); + this.person = person; + this.badge = badge; + this.state = state; + } +} diff --git a/src/main/java/io/trygvis/esper/testing/core/db/PersonDao.java b/src/main/java/io/trygvis/esper/testing/core/db/PersonDao.java new file mode 100644 index 0000000..2cb6e6a --- /dev/null +++ b/src/main/java/io/trygvis/esper/testing/core/db/PersonDao.java @@ -0,0 +1,154 @@ +package io.trygvis.esper.testing.core.db; + +import io.trygvis.esper.testing.util.sql.*; +import org.joda.time.*; + +import java.sql.*; +import java.util.*; + +import static io.trygvis.esper.testing.util.sql.SqlOption.*; +import static java.lang.System.*; + +public class PersonDao { + private final Connection c; + + public static final String PERSON = "uuid, created_date, name"; + + public static final SqlF<ResultSet, PersonDto> person = new SqlF<ResultSet, PersonDto>() { + public PersonDto apply(ResultSet rs) throws SQLException { + int i = 1; + return new PersonDto( + UUID.fromString(rs.getString(i++)), + new DateTime(rs.getTimestamp(i++).getTime()), + rs.getString(i)); + } + }; + + public static final String PERSON_BADGE = "uuid, created_date, person, name, level, count"; + + public static final SqlF<ResultSet, PersonBadgeDto> personBadge = new SqlF<ResultSet, PersonBadgeDto>() { + public PersonBadgeDto apply(ResultSet rs) throws SQLException { + int i = 1; + return new PersonBadgeDto( + UUID.fromString(rs.getString(i++)), + new DateTime(rs.getTimestamp(i++).getTime()), + UUID.fromString(rs.getString(i++)), + PersonBadgeDto.Type.valueOf(rs.getString(i++)), + rs.getInt(i), + rs.getInt(i)); + } + }; + + public static final String PERSON_BADGE_PROGRESS = "uuid, created_date, person, badge, state"; + + public static final SqlF<ResultSet, PersonBadgeProgressDto> personBadgeProgress = new SqlF<ResultSet, PersonBadgeProgressDto>() { + public PersonBadgeProgressDto apply(ResultSet rs) throws SQLException { + int i = 1; + return new PersonBadgeProgressDto( + UUID.fromString(rs.getString(i++)), + new DateTime(rs.getTimestamp(i++).getTime()), + UUID.fromString(rs.getString(i++)), + rs.getString(i++), + rs.getString(i)); + } + }; + + public PersonDao(Connection c) { + this.c = c; + } + + // ----------------------------------------------------------------------- + // Person + // ----------------------------------------------------------------------- + + public SqlOption<PersonDto> selectPerson(String id) throws SQLException { + try (PreparedStatement s = c.prepareStatement("SELECT " + PERSON + " FROM person WHERE id=?")) { + int i = 1; + s.setString(i, id); + return fromRs(s.executeQuery()).map(person); + } + } + + public SqlOption<PersonDto> selectPersonByJenkinsUuid(UUID jenkinsUser) throws SQLException { + try (PreparedStatement s = c.prepareStatement("SELECT " + PERSON + " FROM person WHERE uuid=(SELECT person FROM person_jenkins_user WHERE jenkins_user=?)")) { + int i = 1; + s.setString(i, jenkinsUser.toString()); + return fromRs(s.executeQuery()).map(person); + } + } + + // ----------------------------------------------------------------------- + // Badge + // ----------------------------------------------------------------------- + + public UUID insertBadge(UUID person, PersonBadgeDto.Type type, int level, int count) throws SQLException { + try (PreparedStatement s = c.prepareStatement("INSERT INTO person_badge(" + PERSON_BADGE + ") VALUES(?, ?, ?, ?, ?, ?)")) { + UUID uuid = UUID.randomUUID(); + int i = 1; + s.setString(i++, uuid.toString()); + s.setTimestamp(i++, new Timestamp(currentTimeMillis())); + s.setString(i++, person.toString()); + s.setString(i++, type.toString()); + s.setInt(i++, level); + s.setInt(i, count); + s.executeUpdate(); + return uuid; + } + } + + public void incrementBadgeCount(UUID person, PersonBadgeDto.Type type, int level) throws SQLException { + try (PreparedStatement s = c.prepareStatement("UPDATE person_badge SET count=count+1 WHERE person=? AND name=? AND level=?")) { + int i = 1; + s.setString(i++, person.toString()); + s.setString(i++, type.toString()); + s.setInt(i, level); + s.executeUpdate(); + } + } + + public SqlOption<PersonBadgeDto> selectBadge(UUID person, PersonBadgeDto.Type type, int level) throws SQLException { + try (PreparedStatement s = c.prepareStatement("SELECT " + PERSON_BADGE + " FROM person_badge WHERE person=? AND name=? AND level=?")) { + int i = 1; + s.setString(i++, person.toString()); + s.setString(i++, type.toString()); + s.setInt(i, level); + return fromRs(s.executeQuery()).map(personBadge); + } + } + + // ----------------------------------------------------------------------- + // Badge Progress + // ----------------------------------------------------------------------- + + public SqlOption<PersonBadgeProgressDto> selectBadgeProgress(UUID person, PersonBadgeDto.Type type) throws SQLException { + try (PreparedStatement s = c.prepareStatement("SELECT " + PERSON_BADGE_PROGRESS + " FROM person_badge_progress WHERE person=? AND badge=?")) { + int i = 1; + s.setString(i++, person.toString()); + s.setString(i, type.toString()); + return fromRs(s.executeQuery()).map(personBadgeProgress); + } + } + + public void insertBadgeProgress(UUID person, PersonBadgeDto.Type type, String state) throws SQLException { + try (PreparedStatement s = c.prepareStatement("INSERT INTO person_badge_progress (" + PERSON_BADGE_PROGRESS + ") VALUES(?, ?, ?, ?, ?)")) { + UUID uuid = UUID.randomUUID(); + int i = 1; + s.setString(i++, uuid.toString()); + s.setTimestamp(i++, new Timestamp(currentTimeMillis())); + s.setString(i++, person.toString()); + s.setString(i++, type.toString()); + s.setString(i, state); + s.executeUpdate(); + } + } + + public void updateBadgeProgress(UUID person, PersonBadgeDto.Type type, String state) throws SQLException { + try (PreparedStatement s = c.prepareStatement("UPDATE person_badge_progress SET state=? WHERE person=? AND badge=?")) { + int i = 1; + s.setString(i++, state); + s.setString(i++, person.toString()); + s.setString(i, type.toString()); + s.executeUpdate(); + } + } +} |