KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > opencms > workplace > demos > list > CmsListDemo8


1 /*
2  * File : $Source$
3  * Date : $Date$
4  * Version: $Revision$
5  *
6  * This library is part of OpenCms -
7  * the Open Source Content Mananagement System
8  *
9  * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  * Lesser General Public License for more details.
20  *
21  * For further information about Alkacon Software GmbH, please see the
22  * company website: http://www.alkacon.com
23  *
24  * For further information about OpenCms, please see the
25  * project website: http://www.opencms.org
26  *
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */

31
32 package org.opencms.workplace.demos.list;
33
34 import org.opencms.file.CmsGroup;
35 import org.opencms.file.CmsUser;
36 import org.opencms.i18n.CmsMessageContainer;
37 import org.opencms.jsp.CmsJspActionElement;
38 import org.opencms.main.CmsException;
39 import org.opencms.main.CmsRuntimeException;
40 import org.opencms.util.CmsUUID;
41 import org.opencms.workplace.CmsDialog;
42 import org.opencms.workplace.list.A_CmsListDialog;
43 import org.opencms.workplace.list.CmsListColumnAlignEnum;
44 import org.opencms.workplace.list.CmsListColumnDefinition;
45 import org.opencms.workplace.list.CmsListDateMacroFormatter;
46 import org.opencms.workplace.list.CmsListDefaultAction;
47 import org.opencms.workplace.list.CmsListDirectAction;
48 import org.opencms.workplace.list.CmsListItem;
49 import org.opencms.workplace.list.CmsListItemDetails;
50 import org.opencms.workplace.list.CmsListItemDetailsFormatter;
51 import org.opencms.workplace.list.CmsListMetadata;
52 import org.opencms.workplace.list.CmsListMultiAction;
53 import org.opencms.workplace.list.CmsListPrintIAction;
54 import org.opencms.workplace.list.CmsListSearchAction;
55 import org.opencms.workplace.list.I_CmsListFormatter;
56 import org.opencms.workplace.tools.accounts.Messages;
57
58 import java.util.ArrayList JavaDoc;
59 import java.util.Date JavaDoc;
60 import java.util.HashMap JavaDoc;
61 import java.util.Iterator JavaDoc;
62 import java.util.List JavaDoc;
63 import java.util.Locale JavaDoc;
64 import java.util.Map JavaDoc;
65
66 import javax.servlet.http.HttpServletRequest JavaDoc;
67 import javax.servlet.http.HttpServletResponse JavaDoc;
68 import javax.servlet.jsp.PageContext JavaDoc;
69
70 /**
71  * User accounts list demo.<p>
72  *
73  * @author Michael Moossen
74  *
75  * @version $Revision$
76  *
77  * @since 6.0.0
78  */

79 public class CmsListDemo8 extends A_CmsListDialog {
80
81     /** list action id constant. */
82     public static final String JavaDoc LIST_ACTION_DELETE = "ad";
83
84     /** list column id constant. */
85     public static final String JavaDoc LIST_COLUMN_ACTIVATE = "ca";
86
87     /** list column id constant. */
88     public static final String JavaDoc LIST_COLUMN_DELETE = "cd";
89
90     /** list column id constant. */
91     public static final String JavaDoc LIST_COLUMN_EMAIL = "cm";
92
93     /** list column id constant. */
94     public static final String JavaDoc LIST_COLUMN_LASTLOGIN = "cl";
95
96     /** list column id constant. */
97     public static final String JavaDoc LIST_COLUMN_LOGIN = "ci";
98
99     /** list column id constant. */
100     public static final String JavaDoc LIST_COLUMN_NAME = "cn";
101
102     /** list action id constant. */
103     public static final String JavaDoc LIST_DEFACTION_EDIT = "de";
104
105     /** list item detail id constant. */
106     public static final String JavaDoc LIST_DETAIL_GROUPS = "dg";
107
108     /** list id constant. */
109     public static final String JavaDoc LIST_ID = "lsu1";
110
111     /** list action id constant. */
112     public static final String JavaDoc LIST_MACTION_ACTIVATE = "ma";
113
114     /** parameter name for the user id. */
115     private static final String JavaDoc PARAM_USERID = "userid";
116
117     /**
118      * Public constructor.<p>
119      *
120      * @param jsp an initialized JSP action element
121      */

122     public CmsListDemo8(CmsJspActionElement jsp) {
123
124         super(jsp, LIST_ID, Messages.get().container(Messages.GUI_USERS_LIST_NAME_0), null, null, null);
125     }
126
127     /**
128      * Public constructor with JSP variables.<p>
129      *
130      * @param context the JSP page context
131      * @param req the JSP request
132      * @param res the JSP response
133      */

134     public CmsListDemo8(PageContext JavaDoc context, HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res) {
135
136         this(new CmsJspActionElement(context, req, res));
137     }
138
139     /**
140      * @see org.opencms.workplace.list.A_CmsListDialog#executeListMultiActions()
141      */

142     public void executeListMultiActions() throws CmsRuntimeException {
143
144         if (getParamListAction().equals(LIST_MACTION_ACTIVATE)) {
145             // execute the activate multiaction
146
try {
147                 Iterator JavaDoc itItems = getSelectedItems().iterator();
148                 while (itItems.hasNext()) {
149                     CmsListItem listItem = (CmsListItem)itItems.next();
150                     String JavaDoc usrName = listItem.get(LIST_COLUMN_LOGIN).toString();
151                     CmsUser user = getCms().readUser(usrName);
152                     if (!user.isEnabled()) {
153                         user.setEnabled(true);
154                         //getCms().writeUser(user);
155
}
156                 }
157             } catch (CmsException e) {
158                 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_ACTIVATE_SELECTED_USERS_0), e);
159             }
160             // refreshing no needed becaus the activate action does not add/remove rows to the list
161
} else {
162             throwListUnsupportedActionException();
163         }
164     }
165
166     /**
167      * @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions()
168      */

169     public void executeListSingleActions() {
170
171         CmsListItem item = getSelectedItem();
172         CmsUUID userId = new CmsUUID(item.getId());
173
174         Map JavaDoc params = new HashMap JavaDoc();
175         params.put(PARAM_USERID, userId);
176         // set action parameter to initial dialog call
177
params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL);
178         if (getParamListAction().equals(LIST_DEFACTION_EDIT)) {
179             // do not really forward to the edit user screen in the demo
180
//getToolManager().jspForwardTool(this, getCurrentToolPath() + "/edit", params);
181
} else if (LIST_ACTION_DELETE.equals(getParamListAction())) {
182             // do not really delete the user in the demo
183
//getCms().deleteUser(userId);
184
// but remove from the list
185
getList().removeItem(userId.toString(), getLocale());
186         } else {
187             throwListUnsupportedActionException();
188         }
189         listSave();
190     }
191
192     /**
193      * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
194      */

195     protected void fillDetails(String JavaDoc detailId) {
196
197         // get content
198
List JavaDoc users = getList().getAllContent();
199         Iterator JavaDoc itUsers = users.iterator();
200         while (itUsers.hasNext()) {
201             CmsListItem item = (CmsListItem)itUsers.next();
202             String JavaDoc userName = item.get(LIST_COLUMN_LOGIN).toString();
203             StringBuffer JavaDoc html = new StringBuffer JavaDoc(512);
204             try {
205                 if (detailId.equals(LIST_DETAIL_GROUPS)) {
206                     // groups
207
Iterator JavaDoc itGroups = getCms().getGroupsOfUser(userName).iterator();
208                     while (itGroups.hasNext()) {
209                         html.append(((CmsGroup)itGroups.next()).getName());
210                         if (itGroups.hasNext()) {
211                             html.append("<br>");
212                         }
213                         html.append("\n");
214                     }
215                 } else {
216                     continue;
217                 }
218             } catch (Exception JavaDoc e) {
219                 // noop
220
}
221             item.set(detailId, html.toString());
222         }
223     }
224
225     /**
226      * @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
227      */

228     protected List JavaDoc getListItems() throws CmsException {
229
230         List JavaDoc ret = new ArrayList JavaDoc();
231         // get content
232
List JavaDoc users = getCms().getUsers(CmsUser.USER_TYPE_SYSTEMUSER);
233         Iterator JavaDoc itUsers = users.iterator();
234         while (itUsers.hasNext()) {
235             CmsUser user = (CmsUser)itUsers.next();
236             CmsListItem item = getList().newItem(user.getId().toString());
237             item.set(LIST_COLUMN_ACTIVATE, Boolean.valueOf(user.isEnabled()));
238             item.set(LIST_COLUMN_LOGIN, user.getName());
239             item.set(LIST_COLUMN_NAME, user.getFullName());
240             item.set(LIST_COLUMN_EMAIL, user.getEmail());
241             item.set(LIST_COLUMN_LASTLOGIN, new Date JavaDoc(user.getLastlogin()));
242             ret.add(item);
243         }
244         return ret;
245     }
246
247     /**
248      * @see org.opencms.workplace.CmsWorkplace#initMessages()
249      */

250     protected void initMessages() {
251
252         // add specific dialog resource bundle
253
addMessages(Messages.get().getBundleName());
254         addMessages(org.opencms.workplace.demos.list.Messages.get().getBundleName());
255         addMessages(org.opencms.workplace.demos.Messages.get().getBundleName());
256         // add default resource bundles
257
super.initMessages();
258     }
259
260     /**
261      * @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
262      */

263     protected void setColumns(CmsListMetadata metadata) {
264
265         // create column for activation/deactivation
266
CmsListColumnDefinition actCol = new CmsListColumnDefinition(LIST_COLUMN_ACTIVATE);
267         actCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_0));
268         actCol.setWidth("30");
269         actCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
270         actCol.setSorteable(true);
271         I_CmsListFormatter actFormatter = new I_CmsListFormatter() {
272
273             /**
274              * @see org.opencms.workplace.list.I_CmsListFormatter#format(java.lang.Object, java.util.Locale)
275              */

276             public String JavaDoc format(Object JavaDoc data, Locale JavaDoc locale) {
277
278                 if (data instanceof Boolean JavaDoc) {
279                     Boolean JavaDoc val = (Boolean JavaDoc)data;
280                     if (val.booleanValue()) {
281                         return "<img SRC='" + getResourceUri("list/active.png") + "'>";
282                     }
283                 }
284                 return "<img SRC='" + getResourceUri("list/inactive.png") + "'>";
285             }
286
287         };
288         actCol.setFormatter(actFormatter);
289         metadata.addColumn(actCol);
290
291         // create column for deletion
292
CmsListColumnDefinition deleteCol = new CmsListColumnDefinition(LIST_COLUMN_DELETE);
293         deleteCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_0));
294         deleteCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_HELP_0));
295         deleteCol.setWidth("20");
296         deleteCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
297         deleteCol.setSorteable(false);
298         // add delete action
299
CmsListDirectAction deleteAction = new CmsListDirectAction(LIST_ACTION_DELETE);
300         deleteAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_NAME_0));
301         deleteAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_HELP_0));
302         deleteAction.setConfirmationMessage(new CmsMessageContainer(null, "Do you want to delete the selected user?"));
303         deleteAction.setIconPath(ICON_DELETE);
304         deleteCol.addDirectAction(deleteAction);
305         metadata.addColumn(deleteCol);
306
307         // create column for login
308
CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN);
309         loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0));
310         loginCol.setWidth("20%");
311         loginCol.setSorteable(true);
312         // create default edit action
313
CmsListDefaultAction defEditAction = new CmsListDefaultAction(LIST_DEFACTION_EDIT);
314         defEditAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_NAME_0));
315         defEditAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_HELP_0));
316         loginCol.addDefaultAction(defEditAction);
317         metadata.addColumn(loginCol);
318
319         // add column for name
320
CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME);
321         nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0));
322         nameCol.setWidth("30%");
323         nameCol.setSorteable(true);
324         metadata.addColumn(nameCol);
325
326         // add column for email
327
CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL);
328         emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0));
329         emailCol.setWidth("30%");
330         emailCol.setSorteable(true);
331         metadata.addColumn(emailCol);
332
333         // add column for last login date
334
CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN);
335         lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0));
336         lastLoginCol.setWidth("20%");
337         lastLoginCol.setSorteable(true);
338         lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter());
339         metadata.addColumn(lastLoginCol);
340     }
341
342     /**
343      * @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
344      */

345     protected void setIndependentActions(CmsListMetadata metadata) {
346
347         // add user groups details
348
CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS);
349         userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN);
350         userGroupsDetails.setVisible(false);
351         userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0));
352         userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0));
353         userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0));
354         userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0));
355         userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0));
356         userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container(
357             Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)));
358         metadata.addItemDetails(userGroupsDetails);
359
360     }
361
362     /**
363      * @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
364      */

365     protected void setMultiActions(CmsListMetadata metadata) {
366
367         // add the activate user multi action
368
CmsListMultiAction activateUser = new CmsListMultiAction(LIST_MACTION_ACTIVATE);
369         activateUser.setName(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_NAME_0));
370         activateUser.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_HELP_0));
371         activateUser.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_CONF_0));
372         activateUser.setIconPath(ICON_MULTI_ACTIVATE);
373         metadata.addMultiAction(activateUser);
374
375         // makes the list searchable by several columns
376
CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN));
377         searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_EMAIL));
378         metadata.setSearchAction(searchAction);
379
380         // remove print action
381
metadata.getIndependentAction(CmsListPrintIAction.LIST_ACTION_ID).setVisible(false);
382     }
383
384 }
Popular Tags