Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (C) 2014 Philip Helger (www.helger.com) philip[at]helger[dot]com Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package com.helger.appbasics.app.request;
 
 
 
This class holds the per-request configuration settings.
  • Menu item to show
  • Display locale

Author(s):
Philip Helger
 
 public abstract class AbstractRequestManager implements IRequestManager
 {
 
   public AbstractRequestManager ()
   {}
 
   @Nonnull
   @Nonempty
   public final String getRequestParamNameMenuItem ()
   {
     return ;
   }
 
   public final void setRequestParamNameMenuItem (@Nonnull @Nonempty final String sRequestParamNameMenuItem)
   {
      = ValueEnforcer.notEmpty (sRequestParamNameMenuItem"RequestParamNameMenuItem");
   }
 
   @Nonnull
   @Nonempty
   public final String getRequestParamNameLocale ()
   {
     return ;
   }
 
   public final void setRequestParamNameLocale (@Nonnull @Nonempty final String sRequestParamNameLocale)
   {
      = ValueEnforcer.notEmpty (sRequestParamNameLocale"RequestParamNameLocale");
   }
 
   @Nonnull
   protected abstract ILocaleManager getLocaleManager ();
 
   @Nonnull
   @Nonempty
   protected abstract String getSessionAttrMenuItem ();
 
   @Nonnull
   @Nonempty
   protected abstract String getSessionAttrLocale ();
 
   public void onRequestBegin (@Nonnull final IRequestScope aRequestScope)
   {
     // determine page from request and store in request
     final String sMenuItemID = aRequestScope.getAttributeAsString ();
     if (sMenuItemID != null)
     {
       // Validate the menu item ID and check the display filter!
       final IMenuObject aMenuObject = getMenuTree ().getMenuObjectOfID (sMenuItemID);
       if (aMenuObject instanceof IMenuItemPage && aMenuObject.matchesDisplayFilter ())
      {
        final ISessionWebScope aSessionScope = WebScopeManager.getSessionScope (true);
        aSessionScope.setAttribute (getSessionAttrMenuItem (), aMenuObject.getID ());
      }
    }
    // determine locale from request and store in session
    final String sDisplayLocale = aRequestScope.getAttributeAsString ();
    if (sDisplayLocale != null)
    {
      final Locale aDisplayLocale = LocaleCache.getLocale (sDisplayLocale);
      if (aDisplayLocale != null)
      {
        // Check if the locale is present in the locale manager
        if (getLocaleManager ().isSupportedLocale (aDisplayLocale))
        {
          // A valid locale was provided
          final ISessionWebScope aSessionScope = WebScopeManager.getSessionScope (true);
          aSessionScope.setAttribute (getSessionAttrLocale (), aDisplayLocale);
        }
      }
    }
  }
  {
    final ISessionWebScope aSessionScope = WebScopeManager.getSessionScope (false);
    if (aSessionScope != null)
    {
      final String sMenuItemID = aSessionScope.getAttributeAsString (getSessionAttrMenuItem ());
      if (sMenuItemID != null)
      {
        final IMenuObject aMenuObj = getMenuTree ().getMenuObjectOfID (sMenuItemID);
        if (aMenuObj instanceof IMenuItemPage)
          return (IMenuItemPageaMenuObj;
      }
    }
    return null;
  }
  {
    // Get selected item from request/session
    final IMenuItemPage aSelectedMenuItem = getSessionMenuItem ();
    if (aSelectedMenuItem != null && aSelectedMenuItem.matchesDisplayFilter ())
      return aSelectedMenuItem;
    // Use default menu item
    final IMenuTree aMenuTree = getMenuTree ();
    final IMenuItemPage aDefaultMenuItem = aMenuTree.getDefaultMenuItem ();
    if (aDefaultMenuItem != null && aDefaultMenuItem.matchesDisplayFilter ())
      return aDefaultMenuItem;
    // Last fallback: use the first menu item
    final DefaultTreeItemWithID <StringIMenuObjectaRootItem = aMenuTree.getRootItem ();
    if (aRootItem.hasChildren ())
      for (final DefaultTreeItemWithID <StringIMenuObjectaItem : aRootItem.getChildren ())
        if (aItem.getData () instanceof IMenuItemPage)
        {
          final IMenuItemPage aFirstMenuItem = (IMenuItemPageaItem.getData ();
          if (aFirstMenuItem.matchesDisplayFilter ())
            return aFirstMenuItem;
        }
    throw new IllegalStateException ("No menu item is present!");
  }
  {
    return getRequestMenuItem ().getID ();
  }
  {
    // Was a request locale set in session scope?
    final ISessionScope aSessionScope = WebScopeManager.getSessionScope (false);
    if (aSessionScope != null)
    {
      final Locale aSessionDisplayLocale = aSessionScope.getCastedAttribute (getSessionAttrLocale ());
      if (aSessionDisplayLocale != null)
        return aSessionDisplayLocale;
    }
    // Nothing specified - use application default locale
    final ILocaleManager aLocaleManager = getLocaleManager ();
    final Locale aDefaultLocale = aLocaleManager.getDefaultLocale ();
    if (aDefaultLocale == null)
      throw new IllegalStateException ("No default locale is specified in " + aLocaleManager);
    return aDefaultLocale;
  }
  {
    return CountryCache.getCountry (getRequestDisplayLocale ());
  }
  {
    return getRequestDisplayLocale ().getLanguage ();
  }
  public String toString ()
  {
    return new ToStringGenerator (this).append ("requestParamMenuItem")
                                       .append ("requestParamNameLocale")
                                       .toString ();
  }
New to GrepCode? Check out our FAQ X