diff options
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/web')
-rw-r--r-- | src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java | 16 | ||||
-rwxr-xr-x | src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java | 25 |
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()); } }; |