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());
- }
- }