KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > blandware > atleap > webapp > action > news > NewsArchiveAction


1 /*
2  * Copyright 2004 Blandware (http://www.blandware.com)
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 package com.blandware.atleap.webapp.action.news;
17
18 import com.blandware.atleap.common.Constants;
19 import com.blandware.atleap.common.NewsModuleConstants;
20 import com.blandware.atleap.common.util.QueryInfo;
21 import com.blandware.atleap.model.core.Role;
22 import com.blandware.atleap.model.core.User;
23 import com.blandware.atleap.model.news.NewsItem;
24 import com.blandware.atleap.service.core.UserManager;
25 import com.blandware.atleap.service.news.NewsManager;
26 import com.blandware.atleap.webapp.action.core.grid.BaseGridAction;
27 import com.blandware.atleap.webapp.taglib.core.grid.util.FilterConditions;
28 import com.blandware.atleap.webapp.taglib.core.grid.util.Grid;
29 import com.blandware.atleap.webapp.taglib.core.grid.util.SetFilter;
30 import com.blandware.atleap.webapp.taglib.core.grid.util.StringFilter;
31 import com.blandware.atleap.webapp.util.core.WebappConstants;
32 import com.blandware.atleap.webapp.util.core.WebappUtil;
33 import com.blandware.atleap.webapp.util.news.NewsModuleWebConstants;
34 import org.apache.struts.Globals;
35 import org.apache.struts.action.ActionForm;
36 import org.apache.struts.action.ActionForward;
37 import org.apache.struts.action.ActionMapping;
38
39 import javax.servlet.http.HttpServletRequest JavaDoc;
40 import javax.servlet.http.HttpServletResponse JavaDoc;
41 import java.util.HashMap JavaDoc;
42 import java.util.Iterator JavaDoc;
43 import java.util.List JavaDoc;
44 import java.util.ListIterator JavaDoc;
45 import java.util.Locale JavaDoc;
46 import java.util.Map JavaDoc;
47
48 /**
49  * <p>Forward to the page with news archive
50  * </p>
51  * <p><a HREF="NewsArchiveAction.java.htm"><i>View Source</i></a></p>
52  *
53  * @author Sergey Zubtcovskii <a HREF="mailto:sergey.zubtcovskii@blandware.com">&lt;sergey.zubtcovskii@blandware.com&gt;</a>
54  * @version $Revision: 1.11 $ $Date: 2005/03/28 08:35:25 $
55  * @struts.action path="/news/showArchive"
56  * name="newsItemForm"
57  * validate="false"
58  * @struts.action-forward name="listNewsItems"
59  * path=".news.archive"
60  */

61 public final class NewsArchiveAction extends BaseGridAction {
62     /**
63      * @param mapping The ActionMapping used to select this instance
64      * @param form The optional ActionForm bean for this request (if any)
65      * @param request The HTTP request we are proceeding
66      * @param response The HTTP response we are creating
67      * @return an ActionForward instance describing where and how
68      * control should be forwarded, or null if response
69      * has already been completed
70      */

71     public ActionForward execute(ActionMapping mapping, ActionForm form,
72                                  HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
73
74
75         Grid newsGrid = getGridByName(NewsModuleWebConstants.NEWS_ARCHIVE_GRID, request.getSession());
76         if ( newsGrid == null ) {
77             newsGrid = new Grid(NewsModuleWebConstants.NEWS_ARCHIVE_GRID);
78         }
79
80         QueryInfo queryInfo = new QueryInfo();
81         StringFilter activeFilter = new StringFilter("item.active");
82         activeFilter.createFirstClause(FilterConditions.STRING_EQUAL, "T");
83         newsGrid.addFilter(activeFilter);
84
85
86         SetFilter rolesFilter = new SetFilter("role");
87         String JavaDoc userName = request.getRemoteUser();
88         UserManager userManager = (UserManager) getBean(Constants.USER_MANAGER_BEAN);
89         if ( userName != null ) {
90             User user = userManager.retrieveUser(userName);
91             List JavaDoc userRoles = user.getRoles();
92             if ( userRoles != null ) {
93                 HashMap JavaDoc selectedElements = new HashMap JavaDoc();
94                 for ( Iterator JavaDoc i = userRoles.iterator(); i.hasNext(); ) {
95                     Role role = (Role) i.next();
96                     selectedElements.put(role.getName(), role.getTitle());
97                 }
98                 rolesFilter.setSelectedElements(selectedElements);
99                 rolesFilter.createFirstClause(FilterConditions.FIELD_IN_SET);
100                 rolesFilter.createSecondClause(FilterConditions.OBJECT_IS_NULL, FilterConditions.LOGIC_COPULA_OR);
101             }
102         } else {
103             rolesFilter.createFirstClause(FilterConditions.OBJECT_IS_NULL);
104         }
105
106         newsGrid.addFilter(rolesFilter);
107
108         queryInfo.setWhereClause(newsGrid.getWhereClause());
109
110         saveGrid(newsGrid, request.getSession());
111
112         Map JavaDoc queryParameters = new HashMap JavaDoc();
113         Locale JavaDoc locale = (Locale JavaDoc) request.getSession().getAttribute(Globals.LOCALE_KEY);
114         queryParameters.put("localeIdentifier", locale.getLanguage());
115         queryInfo.setQueryParameters(queryParameters);
116
117         NewsManager newsManager = (NewsManager) getBean(NewsModuleConstants.NEWS_MANAGER_BEAN);
118         List JavaDoc newsItems = newsManager.listNewsItems(queryInfo).asList();
119
120         // set URI
121
for ( ListIterator JavaDoc i = newsItems.listIterator(); i.hasNext(); ) {
122             NewsItem newsItem = (NewsItem) i.next();
123             NewsItem tmp = new NewsItem();
124             WebappUtil.copyProperties(tmp, newsItem, request);
125             tmp.setUri(WebappUtil.getActionMappingURL(newsItem.getUri(), null, request, WebappConstants.URL_TYPE_CONTEXT_RELATIVE));
126             i.set(tmp);
127         }
128
129         request.setAttribute(NewsModuleWebConstants.NEWS_ITEMS_COLLECTION_KEY, newsItems);
130
131         // save transaction token in request
132
saveToken(request);
133         return mapping.findForward("listNewsItems");
134     }
135 }
Popular Tags