/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.admin; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.Element; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.menuitem.MenuItemEntity; import com.enonic.cms.core.structure.page.PageEntity; import com.enonic.cms.core.structure.page.template.PageTemplateEntity; /** * Oct 1, 2009 */ public class MenuItemsAcrossSitesXmlCreator { public Document createXmlDocument( MenuItemsAcrossSitesModel model ) { Element rootEl = new Element( "menuitems-across-sites" ); for ( Map.Entry<SiteEntity, List<MenuItemEntity>> entry : model.getMap().entrySet() ) { rootEl.addContent( doCreateSiteElement( entry ) ); } return new Document( rootEl ); } private Element doCreateSiteElement( Map.Entry<SiteEntity, List<MenuItemEntity>> entry ) { SiteEntity site = entry.getKey(); Element siteEl = new Element( "site" ); siteEl.setAttribute( "key", site.getKey().toString() ); siteEl.addContent( new Element( "name" ).setText( site.getName() ) ); Element menuitemsEl = new Element( "menuitems" ); siteEl.addContent( menuitemsEl ); List<MenuItemEntity> menuItems = entry.getValue(); for ( MenuItemEntity menuItem : menuItems ) { menuitemsEl.addContent( doCreateMenuItemElement( menuItem ) ); } return siteEl; } private Element doCreateMenuItemElement( MenuItemEntity menuItem ) { Element menuitemEl = new Element( "menuitem" ); menuitemEl.setAttribute( "key", menuItem.getKey().toString() ); Element typeEl = new Element( "type" ); typeEl.setAttribute( "key", menuItem.getType().getKey().toString() ); typeEl.setText( menuItem.getType().getName() ); menuitemEl.addContent( typeEl ); menuitemEl.addContent( new Element( "name" ).setText( menuItem.getName() ) ); menuitemEl.addContent( new Element( "path" ).setText( menuItem.getPathAsString() ) ); menuitemEl.addContent( new Element( "show-in-menu" ).setText( Boolean.toString( menuItem.showInMenu() ) ) ); if ( menuItem.getPage() != null ) { menuitemEl.addContent( doCreatePageElement( menuItem.getPage() ) ); } return menuitemEl; } private Element doCreatePageElement( PageEntity page ) { Element pageEl = new Element( "page" ); pageEl.setAttribute( "key", String.valueOf( page.getKey() ) ); if ( page.getTemplate() != null ) { pageEl.addContent( doCreatePageTemplateElement( page.getTemplate() ) ); } return pageEl; } private Element doCreatePageTemplateElement( PageTemplateEntity pageTemplate ) { Element pagetemplateEl = new Element( "page-template" ); pagetemplateEl.setAttribute( "key", String.valueOf( pageTemplate.getKey() ) ); Element typeEl = new Element( "type" ); typeEl.setAttribute( "key", String.valueOf( pageTemplate.getType().getKey() ) ); typeEl.setText( pageTemplate.getType().getName() ); pagetemplateEl.addContent( typeEl ); return pagetemplateEl; } }