/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.vertical.engine;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Set;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.enonic.esl.containers.MultiValueMap;
import com.enonic.esl.xml.XMLTool;
import com.enonic.vertical.engine.criteria.CategoryCriteria;
import com.enonic.vertical.engine.filters.Filter;
import com.enonic.vertical.engine.handlers.BinaryDataHandler;
import com.enonic.vertical.engine.handlers.CategoryHandler;
import com.enonic.vertical.engine.handlers.CommonHandler;
import com.enonic.vertical.engine.handlers.ContentHandler;
import com.enonic.vertical.engine.handlers.ContentObjectHandler;
import com.enonic.vertical.engine.handlers.GroupHandler;
import com.enonic.vertical.engine.handlers.LanguageHandler;
import com.enonic.vertical.engine.handlers.LogHandler;
import com.enonic.vertical.engine.handlers.MenuHandler;
import com.enonic.vertical.engine.handlers.PageHandler;
import com.enonic.vertical.engine.handlers.PageTemplateHandler;
import com.enonic.vertical.engine.handlers.SectionHandler;
import com.enonic.vertical.engine.handlers.SecurityHandler;
import com.enonic.vertical.engine.handlers.SystemHandler;
import com.enonic.vertical.engine.handlers.UnitHandler;
import com.enonic.vertical.engine.handlers.UserHandler;
import com.enonic.cms.framework.xml.XMLDocument;
import com.enonic.cms.framework.xml.XMLDocumentFactory;
import com.enonic.cms.core.content.ContentPublishedResolver;
import com.enonic.cms.core.content.ContentService;
import com.enonic.cms.core.content.ContentXMLCreator;
import com.enonic.cms.core.content.IndexService;
import com.enonic.cms.core.content.RegenerateIndexBatcher;
import com.enonic.cms.core.content.access.ContentAccessResolver;
import com.enonic.cms.core.content.binary.BinaryData;
import com.enonic.cms.core.content.category.CategoryAccessResolver;
import com.enonic.cms.core.content.category.CategoryKey;
import com.enonic.cms.core.content.contenttype.ContentTypeEntity;
import com.enonic.cms.core.content.contenttype.ContentTypeKey;
import com.enonic.cms.core.content.query.ContentByCategoryQuery;
import com.enonic.cms.core.content.query.RelatedContentQuery;
import com.enonic.cms.core.content.resultset.ContentResultSet;
import com.enonic.cms.core.content.resultset.RelatedContentResultSet;
import com.enonic.cms.core.language.LanguageKey;
import com.enonic.cms.core.resource.ResourceKey;
import com.enonic.cms.core.security.SecurityService;
import com.enonic.cms.core.security.user.User;
import com.enonic.cms.core.security.user.UserEntity;
import com.enonic.cms.core.security.userstore.MemberOfResolver;
import com.enonic.cms.core.security.userstore.UserStoreKey;
import com.enonic.cms.core.structure.SiteKey;
import com.enonic.cms.core.structure.menuitem.MenuItemKey;
import com.enonic.cms.core.structure.page.template.PageTemplateKey;
import com.enonic.cms.core.structure.page.template.PageTemplateType;
import com.enonic.cms.store.dao.ContentTypeDao;
import com.enonic.cms.store.dao.GroupDao;
import com.enonic.cms.store.dao.SectionContentDao;
@Component
public final class AdminEngine
extends BaseEngine
implements InitializingBean
{
private BinaryDataHandler binaryDataHandler;
private CategoryHandler categoryHandler;
private CommonHandler commonHandler;
private ContentHandler contentHandler;
private ContentService contentService;
private ContentObjectHandler contentObjectHandler;
private GroupHandler groupHandler;
@Autowired
private MemberOfResolver memberOfResolver;
private IndexService indexService;
private LanguageHandler languageHandler;
private LogHandler logHandler;
private MenuHandler menuHandler;
private PageHandler pageHandler;
private PageTemplateHandler pageTemplateHandler;
private SectionHandler sectionHandler;
private SecurityHandler securityHandler;
private SecurityService securityService;
private SystemHandler systemHandler;
private UnitHandler unitHandler;
private UserHandler userHandler;
@Autowired
private ContentTypeDao contentTypeDao;
@Autowired
private GroupDao groupDao;
@Autowired
private SectionContentDao sectionContentDao;
public void afterPropertiesSet()
throws Exception
{
// event listeners
menuHandler.addListener( logHandler );
}
public CategoryHandler getCategoryHandler()
{
return categoryHandler;
}
public CommonHandler getCommonHandler()
{
return commonHandler;
}
public ContentHandler getContentHandler()
{
return contentHandler;
}
public ContentObjectHandler getContentObjectHandler()
{
return contentObjectHandler;
}
public GroupHandler getGroupHandler()
{
return groupHandler;
}
public LanguageHandler getLanguageHandler()
{
return languageHandler;
}
public MenuHandler getMenuHandler()
{
return menuHandler;
}
public PageHandler getPageHandler()
{
return pageHandler;
}
public PageTemplateHandler getPageTemplateHandler()
{
return pageTemplateHandler;
}
public SectionHandler getSectionHandler()
{
return sectionHandler;
}
public SecurityHandler getSecurityHandler()
{
return securityHandler;
}
public UserHandler getUserHandler()
{
return userHandler;
}
public XMLDocument getPageTemplates( PageTemplateType type )
{
Document doc = pageTemplateHandler.getPageTemplates( type );
return XMLDocumentFactory.create( doc );
}
public void copyMenu( User user, int menuKey, boolean includeContent )
throws VerticalSecurityException
{
if ( !user.isEnterpriseAdmin() )
{
String enterpriseGroupKey = groupHandler.getEnterpriseAdministratorGroupKey();
String[] groupKeys = groupHandler.getAllGroupMembershipsForUser( user );
Arrays.sort( groupKeys );
if ( Arrays.binarySearch( groupKeys, enterpriseGroupKey ) < 0 )
{
String message = "User does not have rights to copy menu.";
VerticalEngineLogger.errorSecurity( message, null );
}
}
menuHandler.copyMenu( user, menuKey, includeContent );
}
public boolean contentExists( int categoryKey, String contentTitle )
{
return contentHandler.contentExists( CategoryKey.parse( categoryKey ), contentTitle );
}
public int getContentKey( int categoryKey, String contentTitle )
{
return contentHandler.getContentKey( CategoryKey.parse( categoryKey ), contentTitle );
}
public String getContentCreatedTimestamp( int contentKey )
{
return contentHandler.getCreatedTimestamp( contentKey );
}
public Date getContentPublishFromTimestamp( int contentKey )
{
return contentHandler.getPublishFromTimestamp( contentKey );
}
public Date getContentPublishToTimestamp( int contentKey )
{
return contentHandler.getPublishToTimestamp( contentKey );
}
public int getCategoryKey( int superCategoryKey, String name )
{
return categoryHandler.getCategoryKey( superCategoryKey, name );
}
public int createContentObject( String xmlData )
{
return contentObjectHandler.createContentObject( xmlData );
}
public int createContentType( User user, String xmlData )
{
Document doc = XMLTool.domparse( xmlData, "contenttype" );
if ( !( securityHandler.isSiteAdmin( user ) || isDeveloper( user ) ) )
{
String message = "User is not administrator or developer";
VerticalEngineLogger.errorSecurity( message, null );
}
return contentHandler.createContentType( doc );
}
public void createLanguage( User user, String languageCode, String description )
{
if ( !isEnterpriseAdmin( user ) )
{
String message = "User is not enterprise administrator";
VerticalEngineLogger.errorSecurity( message, null );
}
languageHandler.createLanguage( languageCode, description );
}
public int createMenu( User user, String xmlData )
{
return menuHandler.createMenu( user, xmlData );
}
public void updateMenuItem( User user, String xmlData )
{
menuHandler.updateMenuItem( user, xmlData );
}
public void removeMenuItem( User user, int mikey )
{
menuHandler.removeMenuItem( user, mikey );
}
public int createMenuItem( User user, String xmlData )
{
return menuHandler.createMenuItem( user, xmlData );
}
public String generateUID( String fName, String sName, UserStoreKey userStoreKey )
{
return userHandler.generateUID( fName, sName, userStoreKey );
}
public BinaryData getBinaryData( int binaryDataKey )
{
return binaryDataHandler.getBinaryData( binaryDataKey );
}
public XMLDocument getContent( User user, int contentKey, int parentLevel, int childrenLevel, int parentChildrenLevel )
{
Document doc = contentHandler.getContent( user, contentKey, false, parentLevel, childrenLevel, parentChildrenLevel );
securityHandler.appendAccessRights( user, doc );
return XMLDocumentFactory.create( doc );
}
public String getCategoryName( int categoryKey )
{
return categoryHandler.getCategoryName( CategoryKey.parse( categoryKey ) );
}
public XMLDocument getCategoryNameXML( int categoryKey )
{
return XMLDocumentFactory.create( categoryHandler.getCategoryNameDoc( CategoryKey.parse( categoryKey ) ) );
}
public XMLDocument getCategory( User user, int categoryKey )
{
Document doc = categoryHandler.getCategory( user, CategoryKey.parse( categoryKey ) );
boolean hasSubs = categoryHandler.hasSubCategories( CategoryKey.parse( categoryKey ) );
Element categoryElem = XMLTool.getElement( doc.getDocumentElement(), "category" );
if ( categoryElem != null )
{
categoryElem.setAttribute( "subcategories", String.valueOf( hasSubs ) );
}
securityHandler.appendAccessRights( user, doc );
return XMLDocumentFactory.create( doc );
}
public MenuItemAccessRight getMenuItemAccessRight( User user, MenuItemKey key )
{
return securityHandler.getMenuItemAccessRight( user, key );
}
public MenuAccessRight getMenuAccessRight( User user, int key )
{
return securityHandler.getMenuAccessRight( user, key );
}
public CategoryAccessRight getCategoryAccessRight( User user, int key )
{
return securityHandler.getCategoryAccessRight( user, CategoryKey.parse( key ) );
}
public ContentAccessRight getContentAccessRight( User user, int key )
{
return securityHandler.getContentAccessRight( user, key );
}
public XMLDocument getMenuItem( User user, int key, boolean withParents )
{
Document doc = menuHandler.getMenuItem( user, key, withParents );
securityHandler.appendAccessRights( user, doc );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getMenuItem( User user, int key, boolean withParents, boolean complete )
{
Document doc = menuHandler.getMenuItem( user, key, withParents, complete, true );
securityHandler.appendAccessRights( user, doc );
return XMLDocumentFactory.create( doc );
}
public int getCategoryKey( int contentKey )
{
CategoryKey categoryKey = contentHandler.getCategoryKey( contentKey );
if ( categoryKey == null )
{
return -1;
}
return categoryKey.toInt();
}
public int getSuperCategoryKey( int categoryKey )
{
CategoryKey parentCategoryKey = categoryHandler.getParentCategoryKey( CategoryKey.parse( categoryKey ) );
if ( parentCategoryKey == null )
{
return -1;
}
return parentCategoryKey.toInt();
}
public XMLDocument getSuperCategoryNames( int categoryKey, boolean withContentCount, boolean includeCategory )
{
return categoryHandler.getSuperCategoryNames( CategoryKey.parse( categoryKey ), withContentCount, includeCategory );
}
public int getContentCount( int categoryKey, boolean recursive )
{
return categoryHandler.getContentCount( CategoryKey.parse( categoryKey ), recursive );
}
public XMLDocument getContentObject( int contentObjectKey )
{
return contentObjectHandler.getContentObject( contentObjectKey );
}
public XMLDocument getContentObjectsByMenu( int menuKey )
{
return XMLDocumentFactory.create( contentObjectHandler.getContentObjectsByMenu( menuKey ) );
}
public String getContentTitle( int versionKey )
{
return contentHandler.getContentTitle( versionKey );
}
public XMLDocument getContentType( int contentTypeKey )
{
Document doc = contentHandler.getContentType( contentTypeKey, false );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getContentType( int contentTypeKey, boolean includeContentCount )
{
Document doc = contentHandler.getContentType( contentTypeKey, includeContentCount );
return XMLDocumentFactory.create( doc );
}
public int getContentTypeKey( int contentKey )
{
return contentHandler.getContentTypeKey( contentKey );
}
public int[] getContentTypeKeysByHandler( String handlerClass )
{
return contentHandler.getContentTypeKeysByHandler( handlerClass );
}
public int getContentTypeKeyByCategory( int categoryKey )
{
return categoryHandler.getContentTypeKey( CategoryKey.parse( categoryKey ) );
}
public String getContentTypeName( int contentTypeKey )
{
return contentHandler.getContentTypeName( contentTypeKey );
}
public XMLDocument getContentTypeModuleData( int contentTypeKey )
{
return XMLDocumentFactory.create( contentHandler.getContentTypeModuleData( contentTypeKey ) );
}
public XMLDocument getLanguage( LanguageKey languageKey )
{
return languageHandler.getLanguage( languageKey );
}
public XMLDocument getLanguages()
{
return languageHandler.getLanguages();
}
public XMLDocument getMenu( User user, int menuKey, boolean complete )
{
Document doc = menuHandler.getMenu( user, menuKey, complete );
securityHandler.appendAccessRights( user, doc );
return XMLDocumentFactory.create( doc );
}
public String getMenuItemName( int menuItemKey )
{
return menuHandler.getMenuItemName( menuItemKey );
}
public String getPageTemplate( PageTemplateKey pageTemplateKey )
{
return pageTemplateHandler.getPageTemplate( pageTemplateKey ).getAsString();
}
public XMLDocument getPageTemplatesByMenu( int menuKey, int[] excludeTypeKeys )
{
return doGetPageTemplatesByMenu( menuKey, excludeTypeKeys );
}
private XMLDocument doGetPageTemplatesByMenu( int menuKey, int[] excludeTypeKeys )
{
Document doc = pageTemplateHandler.getPageTemplatesByMenu( menuKey, excludeTypeKeys );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getPageTemplatesByContentObject( int contentObjectKey )
{
Document doc = pageTemplateHandler.getPageTemplatesByContentObject( contentObjectKey );
return XMLDocumentFactory.create( doc );
}
public String getPageTemplParams( int pageTemplateKey )
{
return pageTemplateHandler.getPageTemplParams( pageTemplateKey );
}
public int getUnitLanguageKey( int unitKey )
{
return unitHandler.getUnitLanguageKey( unitKey );
}
public XMLDocument getUnit( int unitKey )
{
return unitHandler.getUnit( unitKey );
}
public String getUnitName( int unitKey )
{
return unitHandler.getUnitName( unitKey );
}
public int getUnitKey( int categoryKey )
{
return categoryHandler.getUnitKey( CategoryKey.parse( categoryKey ) );
}
public XMLDocument getUnitNamesXML( Filter filter )
{
return XMLDocumentFactory.create( unitHandler.getUnitNamesXML( filter ) );
}
public XMLDocument getUnits()
{
return unitHandler.getUnits();
}
public boolean hasContent( int categoryKey )
{
return categoryHandler.hasContent( CategoryKey.parse( categoryKey ) );
}
public boolean hasSubCategories( int categoryKey )
{
return categoryHandler.hasSubCategories( CategoryKey.parse( categoryKey ) );
}
public void regenerateIndexForContentType( int contentTypeKey )
{
ContentTypeEntity contentType = contentTypeDao.findByKey( new ContentTypeKey( contentTypeKey ) );
final int batchSize = 10;
RegenerateIndexBatcher batcher = new RegenerateIndexBatcher( indexService, contentService );
if ( !indexService.indexExists() )
{
indexService.createIndex();
}
batcher.regenerateIndex( contentType, batchSize, null );
}
public void regenerateIndexForContentHandler( int contentHandlerKey )
{
ContentHandler handler = getContentHandler();
int[] contentTypes = handler.getContentTypeKeysByHandler( contentHandlerKey );
for ( int contentType : contentTypes )
{
regenerateIndexForContentType( contentType );
}
}
public void removeContentObject( int contentObjectKey )
throws VerticalSecurityException, VerticalRemoveException
{
contentObjectHandler.removeContentObject( contentObjectKey );
}
public void removeContentType( User user, int contentTypeKey )
throws VerticalSecurityException, VerticalRemoveException
{
if ( !( securityHandler.isSiteAdmin( user ) || isDeveloper( user ) ) )
{
String message = "User is not administrator or developer";
VerticalEngineLogger.errorSecurity( message, null );
}
contentHandler.removeContentType( contentTypeKey );
}
public void removeLanguage( LanguageKey languageKey )
throws VerticalSecurityException, VerticalRemoveException
{
languageHandler.removeLanguage( languageKey );
}
public void removeMenu( User user, int menuKey )
throws VerticalRemoveException, VerticalSecurityException
{
menuHandler.removeMenu( user, menuKey );
}
public void updateContentObject( String xmlData )
{
contentObjectHandler.updateContentObject( xmlData );
}
public void updateContentType( User user, String xmlData )
{
Document doc = XMLTool.domparse( xmlData, "contenttype" );
if ( !( securityHandler.isSiteAdmin( user ) || isDeveloper( user ) ) )
{
String message = "User is not administrator or developer";
VerticalEngineLogger.errorSecurity( message, null );
}
contentHandler.updateContentType( doc );
}
public void updateLanguage( LanguageKey languageKey, String languageCode, String description )
{
languageHandler.updateLanguage( languageKey, languageCode, description );
}
public void updateMenuData( User user, String xmlData )
{
Document doc = XMLTool.domparse( xmlData, "menu" );
if ( !isAdmin( user ) )
{
String message = "User does not have rights to update menu data.";
VerticalEngineLogger.errorSecurity( message, null );
}
menuHandler.updateMenuData( doc );
}
public XMLDocument getMenuItemsByContentObject( User user, int cobKey )
{
Document doc = menuHandler.getMenuItemsByContentObject( user, cobKey );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getMenuItemsByPageTemplates( User user, int[] pageTemplateKeys )
{
Document doc = menuHandler.getMenuItemsByPageTemplates( user, pageTemplateKeys );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getAccessRights( User user, int type, int key, boolean includeUserright )
{
Document doc = securityHandler.getAccessRights( user, type, key, includeUserright );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getDefaultAccessRights( User user, int type, int key )
{
Document doc = securityHandler.getDefaultAccessRights( user, type, key );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getGroup( String gKey )
{
return XMLDocumentFactory.create( groupHandler.getGroup( gKey ) );
}
public void updateAccessRights( User user, String xmlData )
{
Document doc = XMLTool.domparse( xmlData, "accessrights" );
securityHandler.updateAccessRights( user, doc );
}
public XMLDocument getContent( User oldTypeUser, CategoryKey categoryKey, boolean includeSubCategories, String orderBy, int index,
int count, int childrenLevel, int parentLevel, int parentChildrenLevel )
{
UserEntity user = securityService.getUser( oldTypeUser.getKey() );
List<CategoryKey> categories = CategoryKey.convertToList( categoryKey );
ContentByCategoryQuery contentByCategoryQuery = new ContentByCategoryQuery();
contentByCategoryQuery.setUser( user );
contentByCategoryQuery.setCategoryKeyFilter( categories, includeSubCategories ? Integer.MAX_VALUE : 1 );
contentByCategoryQuery.setOrderBy( orderBy );
contentByCategoryQuery.setIndex( index );
contentByCategoryQuery.setCount( count );
contentByCategoryQuery.setFilterIncludeOfflineContent();
contentByCategoryQuery.setFilterAdminBrowseOnly( false );
ContentResultSet contents = contentService.queryContent( contentByCategoryQuery );
RelatedContentQuery relatedContentQuery = new RelatedContentQuery( new Date() );
relatedContentQuery.setUser( user );
relatedContentQuery.setContentResultSet( contents );
relatedContentQuery.setParentLevel( parentLevel );
relatedContentQuery.setChildrenLevel( childrenLevel );
relatedContentQuery.setParentChildrenLevel( parentChildrenLevel );
relatedContentQuery.setIncludeOnlyMainVersions( true );
RelatedContentResultSet relatedContents = contentService.queryRelatedContent( relatedContentQuery );
ContentXMLCreator xmlCreator = new ContentXMLCreator();
xmlCreator.setResultIndexing( index, count );
xmlCreator.setIncludeOwnerAndModifierData( true );
xmlCreator.setIncludeContentData( true );
xmlCreator.setIncludeCategoryData( true );
xmlCreator.setIncludeRelatedContentData( true );
xmlCreator.setIncludeUserRightsInfo( true, new CategoryAccessResolver( groupDao ), new ContentAccessResolver( groupDao ) );
xmlCreator.setIncludeVersionsInfoForAdmin( true );
xmlCreator.setIncludeAssignment( true );
xmlCreator.setIncludeDraftInfo( true );
xmlCreator.setIncludeRepositoryPathInfo( false );
xmlCreator.setPublishedResolver( new ContentPublishedResolver( sectionContentDao ) );
return xmlCreator.createContentsDocument( user, contents, relatedContents );
}
public boolean isEnterpriseAdmin( User user )
{
return memberOfResolver.hasEnterpriseAdminPowers( user.getKey() );
}
public boolean isSiteAdmin( User user, SiteKey siteKey )
{
return getSecurityHandler().getMenuAccessRight( user, siteKey.toInt() ).getAdministrate();
}
public boolean isAdmin( User user )
{
return memberOfResolver.hasAdministratorPowers( user.getKey() );
}
public boolean isUserStoreAdmin( User user, UserStoreKey userStoreKey )
{
return memberOfResolver.hasUserStoreAdministratorPowers( user.getKey(), userStoreKey );
}
public boolean isDeveloper( User user )
{
return memberOfResolver.hasDeveloperPowers( user.getKey() );
}
public XMLDocument getMenu( User user, CategoryCriteria criteria )
{
Document doc = XMLTool.createDocument( "data" );
Element root = doc.getDocumentElement();
categoryHandler.getMenu( user, root, criteria );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getPath( User user, int type, int key )
{
Document doc = XMLTool.createDocument( "data" );
if ( type == Types.CATEGORY )
{
// Get unit
int unitKey = categoryHandler.getUnitKey( CategoryKey.parse( key ) );
Document unitDoc = commonHandler.getSingleData( Types.UNIT, unitKey );
Element unitElem = (Element) unitDoc.getDocumentElement().getFirstChild();
// Get categories
CategoryCriteria criteria = new CategoryCriteria();
criteria.setCategoryKey( key );
criteria.setUseDisableAttribute( false );
categoryHandler.getMenu( user, unitElem, criteria );
doc.getDocumentElement().appendChild( doc.importNode( unitElem, true ) );
}
return XMLDocumentFactory.create( doc );
}
public String getPathString( int type, int key )
{
if ( type == Types.MENUITEM )
{
return menuHandler.getPathString( key ).toString();
}
return null;
}
public XMLDocument getContentTitleXML( int versionKey )
{
Document doc = contentHandler.getContentTitleDoc( versionKey );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getMenusForAdmin( User user )
{
Document doc = menuHandler.getMenusForAdmin( user );
return XMLDocumentFactory.create( doc );
}
public void moveMenuItem( User user, Element[] menuItemElems, int menuItemKey, int fromMenuKey, int fromParentKey, int toMenuKey,
int toParentKey )
{
menuHandler.moveMenuItem( user, menuItemElems, menuItemKey, fromMenuKey, fromParentKey, toMenuKey, toParentKey );
}
public void shiftMenuItems( User user, Element[] menuItemElems, int menuKey, int parentMenuItemKey )
{
menuHandler.shiftMenuItems( user, menuItemElems, menuKey, parentMenuItemKey );
}
public Set<UserEntity> getUserNames( String[] groupKeys )
{
return groupHandler.getUserNames( groupKeys );
}
public XMLDocument getContentHandler( int contentHandlerKey )
{
return XMLDocumentFactory.create( contentHandler.getContentHandler( contentHandlerKey ) );
}
public String getContentHandlerClassForContentType( int contentTypeKey )
{
return contentHandler.getContentHandlerClassForContentType( contentTypeKey );
}
public XMLDocument getContentHandlers()
{
return XMLDocumentFactory.create( contentHandler.getContentHandlers() );
}
public int createContentHandler( User user, String xmlData )
{
if ( !securityHandler.isEnterpriseAdmin( user ) )
{
String message = "User does not have access rights to create content handlers.";
VerticalEngineLogger.errorSecurity( message, null );
}
Document doc = XMLTool.domparse( xmlData );
return contentHandler.createContentHandler( doc );
}
public void updateContentHandler( User user, String xmlData )
{
if ( !securityHandler.isEnterpriseAdmin( user ) )
{
String message = "User does not have access rights to update content handlers.";
VerticalEngineLogger.errorSecurity( message, null );
}
Document doc = XMLTool.domparse( xmlData );
contentHandler.updateContentHandler( doc );
}
public void removeContentHandler( User user, int contentHandlerKey )
{
if ( !isEnterpriseAdmin( user ) )
{
String message = "User does not have access rights to delete content handlers.";
VerticalEngineLogger.errorSecurity( message, null );
}
contentHandler.removeContentHandler( contentHandlerKey );
}
public XMLDocument getContentTypes()
{
Document doc = contentHandler.getContentTypes( null, false );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getContentTypes( boolean includeContentCount )
{
Document doc = contentHandler.getContentTypes( includeContentCount );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getContentTypes( int[] contentTypeKeys, boolean includeContentCount )
{
Document doc = contentHandler.getContentTypes( contentTypeKeys, includeContentCount );
return XMLDocumentFactory.create( doc );
}
public String getIndexingParametersXML( ContentTypeKey contentTypeKey )
{
XMLOutputter printer = new XMLOutputter( Format.getPrettyFormat() );
org.jdom.Element element = new org.jdom.Element( "indexparameters" );
if ( contentTypeKey == null )
{
return printer.outputString( element );
}
ContentTypeEntity contentType = contentTypeDao.findByKey( contentTypeKey );
if ( contentType != null )
{
element = contentType.getIndexingParametersXML();
}
return printer.outputString( element );
}
public long getSectionContentTimestamp( MenuItemKey sectionKey )
{
return sectionHandler.getSectionContentTimestamp( sectionKey.toInt() );
}
public XMLDocument getSections( User user, SectionCriteria criteria )
{
Document doc = sectionHandler.getSections( user, criteria );
return XMLDocumentFactory.create( doc );
}
public void removeSection( int sectionKey, boolean recursive )
throws VerticalRemoveException, VerticalSecurityException
{
sectionHandler.removeSection( sectionKey, recursive );
}
public void copySection( int sectionKey )
throws VerticalSecurityException
{
sectionHandler.copySection( sectionKey );
}
public boolean isSectionOrdered( int sectionKey )
{
return sectionHandler.isSectionOrdered( sectionKey );
}
public int getMenuKeyBySection( MenuItemKey sectionKey )
{
return sectionHandler.getMenuKeyBySection( sectionKey.toInt() );
}
public MenuItemKey getMenuItemKeyBySection( MenuItemKey sectionKey )
{
return sectionHandler.getMenuItemKeyBySection( sectionKey.toInt() );
}
public int getMenuKeyByMenuItem( MenuItemKey menuItemKey )
{
return menuHandler.getMenuKeyByMenuItem( menuItemKey.toInt() );
}
public int getParentMenuItemKey( int menuItemKey )
{
return menuHandler.getParentMenuItemKey( menuItemKey );
}
public XMLDocument getContentTitlesBySection( MenuItemKey sectionKey, String orderBy, int fromIndex, int count,
boolean includeTotalCount, boolean approveOnly )
{
return sectionHandler.getContentTitlesBySection( sectionKey.toInt(), orderBy, fromIndex, count, includeTotalCount, approveOnly );
}
public XMLDocument getContentTitles( int[] contentKeys )
{
return contentHandler.getContentTitles( contentKeys, null, false, null );
}
public XMLDocument getUsersWithPublishRight( int categoryKey )
{
Document doc = securityHandler.getUsersWithPublishRight( CategoryKey.parse( categoryKey ) );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getContentOwner( int contentKey )
{
Document doc = contentHandler.getContentOwner( contentKey );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getLogEntries( MultiValueMap adminParams, int fromIdx, int count, boolean complete )
{
Document doc = logHandler.getLogEntries( adminParams, fromIdx, count, complete );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getLogEntry( String key )
{
Document doc = logHandler.getLogEntry( key );
return XMLDocumentFactory.create( doc );
}
public int getContentCountByContentType( int contentTypeKey )
{
return contentHandler.getContentCountByContentType( contentTypeKey );
}
public XMLDocument getCategoryPathXML( CategoryKey categoryKey, int[] contentTypes )
{
Document doc = XMLTool.createDocument( "path" );
categoryHandler.getPathXML( doc, null, categoryKey, contentTypes );
return XMLDocumentFactory.create( doc );
}
public ResourceKey getContentTypeCSSKey( int contentTypeKey )
{
return contentHandler.getContentTypeCSSKey( contentTypeKey );
}
public XMLDocument getData( int type, int[] keys )
{
Document doc = commonHandler.getData( type, keys );
return XMLDocumentFactory.create( doc );
}
public ResourceKey getDefaultCSSByMenu( int menuKey )
{
return menuHandler.getDefaultCSSByMenu( menuKey );
}
public int getCurrentVersionKey( int contentKey )
{
return contentHandler.getCurrentVersionKey( contentKey );
}
public int getContentKeyByVersionKey( int versionKey )
{
return contentHandler.getContentKeyByVersionKey( versionKey );
}
public int[] getBinaryDataKeysByVersion( int versionKey )
{
return binaryDataHandler.getBinaryDataKeysByVersion( versionKey );
}
public XMLDocument getContentVersion( User user, int versionKey )
{
Document doc = contentHandler.getContentVersion( user, versionKey );
return XMLDocumentFactory.create( doc );
}
public XMLDocument getContentXMLField( int versionKey )
{
Document doc = contentHandler.getContentXMLField( versionKey );
return XMLDocumentFactory.create( doc );
}
public int[] getContentTypesByHandlerClass( String className )
{
return contentHandler.getContentTypesByHandlerClass( className );
}
public int getBinaryDataKey( int contentKey, String label )
{
return binaryDataHandler.getBinaryDataKey( contentKey, label );
}
public XMLDocument getCategoryMenu( User user, int categoryKey, int[] contentTypes, boolean includeRootCategories )
{
Document doc = categoryHandler.getCategoryMenu( user, CategoryKey.parse( categoryKey ), contentTypes, includeRootCategories );
return XMLDocumentFactory.create( doc );
}
public int getContentVersionState( int versionKey )
{
return contentHandler.getState( versionKey );
}
public MenuItemKey getSectionKeyByMenuItemKey( MenuItemKey menuItemKey )
{
return sectionHandler.getSectionKeyByMenuItem( menuItemKey );
}
public boolean initializeDatabaseSchema()
throws Exception
{
return this.systemHandler.initializeDatabaseSchema();
}
public boolean initializeDatabaseValues()
throws Exception
{
return this.systemHandler.initializeDatabaseValues();
}
public boolean isContentVersionApproved( int versionKey )
{
return contentHandler.isContentVersionApproved( versionKey );
}
public XMLDocument getContentHomes( int contentKey )
{
Document doc = contentHandler.getContentHomes( contentKey );
return XMLDocumentFactory.create( doc );
}
public boolean hasContentPageTemplates( int menuKey, int contentTypeKey )
{
return pageTemplateHandler.hasContentPageTemplates( menuKey, contentTypeKey );
}
public int getContentStatus( int versionKey )
{
return contentHandler.getContentStatus( versionKey );
}
public Document getAdminMenu( User user, int[] menuKeys, String[] menuItemTypes, boolean includeReadOnlyAccessRight )
{
return doGetAdminMenu( user, menuKeys, menuItemTypes, includeReadOnlyAccessRight );
}
private Document doGetAdminMenu( User user, int[] menuKeys, String[] menuItemTypes, boolean includeReadOnlyAccessRight )
{
Document menuDoc = menuHandler.getAdminMenu( user, menuKeys, menuItemTypes, includeReadOnlyAccessRight );
// Sort menuitems based on order
Element[] siteElems = XMLTool.getElements( menuDoc.getDocumentElement() );
for ( Element siteElem : siteElems )
{
XMLTool.sortChildElements( siteElem, "order", false, true );
}
return menuDoc;
}
public void updateMenuDetails( int menuKey, int frontPageKey, int loginPageKey, int errorPageKey, int defaultPageTemplateKey )
{
menuHandler.updateMenuDetails( menuKey, frontPageKey, loginPageKey, errorPageKey, defaultPageTemplateKey );
}
public int getContentTypeKeyByName( String name )
{
return this.contentHandler.getContentTypeKeyByName( name );
}
public long getArchiveSizeByCategory( int categoryKey )
{
return this.categoryHandler.getArchiveSizeByCategory( CategoryKey.parse( categoryKey ) );
}
public long getArchiveSizeByUnit( int unitKey )
{
return this.categoryHandler.getArchiveSizeByUnit( unitKey );
}
@Autowired
public void setBinaryDataHandler( BinaryDataHandler binaryDataHandler )
{
this.binaryDataHandler = binaryDataHandler;
}
@Autowired
public void setCategoryHandler( CategoryHandler categoryHandler )
{
this.categoryHandler = categoryHandler;
}
@Autowired
public void setCommonHandler( CommonHandler commonHandler )
{
this.commonHandler = commonHandler;
}
@Autowired
public void setContentHandler( ContentHandler contentHandler )
{
this.contentHandler = contentHandler;
}
@Autowired
public void setContentService( ContentService service )
{
contentService = service;
}
@Autowired
public void setContentObjectHandler( ContentObjectHandler contentObjectHandler )
{
this.contentObjectHandler = contentObjectHandler;
}
@Autowired
public void setGroupHandler( GroupHandler groupHandler )
{
this.groupHandler = groupHandler;
}
@Autowired
public void setLanguageHandler( LanguageHandler languageHandler )
{
this.languageHandler = languageHandler;
}
@Autowired
public void setLogHandler( LogHandler logHandler )
{
this.logHandler = logHandler;
}
@Autowired
public void setMenuHandler( MenuHandler menuHandler )
{
this.menuHandler = menuHandler;
}
@Autowired
@Qualifier("enginePageHandler")
public void setPageHandler( PageHandler pageHandler )
{
this.pageHandler = pageHandler;
}
@Autowired
public void setPageTemplateHandler( PageTemplateHandler pageTemplateHandler )
{
this.pageTemplateHandler = pageTemplateHandler;
}
@Autowired
public void setSectionHandler( SectionHandler sectionHandler )
{
this.sectionHandler = sectionHandler;
}
@Autowired
public void setUserHandler( UserHandler userHandler )
{
this.userHandler = userHandler;
}
@Autowired
public void setUnitHandler( UnitHandler unitHandler )
{
this.unitHandler = unitHandler;
}
@Autowired
public void setSystemHandler( SystemHandler systemHandler )
{
this.systemHandler = systemHandler;
}
@Autowired
public void setSecurityHandler( SecurityHandler securityHandler )
{
this.securityHandler = securityHandler;
}
@Autowired
public void setSecurityService( SecurityService service )
{
securityService = service;
}
@Autowired
public void setIndexService( IndexService service )
{
indexService = service;
}
}