aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/web
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/web')
-rw-r--r--src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java16
-rwxr-xr-xsrc/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java25
2 files changed, 35 insertions, 6 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java b/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java
index ded97ae..90d9c93 100644
--- a/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java
+++ b/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java
@@ -1,8 +1,12 @@
package io.trygvis.esper.testing.web.resource;
+import io.trygvis.esper.testing.core.badge.*;
import org.joda.time.*;
+import java.util.*;
+
public class BadgeJson {
+ public final UUID uuid;
public final DateTime createdDate;
public final String name;
public final int level;
@@ -13,7 +17,8 @@ public class BadgeJson {
/**
* For completed badges.
*/
- public BadgeJson(DateTime createdDate, String name, int level) {
+ public BadgeJson(UUID uuid, DateTime createdDate, String name, int level) {
+ this.uuid = uuid;
this.createdDate = createdDate;
this.name = name;
this.level = level;
@@ -24,8 +29,9 @@ public class BadgeJson {
/**
* For badges in progress.
*/
- public BadgeJson(DateTime createdDate, String name, int level, int progress, int goal) {
- this.createdDate = createdDate;
+ public BadgeJson(String name, int level, int progress, int goal) {
+ this.uuid = null;
+ this.createdDate = null;
this.name = name;
this.level = level;
this.progress = progress;
@@ -35,10 +41,12 @@ public class BadgeJson {
class BadgeDetailJson {
public final BadgeJson badge;
+ public final PersonalBadge personalBadge;
public final PersonJson person;
- BadgeDetailJson(BadgeJson badge, PersonJson person) {
+ BadgeDetailJson(BadgeJson badge, PersonalBadge personalBadge, PersonJson person) {
this.badge = badge;
+ this.personalBadge = personalBadge;
this.person = person;
}
}
diff --git a/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java b/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java
index bd61855..83f5144 100755
--- a/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java
+++ b/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java
@@ -116,6 +116,9 @@ public class CoreResource extends AbstractResource {
// Badge
// -----------------------------------------------------------------------
+ /**
+ * This shouldn't return a detailed list by default.
+ */
@GET
@Path("/badge")
public List<BadgeDetailJson> getBadges(@MagicParam final PageRequest page, @MagicParam(query = "person") final Uuid person) throws Exception {
@@ -132,6 +135,22 @@ public class CoreResource extends AbstractResource {
});
}
+ @GET
+ @Path("/badge/{uuid}")
+ public BadgeDetailJson getBadges(@MagicParam final Uuid uuid) throws Exception {
+ return sql(new CoreDaosCallback<SqlOption<BadgeDetailJson>>() {
+ protected SqlOption<BadgeDetailJson> run() throws SQLException {
+ return daos.personDao.selectBadge(uuid).map(getBadgeDetailJson);
+ }
+ });
+ }
+
+ SqlF<PersonalBadgeDto, PersonalBadge> badge = new SqlF<PersonalBadgeDto, PersonalBadge>() {
+ public PersonalBadge apply(PersonalBadgeDto dto) throws SQLException {
+ return badgeService.badge(dto);
+ }
+ };
+
abstract class CoreDaosCallback<T> implements DatabaseAccess.DaosCallback<T> {
protected Daos daos;
@@ -201,17 +220,19 @@ public class CoreResource extends AbstractResource {
protected SqlF<PersonalBadgeDto, BadgeJson> getBadgeJson = new SqlF<PersonalBadgeDto, BadgeJson>() {
public BadgeJson apply(PersonalBadgeDto badge) throws SQLException {
- return new BadgeJson(badge.createdDate, badge.type.name(), badge.level);
+ return new BadgeJson(badge.uuid, badge.createdDate, badge.type.name(), badge.level);
}
};
private BadgeJson getBadge(BadgeProgress progress) {
- return new BadgeJson(null, progress.type.name(), progress.progressingAgainstLevel(), progress.progression(), progress.goal());
+ return new BadgeJson(progress.type.name(), progress.progressingAgainstLevel(), progress.progression(), progress.goal());
}
protected final SqlF<PersonalBadgeDto, BadgeDetailJson> getBadgeDetailJson = new SqlF<PersonalBadgeDto, BadgeDetailJson>() {
public BadgeDetailJson apply(PersonalBadgeDto badgeDto) throws SQLException {
+
return new BadgeDetailJson(getBadgeJson.apply(badgeDto),
+ badge.apply(badgeDto),
daos.personDao.selectPerson(badgeDto.person).map(getPersonJson).get());
}
};