AdminAgencyPageModContentFactoryImpl.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.admin.system.pagemode;

  20. import java.util.Arrays;
  21. import java.util.List;

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

  24. import com.hack23.cia.model.internal.application.system.impl.Agency;
  25. import com.hack23.cia.model.internal.application.system.impl.Agency_;
  26. import com.hack23.cia.model.internal.application.system.impl.ApplicationEventGroup;
  27. import com.hack23.cia.model.internal.application.system.impl.Portal;
  28. import com.hack23.cia.service.api.DataContainer;
  29. import com.hack23.cia.web.impl.ui.application.action.ViewAction;
  30. import com.hack23.cia.web.impl.ui.application.views.common.converters.ListPropertyConverter;
  31. import com.hack23.cia.web.impl.ui.application.views.common.labelfactory.LabelFactory;
  32. import com.hack23.cia.web.impl.ui.application.views.common.sizing.ContentRatio;
  33. import com.hack23.cia.web.impl.ui.application.views.common.sizing.ContentSize;
  34. import com.hack23.cia.web.impl.ui.application.views.common.viewnames.AdminViews;
  35. import com.hack23.cia.web.impl.ui.application.views.pageclicklistener.PageItemPropertyClickListener;
  36. import com.vaadin.data.util.BeanItem;
  37. import com.vaadin.data.util.BeanItemContainer;
  38. import com.vaadin.ui.HorizontalLayout;
  39. import com.vaadin.ui.Layout;
  40. import com.vaadin.ui.MenuBar;
  41. import com.vaadin.ui.Panel;
  42. import com.vaadin.ui.VerticalLayout;

  43. /**
  44.  * The Class OverviewPageModContentFactoryImpl.
  45.  */
  46. @Component
  47. public final class AdminAgencyPageModContentFactoryImpl extends AbstractAdminSystemPageModContentFactoryImpl {

  48.     /** The Constant ADMIN_AGENCY. */
  49.     private static final String ADMIN_AGENCY = "Admin Agency";

  50.     /** The Constant NAME. */
  51.     public static final String NAME = AdminViews.ADMIN_AGENCY_VIEW_NAME;

  52.     /**
  53.      * Instantiates a new admin agency page mod content factory impl.
  54.      */
  55.     public AdminAgencyPageModContentFactoryImpl() {
  56.         super();
  57.     }

  58.     @Override
  59.     public boolean matches(final String page, final String parameters) {
  60.         return NAME.equals(page);
  61.     }

  62.     @Secured({ "ROLE_ADMIN" })
  63.     @Override
  64.     public Layout createContent(final String parameters, final MenuBar menuBar, final Panel panel) {
  65.         final VerticalLayout content = createPanelContent();

  66.         final String pageId = getPageId(parameters);
  67.         final int pageNr= getPageNr(parameters);

  68.         getMenuItemFactory().createMainPageMenuBar(menuBar);


  69.         LabelFactory.createHeader2Label(content,ADMIN_AGENCY);

  70.         final DataContainer<Agency, Long> dataContainer = getApplicationManager().getDataContainer(Agency.class);

  71.         final BeanItemContainer<Agency> politicianDocumentDataSource = new BeanItemContainer<>(Agency.class,
  72.                 dataContainer.getPageOrderBy(pageNr,DEFAULT_RESULTS_PER_PAGE,Agency_.agencyName));

  73.         createPagingControls(content,NAME,pageId, dataContainer.getSize(), pageNr, DEFAULT_RESULTS_PER_PAGE);

  74.         getGridFactory().createBasicBeanItemGrid(content,
  75.                 politicianDocumentDataSource, "Agency",
  76.                 new String[] { "hjid", "agencyName", "description", "portals", "modelObjectVersion" }, new String[] { "hjid","modelObjectId", "modelObjectVersion" },
  77.                 new PageItemPropertyClickListener(AdminViews.ADMIN_AGENCY_VIEW_NAME, "hjid"), null, new ListPropertyConverter[] { new ListPropertyConverter(List.class, "portalName", "portals")});

  78.         if (pageId != null && !pageId.isEmpty()) {

  79.             final VerticalLayout leftLayout = new VerticalLayout();
  80.             leftLayout.setSizeFull();
  81.             final VerticalLayout rightLayout = new VerticalLayout();
  82.             rightLayout.setSizeFull();
  83.             final HorizontalLayout horizontalLayout = new HorizontalLayout();
  84.             horizontalLayout.setWidth(ContentSize.FULL_SIZE);
  85.             content.addComponent(horizontalLayout);

  86.             content.setExpandRatio(horizontalLayout, ContentRatio.LARGE_FORM);


  87.             horizontalLayout.addComponent(leftLayout);
  88.             horizontalLayout.addComponent(rightLayout);

  89.             final Agency agency = dataContainer.load(Long.valueOf(pageId));
  90.             agency.getPortals().getClass();
  91.             if (agency != null) {

  92.                 getFormFactory().addFormPanelTextFields(leftLayout, new BeanItem<>(agency), Agency.class,
  93.                         Arrays.asList(new String[] { "agencyName", "description"}));

  94.                 final BeanItemContainer<Portal> portalItemContainer = new BeanItemContainer<>(Portal.class,
  95.                         agency.getPortals());

  96.                 getGridFactory().createBasicBeanItemGrid(rightLayout, portalItemContainer,
  97.                         "Portal",
  98.                         new String[] { "hjid", "portalName", "description", "portalType", "googleMapApiKey",
  99.                                 "modelObjectVersion" }, new String[] { "hjid","modelObjectId", "modelObjectVersion", "googleMapApiKey" },
  100.                         new PageItemPropertyClickListener(AdminViews.ADMIN_PORTAL_VIEW_NAME, "hjid"), null, null);
  101.             }

  102.         }

  103.         getPageActionEventHelper().createPageEvent(ViewAction.VISIT_ADMIN_AGENCY_VIEW, ApplicationEventGroup.ADMIN,
  104.                 NAME, null, pageId);

  105.         return content;

  106.     }

  107. }