/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.datasource.executor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.enonic.cms.core.config.ConfigProperties;
import com.enonic.cms.core.portal.datasource.context.DataSourcesContextXmlCreator;
import com.enonic.cms.core.portal.livetrace.LivePortalTraceService;
import com.enonic.cms.core.structure.SiteKey;
import com.enonic.cms.core.structure.SiteProperties;
import com.enonic.cms.core.structure.SitePropertiesService;
@Component
public final class DataSourceExecutorFactory
{
private DataSourcesContextXmlCreator dataSourcesContextXmlCreator;
private LivePortalTraceService livePortalTraceService;
private String defaultDataSourceRootElementName;
private DataSourceInvoker dataSourceInvoker;
private ConfigProperties cmsProperties;
private SitePropertiesService sitePropertiesService;
public DataSourceExecutor createDataSourceExecutor( final DataSourceExecutorContext context )
{
context.setRootProperties( this.cmsProperties );
if ( context.getSiteProperties() == null )
{
final SiteKey key = context.getSite().getKey();
final SiteProperties siteProperties = sitePropertiesService.getSiteProperties( key );
context.setSiteProperties( siteProperties );
}
final DataSourceExecutorImpl dataSourceExecutor = new DataSourceExecutorImpl( context );
dataSourceExecutor.setDataSourcesContextXmlCreator( dataSourcesContextXmlCreator );
dataSourceExecutor.setLivePortalTraceService( livePortalTraceService );
dataSourceExecutor.setDefaultResultRootElementName( this.defaultDataSourceRootElementName );
dataSourceExecutor.setInvoker( this.dataSourceInvoker );
return dataSourceExecutor;
}
@Autowired
public void setDataSourcesContextXmlCreator( final DataSourcesContextXmlCreator dataSourcesContextXmlCreator )
{
this.dataSourcesContextXmlCreator = dataSourcesContextXmlCreator;
}
@Autowired
public void setLivePortalTraceService( final LivePortalTraceService livePortalTraceService )
{
this.livePortalTraceService = livePortalTraceService;
}
@Autowired
public void setDataSourceInvoker( final DataSourceInvoker dataSourceInvoker )
{
this.dataSourceInvoker = dataSourceInvoker;
}
@Autowired
public void setCmsProperties( final ConfigProperties cmsProperties )
{
this.cmsProperties = cmsProperties;
}
@Autowired
public void setSitePropertiesService( final SitePropertiesService sitePropertiesService )
{
this.sitePropertiesService = sitePropertiesService;
}
@Value("${cms.datasource.defaultResultRootElement}")
public void setDefaultDataSourceRootElementName( final String defaultDataSourceRootElementName )
{
this.defaultDataSourceRootElementName = defaultDataSourceRootElementName;
}
}