View Javadoc
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  
21  import java.util.Collections;
22  import java.util.Comparator;
23  import java.util.List;
24  
25  import org.springframework.security.access.annotation.Secured;
26  import org.springframework.stereotype.Component;
27  
28  import com.hack23.cia.model.external.riksdagen.person.impl.AssignmentData;
29  import com.hack23.cia.model.external.riksdagen.person.impl.PersonData;
30  import com.hack23.cia.model.internal.application.data.politician.impl.ViewRiksdagenPolitician;
31  import com.hack23.cia.service.api.DataContainer;
32  import com.hack23.cia.web.impl.ui.application.views.common.labelfactory.LabelFactory;
33  import com.hack23.cia.web.impl.ui.application.views.common.viewnames.PoliticianPageMode;
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  /**
41   * The Class RoleListPageModContentFactoryImpl.
42   */
43  @Component
44  public final class PoliticianRoleListPageModContentFactoryImpl extends AbstractPoliticianPageModContentFactoryImpl {
45  
46  	/**
47  	 * Instantiates a new politician role list page mod content factory impl.
48  	 */
49  	public PoliticianRoleListPageModContentFactoryImpl() {
50  		super();
51  	}
52  
53  	@Override
54  	public boolean matches(final String page, final String parameters) {
55  		return NAME.equals(page) && parameters.contains(PoliticianPageMode.ROLELIST.toString());
56  	}
57  
58  	@Secured({ "ROLE_ANONYMOUS", "ROLE_USER", "ROLE_ADMIN" })
59  	@Override
60  	public Layout createContent(final String parameters, final MenuBar menuBar, final Panel panel) {
61  		final VerticalLayout panelContent = createPanelContent();
62  
63  		final String pageId = getPageId(parameters);
64  
65  		final DataContainer<PersonData, String> dataContainer = getApplicationManager()
66  				.getDataContainer(PersonData.class);
67  
68  		final PersonData personData = dataContainer.load(pageId);
69  		if (personData != null) {
70  
71  			final DataContainer<ViewRiksdagenPolitician, String> politicianDataContainer = getApplicationManager()
72  					.getDataContainer(ViewRiksdagenPolitician.class);
73  
74  			final ViewRiksdagenPolitician viewRiksdagenPolitician = politicianDataContainer.load(personData.getId());
75  
76  			getPoliticianMenuItemFactory().createPoliticianMenuBar(menuBar, pageId);
77  
78  			LabelFactory.createHeader2Label(panelContent,PoliticianPageMode.ROLELIST.toString());
79  
80  
81  
82  			final List<AssignmentData> assignmentList = personData.getPersonAssignmentData()
83  					.getAssignmentList();
84  
85  			createRoleList(panelContent, assignmentList);
86  
87  			pageCompleted(parameters, panel, pageId, viewRiksdagenPolitician);
88  
89  		}
90  		return panelContent;
91  
92  	}
93  
94  	/**
95  	 * Creates the role list.
96  	 *
97  	 * @param roleSummaryLayoutTabsheet
98  	 *            the role summary layout tabsheet
99  	 * @param assignmentList
100 	 *            the assignment list
101 	 */
102 	private void createRoleList(final VerticalLayout roleSummaryLayoutTabsheet, final List<AssignmentData> assignmentList) {
103 
104 		final Comparator<AssignmentData> compare = (o1, o2) -> o1.getFromDate().compareTo(o2.getFromDate());
105 
106 		Collections.sort(assignmentList, compare);
107 
108 		getGridFactory()
109 				.createBasicBeanItemGrid(roleSummaryLayoutTabsheet, new BeanItemContainer<>(AssignmentData.class, assignmentList),
110 						"Assignments",
111 						new String[] { "roleCode", "assignmentType", "status", "detail", "orgCode", "fromDate",
112 								"toDate" }, new String[] { "hjid", "intressentId", "orderNumber", "orgCode" }, null, null, null);
113 
114 	}
115 
116 
117 }