View Javadoc

    1   package org.apache.turbine.util.template;
    2
    3
    4   /*
    5    * Licensed to the Apache Software Foundation (ASF) under one
    6    * or more contributor license agreements.  See the NOTICE file
    7    * distributed with this work for additional information
    8    * regarding copyright ownership.  The ASF licenses this file
    9    * to you under the Apache License, Version 2.0 (the
    10   * "License"); you may not use this file except in compliance
    11   * with the License.  You may obtain a copy of the License at
    12   *
    13   *   http://www.apache.org/licenses/LICENSE-2.0
    14   *
    15   * Unless required by applicable law or agreed to in writing,
    16   * software distributed under the License is distributed on an
    17   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    18   * KIND, either express or implied.  See the License for the
    19   * specific language governing permissions and limitations
    20   * under the License.
    21   */
    22
    23
    24  import java.util.HashMap;
    25  import java.util.Map;
    26
    27  import org.apache.turbine.services.TurbineServices;
    28  import org.apache.turbine.services.template.TemplateService;
    29  import org.apache.turbine.util.RunData;
    30  import org.apache.turbine.util.uri.URIConstants;
    31
    32
    33  /**
    34   * This is a wrapper for Template specific information.  It's part of
    35   * the RunData object and can extract the information it needs to do
    36   * the job directly from the data.getParameters().
    37   *
    38   * @author <a href="mailto:mbryson@mindspring.com">Dave Bryson</a>
    39   * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
    40   * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
    41   * @version $Id: TemplateInfo.java 1723699 2016-01-08 11:29:21Z tv $
    42   */
    43  public class TemplateInfo
    44  {
    45
    46      /** Constants for tempStorage hash map. */
    47      public static final String NAVIGATION_TEMPLATE = "00navigation_template00";
    48      /** Constants for tempStorage hash map. */
    49      public static final String LAYOUT_TEMPLATE = "00layout_template00";
    50      /** Constants for tempStorage hash map. */
    51      public static final String SERVICE_NAME = "template_service";
    52
    53      /* Handle to the RunData object. */
    54      private RunData data = null;
    55
    56      /* Place to store information about templates. */
    57      private Map<String, Object> tempStorage = null;
    58
    59      /**
    60       * Constructor
    61       *
    62       * @param data A Turbine RunData object.
    63       */
    64      public TemplateInfo(RunData data)
    65      {
    66          this.data = data;
    67          tempStorage = new HashMap<String, Object>(10);
    68      }
    69
    70      /**
    71       * Get the value of navigationTemplate.
    72       *
    73       * @return A String with the value of navigationTemplate.
    74       */
    75      public String getNavigationTemplate()
    76      {
    77          return getString(TemplateInfo.NAVIGATION_TEMPLATE);
    78      }
    79
    80      /**
    81       * Set the value of navigationTemplate.
    82       *
    83       * @param v Value to assign to navigationTemplate.
    84       */
    85      public void setNavigationTemplate(String v)
    86      {
    87          setTemp(TemplateInfo.NAVIGATION_TEMPLATE, v);
    88      }
    89
    90      /**
    91       * Get the value of screen for the RunData parameters.  This
    92       * information comes from PathInfo or a QueryString.
    93       *
    94       * @return A String with the value of screen.
    95       */
    96      public String getScreenTemplate()
    97      {
    98          return data.getParameters().getString(URIConstants.CGI_TEMPLATE_PARAM, null);
    99      }
    100
    101     /**
    102      * Set the value of screen.  This is really just a method to hide
    103      * using the RunData Parameter.
    104      *
    105      * @param v Value to assign to screen.
    106      */
    107     public void setScreenTemplate(String v)
    108     {
    109         data.getParameters().setString(URIConstants.CGI_TEMPLATE_PARAM, v);
    110
    111         // We have changed the screen template so
    112         // we should now update the layout template
    113         // as well. We will use the template service
    114         // to help us out.
    115         try
    116         {
    117             TemplateService templateService = (TemplateService)TurbineServices.getInstance().getService(TemplateService.SERVICE_NAME);
    118             setLayoutTemplate(templateService.getLayoutTemplateName(v));
    119         }
    120         catch (Exception e)
    121         {
    122             /*
    123              * do nothing.
    124              */
    125         }
    126     }
    127
    128     /**
    129      * Get the value of layout.
    130      *
    131      * @return A String with the value of layout.
    132      */
    133     public String getLayoutTemplate()
    134     {
    135         String value = getString(TemplateInfo.LAYOUT_TEMPLATE);
    136         return value;
    137     }
    138
    139     /**
    140      * Set the value of layout.
    141      *
    142      * @param v Value to assign to layout.
    143      */
    144     public void setLayoutTemplate(String v)
    145     {
    146         setTemp(TemplateInfo.LAYOUT_TEMPLATE, v);
    147     }
    148
    149     /**
    150      * Get the value of Template context.  This will be cast to the
    151      * proper Context by its Service.
    152      *
    153      * @param name The name of the template context.
    154      * @return An Object with the Value of context.
    155      */
    156     public Object getTemplateContext(String name)
    157     {
    158         return getTemp(name);
    159     }
    160
    161     /**
    162      * Set the value of context.
    163      *
    164      * @param name The name of the template context.
    165      * @param v Value to assign to context.
    166      */
    167     public void setTemplateContext(String name, Object v)
    168     {
    169         setTemp(name, v);
    170     }
    171
    172     /**
    173      * Get the value of service.
    174      *
    175      * @return A String with the value of service.
    176      */
    177     public String getService()
    178     {
    179         return getString(TemplateInfo.SERVICE_NAME);
    180     }
    181
    182     /**
    183      * Set the value of service.
    184      *
    185      * @param v Value to assign to service.
    186      */
    187     public void setService(String v)
    188     {
    189         setTemp(TemplateInfo.SERVICE_NAME, v);
    190     }
    191
    192     /**
    193      * Get an object from temporary storage.
    194      *
    195      * @param name A String with the name of the object.
    196      * @return An Object.
    197      */
    198     public Object getTemp(String name)
    199     {
    200         return tempStorage.get(name);
    201     }
    202
    203     /**
    204      * Get an object from temporary storage, or a default value.
    205      *
    206      * @param name A String with the name of the object.
    207      * @param def An Object, the default value.
    208      * @return An Object.
    209      */
    210     public Object getTemp(String name, Object def)
    211     {
    212         try
    213         {
    214             Object val = tempStorage.get(name);
    215             return (val != null) ? val : def;
    216         }
    217         catch (Exception e)
    218         {
    219             return def;
    220         }
    221     }
    222
    223     /**
    224      * Put an object into temporary storage.
    225      *
    226      * @param name A String with the name of the object.
    227      * @param value An Object, the value.
    228      */
    229     public void setTemp(String name, Object value)
    230     {
    231         tempStorage.put(name, value);
    232     }
    233
    234     /**
    235      * Return a String[] from the temp hash map.
    236      *
    237      * @param name A String with the name of the object.
    238      * @return A String[].
    239      */
    240     public String[] getStringArray(String name)
    241     {
    242         String[] value = null;
    243         Object object = getTemp(name, null);
    244         if (object != null)
    245         {
    246             value = (String[]) object;
    247         }
    248         return value;
    249     }
    250
    251     /**
    252      * Return a String from the temp hash map.
    253      *
    254      * @param name A String with the name of the object.
    255      * @return A String.
    256      */
    257     public String getString(String name)
    258     {
    259         String value = null;
    260         Object object = getTemp(name, null);
    261         if (object != null)
    262         {
    263             value = (String) object;
    264         }
    265         return value;
    266     }
    267
    268     /**
    269      * Remove an object from the  temporary storage.
    270      *
    271      * @param name A String with the name of the object.
    272      * @return The object that was removed or <code>null</code>
    273      *         if the name was not a key.
    274      */
    275     public Object removeTemp(String name)
    276     {
    277         return tempStorage.remove(name);
    278     }
    279
    280     /**
    281      * Returns all the available names in the temporary storage.
    282      *
    283      * @return A object array with the keys.
    284      */
    285     public Object[] getTempKeys()
    286     {
    287         return tempStorage.keySet().toArray();
    288     }
    289 }