001 /*
002 * Copyright 2005-2007 The Kuali Foundation
003 *
004 *
005 * Licensed under the Educational Community License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.opensource.org/licenses/ecl2.php
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.kuali.rice.kew.help.web;
018
019 import java.util.ArrayList;
020 import java.util.List;
021
022 import javax.servlet.http.HttpServletRequest;
023 import javax.servlet.http.HttpServletResponse;
024
025 import org.apache.commons.lang.StringUtils;
026 import org.apache.struts.action.ActionForm;
027 import org.apache.struts.action.ActionForward;
028 import org.apache.struts.action.ActionMapping;
029 import org.kuali.rice.core.util.RiceConstants;
030 import org.kuali.rice.kew.export.ExportDataSet;
031 import org.kuali.rice.kew.export.web.ExportServlet;
032 import org.kuali.rice.kew.help.HelpEntry;
033 import org.kuali.rice.kew.help.service.HelpService;
034 import org.kuali.rice.kew.service.KEWServiceLocator;
035 import org.kuali.rice.kew.util.KEWConstants;
036 import org.kuali.rice.kew.web.KewKualiAction;
037 import org.kuali.rice.kns.exception.ValidationException;
038 import org.kuali.rice.kns.util.GlobalVariables;
039 import org.kuali.rice.kns.util.KNSConstants;
040
041
042 /**
043 * Struts action for interfacing with the Help system.
044 *
045 * @see HelpService
046 * @see HelpEntry
047 *
048 * @author Kuali Rice Team (rice.collab@kuali.org)
049 */
050 public class HelpAction extends KewKualiAction {
051 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(HelpAction.class);
052 private static final String HELP_ID_KEY = "helpId";
053 private static final String ID_INVALID = "helpentry.id.invalid";
054
055
056 public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
057 HelpForm helpForm = (HelpForm) form;
058 HelpEntry helpEntry = helpForm.getHelpEntry();
059 getHelpService().save(helpEntry);
060 GlobalVariables.getMessageMap().putInfo(KNSConstants.GLOBAL_MESSAGES, "helpentry.saved");
061 return mapping.findForward("summary");
062 }
063
064 public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
065 HelpForm helpForm=(HelpForm)form;
066 HelpEntry helpEntry=helpForm.getHelpEntry();
067 LOG.info(helpEntry.getHelpName());
068 getHelpService().delete(helpEntry);
069 helpForm.setShowDelete("no");
070 GlobalVariables.getMessageMap().putInfo(KNSConstants.GLOBAL_MESSAGES, "helpentry.deleted");
071 return mapping.findForward("delete");
072 }
073
074 public ActionForward getSearch (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
075 LOG.debug("getSearch");
076 HelpForm helpForm = (HelpForm) form;
077 // TODO hook up KIM permissions to this
078 helpForm.setIsAdmin(false);
079 return mapping.findForward("getSearch");
080 }
081
082 public ActionForward search (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
083 HelpForm helpForm = (HelpForm) form;
084 HelpEntry helpEntry = helpForm.getHelpEntry();
085 if(helpForm.getHelpId() != null && !StringUtils.isNumeric(helpForm.getHelpId())){
086 GlobalVariables.getMessageMap().putError(HELP_ID_KEY, ID_INVALID);
087 } else {
088 if (helpForm.getHelpId() != null) {
089 helpEntry.setHelpId(new Long(helpForm.getHelpId()));
090 }
091 }
092
093 List searchResults = getHelpService().search(helpEntry);
094
095 if(searchResults != null && searchResults.size() > 0){
096 request.setAttribute("reqSearchResults", searchResults);
097 }
098 // TODO hook up KIM permissions to this
099 helpForm.setIsAdmin(false);
100
101 return mapping.findForward("getSearch");
102 }
103
104 public ActionForward clearSearch (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
105 HelpForm helpForm = (HelpForm) form;
106 helpForm.getHelpEntry().setHelpId(null);
107 helpForm.getHelpEntry().setHelpName(null);
108 helpForm.getHelpEntry().setHelpText(null);
109 request.setAttribute("reqSearchResults", null);
110 // TODO hook up KIM permissions to this
111 helpForm.setIsAdmin(false);
112 return mapping.findForward("getSearch");
113 }
114
115 public ActionForward report(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
116 HelpForm helpForm = (HelpForm) form;
117 helpForm.setHelpEntry(getHelpService().findById(new Long(request.getParameter("helpId"))));
118 return mapping.findForward("report");
119 }
120
121 public ActionForward showEdit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
122 HelpForm helpForm = (HelpForm) form;
123 if(helpForm.getHelpEntry().getHelpId() == null){
124 Long helpId = new Long(request.getParameter("helpId"));
125 helpForm.setHelpEntry(getHelpService().findById(helpId));
126 }
127 return mapping.findForward("basic");
128 }
129
130 public ActionForward showDelete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
131 HelpForm helpForm=(HelpForm)form;
132 if(helpForm.getHelpEntry().getHelpId()==null){
133 Long helpId=new Long(request.getParameter("helpId"));
134 helpForm.setHelpEntry(getHelpService().findById(helpId));
135 }
136 // TOOD hook up KIM permissions to this
137 helpForm.setIsAdmin(false);
138 return mapping.findForward("delete");
139 }
140
141 private HelpService getHelpService(){
142 return (HelpService) KEWServiceLocator.getService(KEWServiceLocator.HELP_SERVICE);
143 }
144
145 public ActionForward getHelpEntry(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
146 HelpForm helpForm = (HelpForm) form;
147 String helpKey = request.getParameter("helpKey");
148 helpForm.setHelpEntry(getHelpService().findByKey(helpKey));
149 helpForm.setShowEdit(KEWConstants.NO_LABEL);
150 return mapping.findForward("popHelp");
151 }
152
153 /**
154 * TODO implement the help search as a lookupable, rendering this code redundant
155 */
156 public ActionForward export(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
157 HelpForm helpForm = (HelpForm) form;
158 HelpEntry helpEntry = helpForm.getHelpEntry();
159 List searchResults = getHelpService().search(helpEntry);
160 if(searchResults == null) {
161 searchResults = new ArrayList();
162 }
163 ExportDataSet dataSet = new ExportDataSet();
164 dataSet.getHelp().addAll(searchResults);
165 request.getSession().setAttribute(ExportServlet.EXPORT_DATA_SET_KEY, dataSet);
166 return new ActionForward(ExportServlet.generateExportPath(request, dataSet), true);
167 }
168
169 }