Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…h-groupings-api into dev-rramos26-1843
  • Loading branch information
ralphramosgit committed Dec 20, 2024
2 parents daee0da + 5eedf8e commit 68df23c
Show file tree
Hide file tree
Showing 37 changed files with 751 additions and 152 deletions.
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.5</version>
<version>3.4.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

Expand Down Expand Up @@ -89,7 +89,7 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-vault-config</artifactId>
<version>4.1.3</version>
<version>4.2.0</version>
</dependency>
</dependencies>
<build>
Expand Down Expand Up @@ -176,7 +176,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.1</version>
<version>3.5.2</version>
<configuration>
<excludes>
<exclude>**/Test*.java</exclude>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import edu.hawaii.its.api.groupings.GroupingDescription;
import edu.hawaii.its.api.groupings.GroupingGroupMembers;
import edu.hawaii.its.api.groupings.GroupingGroupsMembers;
import edu.hawaii.its.api.groupings.GroupingMembers;
import edu.hawaii.its.api.groupings.GroupingMoveMemberResult;
import edu.hawaii.its.api.groupings.GroupingMoveMembersResult;
import edu.hawaii.its.api.groupings.GroupingOptAttributes;
Expand Down Expand Up @@ -281,26 +282,82 @@ public ResponseEntity<Integer> memberAttributeResultsAsync(
}

/**
* Get all the members of an owned grouping through paginated calls. This should be done through the UI using await.
* Currently, the UI is not using this function to hydrate grouping members, this implementation of getMembers is
* much faster than the current getMembers in use and should be used in the future ether when GROUPINGS-304 is
* completed on the UI or when the UI is migrated to the react framework.
* Get all the members of an owned grouping through paginated calls.
*/
@PostMapping(value = "/groupings/group")
@ResponseBody
public ResponseEntity<GroupingGroupsMembers> getGroupingMembers(@RequestHeader(CURRENT_USER_KEY) String currentUser,
public ResponseEntity<GroupingGroupsMembers> ownedGrouping(@RequestHeader(CURRENT_USER_KEY) String currentUser,
@RequestBody List<String> groupPaths,
@RequestParam(required = true) Integer page,
@RequestParam(required = true) Integer size,
@RequestParam(required = true) SortBy sortBy,
@RequestParam(required = true) Boolean isAscending) {
logger.info("Entered REST getGrouping...");
logger.info("Entered REST ownedGrouping...");
return ResponseEntity
.ok()
.body(groupingOwnerService
.paginatedGrouping(currentUser, groupPaths, page, size, sortBy.sortString(), isAscending));
}

/**
* Get paginated members by a grouping path.
*/
@GetMapping(value = "/groupings/{groupingPath}")
@ResponseBody
public ResponseEntity<GroupingGroupMembers> getGroupingMembers(@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String groupingPath,
@RequestParam(required = false) Integer page,
@RequestParam(required = false) Integer size,
@RequestParam SortBy sortBy,
@RequestParam Boolean isAscending) {
logger.info("Entered REST getGroupingMembers...");
return ResponseEntity
.ok()
.body(groupingOwnerService
.getGroupingMembers(currentUser, groupingPath, page, size, sortBy.sortString(), isAscending));
}

/**
* Get grouping members of a selected grouping path by search string.
*/
@GetMapping(value = "/groupings/{path:[\\w-:.]+}/search/{search}")
public ResponseEntity<GroupingGroupMembers> searchGroupingMembers(
@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String path, @PathVariable String search) {
logger.info("Entered REST searchGroupingMembers");
return ResponseEntity
.ok()
.body(groupingOwnerService.groupingMembersBySearchString(currentUser, path, search));
}

/**
* Get where listed information for members of a grouping path.
*/
@PostMapping(value = "/groupings/{groupingPath}/where-listed")
@ResponseBody
public ResponseEntity<GroupingMembers> getGroupingMembersWhereListed(@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String groupingPath,
@RequestBody List<String> uhIdentifiers) {
logger.info("Entered REST getGroupingMembersWhereListed...");
return ResponseEntity
.ok()
.body(groupingOwnerService.getGroupingMembersWhereListed(currentUser, groupingPath, uhIdentifiers));
}

/**
* Get is basis information for members of a grouping path.
*/
@PostMapping(value = "/groupings/{groupingPath}/is-basis")
@ResponseBody
public ResponseEntity<GroupingMembers> getGroupingMembersIsBasis(@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String groupingPath,
@RequestBody List<String> uhIdentifiers) {
logger.info("Entered REST getGroupingMembersIsBasis...");
return ResponseEntity
.ok()
.body(groupingOwnerService.getGroupingMembersIsBasis(currentUser, groupingPath, uhIdentifiers));
}

/**
* Get a List of memberships as which uhIdentifier has.
*/
Expand Down Expand Up @@ -547,19 +604,6 @@ public ResponseEntity<GroupingDescription> groupingDescription(
.body(groupingOwnerService.groupingsDescription(currentUser, path));
}

/**
* Get a list of members for a selected grouping path with search string.
*/
@GetMapping(value = "/groupings/{path:[\\w-:.]+}/search/{search}")
public ResponseEntity<GroupingGroupMembers> searchGroupingMembers(
@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String path, @PathVariable String search) {
logger.info("Entered REST searchGroupingMembers");
return ResponseEntity
.ok()
.body(groupingOwnerService.groupMembersBySearchString(path, search));
}

/**
* Update grouping description.
*/
Expand Down
48 changes: 47 additions & 1 deletion src/main/java/edu/hawaii/its/api/groupings/GroupingMember.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package edu.hawaii.its.api.groupings;

import org.apache.commons.lang3.StringUtils;

import edu.hawaii.its.api.wrapper.HasMemberResult;

/**
* GroupingMember is used to hydrate the allMembers section of a grouping.
*/
Expand All @@ -9,7 +13,7 @@ public class GroupingMember {
private final String name;
private final String firstName;
private final String lastName;
private final String whereListed;
private String whereListed;

public GroupingMember(GroupingGroupMember groupingGroupMember, String whereListed) {
this.name = groupingGroupMember.getName();
Expand All @@ -20,6 +24,25 @@ public GroupingMember(GroupingGroupMember groupingGroupMember, String whereListe
this.whereListed = whereListed;
}

public GroupingMember(HasMemberResult hasMemberResult, String groupingExtension) {
this.name = hasMemberResult.getName();
this.firstName = hasMemberResult.getFirstName();
this.lastName = hasMemberResult.getLastName();
this.uhUuid = hasMemberResult.getUhUuid();
this.uid = hasMemberResult.getUid();
setWhereListed(hasMemberResult, groupingExtension);
}

public GroupingMember(HasMemberResult hasMemberResult1, String groupingExtension1,
HasMemberResult hasMemberResult2, String groupingExtension2) {
this.name = hasMemberResult1.getName();
this.firstName = hasMemberResult1.getFirstName();
this.lastName = hasMemberResult1.getLastName();
this.uhUuid = hasMemberResult1.getUhUuid();
this.uid = hasMemberResult1.getUid();
setWhereListed(hasMemberResult1, groupingExtension1, hasMemberResult2, groupingExtension2);
}

public GroupingMember() {
this.name = "";
this.firstName = "";
Expand Down Expand Up @@ -52,4 +75,27 @@ public String getUid() {
public String getWhereListed() {
return whereListed;
}

private void setWhereListed(HasMemberResult hasMemberResult, String groupingExtension) {
this.whereListed = hasMemberResult.getResultCode().equals("IS_MEMBER")
? StringUtils.capitalize(groupingExtension)
: "";
}

private void setWhereListed(HasMemberResult hasMemberResult1, String groupingExtension1,
HasMemberResult hasMemberResult2, String groupingExtension2) {
boolean isGroupingExtension1 = hasMemberResult1.getResultCode().equals("IS_MEMBER");
boolean isGroupingExtension2 = hasMemberResult2.getResultCode().equals("IS_MEMBER");

if (!isGroupingExtension1 && !isGroupingExtension2) {
this.whereListed = "";
return;
}

if (isGroupingExtension1 && isGroupingExtension2) {
this.whereListed = StringUtils.capitalize(groupingExtension1) + " & " + StringUtils.capitalize(groupingExtension2);
} else {
this.whereListed = StringUtils.capitalize(isGroupingExtension1 ? groupingExtension1 : groupingExtension2);
}
}
}
29 changes: 28 additions & 1 deletion src/main/java/edu/hawaii/its/api/groupings/GroupingMembers.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@
import java.util.List;
import java.util.stream.Collectors;

import edu.hawaii.its.api.wrapper.HasMemberResult;
import edu.hawaii.its.api.wrapper.HasMembersResults;

/**
* GroupingMembers is used to hydrate the all members sections of a grouping, all members is (basis + include) - exclude.
*/
public class GroupingMembers {
private final List<GroupingMember> members;
private List<GroupingMember> members;

public GroupingMembers() {
this.members = new ArrayList<>();
Expand All @@ -18,6 +21,14 @@ public GroupingMembers(List<GroupingMember> members) {
this.members = members;
}

public GroupingMembers(HasMembersResults hasMembersResults) {
setMembers(hasMembersResults);
}

public GroupingMembers(HasMembersResults hasMembersResults1, HasMembersResults hasMembersResults2) {
setMembers(hasMembersResults1, hasMembersResults2);
}

public List<GroupingMember> getMembers() {
return members;
}
Expand All @@ -29,4 +40,20 @@ public List<String> getUids() {
public List<String> getUhUuids() {
return members.stream().map(GroupingMember::getUhUuid).collect(Collectors.toList());
}

private void setMembers(HasMembersResults hasMembersResults) {
this.members = new ArrayList<>();
for (HasMemberResult hasMemberResult : hasMembersResults.getResults()) {
this.members.add(new GroupingMember(hasMemberResult, hasMembersResults.getGroup().getExtension()));
}
}

private void setMembers(HasMembersResults hasMembersResults1, HasMembersResults hasMembersResults2) {
this.members = new ArrayList<>();
for (int i = 0; i < hasMembersResults1.getResults().size(); i++) {
this.members.add(new GroupingMember(
hasMembersResults1.getResults().get(i), hasMembersResults1.getGroup().getExtension(),
hasMembersResults2.getResults().get(i), hasMembersResults2.getGroup().getExtension()));
}
}
}
22 changes: 21 additions & 1 deletion src/main/java/edu/hawaii/its/api/service/GrouperApiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,9 @@ public HasMembersResults hasMemberResults(String groupPath, String uhIdentifier)
/**
* Check if multiple UH identifiers are listed in a group.
*/
public HasMembersResults hasMembersResults(String groupPath, List<String> uhIdentifiers) {
public HasMembersResults hasMembersResults(String currentUser, String groupPath, List<String> uhIdentifiers) {
HasMembersResults hasMembersResults = exec.execute(new HasMembersCommand()
.owner(currentUser)
.assignGroupPath(groupPath)
.addUhIdentifiers(uhIdentifiers));
return hasMembersResults;
Expand Down Expand Up @@ -363,6 +364,25 @@ public AssignGrouperPrivilegesResult assignGrouperPrivilegesResult(String curren
.setIsAllowed(isAllowed));
}

/**
* Get all members listed in a group.
*/
public GetMembersResult getMembersResult(String currentUser, String groupPath, Integer pageNumber,
Integer pageSize, String sortString, Boolean isAscending) {
GetMembersResults getMembersResults = exec.execute(new GetMembersCommand()
.owner(currentUser)
.addGroupPath(groupPath)
.setPageNumber(pageNumber)
.setPageSize(pageSize)
.setAscending(isAscending)
.sortBy(sortString));
List<GetMembersResult> result = getMembersResults.getMembersResults();
if (result.isEmpty()) {
return new GetMembersResult();
}
return result.get(0);
}

/**
* Get a list of members for each groupPath.
*/
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/edu/hawaii/its/api/service/GrouperService.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
public interface GrouperService {
HasMembersResults hasMemberResults(String groupPath, String uhIdentifier);

HasMembersResults hasMembersResults(String groupPath, List<String> uhIdentifiers);
HasMembersResults hasMembersResults(String currentUser, String groupPath, List<String> uhIdentifiers);

GroupSaveResults groupSaveResults(String groupingPath, String description);

Expand Down Expand Up @@ -85,5 +85,7 @@ public interface GrouperService {

AssignGrouperPrivilegesResult assignGrouperPrivilegesResult(String currentUser, String groupPath, String privilegeName, String uhIdentifier, boolean isAllowed);

GetMembersResult getMembersResult(String currentUser, String groupingPath, Integer pageNumber, Integer pageSize, String sortString, Boolean isAscending);

GetMembersResults getMembersResults(String currentUser, List<String> groupPaths, Integer pageNumber, Integer pageSize, String sortString, Boolean isAscending);
}
Loading

0 comments on commit 68df23c

Please sign in to comment.