View Javadoc

1   /*
2    * $Id: HiddenModeConverter.java,v 1.18 2011/06/16 09:29:40 jbmeslin Exp $
3    * 
4    */
5   package org.rcfaces.core.internal.converter;
6   
7   import java.util.HashMap;
8   import java.util.Iterator;
9   import java.util.Map;
10  
11  import javax.faces.component.UIComponent;
12  import javax.faces.context.FacesContext;
13  import javax.faces.convert.Converter;
14  
15  import org.rcfaces.core.component.capability.IHiddenModeCapability;
16  import org.rcfaces.core.model.AbstractConverter;
17  
18  /**
19   * @author Olivier Oeuillot (latest modification by $Author: jbmeslin $)
20   * @version $Revision: 1.18 $ $Date: 2011/06/16 09:29:40 $
21   */
22  public class HiddenModeConverter extends AbstractConverter {
23      private static final String REVISION = "$Revision: 1.18 $";
24  
25      private static final Integer DEFAULT_HIDDEN_MODE = new Integer(
26              IHiddenModeCapability.DEFAULT_HIDDEN_MODE);
27  
28      private static final String IGNORE_HIDDEN_MODE_NAME = "ignore";
29  
30      private static final String SERVER_HIDDEN_MODE_NAME = "server";
31  
32      private static final String PHANTOM_HIDDEN_MODE_NAME = "phantom";
33  
34      private static final String DEFAULT_HIDDEN_MODE_NAME = "default";
35  
36      private static final String CLIENT_HIDDEN_MODE_NAME = "client";
37  
38      public static final Converter SINGLETON = new HiddenModeConverter();
39  
40      private static Map HIDDEN_MODES = new HashMap(5);
41      static {
42          HIDDEN_MODES.put(IGNORE_HIDDEN_MODE_NAME, new Integer(
43                  IHiddenModeCapability.IGNORE_HIDDEN_MODE));
44          HIDDEN_MODES.put(SERVER_HIDDEN_MODE_NAME, new Integer(
45                  IHiddenModeCapability.SERVER_HIDDEN_MODE));
46          HIDDEN_MODES.put(PHANTOM_HIDDEN_MODE_NAME, new Integer(
47                  IHiddenModeCapability.PHANTOM_HIDDEN_MODE));
48          HIDDEN_MODES.put(DEFAULT_HIDDEN_MODE_NAME, new Integer(
49                  IHiddenModeCapability.DEFAULT_HIDDEN_MODE));
50          HIDDEN_MODES.put(CLIENT_HIDDEN_MODE_NAME, new Integer(
51                  IHiddenModeCapability.CLIENT_HIDDEN_MODE));
52      }
53  
54      /*
55       * (non-Javadoc)
56       * 
57       * @see javax.faces.convert.Converter#getAsObject(javax.faces.context.FacesContext,
58       *      javax.faces.component.UIComponent, java.lang.String)
59       */
60      public Object getAsObject(FacesContext context, UIComponent component,
61              String value) {
62  
63          if (value == null || value.length() < 1) {
64              return DEFAULT_HIDDEN_MODE;
65          }
66  
67          value = value.toLowerCase();
68  
69          Integer i = (Integer) HIDDEN_MODES.get(value);
70          if (i != null) {
71              return i;
72          }
73  
74          if ("default".equalsIgnoreCase(value)) {
75              return DEFAULT_HIDDEN_MODE;
76          }
77  
78          throw new IllegalArgumentException("Keyword '" + value
79                  + "' is not supported for a hidden-mode type !");
80      }
81  
82      /*
83       * (non-Javadoc)
84       * 
85       * @see javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext,
86       *      javax.faces.component.UIComponent, java.lang.Object)
87       */
88      public String getAsString(FacesContext context, UIComponent component,
89              Object value) {
90  
91          if (value == null) {
92              return DEFAULT_HIDDEN_MODE_NAME;
93          }
94  
95          if ((value instanceof Integer) == false) {
96              throw new IllegalArgumentException("Value must be an Integer !");
97          }
98  
99          for (Iterator it = HIDDEN_MODES.entrySet().iterator(); it.hasNext();) {
100             Map.Entry entry = (Map.Entry) it.next();
101 
102             if (value.equals(entry.getValue()) == false) {
103                 continue;
104             }
105 
106             return (String) entry.getKey();
107         }
108 
109         throw new IllegalArgumentException("Value '" + value
110                 + "' is not supported for a hidden-mode type !");
111     }
112 
113     public static final String getName(int hiddenMode) {
114         switch (hiddenMode) {
115         case IHiddenModeCapability.IGNORE_HIDDEN_MODE:
116             return IGNORE_HIDDEN_MODE_NAME;
117 
118         case IHiddenModeCapability.PHANTOM_HIDDEN_MODE:
119             return PHANTOM_HIDDEN_MODE_NAME;
120 
121         case IHiddenModeCapability.SERVER_HIDDEN_MODE:
122             return SERVER_HIDDEN_MODE_NAME;
123         }
124 
125         return null;
126     }
127 }