/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
* Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/
package org.infoglue.cms.applications.contenttool.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.infoglue.cms.applications.common.actions.InfoGluePropertiesAbstractAction;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentController;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentTypeDefinitionController;
import org.infoglue.cms.controllers.kernel.impl.simple.LanguageController;
import org.infoglue.cms.entities.content.ContentVO;
import org.infoglue.cms.entities.management.ContentTypeDefinitionVO;
import com.opensymphony.module.propertyset.PropertySet;
import com.opensymphony.module.propertyset.PropertySetManager;
/**
* This class implements the action class for viewContentProperties.
* The use-case lets the user see all extra-properties for a content
*
* @author Mattias Bogeblad
*/
public class ViewContentPropertiesAction extends InfoGluePropertiesAbstractAction
{
private final static Logger logger = Logger.getLogger(ViewContentPropertiesAction.class.getName());
private static final long serialVersionUID = 1L;
private ContentVO contentVO = new ContentVO();
private PropertySet propertySet = null;
private List contentTypeDefinitionVOList = null;
private List languageVOList = null;
private String allowedContentTypeNames = null;
private String defaultContentTypeName = null;
private String initialLanguageId = null;
private String userSessionKey = null;
private String returnAddress = null;
private String originalAddress = null;
protected void initialize(Integer contentId) throws Exception
{
this.contentVO = ContentController.getContentController().getContentVOWithId(contentId);
this.contentTypeDefinitionVOList = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOList(ContentTypeDefinitionVO.CONTENT);
this.languageVOList = LanguageController.getController().getLanguageVOList(this.contentVO.getRepositoryId());
Map args = new HashMap();
args.put("globalKey", "infoglue");
PropertySet ps = PropertySetManager.getInstance("jdbc", args);
if ( ps.exists("content_" + this.getContentId() + "_allowedContentTypeNames" ) )
{
this.allowedContentTypeNames = ps.getString("content_" + this.getContentId() + "_allowedContentTypeNames");
}
this.defaultContentTypeName = ps.getString("content_" + this.getContentId() + "_defaultContentTypeName");
this.initialLanguageId = ps.getString("content_" + this.getContentId() + "_initialLanguageId");
logger.info("allowedContentTypeNames:" + allowedContentTypeNames);
logger.info("defaultContentTypeName:" + defaultContentTypeName);
logger.info("initialLanguageId:" + initialLanguageId);
}
/**
* The main method that fetches the Value-objects for this use-case
*/
public String doExecute() throws Exception
{
this.initialize(getContentId());
return "success";
}
/**
* The main method that fetches the Value-objects for this use-case
*/
public String doV3() throws Exception
{
String userSessionKey = "" + System.currentTimeMillis();
this.initialize(getContentId());
String updateContentPropertiesInlineOperationDoneHeader = getLocalizedString(getLocale(), "tool.contenttool.updateContentPropertiesInlineOperationDoneHeader");
setActionMessage(userSessionKey, updateContentPropertiesInlineOperationDoneHeader);
return "successV3";
}
/**
* The main method that fetches the Value-objects for this use-case
*/
public String doSave() throws Exception
{
String allowedContentTypeNames = null;
String[] allowedContentTypeNameArray = getRequest().getParameterValues("allowedContentTypeName");
if(allowedContentTypeNameArray != null)
{
logger.info("allowedContentTypeNameArray:" + allowedContentTypeNameArray);
allowedContentTypeNames = "";
for(int i=0; i<allowedContentTypeNameArray.length; i++)
{
allowedContentTypeNames += allowedContentTypeNameArray[i] + ",";
}
}
Map args = new HashMap();
args.put("globalKey", "infoglue");
PropertySet ps = PropertySetManager.getInstance("jdbc", args);
if(allowedContentTypeNames != null )
ps.setString("content_" + this.getContentId() + "_allowedContentTypeNames", allowedContentTypeNames);
if(defaultContentTypeName != null)
ps.setString("content_" + this.getContentId() + "_defaultContentTypeName", defaultContentTypeName);
if(initialLanguageId != null)
ps.setString("content_" + this.getContentId() + "_initialLanguageId", initialLanguageId);
return "save";
}
/**
* The main method that fetches the Value-objects for this use-case
*/
public String doSaveV3() throws Exception
{
doSave();
return "saveV3";
}
/**
* The main method that fetches the Value-objects for this use-case
*/
public String doSaveAndExit() throws Exception
{
doSave();
return "saveAndExit";
}
/**
* The main method that fetches the Value-objects for this use-case
*/
public String doSaveAndExitV3() throws Exception
{
doSave();
logger.info("returnAddress:" + returnAddress);
if(this.returnAddress != null && !this.returnAddress.equals(""))
{
String arguments = "userSessionKey=" + userSessionKey + "&isAutomaticRedirect=false";
String messageUrl = returnAddress + (returnAddress.indexOf("?") > -1 ? "&" : "?") + arguments;
this.getResponse().sendRedirect(messageUrl);
return NONE;
}
else
{
return "saveAndExitV3";
}
}
public java.lang.Integer getContentId()
{
return this.contentVO.getContentId();
}
public void setContentId(java.lang.Integer contentId) throws Exception
{
this.contentVO.setContentId(contentId);
}
public ContentVO getContentVO()
{
return contentVO;
}
public List getContentTypeDefinitionVOList()
{
return contentTypeDefinitionVOList;
}
public String getAllowedContentTypeNames()
{
return allowedContentTypeNames;
}
public String getDefaultContentTypeName()
{
return defaultContentTypeName;
}
public void setDefaultContentTypeName(String defaultContentTypeName)
{
this.defaultContentTypeName = defaultContentTypeName;
}
public List getLanguageVOList()
{
return languageVOList;
}
public String getInitialLanguageId()
{
return initialLanguageId;
}
public void setInitialLanguageId(String initialLanguageId)
{
this.initialLanguageId = initialLanguageId;
}
public String getUserSessionKey()
{
return userSessionKey;
}
public void setUserSessionKey(String userSessionKey)
{
this.userSessionKey = userSessionKey;
}
public String getReturnAddress()
{
return this.returnAddress;
}
public String getOriginalAddress()
{
return originalAddress;
}
public void setOriginalAddress(String originalAddress)
{
this.originalAddress = originalAddress;
}
public void setReturnAddress(String returnAddress)
{
this.returnAddress = returnAddress;
}
}