/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.rendering.portalfunctions;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.enonic.cms.core.SiteURLResolver;
import com.enonic.cms.core.captcha.CaptchaService;
import com.enonic.cms.core.localization.LocalizationService;
import com.enonic.cms.core.portal.image.ImageService;
import com.enonic.cms.core.portal.livetrace.LivePortalTraceService;
import com.enonic.cms.core.resolver.locale.LocaleResolverService;
import com.enonic.cms.core.security.SecurityService;
import com.enonic.cms.core.servlet.ServletRequestAccessor;
import com.enonic.cms.core.structure.SitePropertiesService;
import com.enonic.cms.store.dao.ContentBinaryDataDao;
import com.enonic.cms.store.dao.ContentDao;
import com.enonic.cms.store.dao.MenuItemDao;
import com.enonic.cms.store.dao.PortletDao;
@Component
public class PortalFunctionsFactory
{
private static PortalFunctionsFactory instance;
private SiteURLResolver siteURLResolver;
private ContentDao contentDao;
@Autowired
private MenuItemDao menuItemDao;
@Autowired
private PortletDao portletDao;
@Autowired
private CaptchaService captchaService;
@Autowired
private LocalizationService localizeService;
@Autowired
private LocaleResolverService localeResolverService;
@Autowired
private ContentBinaryDataDao contentBinaryDataDao;
@Autowired
private ImageService imageService;
@Autowired
private SecurityService securityService;
@Autowired
private CreateAttachmentUrlFunction createAttachmentUrlFunction;
@Autowired
private IsWindowEmptyFunction isWindowEmptyFunction;
@Autowired
private LivePortalTraceService livePortalTraceService;
private SitePropertiesService sitePropertiesService;
private final ThreadLocal<PortalFunctionsContext> context = new ThreadLocal<PortalFunctionsContext>();
public static PortalFunctionsFactory get()
{
return instance;
}
public PortalFunctionsFactory()
{
instance = this;
}
public void setContext( PortalFunctionsContext value )
{
context.set( value );
}
public PortalFunctionsContext getContext()
{
return context.get();
}
public void removeContext()
{
context.remove();
}
public PortalFunctions createPortalFunctions()
{
HttpServletRequest httpRequest = ServletRequestAccessor.getRequest();
PortalFunctions portalFunctions = new PortalFunctions();
if ( getContext().getSiteURLResolver() != null )
{
portalFunctions.setSiteURLResolver( getContext().getSiteURLResolver() );
}
else
{
portalFunctions.setSiteURLResolver( siteURLResolver );
}
portalFunctions.setCaptchaService( captchaService );
portalFunctions.setContentBinaryDataDao( contentBinaryDataDao );
portalFunctions.setContentDao( contentDao );
portalFunctions.setContext( getContext() );
portalFunctions.setCreateAttachmentUrlFunction( createAttachmentUrlFunction );
portalFunctions.setEncodeURIs( getContext().isEncodeURIs() );
portalFunctions.setImageService( imageService );
portalFunctions.setIsWindowEmptyFunction( isWindowEmptyFunction );
portalFunctions.setLivePortalTraceService( livePortalTraceService );
portalFunctions.setLocaleResolvingService( localeResolverService );
portalFunctions.setLocalizeService( localizeService );
portalFunctions.setMenuItemDao( menuItemDao );
portalFunctions.setPortletDao( portletDao );
portalFunctions.setRequest( httpRequest );
portalFunctions.setSecurityService( securityService );
portalFunctions.setSitePropertiesService( sitePropertiesService );
return portalFunctions;
}
@Autowired
public void setSiteURLResolver( SiteURLResolver value )
{
this.siteURLResolver = value;
}
@Autowired
public void setContentDao( ContentDao contentDao )
{
this.contentDao = contentDao;
}
@Autowired
public void setSitePropertiesService( SitePropertiesService sitePropertiesService )
{
this.sitePropertiesService = sitePropertiesService;
}
}