PartyDataSeriesFactoryImpl.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.common.dataseriesfactory.impl;

  20. import java.util.Optional;

  21. import org.dussan.vaadin.dcharts.data.DataSeries;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Propagation;
  25. import org.springframework.transaction.annotation.Transactional;

  26. import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenParty;
  27. import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartySummary;
  28. import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartySummary_;
  29. import com.hack23.cia.service.api.ApplicationManager;
  30. import com.hack23.cia.service.api.DataContainer;
  31. import com.hack23.cia.web.impl.ui.application.views.common.dataseriesfactory.api.PartyDataSeriesFactory;

  32. /**
  33.  * The Class DataSeriesFactoryImpl.
  34.  */
  35. @Service
  36. @Transactional(propagation=Propagation.REQUIRED, readOnly = true)
  37. public final class PartyDataSeriesFactoryImpl implements PartyDataSeriesFactory {

  38.     /** The application manager. */
  39.     @Autowired
  40.     private ApplicationManager applicationManager;

  41.     /**
  42.      * Instantiates a new party data series factory impl.
  43.      */
  44.     public PartyDataSeriesFactoryImpl() {
  45.         super();
  46.     }

  47.     @Override
  48.     public DataSeries createChartTimeSeriesCurrentCommitteeByParty() {
  49.         DataSeries dataSeries = new DataSeries();

  50.         final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
  51.                 .getDataContainer(ViewRiksdagenParty.class);

  52.         final DataContainer<ViewRiksdagenPartySummary, String> partySummarydataContainer = applicationManager
  53.                 .getDataContainer(ViewRiksdagenPartySummary.class);

  54.         partySummarydataContainer.getAll();

  55.         for (final ViewRiksdagenParty data : dataContainer.getAll()) {
  56.             final ViewRiksdagenPartySummary summary = partySummarydataContainer.load(data.getPartyId());
  57.             if (summary != null && summary.isActive()) {

  58.                 dataSeries =dataSeries.newSeries().add(data.getPartyName(),summary.getTotalActiveCommittee());
  59.             }
  60.         }
  61.         return dataSeries;
  62.     }

  63.     @Override
  64.     public DataSeries createChartTimeSeriesCurrentGovernmentByParty() {
  65.         DataSeries dataSeries = new DataSeries();

  66.         final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
  67.                 .getDataContainer(ViewRiksdagenParty.class);

  68.         final DataContainer<ViewRiksdagenPartySummary, String> partySummarydataContainer = applicationManager
  69.                 .getDataContainer(ViewRiksdagenPartySummary.class);

  70.         partySummarydataContainer.getAll();

  71.         for (final ViewRiksdagenParty data : dataContainer.getAll()) {
  72.             final ViewRiksdagenPartySummary summary = partySummarydataContainer.load(data.getPartyId());
  73.             if (summary != null && summary.isActive()) {

  74.                 dataSeries =dataSeries.newSeries().add(data.getPartyName(),summary.getTotalActiveGovernment());
  75.             }
  76.         }
  77.         return dataSeries;
  78.     }

  79.     @Override
  80.     public DataSeries createPartyChartTimeSeriesAll() {
  81.         DataSeries dataSeries = new DataSeries();

  82.         final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
  83.                 .getDataContainer(ViewRiksdagenParty.class);

  84.         for (final ViewRiksdagenParty data : dataContainer.getAll()) {
  85.             dataSeries = dataSeries.newSeries().add(data.getPartyName(),
  86.                     data.getHeadCount());
  87.         }
  88.         return dataSeries;
  89.     }


  90.     @Override
  91.     public DataSeries createPartyChartTimeSeriesCurrent() {
  92.         DataSeries dataSeries = new DataSeries();

  93.         final DataContainer<ViewRiksdagenPartySummary, String> dataContainer = applicationManager
  94.                 .getDataContainer(ViewRiksdagenPartySummary.class);

  95.         for (final ViewRiksdagenPartySummary data : dataContainer.getAllOrderBy(ViewRiksdagenPartySummary_.currentAssignments)) {
  96.             if (data != null && data.isActiveParliament()) {

  97.                 dataSeries = dataSeries.newSeries().add(getPartyName(data.getParty()),
  98.                         data.getTotalActiveParliament());
  99.             }
  100.         }
  101.         return dataSeries;
  102.     }

  103.     /**
  104.      * Gets the party name.
  105.      *
  106.      * @param party
  107.      *            the party
  108.      * @return the party name
  109.      */
  110.     private String getPartyName(final String party) {
  111.         final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
  112.                 .getDataContainer(ViewRiksdagenParty.class);

  113.         final Optional<ViewRiksdagenParty> matchingObjects =dataContainer.getAll().stream().
  114.                 filter(p -> p.getPartyId().equalsIgnoreCase(party)).
  115.                 findFirst();

  116.         if (matchingObjects.isPresent()) {
  117.             return matchingObjects.get().getPartyName();

  118.         } else {
  119.             return party;
  120.         }
  121.     }

  122. }