/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.datasource.context;
import org.jdom.Element;
import org.springframework.beans.factory.annotation.Autowired;
import com.enonic.vertical.engine.handlers.MenuHandler;
import com.enonic.cms.core.security.user.UserEntity;
import com.enonic.cms.core.security.user.UserXmlCreator;
import com.enonic.cms.core.structure.SiteEntity;
import com.enonic.cms.core.structure.SiteProperties;
/**
* Apr 21, 2009
*/
final class SiteContextXmlCreator
{
private UserXmlCreator userXmlCreator;
private PathContextXmlCreator pathContextXmlCreator;
private MenuHandler menuHandler;
public SiteContextXmlCreator(MenuHandler menuHandler)
{
this.menuHandler = menuHandler;
userXmlCreator = new UserXmlCreator();
userXmlCreator.setAdminConsoleStyle( false );
pathContextXmlCreator = new PathContextXmlCreator();
}
public Element createSiteElement( SiteEntity site, SiteProperties siteProperties )
{
Element siteEl = new Element( "site" );
// site key (menu key)
siteEl.setAttribute( "key", site.getKey().toString() );
siteEl.addContent( new Element( "name" ).setText( site.getName() ) );
siteEl.addContent( new Element( "language" ).setText( site.getLanguage().getCode() ) );
if ( siteProperties != null && siteProperties.getSiteURL() != null )
{
siteEl.addContent( new Element( "url" ).setText( siteProperties.getSiteURL() ) );
}
else
{
siteEl.addContent( new Element( "url" ) );
}
Element defaultRunAsUserEl = new Element( "default-run-as-user" );
siteEl.addContent( defaultRunAsUserEl );
final UserEntity defaultRunAsUser = menuHandler.getRunAsUserForSite( site.getKey() );
if ( defaultRunAsUser != null )
{
defaultRunAsUserEl.addContent( userXmlCreator.createUserElement( defaultRunAsUser, false ) );
}
Element frontpageEl = new Element( "front-page" );
if ( site.getFrontPage() != null )
{
frontpageEl.addContent( pathContextXmlCreator.createResourceElement( site.getFrontPage() ) );
}
siteEl.addContent( frontpageEl );
Element errorpageEl = new Element( "error-page" );
if ( site.getErrorPage() != null )
{
errorpageEl.addContent( pathContextXmlCreator.createResourceElement( site.getErrorPage() ) );
}
siteEl.addContent( errorpageEl );
Element loginpageEl = new Element( "login-page" );
if ( site.getLoginPage() != null )
{
loginpageEl.addContent( pathContextXmlCreator.createResourceElement( site.getLoginPage() ) );
}
siteEl.addContent( loginpageEl );
siteEl.addContent(
new Element( "path-to-public-home-resources" ).setText( toStringAsEmptyIfNull( site.getPathToPublicResources() ) ) );
siteEl.addContent( new Element( "path-to-home-resources" ).setText( toStringAsEmptyIfNull( site.getPathToResources() ) ) );
return siteEl;
}
private String toStringAsEmptyIfNull( Object value )
{
if ( value == null )
{
return "";
}
return String.valueOf( value );
}
}