PageLinkFactoryImpl.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.pagelinks.impl;

  20. import org.springframework.stereotype.Service;

  21. import com.hack23.cia.model.external.riksdagen.person.impl.PersonData;
  22. import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenCommittee;
  23. import com.hack23.cia.model.internal.application.data.ministry.impl.ViewRiksdagenMinistry;
  24. import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenParty;
  25. import com.hack23.cia.model.internal.application.data.politician.impl.ViewRiksdagenPolitician;
  26. import com.hack23.cia.web.impl.ui.application.action.ViewAction;
  27. import com.hack23.cia.web.impl.ui.application.views.common.pagelinks.api.PageLinkFactory;
  28. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.ApplicationPageMode;
  29. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.CommonsViews;
  30. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.MinistryPageMode;
  31. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.PageMode;
  32. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.UserViews;
  33. import com.vaadin.icons.VaadinIcons;
  34. import com.vaadin.server.ExternalResource;
  35. import com.vaadin.ui.Link;

  36. /**
  37.  * The Class PageLinkFactoryImpl.
  38.  */
  39. @Service
  40. public final class PageLinkFactoryImpl implements PageLinkFactory {

  41.     /** The Constant COMMITTEE. */
  42.     private static final String COMMITTEE = "Committee ";

  43.     /** The Constant PAGE_PREFIX. */
  44.     private static final String PAGE_PREFIX = "#!";

  45.     /** The Constant LINK_SEPARATOR. */
  46.     private static final String LINK_SEPARATOR = PAGE_PREFIX;

  47.     /** The Constant MAIN_VIEW_LINK_TEXT. */
  48.     private static final String MAIN_VIEW_LINK_TEXT = "Main View";

  49.     /** The Constant MINISTRY. */
  50.     private static final String MINISTRY = "Ministry ";


  51.     /** The Constant PAGE_SEPARATOR. */
  52.     private static final Character PAGE_SEPARATOR = '/';

  53.     /** The Constant PARTY. */
  54.     private static final String PARTY = "Party ";

  55.     /** The Constant POLITICIAN. */
  56.     private static final String POLITICIAN = "Politician ";

  57.     /**
  58.      * Default constructor for PageLinkFactoryImpl.
  59.      */
  60.     public PageLinkFactoryImpl() {
  61.         // Default constructor
  62.     }

  63.     @Override
  64.     public Link addCommitteePageLink(final ViewRiksdagenCommittee data) {
  65.         final Link pageLink = new Link(COMMITTEE
  66.                 + data.getEmbeddedId().getDetail(), new ExternalResource(PAGE_PREFIX
  67.                         + UserViews.COMMITTEE_VIEW_NAME + PageMode.OVERVIEW + PAGE_SEPARATOR + PAGE_SEPARATOR + data.getEmbeddedId().getOrgCode()));
  68.         pageLink.setId(ViewAction.VISIT_COMMITTEE_VIEW.name() + PAGE_SEPARATOR
  69.                 + data.getEmbeddedId().getOrgCode());
  70.         pageLink.setIcon(VaadinIcons.GROUP);
  71.         return pageLink;
  72.     }

  73.     @Override
  74.     public Link addMinistryPageLink(final ViewRiksdagenMinistry data) {
  75.         final Link pageLink = new Link(MINISTRY + data.getNameId(),
  76.                 new ExternalResource(PAGE_PREFIX + UserViews.MINISTRY_VIEW_NAME + PAGE_SEPARATOR + PageMode.OVERVIEW + PAGE_SEPARATOR
  77.                         + data.getNameId()));
  78.         pageLink.setId(ViewAction.VISIT_MINISTRY_VIEW.name() + PAGE_SEPARATOR
  79.                 + data.getNameId());
  80.         pageLink.setIcon(VaadinIcons.GROUP);
  81.         return pageLink;
  82.     }

  83.     @Override
  84.     public Link addPartyPageLink(final ViewRiksdagenParty data) {
  85.         final Link pageLink = new Link(PARTY + data.getPartyName(),
  86.                 new ExternalResource(PAGE_PREFIX + UserViews.PARTY_VIEW_NAME + PAGE_SEPARATOR + PageMode.OVERVIEW + PAGE_SEPARATOR
  87.                         + data.getPartyId()));
  88.         pageLink.setId(ViewAction.VISIT_PARTY_VIEW.name() + PAGE_SEPARATOR
  89.                 + data.getPartyId());
  90.         pageLink.setIcon(VaadinIcons.GROUP);
  91.         return pageLink;
  92.     }



  93.     @Override
  94.     public Link createAdminPagingLink(final String label,final String page, final String pageId, final String pageNr) {
  95.         final Link pageLink = new Link(label,
  96.                 new ExternalResource(PAGE_PREFIX + page + PAGE_SEPARATOR
  97.                         + "[" + pageNr + "]"));
  98.         pageLink.setId(page +"ShowPage" + PAGE_SEPARATOR
  99.                 + pageNr);
  100.         pageLink.setIcon(VaadinIcons.SERVER);

  101.         return pageLink;
  102.     }

  103.     @Override
  104.     public Link createLoginPageLink() {
  105.         final Link pageLink = new Link("Login", new ExternalResource(
  106.                 LINK_SEPARATOR + CommonsViews.MAIN_VIEW_NAME + PAGE_SEPARATOR + ApplicationPageMode.LOGIN));
  107.         pageLink.setId(ViewAction.VISIT_LOGIN.name());
  108.         pageLink.setIcon(VaadinIcons.SIGN_IN);
  109.         return pageLink;
  110.     }

  111.     @Override
  112.     public Link createMainViewPageLink() {
  113.         final Link pageLink = new Link(MAIN_VIEW_LINK_TEXT, new ExternalResource(
  114.                 LINK_SEPARATOR + CommonsViews.MAIN_VIEW_NAME + PAGE_SEPARATOR + PageMode.OVERVIEW));
  115.         pageLink.setId(ViewAction.VISIT_MAIN_VIEW.name());
  116.         pageLink.setIcon(VaadinIcons.STAR);
  117.         return pageLink;
  118.     }

  119.     @Override
  120.     public Link createPoliticianPageLink(final PersonData personData) {
  121.         final Link pageLink = new Link(POLITICIAN
  122.                 + personData.getFirstName() + ' '
  123.                 + personData.getLastName(), new ExternalResource(PAGE_PREFIX
  124.                         + UserViews.POLITICIAN_VIEW_NAME + PAGE_SEPARATOR + PageMode.OVERVIEW + PAGE_SEPARATOR + personData.getId()));
  125.         pageLink.setId(ViewAction.VISIT_POLITICIAN_VIEW.name() + PAGE_SEPARATOR
  126.                 + personData.getId());
  127.         pageLink.setIcon(VaadinIcons.BUG);
  128.         return pageLink;
  129.     }

  130.     @Override
  131.     public Link createPoliticianPageLink(final ViewRiksdagenPolitician personData) {
  132.         final Link pageLink = new Link(POLITICIAN
  133.                 + personData.getFirstName() + ' '
  134.                 + personData.getLastName(), new ExternalResource(PAGE_PREFIX
  135.                         + UserViews.POLITICIAN_VIEW_NAME + PAGE_SEPARATOR + PageMode.OVERVIEW + PAGE_SEPARATOR + personData.getPersonId()));
  136.         pageLink.setId(ViewAction.VISIT_POLITICIAN_VIEW.name() + PAGE_SEPARATOR
  137.                 + personData.getPersonId());
  138.         pageLink.setIcon(VaadinIcons.BUG);
  139.         return pageLink;
  140.     }


  141.     @Override
  142.     public Link createRegisterPageLink() {
  143.         final Link pageLink = new Link("Register", new ExternalResource(
  144.                 LINK_SEPARATOR + CommonsViews.MAIN_VIEW_NAME + PAGE_SEPARATOR + ApplicationPageMode.REGISTER));
  145.         pageLink.setId(ViewAction.VISIT_REGISTER.name());
  146.         pageLink.setIcon(VaadinIcons.RANDOM);
  147.         return pageLink;
  148.     }

  149.     @Override
  150.     public Link createUserHomeViewPageLink() {
  151.         final Link pageLink = new Link("User account:", new ExternalResource(PAGE_PREFIX
  152.                 + UserViews.USERHOME_VIEW_NAME + PAGE_SEPARATOR + PageMode.OVERVIEW));
  153.             pageLink.setId(ViewAction.VISIT_USER_HOME_VIEW.name());
  154.             pageLink.setIcon(VaadinIcons.USER);
  155.             return pageLink;
  156.     }

  157.     @Override
  158.     public Link addMinistryPageLink(final String name) {
  159.         final Link pageLink = new Link(MINISTRY + name,
  160.                 new ExternalResource(PAGE_PREFIX + UserViews.MINISTRY_VIEW_NAME + PAGE_SEPARATOR + PageMode.OVERVIEW + PAGE_SEPARATOR
  161.                         + name));
  162.         pageLink.setId(ViewAction.VISIT_MINISTRY_VIEW.name() + PAGE_SEPARATOR
  163.                 + name);
  164.         pageLink.setIcon(VaadinIcons.GROUP);
  165.         return pageLink;
  166.     }

  167.     @Override
  168.     public Link addMinistryGovermentBodiesPageLink(final String name) {
  169.         final Link pageLink = new Link("Government bodies:",
  170.                 new ExternalResource(PAGE_PREFIX + UserViews.MINISTRY_VIEW_NAME + PAGE_SEPARATOR + MinistryPageMode.GOVERNMENT_BODIES_HEADCOUNT.toString() + PAGE_SEPARATOR +  name));
  171.         pageLink.setId(ViewAction.VISIT_MINISTRY_VIEW.name() + PAGE_SEPARATOR
  172.                 + name);
  173.         pageLink.setIcon(VaadinIcons.GROUP);
  174.         return pageLink;
  175.     }

  176.     @Override
  177.     public Link addMinistryGovermentBodiesHeadcountPageLink(final String name) {
  178.         final Link pageLink = new Link("Headcount:",
  179.                 new ExternalResource(PAGE_PREFIX + UserViews.MINISTRY_VIEW_NAME + PAGE_SEPARATOR + MinistryPageMode.GOVERNMENT_BODIES_HEADCOUNT.toString() + PAGE_SEPARATOR +  name));
  180.         pageLink.setId(ViewAction.VISIT_MINISTRY_VIEW.name() + PAGE_SEPARATOR
  181.                 + name);
  182.         pageLink.setIcon(VaadinIcons.GROUP);
  183.         return pageLink;
  184.     }

  185.     @Override
  186.     public Link addMinistryGovermentBodiesIncomePageLink(final String name) {
  187.         final Link pageLink = new Link("Income(B SEK):" ,
  188.                 new ExternalResource(PAGE_PREFIX + UserViews.MINISTRY_VIEW_NAME + PAGE_SEPARATOR + MinistryPageMode.GOVERNMENT_BODIES_INCOME.toString() + PAGE_SEPARATOR +  name));
  189.         pageLink.setId(ViewAction.VISIT_MINISTRY_VIEW.name() + PAGE_SEPARATOR
  190.                 + name);
  191.         pageLink.setIcon(VaadinIcons.GROUP);
  192.         return pageLink;
  193.     }

  194.     @Override
  195.     public Link addMinistrGovermentBodiesSpendingPageLink(final String name) {
  196.         final Link pageLink = new Link("Spending(B SEK):",
  197.                 new ExternalResource(PAGE_PREFIX + UserViews.MINISTRY_VIEW_NAME + PAGE_SEPARATOR + MinistryPageMode.GOVERNMENT_BODIES_EXPENDITURE.toString() + PAGE_SEPARATOR +  name));
  198.         pageLink.setId(ViewAction.VISIT_MINISTRY_VIEW.name() + PAGE_SEPARATOR
  199.                 + name);
  200.         pageLink.setIcon(VaadinIcons.GROUP);
  201.         return pageLink;
  202.     }

  203. }