/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content; import org.jdom.Element; import com.enonic.cms.core.structure.SiteEntity; /** * Oct 28, 2009 */ public class ContentLocationXmlCreator { private boolean includeSiteNameInfo = false; private boolean includeUserDefinedSectionHomeInfo = false; public Element createLocationElement( ContentLocations contentLocations, boolean includeSectionActivationInfo ) { return doCreateLocationElement( contentLocations, includeSectionActivationInfo ); } public Element createLocationElement( ContentEntity content, boolean includeSectionActivationInfo ) { ContentLocationSpecification contentLocationSpecification = new ContentLocationSpecification(); contentLocationSpecification.setIncludeInactiveLocationsInSection( includeSectionActivationInfo ); return doCreateLocationElement( content.getLocations( contentLocationSpecification ), includeSectionActivationInfo ); } private Element doCreateLocationElement( ContentLocations contentLocations, boolean includeSectionActivationInfo ) { final Element locationsEl = new Element( "location" ); for ( SiteEntity site : contentLocations.getSites() ) { final Element siteEl = new Element( "site" ); siteEl.setAttribute( "key", site.getKey().toString() ); if ( includeSiteNameInfo ) { siteEl.addContent( new Element( "name" ).setText( site.getName() ) ); } locationsEl.addContent( siteEl ); siteEl.setAttribute( "count", String.valueOf( contentLocations.numberOfLocations() ) ); for ( ContentLocation contentLocation : contentLocations.getLocationsBySite( site.getKey() ) ) { final Element contentlocationEl = new Element( "contentlocation" ); contentlocationEl.setAttribute( "type", contentLocation.getType().getShortName() ); contentlocationEl.setAttribute( "menuitemkey", contentLocation.getMenuItemKey().toString() ); contentlocationEl.setAttribute( "menuitemname", contentLocation.getMenuItemName() ); contentlocationEl.setAttribute( "menuitempath", contentLocation.getMenuItemPathAsString() ); contentlocationEl.setAttribute( "menuitem-display-name", contentLocation.getMenuItem().getDisplayName() ); boolean isHome = contentLocations.isHomeLocation( contentLocation ); contentlocationEl.setAttribute( "home", isHome ? "true" : "false" ); if ( includeUserDefinedSectionHomeInfo && contentLocation.isInSectionOrSectionHome() ) { contentlocationEl.setAttribute( "user-defined-section-home", contentLocation.isUserDefinedSectionHome() ? "true" : "false" ); } if ( includeSectionActivationInfo && contentLocation.isInSection() ) { contentlocationEl.setAttribute( "activated", String.valueOf( contentLocation.isApproved() ) ); } siteEl.addContent( contentlocationEl ); } } return locationsEl; } public void setIncludeUserDefinedSectionHomeInfo( boolean includeUserDefinedSectionHomeInfo ) { this.includeUserDefinedSectionHomeInfo = includeUserDefinedSectionHomeInfo; } }