/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.vertical.adminweb;
import java.util.Collection;
import org.jdom.Document;
import org.jdom.Element;
import com.enonic.vertical.engine.handlers.MenuHandler;
import com.enonic.cms.framework.xml.XMLDocument;
import com.enonic.cms.framework.xml.XMLDocumentFactory;
import com.enonic.cms.core.structure.DefaultSiteAccumulatedAccessRights;
import com.enonic.cms.core.structure.SiteEntity;
import com.enonic.cms.core.structure.SiteProperties;
import com.enonic.cms.core.structure.SiteXmlCreator;
import com.enonic.cms.core.structure.menuitem.MenuItemAccumulatedAccessRights;
import com.enonic.cms.core.structure.menuitem.MenuItemEntity;
import com.enonic.cms.core.structure.menuitem.MenuItemXMLCreatorSetting;
import com.enonic.cms.core.structure.menuitem.MenuItemXmlCreator;
public class MenuBrowseContentModel
{
private SiteEntity site;
private SiteProperties siteProperties;
private DefaultSiteAccumulatedAccessRights userRightsForSite;
private MenuItemEntity selectedMenuItem;
private MenuItemAccumulatedAccessRights userRightsForSelectedMenuItem;
private Collection<MenuItemEntity> selectedMenuItemPath;
private MenuItemEntity parentToSelectedMenuItem;
private MenuItemAccumulatedAccessRights userRightsForParentToSelectedMenuItem;
public void setSite( SiteEntity site )
{
this.site = site;
}
public void setSiteProperties( SiteProperties siteProperties )
{
this.siteProperties = siteProperties;
}
public void setUserRightsForSite( DefaultSiteAccumulatedAccessRights value )
{
this.userRightsForSite = value;
}
public void setSelectedMenuItem( MenuItemEntity value )
{
this.selectedMenuItem = value;
}
public void setSelectedMenuItemPath( Collection<MenuItemEntity> value )
{
this.selectedMenuItemPath = value;
}
public void setUserRightsForSelectedMenuItem( MenuItemAccumulatedAccessRights value )
{
this.userRightsForSelectedMenuItem = value;
}
public void setParentToSelectedMenuItem( MenuItemEntity value )
{
this.parentToSelectedMenuItem = value;
}
public void setUserRightsForParentToSelectedMenuItem( MenuItemAccumulatedAccessRights value )
{
this.userRightsForParentToSelectedMenuItem = value;
}
XMLDocument toXML(MenuHandler menuHandler)
{
Element modelEl = new Element( "model" );
modelEl.addContent( createSelectedMenuElement(menuHandler) );
modelEl.addContent( createSelectedMenuItemElement() );
modelEl.addContent( createParentToSelectedMenuItemElement() );
modelEl.addContent( createSelectedMenuItemPathElement() );
return XMLDocumentFactory.create( new Document( modelEl ) );
}
private Element createSelectedMenuElement(MenuHandler menuHandler)
{
SiteXmlCreator siteXmlCreator = new SiteXmlCreator( null, menuHandler );
Element selectedMenuEl = siteXmlCreator.createMenuElement( site, siteProperties, userRightsForSite );
return new Element( "selected-menu" ).addContent( selectedMenuEl );
}
private Element createSelectedMenuItemElement()
{
Element selectedMenuItemEl = new Element( "selected-menuitem" );
if ( selectedMenuItem != null )
{
MenuItemXMLCreatorSetting miXmlCreatorSetting = new MenuItemXMLCreatorSetting();
miXmlCreatorSetting.includeTypeSpecificXML = true;
miXmlCreatorSetting.includeParents = false;
miXmlCreatorSetting.includeChildren = false;
MenuItemXmlCreator menuItemXmlCreator = new MenuItemXmlCreator( miXmlCreatorSetting, null );
menuItemXmlCreator.setIncludeUserAccessRightsInfo( true );
menuItemXmlCreator.setIncludePathInfo( true );
Element menuItemEl = menuItemXmlCreator.createMenuItemElement( selectedMenuItem, userRightsForSelectedMenuItem );
selectedMenuItemEl.addContent( menuItemEl );
}
return selectedMenuItemEl;
}
private Element createSelectedMenuItemPathElement()
{
Element selectedMenuItemPathEl = new Element( "selected-menuitem-path" );
if ( selectedMenuItemPath != null )
{
for ( MenuItemEntity currMenuItem : selectedMenuItemPath )
{
MenuItemXMLCreatorSetting miPathXmlCreatorSetting = new MenuItemXMLCreatorSetting();
miPathXmlCreatorSetting.includeTypeSpecificXML = false;
miPathXmlCreatorSetting.includeParents = false;
miPathXmlCreatorSetting.includeChildren = false;
MenuItemXmlCreator menuItemPathXmlCreator = new MenuItemXmlCreator( miPathXmlCreatorSetting, null );
Element currMenuItemEl = menuItemPathXmlCreator.createMenuItemElement( currMenuItem );
selectedMenuItemPathEl.addContent( currMenuItemEl );
}
}
return selectedMenuItemPathEl;
}
private Element createParentToSelectedMenuItemElement()
{
Element parentEl = new Element( "parent-to-selected-menuitem" );
if ( parentToSelectedMenuItem != null )
{
MenuItemXMLCreatorSetting miXmlCreatorSetting = new MenuItemXMLCreatorSetting();
miXmlCreatorSetting.includeTypeSpecificXML = true;
miXmlCreatorSetting.includeParents = false;
miXmlCreatorSetting.includeChildren = false;
MenuItemXmlCreator menuItemXmlCreator = new MenuItemXmlCreator( miXmlCreatorSetting, null );
menuItemXmlCreator.setIncludeUserAccessRightsInfo( true );
Element menuItemEl =
menuItemXmlCreator.createMenuItemElement( parentToSelectedMenuItem, userRightsForParentToSelectedMenuItem );
parentEl.addContent( menuItemEl );
}
return parentEl;
}
}