View Javadoc

1   /*
2    * Copyright 2010 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: AdminPage.java 5436 2011-04-26 18:25:22Z pether $
17   *  $HeadURL: https://cia.svn.sourceforge.net/svnroot/cia/trunk/citizen-intelligence-agency/src/main/java/com/hack23/cia/web/impl/ui/page/admin/AdminPage.java $
18  */
19  package com.hack23.cia.web.impl.ui.page.admin;
20  
21  import java.util.Arrays;
22  import java.util.List;
23  
24  import org.vaadin.navigator7.Page;
25  import org.vaadin.vaadinvisualizations.Table;
26  
27  import com.hack23.cia.model.internal.application.data.impl.DataAgentOperation;
28  import com.hack23.cia.model.internal.application.data.impl.DataAgentTarget;
29  import com.hack23.cia.model.internal.application.data.impl.DataAgentWorkOrder;
30  import com.hack23.cia.service.api.DataContainer;
31  import com.hack23.cia.service.api.DataSummary;
32  import com.hack23.cia.service.api.DataSummary.DataSummaryId;
33  import com.vaadin.ui.Button;
34  import com.vaadin.ui.Button.ClickEvent;
35  import com.vaadin.ui.Component;
36  import com.vaadin.ui.Label;
37  import com.vaadin.ui.Select;
38  import com.vaadin.ui.VerticalLayout;
39  
40  /**
41   * The Class AdminPage.
42   */
43  @Page(uriName = "admin", crawlable = true)
44  @SuppressWarnings("serial")
45  public final class AdminPage extends AbstractAdminPage implements
46  		Button.ClickListener {
47  
48  	/** The content. */
49  	private final VerticalLayout content = new VerticalLayout();
50  
51  	/** The start agent button. */
52  	private final Button startAgentButton;
53  
54  	/** The target select. */
55  	private final Select targetSelect;
56  
57  	/** The operation select. */
58  	private final Select operationSelect;
59  
60  	/**
61  	 * Instantiates a new admin page.
62  	 */
63  	public AdminPage() {
64  		super();
65  		final Label label = new Label(translateFromEnglish("Admin"));
66  		label.setWidth(100, Component.UNITS_PERCENTAGE);
67  		content.addComponent(label);
68  
69  		final DataContainer<DataSummary, DataSummaryId> dataContainer = getApplicationManager()
70  				.getDataContainer(DataSummary.class);
71  
72  		final List<DataSummary> all = dataContainer.getAll();
73  
74  		final DataSummary dataSummary = all.iterator().next();
75  
76  		final Table summaryTable = new Table();
77  		summaryTable.setOption("allowHtml", true);
78  		summaryTable.setOption("showRowNumber", true);
79  
80  		summaryTable.addTableColumn(translateFromEnglish("Name"), "string");
81  		summaryTable.addTableColumn(translateFromEnglish("Size"), "number");
82  		summaryTable.addTableColumn(translateFromEnglish("Missing"), "number");
83  
84  		summaryTable.add(new String[] { "Parliament member",
85  				"" + dataSummary.personSize, 0 + "" });
86  		summaryTable.add(new String[] { "DocumentElement",
87  				"" + dataSummary.documentElementSize, 0 + "" });
88  		summaryTable.add(new String[] {
89  				"documentContent",
90  				"" + dataSummary.documentContentSize,
91  				dataSummary.documentElementSize
92  						- dataSummary.documentContentSize + "" });
93  		summaryTable.add(new String[] {
94  				"documentStatus",
95  				"" + dataSummary.documentStatusSize,
96  				dataSummary.documentElementSize
97  						- dataSummary.documentStatusSize + "" });
98  		summaryTable.add(new String[] { "committeeProposalSize",
99  				"" + dataSummary.committeeProposalSize, 0 + "" });
100 		summaryTable.add(new String[] { "Votes", "" + dataSummary.voteSize,
101 				dataSummary.totalBallotVotes - dataSummary.voteSize + "" });
102 
103 		summaryTable.setHeight("200px");
104 
105 		content.addComponent(summaryTable);
106 
107 
108 		targetSelect = new Select(translateFromEnglish("Target"), Arrays.asList(DataAgentTarget
109 				.values()));
110 		content.addComponent(targetSelect);
111 
112 		operationSelect = new Select(translateFromEnglish("Operation"),
113 				Arrays.asList(DataAgentOperation.values()));
114 		content.addComponent(operationSelect);
115 
116 		startAgentButton = new Button(translateFromEnglish("Start"), this);
117 		content.addComponent(startAgentButton);
118 
119 		content.setWidth(100, Component.UNITS_PERCENTAGE);
120 		content.setSizeFull();
121 		content.setMargin(false);
122 		content.setSpacing(true);
123 		setCompositionRoot(content);
124 		setHeight(null);
125 
126 
127 	}
128 
129 	/*
130 	 * (non-Javadoc)
131 	 *
132 	 * @see com.vaadin.ui.Button.ClickListener#buttonClick(com.vaadin.ui.Button.
133 	 * ClickEvent)
134 	 */
135 	@Override
136 	public void buttonClick(final ClickEvent event) {
137 		try {
138 			final DataAgentWorkOrder dataAgentWorkOrder = new DataAgentWorkOrder();
139 			final DataAgentTarget target = DataAgentTarget.valueOf(targetSelect
140 					.getValue().toString());
141 			dataAgentWorkOrder.setTarget(target);
142 			dataAgentWorkOrder.setOperation(DataAgentOperation
143 					.valueOf(operationSelect.getValue().toString()));
144 
145 			getApplicationManager().getAgentContainer().execute(
146 					dataAgentWorkOrder);
147 
148 		} catch (final Exception e) {
149 			getApplication().getMainWindow().showNotification(e.getMessage());
150 		}
151 	}
152 
153 	/* (non-Javadoc)
154 	 * @see com.hack23.cia.web.impl.ui.page.common.AbstractPage#getPageTitle()
155 	 */
156 	@Override
157 	public String getPageTitle() {
158 		return "";
159 	}
160 
161 }