/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.vertical.adminweb; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.jdom.Document; import org.jdom.Element; import com.enonic.cms.framework.xml.XMLDocument; import com.enonic.cms.framework.xml.XMLDocumentFactory; import com.enonic.cms.core.content.ContentAndVersion; import com.enonic.cms.core.content.ContentEntity; import com.enonic.cms.core.content.ContentXMLCreator; import com.enonic.cms.core.content.category.CategoryEntity; import com.enonic.cms.core.content.category.CategoryXmlCreator; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.structure.SiteEntity; /** * Created by IntelliJ IDEA. * User: rmh * Date: Apr 30, 2010 * Time: 11:43:30 AM */ public class AssigneeFormModel { UserEntity user; ContentAndVersion contentAndVersion; SiteEntity site; List<UserEntity> possibleAssignees; private static final String ROOT_XML_NAME = "model"; public SiteEntity getSite() { return site; } public void setSite( SiteEntity site ) { this.site = site; } public void setContentAndVersion( ContentAndVersion contentAndVersion ) { this.contentAndVersion = contentAndVersion; } public UserEntity getUser() { return user; } public void setUser( UserEntity user ) { this.user = user; } public XMLDocument toXML() { Element modelEl = new Element( ROOT_XML_NAME ); Document doc = new Document( modelEl ); modelEl.addContent( createContentElement() ); modelEl.addContent( createCategoryPathElement() ); return XMLDocumentFactory.create( doc ); } private Element createCategoryPathElement() { ContentEntity content = contentAndVersion.getContent(); CategoryEntity currentCategory = content.getCategory(); List<CategoryEntity> categoryPathList = createCategoryPathList( currentCategory ); Element categoryPathEl = new Element( "categorynames" ); CategoryXmlCreator categoryXmlCreator = new CategoryXmlCreator(); categoryXmlCreator.setIncludeAccessRightsInfo( false ); categoryXmlCreator.setIncludeAutoApproveInfo( false ); categoryXmlCreator.setIncludeCreatedAndTimestampInfo( false ); categoryXmlCreator.setIncludeOwnerAndModiferInfo( false ); categoryXmlCreator.setIncludeDescriptionInfo( false ); categoryXmlCreator.setIncludeDisabledInfo( false ); for ( CategoryEntity category : categoryPathList ) { categoryPathEl.addContent( categoryXmlCreator.createCategoryElement( category, "categoryname" ) ); } return categoryPathEl; } private List<CategoryEntity> createCategoryPathList( CategoryEntity currentCategory ) { List<CategoryEntity> categoryPathList = new ArrayList<CategoryEntity>(); categoryPathList.add( currentCategory ); while ( currentCategory.getParent() != null ) { currentCategory = currentCategory.getParent(); if ( categoryPathList.contains( currentCategory ) ) { throw new IllegalArgumentException( "Category-path contains loop" ); } categoryPathList.add( currentCategory ); } Collections.reverse( categoryPathList ); return categoryPathList; } private Element createContentElement() { ContentXMLCreator contentXMLCreator = new ContentXMLCreator(); contentXMLCreator.setIncludeRelatedContentData( false ); contentXMLCreator.setIncludeVersionsInfoForAdmin( true ); contentXMLCreator.setIncludeAssignment( true ); contentXMLCreator.setIncludeDraftInfo( true ); return contentXMLCreator.createContentElement( user, contentAndVersion ); } }