diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2012-12-26 13:30:42 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2012-12-26 13:30:42 +0100 |
commit | 348ec4e14aeaf4e98fcab96f0ae7242d178db69b (patch) | |
tree | 642b16e2fa6ffcfaf1429571d2f4771acc620e2e /src/main/java/io/trygvis/esper/testing/core/badge | |
parent | 97b1b1eeacd72845cc7065c86d68444881370275 (diff) | |
download | esper-testing-348ec4e14aeaf4e98fcab96f0ae7242d178db69b.tar.gz esper-testing-348ec4e14aeaf4e98fcab96f0ae7242d178db69b.tar.bz2 esper-testing-348ec4e14aeaf4e98fcab96f0ae7242d178db69b.tar.xz esper-testing-348ec4e14aeaf4e98fcab96f0ae7242d178db69b.zip |
o Starting on a better front page.
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/core/badge')
4 files changed, 91 insertions, 32 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/core/badge/BadgeProgress.java b/src/main/java/io/trygvis/esper/testing/core/badge/BadgeProgress.java new file mode 100644 index 0000000..eb8d4bd --- /dev/null +++ b/src/main/java/io/trygvis/esper/testing/core/badge/BadgeProgress.java @@ -0,0 +1,15 @@ +package io.trygvis.esper.testing.core.badge; + +import io.trygvis.esper.testing.core.db.PersonBadgeDto.*; + +public abstract class BadgeProgress { + public final BadgeType type; + + protected BadgeProgress(BadgeType type) { + this.type = type; + } + + public abstract int progression(); + public abstract int goal(); + public abstract int progressingAgainstLevel(); +} diff --git a/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java b/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java new file mode 100644 index 0000000..ea0c0dc --- /dev/null +++ b/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java @@ -0,0 +1,35 @@ +package io.trygvis.esper.testing.core.badge; + +import io.trygvis.esper.testing.core.db.*; +import org.codehaus.jackson.map.*; +import org.slf4j.*; + +import java.io.*; + +public class BadgeService { + private final Logger logger = LoggerFactory.getLogger(getClass()); + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + public UnbreakableBadgeProgress unbreakable(PersonBadgeProgressDto dto) { + String state = dto.state; + + try { + return objectMapper.readValue(state, UnbreakableBadgeProgress.class); + } catch (IOException e) { + logger.error("Could not de-serialize badge state: {}", state); + throw new RuntimeException(e); + } + } + + public String serialize(UnbreakableBadgeProgress badge) { + try { + CharArrayWriter writer = new CharArrayWriter(); + objectMapper.writeValue(writer, badge); + return writer.toString(); + } catch (IOException e) { + logger.error("Could not serialize badge.", e); + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakableBadgeProgress.java b/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakableBadgeProgress.java index 871be25..dc9a5bc 100644 --- a/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakableBadgeProgress.java +++ b/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakableBadgeProgress.java @@ -1,25 +1,27 @@ package io.trygvis.esper.testing.core.badge; +import static fj.P.*; import fj.*; import fj.data.*; +import static fj.data.Option.*; import io.trygvis.esper.testing.core.db.*; +import io.trygvis.esper.testing.core.db.PersonBadgeDto.*; import java.util.*; -import static fj.P.p; -import static fj.data.Option.some; - -class UnbreakableBadgeProgress { +public class UnbreakableBadgeProgress extends BadgeProgress { public final UUID person; public final int count; private UnbreakableBadgeProgress(UUID person, int count) { + super(BadgeType.UNBREAKABLE); this.person = person; this.count = count; } @SuppressWarnings("UnusedDeclaration") private UnbreakableBadgeProgress() { + super(BadgeType.UNBREAKABLE); person = null; count = -1; } @@ -50,6 +52,34 @@ class UnbreakableBadgeProgress { return p(new UnbreakableBadgeProgress(person, count), Option.<UnbreakableBadge>none()); } + public int progression() { + return count; + } + + public int goal() { + if (count > UnbreakableBadge.LEVEL_2_COUNT) { + return UnbreakableBadge.LEVEL_3_COUNT; + } + + if (count > UnbreakableBadge.LEVEL_1_COUNT) { + return UnbreakableBadge.LEVEL_2_COUNT; + } + + return UnbreakableBadge.LEVEL_1_COUNT; + } + + public int progressingAgainstLevel() { + if (count > UnbreakableBadge.LEVEL_2_COUNT) { + return 3; + } + + if (count > UnbreakableBadge.LEVEL_1_COUNT) { + return 2; + } + + return 1; + } + @Override public String toString() { return "UnbreakableBadgeProgress{person=" + person + ", count=" + count + '}'; diff --git a/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakablePoller.java b/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakablePoller.java index 16f8ee8..1d0a947 100644 --- a/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakablePoller.java +++ b/src/main/java/io/trygvis/esper/testing/core/badge/UnbreakablePoller.java @@ -7,21 +7,19 @@ import io.trygvis.esper.testing.*; import io.trygvis.esper.testing.core.*; import io.trygvis.esper.testing.core.db.*; import io.trygvis.esper.testing.util.sql.*; -import org.codehaus.jackson.map.*; import org.slf4j.*; -import java.io.*; import java.sql.*; import java.util.List; import java.util.*; import static io.trygvis.esper.testing.Config.*; -import static io.trygvis.esper.testing.core.db.PersonBadgeDto.Type.*; +import static io.trygvis.esper.testing.core.db.PersonBadgeDto.BadgeType.*; public class UnbreakablePoller implements TablePoller.NewRowCallback<BuildDto> { - Logger logger = LoggerFactory.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(getClass()); - private static final ObjectMapper objectMapper = new ObjectMapper(); + private final BadgeService badgeService = new BadgeService(); public static void main(String[] args) throws Exception { String pollerName = "unbreakable"; @@ -50,23 +48,15 @@ public class UnbreakablePoller implements TablePoller.NewRowCallback<BuildDto> { SqlOption<PersonBadgeProgressDto> o = daos.personDao.selectBadgeProgress(person, UNBREAKABLE); - UnbreakableBadgeProgress badge; - if (o.isNone()) { - badge = UnbreakableBadgeProgress.initial(person); + UnbreakableBadgeProgress badge = UnbreakableBadgeProgress.initial(person); logger.info("New badge progress"); - String state = serialize(badge); + String state = badgeService.serialize(badge); daos.personDao.insertBadgeProgress(person, UNBREAKABLE, state); continue; } - String state = o.get().state; - try { - badge = objectMapper.readValue(state, UnbreakableBadgeProgress.class); - } catch (IOException e) { - logger.error("Could not de-serialize badge state: {}", state); - throw new RuntimeException(e); - } + UnbreakableBadgeProgress badge = badgeService.unbreakable(o.get()); logger.info("Existing badge progress: count={}", badge.count); @@ -90,20 +80,9 @@ public class UnbreakablePoller implements TablePoller.NewRowCallback<BuildDto> { } } - state = serialize(badge); + String state = badgeService.serialize(badge); daos.personDao.updateBadgeProgress(person, UNBREAKABLE, state); } } - - private String serialize(UnbreakableBadgeProgress badge) { - try { - CharArrayWriter writer = new CharArrayWriter(); - objectMapper.writeValue(writer, badge); - return writer.toString(); - } catch (IOException e) { - logger.error("Could not serialize badge.", e); - throw new RuntimeException(e); - } - } } |