/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content;
import com.google.common.base.Preconditions;
import com.enonic.cms.framework.xml.XMLDocument;
import com.enonic.cms.core.content.access.ContentAccessResolver;
import com.enonic.cms.core.content.category.CategoryAccessResolver;
import com.enonic.cms.core.security.user.UserEntity;
/**
* Nov 16, 2010
*/
public class GetRelatedContentXmlCreator
{
private CategoryAccessResolver categoryAccessResolver;
private ContentAccessResolver contentAccessResolver;
private UserEntity user;
private int startingIndex;
private int resultLength;
private boolean includeContentsContentData = false;
private boolean includeRelatedContentsContentData = false;
private boolean includeUserRights = false;
private boolean includeOwnerAndModifierData = false;
private boolean includeCategoryData = false;
private VersionInfoStyle versionInfoStyle = VersionInfoStyle.NONE;
public GetRelatedContentXmlCreator( CategoryAccessResolver categoryAccessResolver, ContentAccessResolver contentAccessResolver )
{
Preconditions.checkNotNull( categoryAccessResolver );
Preconditions.checkNotNull( contentAccessResolver );
this.categoryAccessResolver = categoryAccessResolver;
this.contentAccessResolver = contentAccessResolver;
}
public GetRelatedContentXmlCreator user( UserEntity value )
{
this.user = value;
return this;
}
public GetRelatedContentXmlCreator startingIndex( int value )
{
this.startingIndex = value;
return this;
}
public GetRelatedContentXmlCreator resultLength( int value )
{
this.resultLength = value;
return this;
}
public GetRelatedContentXmlCreator includeContentsContentData( boolean value )
{
this.includeContentsContentData = value;
return this;
}
public GetRelatedContentXmlCreator includeRelatedContentsContentData( boolean value )
{
this.includeRelatedContentsContentData = value;
return this;
}
public GetRelatedContentXmlCreator includeUserRights( boolean value )
{
this.includeUserRights = value;
return this;
}
public GetRelatedContentXmlCreator includeOwnerAndModifierData( boolean value )
{
this.includeOwnerAndModifierData = value;
return this;
}
public GetRelatedContentXmlCreator includeCategoryData( boolean value )
{
this.includeCategoryData = value;
return this;
}
public GetRelatedContentXmlCreator versionInfoStyle( VersionInfoStyle value )
{
this.versionInfoStyle = value;
return this;
}
public XMLDocument create( GetRelatedContentResult result )
{
Preconditions.checkNotNull( result );
Preconditions.checkNotNull( user );
// Create the content xml
final ContentXMLCreator xmlCreator = new ContentXMLCreator();
xmlCreator.setResultIndexing( startingIndex, resultLength );
xmlCreator.setIncludeOwnerAndModifierData( includeOwnerAndModifierData );
xmlCreator.setIncludeContentData( includeContentsContentData );
xmlCreator.setIncludeCategoryData( includeCategoryData );
xmlCreator.setIncludeRelatedContentData( includeRelatedContentsContentData );
xmlCreator.setIncludeAssignment( true );
xmlCreator.setIncludeUserRightsInfo( includeUserRights, categoryAccessResolver, contentAccessResolver );
if ( versionInfoStyle == VersionInfoStyle.CLIENT )
{
xmlCreator.setIncludeVersionsInfoForClient( true );
}
else if ( versionInfoStyle == VersionInfoStyle.PORTAL )
{
xmlCreator.setIncludeVersionsInfoForPortal( true );
}
else if ( versionInfoStyle == VersionInfoStyle.ADMIN )
{
xmlCreator.setIncludeVersionsInfoForAdmin( true );
}
return xmlCreator.createContentsDocument( user, result.getContent(), result.getRelatedContent() );
}
public enum VersionInfoStyle
{
PORTAL,
CLIENT,
ADMIN,
NONE
}
}