PartyLeaderUtil.java

  1. package com.hack23.cia.web.impl.ui.application.views.common.pagemode;

  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;

  5. import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartyRoleMember;
  6. import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartyRoleMember_;
  7. import com.hack23.cia.service.api.ApplicationManager;

  8. /**
  9.  * Utility class for handling party leader related operations.
  10.  */
  11. public final class PartyLeaderUtil {

  12.     /** The Constant ROLE_CODE_PARTILEDARE. */
  13.     private static final String ROLE_CODE_PARTILEDARE = "Partiledare";

  14.     /**
  15.      * Instantiates a new party leader util.
  16.      */
  17.     private PartyLeaderUtil() {
  18.         // Utility class, no instantiation
  19.     }

  20.     /**
  21.      * Checks if a person is a party leader.
  22.      *
  23.      * @param applicationManager the application manager
  24.      * @param personId the person id
  25.      * @return true, if the person is a party leader
  26.      */
  27.     public static boolean isPartyLeader(final ApplicationManager applicationManager, final String personId) {
  28.         return getActiveRoles(applicationManager, personId).stream()
  29.                 .anyMatch(PartyLeaderUtil::isPartyLeaderRole);
  30.     }

  31.     /**
  32.      * Fetches the party leader role for a person.
  33.      *
  34.      * @param applicationManager the application manager
  35.      * @param personId the person id
  36.      * @return the party leader role, or null if not found
  37.      */
  38.     public static ViewRiksdagenPartyRoleMember getPartyLeaderRole(final ApplicationManager applicationManager, final String personId) {
  39.         return getActiveRoles(applicationManager, personId).stream()
  40.                 .filter(PartyLeaderUtil::isPartyLeaderRole)
  41.                 .findFirst()
  42.                 .orElse(null);
  43.     }

  44.     /**
  45.      * Computes party leaders for a list of person IDs.
  46.      *
  47.      * @param applicationManager the application manager
  48.      * @param personIds the person ids
  49.      * @return a map of person ids to boolean indicating if they are party leaders
  50.      */
  51.     public static Map<String, Boolean> computePartyLeaders(final ApplicationManager applicationManager, final Iterable<String> personIds) {
  52.         final Map<String, Boolean> result = new HashMap<>();
  53.         for (final String personId : personIds) {
  54.             result.put(personId, isPartyLeader(applicationManager, personId));
  55.         }
  56.         return result;
  57.     }

  58.     /**
  59.      * Gets the active roles.
  60.      *
  61.      * @param applicationManager the application manager
  62.      * @param personId the person id
  63.      * @return the active roles
  64.      */
  65.     @SuppressWarnings("unchecked")
  66.     private static List<ViewRiksdagenPartyRoleMember> getActiveRoles(final ApplicationManager applicationManager, final String personId) {
  67.         return applicationManager.getDataContainer(ViewRiksdagenPartyRoleMember.class)
  68.                 .findListByProperty(
  69.                     new Object[] { personId, Boolean.TRUE },
  70.                     ViewRiksdagenPartyRoleMember_.personId,
  71.                     ViewRiksdagenPartyRoleMember_.active
  72.                 );
  73.     }

  74.     /**
  75.      * Checks if is party leader role.
  76.      *
  77.      * @param role the role
  78.      * @return true, if is party leader role
  79.      */
  80.     private static boolean isPartyLeaderRole(final ViewRiksdagenPartyRoleMember role) {
  81.         return role.getRoleCode() != null && ROLE_CODE_PARTILEDARE.equalsIgnoreCase(role.getRoleCode().trim());
  82.     }
  83. }