/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/rwiki/trunk/rwiki-tool/tool/src/java/uk/ac/cam/caret/sakai/rwiki/tool/bean/helper/ViewParamsHelperBean.java $
* $Id: ViewParamsHelperBean.java 84225 2010-11-03 13:48:44Z david.horwitz@uct.ac.za $
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
*
* Licensed under the Educational Community License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ecl1.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package uk.ac.cam.caret.sakai.rwiki.tool.bean.helper;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.servlet.ServletRequest;
import org.sakaiproject.thread_local.cover.ThreadLocalManager;
import uk.ac.cam.caret.sakai.rwiki.service.api.RWikiObjectService;
import uk.ac.cam.caret.sakai.rwiki.service.api.RWikiSecurityService;
import uk.ac.cam.caret.sakai.rwiki.tool.bean.EditBean;
import uk.ac.cam.caret.sakai.rwiki.tool.bean.SearchBean;
import uk.ac.cam.caret.sakai.rwiki.tool.bean.ToolConfigBean;
import uk.ac.cam.caret.sakai.rwiki.tool.bean.ViewBean;
import uk.ac.cam.caret.sakai.rwiki.utils.NameHelper;
/**
* Bean to get common request parameters from the servlet request.
*
* @author andrew
*/
public class ViewParamsHelperBean
{
private static final String SMALL_CHANGE_PARAM = "smallchange";
private static final Object SMALL_CHANGE = "smallchange";
public static final String SAVE_OK = "save-ok";
public static final String SAVE_VERSION_EXCEPTION = "save-versionexcep";
public static final String SAVE_CANCEL = "save-cancel";
public static final String SAVE_PREVIEW = "save-preview";
private static final String[] AUTOSAVE_REMOVE = { SAVE_OK, SAVE_CANCEL };
private static final String[] AUTOSAVE_NORECOVER = { SAVE_VERSION_EXCEPTION, SAVE_PREVIEW };
/**
* the requested global page name
*/
private String globalName;
/**
* the local space
*/
private String localSpace;
/**
* the requested search criteria
*/
private String search;
/**
* The search Page
*/
private String searchPage = "0";
/**
* the current servlet request
*/
private ServletRequest request;
/**
* the RWikiSecurityService
*/
private RWikiSecurityService securityService;
/**
* the Tool Config Bean
*/
private ToolConfigBean toolConfigBean;
/**
* the default realm
*/
private String defaultRealm;
/**
* the submitted content
*/
private String content;
/**
* the submitted previous content
*/
private String submittedContent;
/**
* the submitted version
*/
private String submittedVersion;
/**
* the submitted save type
*/
private String saveType;
/**
* breadcrumbs
*/
private String withBreadcrumbs;
private String saveState = "";
/**
* Initializes the bean, gets the parameters out of the request
*/
public void init()
{
String pageName = request.getParameter(ViewBean.PAGE_NAME_PARAM);
localSpace = request.getParameter(SearchBean.REALM_PARAM);
defaultRealm = securityService.getSiteReference();
if (localSpace == null || "".equals(localSpace))
{
localSpace = defaultRealm;
}
if (pageName == null || "".equals(pageName)) {
pageName = toolConfigBean.getHomePage();
}
globalName = NameHelper.globaliseName(pageName, localSpace);
search = request.getParameter(SearchBean.SEARCH_PARAM);
searchPage = request.getParameter(SearchBean.PAGE_PARAM);
content = request.getParameter(EditBean.CONTENT_PARAM);
submittedContent = request
.getParameter(EditBean.SUBMITTED_CONTENT_PARAM);
submittedVersion = request.getParameter(EditBean.VERSION_PARAM);
saveType = getSaveTypeFromParameters(request.getParameterMap());
String smallChange = request.getParameter(SMALL_CHANGE_PARAM);
if (smallChange != null && smallChange.equals(SMALL_CHANGE))
{
ThreadLocalManager.set(RWikiObjectService.SMALL_CHANGE_IN_THREAD,
RWikiObjectService.SMALL_CHANGE_IN_THREAD);
}
if (saveType != null)
{
saveType = saveType.toLowerCase();
}
withBreadcrumbs = "0".equals(request.getParameter(ViewBean.PARAM_BREADCRUMB_NAME))?"0":"1";
}
/**
* @param parameterMap
* @return
*/
public String getSaveTypeFromParameters(Map parameterMap)
{
Set<Entry<Object, Object>> entrySet = parameterMap.entrySet();
Iterator<Entry<Object, Object>> it = entrySet.iterator();
while (it.hasNext()) {
Entry entry = it.next();
Object key = entry.getKey();
if ( String.valueOf(key).startsWith("command_") ) {
Object value = entry.getValue();
if ( value != null && String.valueOf(parameterMap.get(key)).trim().length() > 0 ) {
return String.valueOf(key).substring("command_".length());
}
}
}
return null;
}
/**
* Get the globalised page name
*
* @return the requested globalised page name
*/
public String getGlobalName()
{
return globalName;
}
/**
* Set the globalised page name
*
* @param globalName
*/
public void setGlobalName(String globalName)
{
this.globalName = globalName;
}
/**
* Get the local space
*
* @return local space
*/
public String getLocalSpace()
{
return localSpace;
}
/**
* Set the local space
*
* @param localSpace
*/
public void setLocalSpace(String localSpace)
{
this.localSpace = localSpace;
}
/**
* Get the current page's space
*
* @return space relating to globalName
*/
public String getPageSpace()
{
return NameHelper.localizeSpace(globalName, localSpace);
}
/**
* Get the localised name relating to globalName and localSpace
*
* @return the localised name
*/
public String getLocalName()
{
return NameHelper.localizeName(globalName, localSpace);
}
/**
* Get the submitted search criteria
*
* @return search criteria
*/
public String getSearch()
{
return search;
}
/**
* Set the search criteria
*
* @param search
* criteria to set
*/
public void setSearch(String search)
{
this.search = search;
}
/**
* Get the current servlet request
*
* @return current servlet request
*/
public ServletRequest getServletRequest()
{
return request;
}
/**
* Set the current servlet request
*
* @param request
*/
public void setServletRequest(ServletRequest request)
{
this.request = request;
}
/**
* Get the RWikiSecurityService
*
* @return the rwikiSecurityService
*/
public RWikiSecurityService getSecurityService()
{
return securityService;
}
/**
* Set the RWikiSecurityService to be used in init
*
* @param securityService
*/
public void setSecurityService(RWikiSecurityService securityService)
{
this.securityService = securityService;
}
/**
* Get the default realm
*
* @return default realm for the current request
*/
public String getDefaultRealm()
{
return defaultRealm;
}
/**
* Set the default realm
*
* @param defaultRealm
*/
public void setDefaultRealm(String defaultRealm)
{
this.defaultRealm = defaultRealm;
}
/**
* Get the submitted content
*
* @return content
*/
public String getContent()
{
return content;
}
/**
* Set the content
*
* @param content
*/
public void setContent(String content)
{
this.content = content;
}
/**
* Get the previously submitted content
*
* @return content as a String
*/
public String getSubmittedContent()
{
return submittedContent;
}
/**
* Set the previously submitted content
*
* @param submittedContent
*/
public void setSubmittedContent(String submittedContent)
{
this.submittedContent = submittedContent;
}
/**
* Get the submitted version number
*
* @return version as string
*/
public String getSubmittedVersion()
{
return submittedVersion;
}
/**
* Set the submitted version number
*
* @param submittedVersion
*/
public void setSubmittedVersion(String submittedVersion)
{
this.submittedVersion = submittedVersion;
}
/**
* Get the requested save type
*
* @return save type as string
*/
public String getSaveType()
{
return saveType;
}
/**
* Set the save type
*
* @param saveType
*/
public void setSaveType(String saveType)
{
if (saveType != null)
{
this.saveType = saveType.toLowerCase();
}
else
{
this.saveType = null;
}
}
/**
* @return Returns the withBreadcrumbs.
*/
public String getWithBreadcrumbs()
{
return withBreadcrumbs;
}
/**
* @param withBreadcrumbs
* The withBreadcrumbs to set.
*/
public void setWithBreadcrumbs(String withBreadcrumbs)
{
this.withBreadcrumbs = withBreadcrumbs;
}
/**
* @return Returns the searchPage.
*/
public String getSearchPage()
{
return searchPage;
}
/**
* @param searchPage
* The searchPage to set.
*/
public void setSearchPage(String searchPage)
{
this.searchPage = searchPage;
}
public ToolConfigBean getToolConfigBean()
{
return toolConfigBean;
}
public void setToolConfigBean(ToolConfigBean toolConfigBean)
{
this.toolConfigBean = toolConfigBean;
}
public boolean isRemoveAutoSave()
{
for ( int i = 0; i < AUTOSAVE_REMOVE.length; i++ ) {
if ( AUTOSAVE_REMOVE[i].equals(saveState) ) {
return true;
}
}
return false;
}
public boolean isLoadAutoSave()
{
for ( int i = 0; i < AUTOSAVE_NORECOVER.length; i++ ) {
if ( AUTOSAVE_NORECOVER[i].equals(saveState) ) {
return false;
}
}
return true;
}
/**
* @return the saveState
*/
public String getSaveState()
{
return saveState;
}
/**
* @param saveState the saveState to set
*/
public void setSaveState(String saveState)
{
this.saveState = saveState;
}
}