/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/portal/trunk/portal-render-impl/impl/src/java/org/sakaiproject/portal/render/portlet/services/state/PortletState.java $
* $Id: PortletState.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2005, 2006, 2007, 2008 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.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/ECL-2.0
*
* 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 org.sakaiproject.portal.render.portlet.services.state;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import javax.portlet.PortletMode;
import javax.portlet.WindowState;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author ddwolf
* @author ieb
* @since Sakai 2.4
* @version $Rev: 105079 $
*/
public class PortletState implements Serializable
{
private static final Log LOG = LogFactory.getLog(PortletState.class);
//
// Session Scoped State
//
private String id;
private boolean action;
private boolean secure;
private Map parameters;
// Transient state
private transient PortletMode portletMode;
private transient WindowState windowState;
//
// Request scoped state
//
private String title;
private Map requestProperties;
private Map responseProperties;
public PortletState(String id)
{
this.id = id;
portletMode = PortletMode.VIEW;
windowState = WindowState.NORMAL;
parameters = new HashMap();
}
public PortletState(PortletState currentState)
{
this(currentState.getId());
setAction(currentState.isAction());
setSecure(currentState.isSecure());
getParameters().putAll(currentState.getParameters());
setPortletMode(currentState.getPortletMode());
setWindowState(currentState.getWindowState());
}
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public boolean isAction()
{
return action;
}
public void setAction(boolean action)
{
this.action = action;
}
public boolean isSecure()
{
return secure;
}
public void setSecure(boolean secure)
{
this.secure = secure;
}
public Map getParameters()
{
return new HashMap(parameters);
}
public void setParameters(Map parameters)
{
this.parameters = parameters;
}
public void clearParameters()
{
this.parameters.clear();
}
public PortletMode getPortletMode()
{
return portletMode;
}
public void setPortletMode(PortletMode portletMode)
{
this.portletMode = portletMode;
}
public WindowState getWindowState()
{
return windowState;
}
public void setWindowState(WindowState windowState)
{
this.windowState = windowState;
}
//
// request scoped state
//
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public Map getRequestProperties()
{
return requestProperties;
}
public void setRequestProperties(Map requestProperties)
{
this.requestProperties = requestProperties;
}
public Map getResponseProperties()
{
return responseProperties;
}
public void setResponseProperties(Map responseProperties)
{
this.responseProperties = responseProperties;
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PortletState that = (PortletState) o;
if (action != that.action) return false;
if (secure != that.secure) return false;
if (id != null ? !id.equals(that.id) : that.id != null) return false;
if (parameters != null ? !parameters.equals(that.parameters)
: that.parameters != null) return false;
if (portletMode != null ? !portletMode.equals(that.portletMode)
: that.portletMode != null) return false;
if (windowState != null ? !windowState.equals(that.windowState)
: that.windowState != null) return false;
return true;
}
@Override
public int hashCode()
{
int result;
result = (id != null ? id.hashCode() : 0);
result = 31 * result + (action ? 1 : 0);
result = 31 * result + (secure ? 1 : 0);
result = 31 * result + (parameters != null ? parameters.hashCode() : 0);
result = 31 * result + (portletMode != null ? portletMode.hashCode() : 0);
result = 31 * result + (windowState != null ? windowState.hashCode() : 0);
return result;
}
// Serialization
private void writeObject(ObjectOutputStream out) throws IOException
{
if (LOG.isDebugEnabled())
{
LOG.debug("Serializing PortletState [action=" + action + "]");
}
out.writeObject(id);
out.writeBoolean(action);
out.writeBoolean(secure);
out.writeObject(parameters);
out.writeObject(portletMode.toString());
out.writeObject(windowState.toString());
}
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException
{
id = in.readObject().toString();
action = in.readBoolean();
secure = in.readBoolean();
parameters = (Map) in.readObject();
portletMode = new PortletMode(in.readObject().toString());
windowState = new WindowState(in.readObject().toString());
if (LOG.isDebugEnabled())
{
LOG.debug("Deserializing PortletState [action=" + action + "]");
}
}
}