PartyLeaderUtil.java
package com.hack23.cia.web.impl.ui.application.views.common.pagemode;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartyRoleMember;
import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartyRoleMember_;
import com.hack23.cia.service.api.ApplicationManager;
/**
* Utility class for handling party leader related operations.
*/
public final class PartyLeaderUtil {
/** The Constant ROLE_CODE_PARTILEDARE. */
private static final String ROLE_CODE_PARTILEDARE = "Partiledare";
/**
* Instantiates a new party leader util.
*/
private PartyLeaderUtil() {
// Utility class, no instantiation
}
/**
* Checks if a person is a party leader.
*
* @param applicationManager the application manager
* @param personId the person id
* @return true, if the person is a party leader
*/
public static boolean isPartyLeader(final ApplicationManager applicationManager, final String personId) {
return getActiveRoles(applicationManager, personId).stream()
.anyMatch(PartyLeaderUtil::isPartyLeaderRole);
}
/**
* Fetches the party leader role for a person.
*
* @param applicationManager the application manager
* @param personId the person id
* @return the party leader role, or null if not found
*/
public static ViewRiksdagenPartyRoleMember getPartyLeaderRole(final ApplicationManager applicationManager, final String personId) {
return getActiveRoles(applicationManager, personId).stream()
.filter(PartyLeaderUtil::isPartyLeaderRole)
.findFirst()
.orElse(null);
}
/**
* Computes party leaders for a list of person IDs.
*
* @param applicationManager the application manager
* @param personIds the person ids
* @return a map of person ids to boolean indicating if they are party leaders
*/
public static Map<String, Boolean> computePartyLeaders(final ApplicationManager applicationManager, final Iterable<String> personIds) {
final Map<String, Boolean> result = new HashMap<>();
for (final String personId : personIds) {
result.put(personId, isPartyLeader(applicationManager, personId));
}
return result;
}
/**
* Gets the active roles.
*
* @param applicationManager the application manager
* @param personId the person id
* @return the active roles
*/
@SuppressWarnings("unchecked")
private static List<ViewRiksdagenPartyRoleMember> getActiveRoles(final ApplicationManager applicationManager, final String personId) {
return applicationManager.getDataContainer(ViewRiksdagenPartyRoleMember.class)
.findListByProperty(
new Object[] { personId, Boolean.TRUE },
ViewRiksdagenPartyRoleMember_.personId,
ViewRiksdagenPartyRoleMember_.active
);
}
/**
* Checks if is party leader role.
*
* @param role the role
* @return true, if is party leader role
*/
private static boolean isPartyLeaderRole(final ViewRiksdagenPartyRoleMember role) {
return role.getRoleCode() != null && ROLE_CODE_PARTILEDARE.equalsIgnoreCase(role.getRoleCode().trim());
}
}