Loading gms/src/main/java/it/inaf/ia2/gms/model/IdentityType.java +3 −2 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ import java.util.Arrays; public enum IdentityType { EDU_GAIN("EduGAIN"), EDU_GAIN("eduGAIN"), X509("X.509"), ORCID("OrcID"), GOOGLE("Google"), Loading @@ -27,7 +27,8 @@ public enum IdentityType { @JsonCreator public static IdentityType forValue(String value) { return Arrays.stream(IdentityType.values()) .filter(it -> value.equals(it.value)).findFirst().get(); .filter(it -> value.equals(it.value)).findFirst() .orElseThrow(() -> new IllegalArgumentException("Unsupported IdentityType " + value)); } @JsonValue Loading gms/src/main/java/it/inaf/ia2/gms/persistence/GroupsDAO.java +14 −9 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ public class GroupsDAO { public Optional<GroupEntity> findGroupById(String groupId) { String sql = "SELECT id, name, path from gms_group WHERE id = ?"; String sql = "SELECT id, name, path, is_leaf from gms_group WHERE id = ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -77,6 +77,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); return Optional.of(group); } return Optional.empty(); Loading @@ -85,7 +86,7 @@ public class GroupsDAO { public Optional<GroupEntity> findGroupByPath(String path) { String sql = "SELECT id, name from gms_group WHERE path = ?"; String sql = "SELECT id, name, is_leaf from gms_group WHERE path = ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -96,6 +97,7 @@ public class GroupsDAO { GroupEntity group = new GroupEntity(); group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setLeaf(resultSet.getBoolean("is_leaf")); group.setPath(path); return Optional.of(group); } Loading @@ -111,7 +113,7 @@ public class GroupsDAO { return jdbcTemplate.query(conn -> { String sql = "SELECT id, name, path from gms_group WHERE id IN ("; String sql = "SELECT id, name, path, is_leaf from gms_group WHERE id IN ("; sql += String.join(",", identifiers.stream().map(p -> "?").collect(Collectors.toList())); sql += ")"; Loading @@ -128,6 +130,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); groups.add(group); } return groups; Loading @@ -136,7 +139,7 @@ public class GroupsDAO { public Optional<GroupEntity> findGroupByParentAndName(String parentPath, String childName) { String sql = "SELECT id, path from gms_group WHERE name = ? AND path ~ ?"; String sql = "SELECT id, path, is_leaf from gms_group WHERE name = ? AND path ~ ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -149,6 +152,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(childName); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); return Optional.of(group); } return Optional.empty(); Loading @@ -168,9 +172,9 @@ public class GroupsDAO { String sql; if (hasSearchFilter) { sql = "SELECT id, name, path FROM gms_group WHERE path ~ ? AND name ILIKE ? ORDER BY name"; sql = "SELECT id, name, path, is_leaf FROM gms_group WHERE path ~ ? AND name ILIKE ? ORDER BY name"; } else { sql = "SELECT id, name, path FROM gms_group WHERE path ~ ? ORDER BY name"; sql = "SELECT id, name, path, is_leaf FROM gms_group WHERE path ~ ? ORDER BY name"; } return jdbcTemplate.query(conn -> { Loading @@ -195,7 +199,7 @@ public class GroupsDAO { public List<GroupEntity> getAllChildren(String path) { String sql = "SELECT id, name, path FROM gms_group WHERE path <@ ? AND path <> ? ORDER BY nlevel(path) DESC"; String sql = "SELECT id, name, path, is_leaf FROM gms_group WHERE path <@ ? AND path <> ? ORDER BY nlevel(path) DESC"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -209,7 +213,7 @@ public class GroupsDAO { public List<GroupEntity> findGroupsByNames(List<String> names) { String sql = "SELECT id, name, path from gms_group WHERE name IN (" String sql = "SELECT id, name, path, is_leaf from gms_group WHERE name IN (" + String.join(",", names.stream().map(g -> "?").collect(Collectors.toList())) + ")"; Loading @@ -232,6 +236,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); groups.add(group); } return groups; Loading Loading @@ -302,7 +307,7 @@ public class GroupsDAO { public List<GroupEntity> searchGroups(String searchText) { String sql = "SELECT id, name, path from gms_group WHERE name ILIKE ?"; String sql = "SELECT id, name, path, is_leaf from gms_group WHERE name ILIKE ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading gms/src/main/java/it/inaf/ia2/gms/persistence/MembershipsDAO.java +2 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ public class MembershipsDAO { public List<GroupEntity> getUserMemberships(String userId) { String sql = "SELECT g.id, g.name, g.path FROM " String sql = "SELECT g.id, g.name, g.path, g.is_leaf FROM " + " gms_membership m " + " JOIN gms_group g ON g.id = m.group_id" + " WHERE m.user_id = ?"; Loading @@ -59,6 +59,7 @@ public class MembershipsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); memberships.add(group); } return memberships; Loading gms/src/main/java/it/inaf/ia2/gms/persistence/model/GroupEntity.java +9 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ public class GroupEntity { private String id; private String name; private String path; private boolean leaf; public String getId() { return id; Loading @@ -32,6 +33,14 @@ public class GroupEntity { this.path = path; } public boolean isLeaf() { return leaf; } public void setLeaf(boolean leaf) { this.leaf = leaf; } public String getParentPath() { if (path.isEmpty()) { return null; Loading gms/src/main/resources/sql/init.sql +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ CREATE TABLE gms_group ( id varchar NOT NULL, name text NOT NULL, path ltree NOT NULL, is_leaf boolean, primary key(id) ); Loading Loading
gms/src/main/java/it/inaf/ia2/gms/model/IdentityType.java +3 −2 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ import java.util.Arrays; public enum IdentityType { EDU_GAIN("EduGAIN"), EDU_GAIN("eduGAIN"), X509("X.509"), ORCID("OrcID"), GOOGLE("Google"), Loading @@ -27,7 +27,8 @@ public enum IdentityType { @JsonCreator public static IdentityType forValue(String value) { return Arrays.stream(IdentityType.values()) .filter(it -> value.equals(it.value)).findFirst().get(); .filter(it -> value.equals(it.value)).findFirst() .orElseThrow(() -> new IllegalArgumentException("Unsupported IdentityType " + value)); } @JsonValue Loading
gms/src/main/java/it/inaf/ia2/gms/persistence/GroupsDAO.java +14 −9 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ public class GroupsDAO { public Optional<GroupEntity> findGroupById(String groupId) { String sql = "SELECT id, name, path from gms_group WHERE id = ?"; String sql = "SELECT id, name, path, is_leaf from gms_group WHERE id = ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -77,6 +77,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); return Optional.of(group); } return Optional.empty(); Loading @@ -85,7 +86,7 @@ public class GroupsDAO { public Optional<GroupEntity> findGroupByPath(String path) { String sql = "SELECT id, name from gms_group WHERE path = ?"; String sql = "SELECT id, name, is_leaf from gms_group WHERE path = ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -96,6 +97,7 @@ public class GroupsDAO { GroupEntity group = new GroupEntity(); group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setLeaf(resultSet.getBoolean("is_leaf")); group.setPath(path); return Optional.of(group); } Loading @@ -111,7 +113,7 @@ public class GroupsDAO { return jdbcTemplate.query(conn -> { String sql = "SELECT id, name, path from gms_group WHERE id IN ("; String sql = "SELECT id, name, path, is_leaf from gms_group WHERE id IN ("; sql += String.join(",", identifiers.stream().map(p -> "?").collect(Collectors.toList())); sql += ")"; Loading @@ -128,6 +130,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); groups.add(group); } return groups; Loading @@ -136,7 +139,7 @@ public class GroupsDAO { public Optional<GroupEntity> findGroupByParentAndName(String parentPath, String childName) { String sql = "SELECT id, path from gms_group WHERE name = ? AND path ~ ?"; String sql = "SELECT id, path, is_leaf from gms_group WHERE name = ? AND path ~ ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -149,6 +152,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(childName); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); return Optional.of(group); } return Optional.empty(); Loading @@ -168,9 +172,9 @@ public class GroupsDAO { String sql; if (hasSearchFilter) { sql = "SELECT id, name, path FROM gms_group WHERE path ~ ? AND name ILIKE ? ORDER BY name"; sql = "SELECT id, name, path, is_leaf FROM gms_group WHERE path ~ ? AND name ILIKE ? ORDER BY name"; } else { sql = "SELECT id, name, path FROM gms_group WHERE path ~ ? ORDER BY name"; sql = "SELECT id, name, path, is_leaf FROM gms_group WHERE path ~ ? ORDER BY name"; } return jdbcTemplate.query(conn -> { Loading @@ -195,7 +199,7 @@ public class GroupsDAO { public List<GroupEntity> getAllChildren(String path) { String sql = "SELECT id, name, path FROM gms_group WHERE path <@ ? AND path <> ? ORDER BY nlevel(path) DESC"; String sql = "SELECT id, name, path, is_leaf FROM gms_group WHERE path <@ ? AND path <> ? ORDER BY nlevel(path) DESC"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading @@ -209,7 +213,7 @@ public class GroupsDAO { public List<GroupEntity> findGroupsByNames(List<String> names) { String sql = "SELECT id, name, path from gms_group WHERE name IN (" String sql = "SELECT id, name, path, is_leaf from gms_group WHERE name IN (" + String.join(",", names.stream().map(g -> "?").collect(Collectors.toList())) + ")"; Loading @@ -232,6 +236,7 @@ public class GroupsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); groups.add(group); } return groups; Loading Loading @@ -302,7 +307,7 @@ public class GroupsDAO { public List<GroupEntity> searchGroups(String searchText) { String sql = "SELECT id, name, path from gms_group WHERE name ILIKE ?"; String sql = "SELECT id, name, path, is_leaf from gms_group WHERE name ILIKE ?"; return jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); Loading
gms/src/main/java/it/inaf/ia2/gms/persistence/MembershipsDAO.java +2 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ public class MembershipsDAO { public List<GroupEntity> getUserMemberships(String userId) { String sql = "SELECT g.id, g.name, g.path FROM " String sql = "SELECT g.id, g.name, g.path, g.is_leaf FROM " + " gms_membership m " + " JOIN gms_group g ON g.id = m.group_id" + " WHERE m.user_id = ?"; Loading @@ -59,6 +59,7 @@ public class MembershipsDAO { group.setId(resultSet.getString("id")); group.setName(resultSet.getString("name")); group.setPath(resultSet.getString("path")); group.setLeaf(resultSet.getBoolean("is_leaf")); memberships.add(group); } return memberships; Loading
gms/src/main/java/it/inaf/ia2/gms/persistence/model/GroupEntity.java +9 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ public class GroupEntity { private String id; private String name; private String path; private boolean leaf; public String getId() { return id; Loading @@ -32,6 +33,14 @@ public class GroupEntity { this.path = path; } public boolean isLeaf() { return leaf; } public void setLeaf(boolean leaf) { this.leaf = leaf; } public String getParentPath() { if (path.isEmpty()) { return null; Loading
gms/src/main/resources/sql/init.sql +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ CREATE TABLE gms_group ( id varchar NOT NULL, name text NOT NULL, path ltree NOT NULL, is_leaf boolean, primary key(id) ); Loading