/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.structure.page;
import java.io.Serializable;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.jdom.Document;
import com.enonic.cms.framework.util.LazyInitializedJDOMDocument;
import com.enonic.cms.core.structure.page.template.PageTemplateEntity;
public class PageEntity
implements Serializable
{
private int key;
private LazyInitializedJDOMDocument xmlData;
private PageTemplateEntity template;
private Set<PageWindowEntity> pageWindows = new HashSet<PageWindowEntity>();
public PageEntity()
{
}
public PageEntity( final PageEntity page )
{
this();
this.key = page.getKey();
this.xmlData = page.getXmlData();
this.template = page.getTemplate();
this.pageWindows = new LinkedHashSet<PageWindowEntity>( page.getPageWindows() );
}
public int getKey()
{
return key;
}
public LazyInitializedJDOMDocument getXmlData()
{
return xmlData;
}
public Document getXmlDataAsDocument()
{
if ( xmlData == null )
{
return null;
}
return xmlData.getDocument();
}
public PageTemplateEntity getTemplate()
{
return template;
}
public Set<PageWindowEntity> getPageWindows()
{
return pageWindows;
}
public void setKey( int key )
{
this.key = key;
}
public void setXmlData( Document value )
{
if ( value == null )
{
this.xmlData = null;
}
else
{
this.xmlData = LazyInitializedJDOMDocument.parse( value );
}
}
public void setXmlData( String value )
{
if ( value == null )
{
this.xmlData = null;
}
else
{
this.xmlData = new LazyInitializedJDOMDocument( value );
}
}
public void setTemplate( PageTemplateEntity template )
{
this.template = template;
}
public void removeAllPortletPlacements()
{
this.pageWindows.clear();
}
public void addPortletPlacement( PageWindowEntity value )
{
this.pageWindows.add( value );
}
public boolean equals( Object o )
{
if ( this == o )
{
return true;
}
if ( !( o instanceof PageEntity ) )
{
return false;
}
PageEntity that = (PageEntity) o;
if ( key != that.getKey() )
{
return false;
}
return true;
}
public int hashCode()
{
return new HashCodeBuilder( 233, 865 ).append( key ).toHashCode();
}
}