Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.web.portal.services; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.enonic.esl.containers.ExtendedMap; import com.enonic.vertical.engine.VerticalEngineException; import com.enonic.cms.core.resolver.ForcedResolverValueLifetimeSettings; import com.enonic.cms.core.resolver.ResolverContext; import com.enonic.cms.core.resolver.deviceclass.DeviceClassResolverService; import com.enonic.cms.core.resolver.locale.LocaleResolverService; import com.enonic.cms.core.service.UserServicesService; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.SiteKey; @Component public final class PortalServicesProcessor extends ServicesProcessorBase { private DeviceClassResolverService deviceClassResolverService; private LocaleResolverService localeResolverService; private final static String FORM_ITEM_DEVICE_CLASS = "deviceclass"; private final static String FORM_ITEM_LOCALE = "locale"; private static final String FORCE_VALUE_SETTING_KEY = "lifetime"; public PortalServicesProcessor() { super("portal"); } @Autowired public void setDeviceClassificationService(DeviceClassResolverService deviceClassResolverService) { this.deviceClassResolverService = deviceClassResolverService; } @Autowired public void setLocaleResolverService(LocaleResolverService localeResolverService) { this.localeResolverService = localeResolverService; } private enum PortalOperation { forcedeviceclass, resetdeviceclass, forcelocale, resetlocale } @Override protected void handlerCustom(HttpServletRequest request, HttpServletResponse response, HttpSession session, ExtendedMap formItems, UserServicesService userServices, SiteKey siteKey, String operation) throws VerticalUserServicesException, VerticalEngineException, IOException, ClassNotFoundException, IllegalAccessException, InstantiationException { PortalOperation portalOperation = null; try { portalOperation = PortalOperation.valueOf(StringUtils.lowerCase(operation)); } catch (IllegalArgumentException e) { throw new VerticalUserServicesException( "Operation: " + operation + " not supported in service " + " portal"); } ResolverContext resolverContext = new ResolverContext(request, getSite(siteKey)); switch (portalOperation) { case forcedeviceclass: handleForceDeviceClass(resolverContext, response, formItems); break; case resetdeviceclass: handleResetDeviceClass(resolverContext, response); break; case forcelocale: handleForceLocale(resolverContext, response, formItems); break; case resetlocale: handleResetLocale(resolverContext, response); break; } redirectToPage(request, response, formItems); } private void handleForceDeviceClass(ResolverContext context, HttpServletResponse response, ExtendedMap formItems) { ForcedResolverValueLifetimeSettings forcedDeviceClassSetting = getForcedDeviceClassSetting(formItems); String deviceClass = formItems.getString(FORM_ITEM_DEVICE_CLASS); deviceClassResolverService.setForcedDeviceClass(context, response, forcedDeviceClassSetting, deviceClass); } private void handleResetDeviceClass(ResolverContext context, HttpServletResponse response) { deviceClassResolverService.resetDeviceClass(context, response); } private void handleForceLocale(ResolverContext context, HttpServletResponse response, ExtendedMap formItems) { ForcedResolverValueLifetimeSettings forceLocaleLifeTimeSetting = getForcedDeviceClassSetting(formItems); String localeString = formItems.getString(FORM_ITEM_LOCALE); localeResolverService.setForcedLocale(context, response, forceLocaleLifeTimeSetting, localeString); } private void handleResetLocale(ResolverContext context, HttpServletResponse response) { localeResolverService.resetLocale(context, response); } private ForcedResolverValueLifetimeSettings getForcedDeviceClassSetting(ExtendedMap formItems) { ForcedResolverValueLifetimeSettings defaultSetting = ForcedResolverValueLifetimeSettings.permanent; String forcedDeviceClassParameter = formItems.getString(FORCE_VALUE_SETTING_KEY, defaultSetting.name()); ForcedResolverValueLifetimeSettings forcedDeviceClassSetting; try { forcedDeviceClassSetting = ForcedResolverValueLifetimeSettings .valueOf(StringUtils.lowerCase(forcedDeviceClassParameter)); } catch (IllegalArgumentException e) { throw new VerticalUserServicesException( "Force deviceclass setting is invalid: " + forcedDeviceClassParameter); } return forcedDeviceClassSetting; } private SiteEntity getSite(SiteKey siteKey) { SiteEntity site = siteDao.findByKey(siteKey.toInt()); return site; } }