PoliticianRoleSummaryPageModContentFactoryImpl.java

  1. /*
  2.  * Copyright 2010-2025 James Pether Sörling
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *   http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  *
  16.  *  $Id$
  17.  *  $HeadURL$
  18. */
  19. package com.hack23.cia.web.impl.ui.application.views.user.politician.pagemode;

  20. import java.util.List;

  21. import org.springframework.security.access.annotation.Secured;
  22. import org.springframework.stereotype.Component;

  23. import com.hack23.cia.model.external.riksdagen.person.impl.AssignmentData;
  24. import com.hack23.cia.model.external.riksdagen.person.impl.PersonData;
  25. import com.hack23.cia.model.internal.application.data.politician.impl.ViewRiksdagenPolitician;
  26. import com.hack23.cia.model.internal.application.system.impl.ApplicationEventGroup;
  27. import com.hack23.cia.web.impl.ui.application.action.ViewAction;
  28. import com.hack23.cia.web.impl.ui.application.views.common.menufactory.api.pagecommands.PageCommandPoliticianConstants;
  29. import com.hack23.cia.web.impl.ui.application.views.common.pagemode.CardInfoRowUtil;
  30. import com.hack23.cia.web.impl.ui.application.views.common.sizing.ContentRatio;
  31. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.UserViews;
  32. import com.vaadin.ui.Label;
  33. import com.vaadin.ui.Layout;
  34. import com.vaadin.ui.MenuBar;
  35. import com.vaadin.ui.Panel;
  36. import com.vaadin.ui.VerticalLayout;

  37. /**
  38.  * The Class RoleSummaryPageModContentFactoryImpl.
  39.  */
  40. @Component
  41. public final class PoliticianRoleSummaryPageModContentFactoryImpl extends AbstractPoliticianPageModContentFactoryImpl {

  42.     /**
  43.      * Instantiates a new politician role summary page mod content factory impl.
  44.      */
  45.     public PoliticianRoleSummaryPageModContentFactoryImpl() {
  46.         super();
  47.     }

  48.     @Secured({ "ROLE_ANONYMOUS", "ROLE_USER", "ROLE_ADMIN" })
  49.     @Override
  50.     public Layout createContent(final String parameters, final MenuBar menuBar, final Panel panel) {
  51.         final VerticalLayout panelContent = createPanelContent();

  52.         final String pageId = getPageId(parameters);
  53.         final ViewRiksdagenPolitician viewRiksdagenPolitician = getItem(parameters);
  54.         getPoliticianMenuItemFactory().createPoliticianMenuBar(menuBar, pageId);

  55.         CardInfoRowUtil.createPageHeader(panel, panelContent,
  56.                 PoliticianPageTitleConstants.ROLE_SUMMARY_TITLE + viewRiksdagenPolitician.getFirstName() + ' '
  57.                         + viewRiksdagenPolitician.getLastName() + '(' + viewRiksdagenPolitician.getParty() + ')',
  58.                 PoliticianPageTitleConstants.SUMMARY_SUBTITLE, PoliticianPageTitleConstants.ROLE_SUMMARY_DESC);

  59.         final PersonData personData = getApplicationManager().getDataContainer(PersonData.class)
  60.                 .load(viewRiksdagenPolitician.getPersonId());

  61.         final List<AssignmentData> assignmentList = personData.getPersonAssignmentData().getAssignmentList();

  62.         createRoleSummary(panelContent, assignmentList, viewRiksdagenPolitician);

  63.         getPageActionEventHelper().createPageEvent(ViewAction.VISIT_POLITICIAN_VIEW, ApplicationEventGroup.USER,
  64.                 UserViews.POLITICIAN_VIEW_NAME, parameters, pageId);
  65.         return panelContent;

  66.     }

  67.     /**
  68.      * Creates the role summary.
  69.      *
  70.      * @param roleSummaryLayoutTabsheet the role summary layout tabsheet
  71.      * @param assignmentList            the assignment list
  72.      * @param viewRiksdagenPolitician   the view riksdagen politician
  73.      */
  74.     private static void createRoleSummary(final VerticalLayout roleSummaryLayoutTabsheet,
  75.             final List<AssignmentData> assignmentList, final ViewRiksdagenPolitician viewRiksdagenPolitician) {

  76.         final VerticalLayout layout = new VerticalLayout();
  77.         layout.setSizeFull();

  78.         layout.addComponent(new Label(PoliticianViewConstants.TOTAL_ASSIGNMENTS + assignmentList.size()));

  79.         if (viewRiksdagenPolitician != null) {
  80.             layout.addComponent(new Label(PoliticianViewConstants.GOVERNMENT_EXPERIENCE
  81.                     + convertToYearsString(viewRiksdagenPolitician.getTotalDaysServedGovernment())));
  82.             layout.addComponent(new Label(PoliticianViewConstants.SPEAKER_EXPERIENCE
  83.                     + convertToYearsString(viewRiksdagenPolitician.getTotalDaysServedSpeaker())));
  84.             layout.addComponent(new Label(PoliticianViewConstants.COMMITTEE_EXPERIENCE
  85.                     + convertToYearsString(viewRiksdagenPolitician.getTotalDaysServedCommittee())));
  86.             layout.addComponent(new Label(PoliticianViewConstants.EU_EXPERIENCE
  87.                     + convertToYearsString(viewRiksdagenPolitician.getTotalDaysServedEu())));
  88.             layout.addComponent(new Label(PoliticianViewConstants.PARLIAMENT_EXPERIENCE
  89.                     + convertToYearsString(viewRiksdagenPolitician.getTotalDaysServedParliament())));
  90.             layout.addComponent(new Label(PoliticianViewConstants.PARTY_EXPERIENCE
  91.                     + convertToYearsString(viewRiksdagenPolitician.getTotalDaysServedParty())));
  92.         }

  93.         roleSummaryLayoutTabsheet.addComponent(layout);
  94.         roleSummaryLayoutTabsheet.setExpandRatio(layout, ContentRatio.GRID);

  95.     }

  96.     @Override
  97.     public boolean matches(final String page, final String parameters) {
  98.         return PageCommandPoliticianConstants.COMMAND_POLITICIAN_ROLE_SUMMARY.matches(page, parameters);
  99.     }

  100. }