aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/core/badge
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2012-12-26 13:30:42 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2012-12-26 13:30:42 +0100
commit348ec4e14aeaf4e98fcab96f0ae7242d178db69b (patch)
tree642b16e2fa6ffcfaf1429571d2f4771acc620e2e /src/main/java/io/trygvis/esper/testing/core/badge
parent97b1b1eeacd72845cc7065c86d68444881370275 (diff)
downloadesper-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')
-rw-r--r--src/main/java/io/trygvis/esper/testing/core/badge/BadgeProgress.java15
-rw-r--r--src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java35
-rw-r--r--src/main/java/io/trygvis/esper/testing/core/badge/UnbreakableBadgeProgress.java38
-rw-r--r--src/main/java/io/trygvis/esper/testing/core/badge/UnbreakablePoller.java35
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);
- }
- }
}