From 1d72e6b359e970f5be8c6460f94e198ba9b5e992 Mon Sep 17 00:00:00 2001 From: Matthias Cullmann Date: Thu, 18 Apr 2024 15:49:57 +0200 Subject: [PATCH] add roleSchemes end point --- .../com/baloise/azure/FunctionalOrgEndpoint.java | 5 ++++- src/main/java/com/baloise/azure/Graph.java | 13 +++++++++++-- src/test/java/com/baloise/azure/GraphTest.java | 10 ++++++---- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/baloise/azure/FunctionalOrgEndpoint.java b/src/main/java/com/baloise/azure/FunctionalOrgEndpoint.java index badfce5..68da4e8 100644 --- a/src/main/java/com/baloise/azure/FunctionalOrgEndpoint.java +++ b/src/main/java/com/baloise/azure/FunctionalOrgEndpoint.java @@ -83,10 +83,13 @@ public HttpResponseMessage v1( try { List path = asList(request.getUri().getPath().split("/")); path = path.subList(path.indexOf("V1")+1, path.size()); - if(path.size() ==2 && "avatar".equals(path.get(0))) { + if(path.size() ==1 && "~rolesSchemes".equals(path.get(0))) { + return createJSONResponse(request, Map.of("default", graph().getDefaultRoleScheme(), "roleSchemes", graph().getRoleSchemes())); + } else if(path.size() ==2 && "~avatar".equals(path.get(0))) { return createAvatarResponse(request, path.get(1)); } + if(request.getQueryParameters().containsKey("clear")) graph().clear(); final StringTree child = graph().getOrg().getChild(path.toArray(new String[0])); diff --git a/src/main/java/com/baloise/azure/Graph.java b/src/main/java/com/baloise/azure/Graph.java index 36f6ed3..48ff9a1 100644 --- a/src/main/java/com/baloise/azure/Graph.java +++ b/src/main/java/com/baloise/azure/Graph.java @@ -14,6 +14,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; @@ -32,7 +33,7 @@ public class Graph { private final String SCRUM_ROLES = "~SCRUM"; - private final Map> rolesSchemes = new HashMap<>(of(SCRUM_ROLES, new TreeSet(asList("Member", "ScrumMaster", "ProductOwner")))); + final Map> rolesSchemes = new HashMap<>(of(SCRUM_ROLES, new TreeSet(asList("Member", "ScrumMaster", "ProductOwner")))); final String teamMarker = "👨‍👨‍👦‍👦"; final String orgMarker = "🏢"; final String orgSeparator = "-"; @@ -125,12 +126,16 @@ private Map getTags(String teamId) { Set expandRoles(String ... rolesNames) { return rolesNames == null || rolesNames.length == 0 ? - expandRoles(SCRUM_ROLES) : + expandRoles(getDefaultRoleScheme()) : stream(rolesNames) .flatMap((name)-> rolesSchemes.computeIfAbsent(name, Collections::singleton).stream()) .collect(toSet()); } + public String getDefaultRoleScheme() { + return SCRUM_ROLES; + } + String parseName(String input) { return input.replaceAll(teamMarker, "").trim(); } @@ -140,5 +145,9 @@ StringTree parseOrg(String description) { Matcher matcher = orgPattern.matcher(description); return matcher.find() ? org.addChild(matcher.group(1).split(orgSeparator)) : org; } + + public Map> getRoleSchemes() { + return rolesSchemes.entrySet().stream().filter(e->e.getValue().size()>1).collect(toMap(Entry::getKey,Entry::getValue)); + } } diff --git a/src/test/java/com/baloise/azure/GraphTest.java b/src/test/java/com/baloise/azure/GraphTest.java index b1e38fd..31bc37c 100644 --- a/src/test/java/com/baloise/azure/GraphTest.java +++ b/src/test/java/com/baloise/azure/GraphTest.java @@ -2,6 +2,7 @@ import static java.util.Arrays.asList; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; import java.util.TreeSet; @@ -20,10 +21,11 @@ public void testExpandRoles() { } @Test - public void testParseOrg() { -// assertEquals(new Org(), null); - g.parseOrg(""); - + public void testGetRoleSchemes() { + g.expandRoles("bla"); + final Graph expected = new Graph(); + assertNotEquals(expected.rolesSchemes, g.rolesSchemes); + assertEquals(expected.getRoleSchemes(), g.getRoleSchemes()); } }