diff options
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java')
-rwxr-xr-x | src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java | 25 |
1 files changed, 23 insertions, 2 deletions
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()); } }; |