PoliticianBallotDecisionSummaryPageModContentFactoryImpl.java

  1. /*
  2.  * Copyright 2014 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.PersonData;
  24. import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenCommitteeBallotDecisionPoliticianEmbeddedId;
  25. import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenCommitteeBallotDecisionPoliticianEmbeddedId_;
  26. import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenCommitteeBallotDecisionPoliticianSummary;
  27. import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenCommitteeBallotDecisionPoliticianSummary_;
  28. import com.hack23.cia.model.internal.application.data.politician.impl.ViewRiksdagenPolitician;
  29. import com.hack23.cia.service.api.DataContainer;
  30. import com.hack23.cia.web.impl.ui.application.views.common.labelfactory.LabelFactory;
  31. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.PoliticianPageMode;
  32. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.UserViews;
  33. import com.hack23.cia.web.impl.ui.application.views.pageclicklistener.PageItemPropertyClickListener;
  34. import com.vaadin.data.util.BeanItemContainer;
  35. import com.vaadin.ui.Layout;
  36. import com.vaadin.ui.MenuBar;
  37. import com.vaadin.ui.Panel;
  38. import com.vaadin.ui.VerticalLayout;

  39. /**
  40.  * The Class BallotDecisionSummaryPageModContentFactoryImpl.
  41.  */
  42. @Component
  43. public final class PoliticianBallotDecisionSummaryPageModContentFactoryImpl extends AbstractPoliticianPageModContentFactoryImpl {

  44.     /**
  45.      * Instantiates a new politician ballot decision summary page mod content
  46.      * factory impl.
  47.      */
  48.     public PoliticianBallotDecisionSummaryPageModContentFactoryImpl() {
  49.         super();
  50.     }

  51.     @Override
  52.     public boolean matches(final String page, final String parameters) {
  53.         return NAME.equals(page) && parameters.contains(PoliticianPageMode.BALLOTDECISIONSUMMARY.toString());
  54.     }

  55.     @Secured({ "ROLE_ANONYMOUS", "ROLE_USER", "ROLE_ADMIN" })
  56.     @Override
  57.     public Layout createContent(final String parameters, final MenuBar menuBar, final Panel panel) {
  58.         final VerticalLayout panelContent = createPanelContent();

  59.         final String pageId = getPageId(parameters);

  60.         final DataContainer<PersonData, String> dataContainer = getApplicationManager()
  61.                 .getDataContainer(PersonData.class);

  62.         final PersonData personData = dataContainer.load(pageId);
  63.         if (personData != null) {

  64.             final DataContainer<ViewRiksdagenPolitician, String> politicianDataContainer = getApplicationManager()
  65.                     .getDataContainer(ViewRiksdagenPolitician.class);

  66.             final ViewRiksdagenPolitician viewRiksdagenPolitician = politicianDataContainer.load(personData.getId());

  67.             getPoliticianMenuItemFactory().createPoliticianMenuBar(menuBar, pageId);

  68.             LabelFactory.createHeader2Label(panelContent,PoliticianPageMode.BALLOTDECISIONSUMMARY.toString());


  69.             final DataContainer<ViewRiksdagenCommitteeBallotDecisionPoliticianSummary, ViewRiksdagenCommitteeBallotDecisionPoliticianEmbeddedId> committeeBallotDecisionPartyDataContainer = getApplicationManager()
  70.                     .getDataContainer(ViewRiksdagenCommitteeBallotDecisionPoliticianSummary.class);

  71.             final List<ViewRiksdagenCommitteeBallotDecisionPoliticianSummary> decisionPartySummaryList = committeeBallotDecisionPartyDataContainer
  72.                     .findOrderedByPropertyListByEmbeddedProperty(
  73.                             ViewRiksdagenCommitteeBallotDecisionPoliticianSummary.class,
  74.                             ViewRiksdagenCommitteeBallotDecisionPoliticianSummary_.embeddedId,
  75.                             ViewRiksdagenCommitteeBallotDecisionPoliticianEmbeddedId.class,
  76.                             ViewRiksdagenCommitteeBallotDecisionPoliticianEmbeddedId_.intressentId, pageId,
  77.                             ViewRiksdagenCommitteeBallotDecisionPoliticianSummary_.voteDate);

  78.             final BeanItemContainer<ViewRiksdagenCommitteeBallotDecisionPoliticianSummary> committeeBallotDecisionPartyDataSource = new BeanItemContainer<>(
  79.                     ViewRiksdagenCommitteeBallotDecisionPoliticianSummary.class, decisionPartySummaryList);

  80.             getGridFactory()
  81.                     .createBasicBeanItemNestedPropertiesGrid(panelContent,committeeBallotDecisionPartyDataSource,
  82.                             "Committee Ballot Decision Politician Summary",
  83.                             new String[] { "embeddedId.concern", "embeddedId.issue" },
  84.                             new String[] { "voteDate", "rm", "org", "committeeReport", "title", "subTitle",
  85.                                     "winner", "embeddedId.concern", "embeddedId.issue", "vote", "won", "rebel",
  86.                                     "noWinner", "approved", "partyApproved", "againstProposalNumber",
  87.                                     "againstProposalParties", "totalVotes", "partyTotalVotes", "yesVotes",
  88.                                     "partyYesVotes", "noVotes", "partyNoVotes", "partyAbstainVotes",
  89.                                     "abstainVotes", "partyAbsentVotes", "absentVotes", "bornYear",
  90.                                     "partyAvgBornYear", "avgBornYear", "ballotType", "decisionType",
  91.                                     "ballotId" },
  92.                             new String[] { "label", "endNumber", "publicDate", "createdDate", "embeddedId",
  93.                                     "partyNoWinner", "partyPercentageYes", "partyPercentageNo",
  94.                                     "partyPercentageAbsent", "partyPercentageAbstain", "percentageYes",
  95.                                     "percentageNo", "percentageAbsent", "percentageAbstain", "firstName",
  96.                                     "lastName", "party", "ballotId", "decisionType", "ballotType", "againstProposalNumber" },
  97.                             new PageItemPropertyClickListener(UserViews.BALLOT_VIEW_NAME, "ballotId"), "ballotId", null);

  98.             pageCompleted(parameters, panel, pageId, viewRiksdagenPolitician);

  99.         }
  100.         return panelContent;

  101.     }
  102. }