View Javadoc

1   /*
2    * $Id: LayoutManagerTypeConverter.java,v 1.1.2.1 2011/01/14 10:17:28 oeuillot 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.ILayoutManagerCapability;
16  import org.rcfaces.core.model.AbstractConverter;
17  
18  /**
19   * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
20   * @version $Revision: 1.1.2.1 $ $Date: 2011/01/14 10:17:28 $
21   */
22  public class LayoutManagerTypeConverter extends AbstractConverter {
23      private static final String REVISION = "$Revision: 1.1.2.1 $";
24  
25      private static final String INHERIT_MODE_NAME = "inherit";
26  
27      private static final String INHERITED_MODE_NAME = "inherited";
28  
29      private static final String NONE_MODE_NAME = "none";
30  
31      private static final String ABSOLUTE_MODE_NAME = "absolute";
32  
33      private static final Integer INHERITED_MODE = new Integer(
34              ILayoutManagerCapability.INHERITED_LAYOUT_TYPE);
35  
36      public static final Converter SINGLETON = new LayoutManagerTypeConverter();
37  
38      private static Map LAYOUT_MODES = new HashMap(5);
39      static {
40          LAYOUT_MODES.put(INHERIT_MODE_NAME, new Integer(
41                  ILayoutManagerCapability.INHERITED_LAYOUT_TYPE));
42          LAYOUT_MODES.put(INHERITED_MODE_NAME, new Integer(
43                  ILayoutManagerCapability.INHERITED_LAYOUT_TYPE));
44          LAYOUT_MODES.put(NONE_MODE_NAME, new Integer(
45                  ILayoutManagerCapability.NONE_LAYOUT_TYPE));
46          LAYOUT_MODES.put(ABSOLUTE_MODE_NAME, new Integer(
47                  ILayoutManagerCapability.ABSOLUTE_LAYOUT_TYPE));
48      }
49  
50      public Object getAsObject(FacesContext context, UIComponent component,
51              String value) {
52  
53          if (value == null || value.length() < 1) {
54              return INHERITED_MODE;
55          }
56  
57          value = value.toLowerCase();
58  
59          Integer i = (Integer) LAYOUT_MODES.get(value);
60          if (i != null) {
61              return i;
62          }
63  
64          if ("default".equalsIgnoreCase(value)) {
65              return INHERITED_MODE;
66          }
67  
68          throw new IllegalArgumentException("Keyword '" + value
69                  + "' is not supported for a layout manager mode !");
70      }
71  
72      public String getAsString(FacesContext context, UIComponent component,
73              Object value) {
74  
75          if (value == null) {
76              return (String) LAYOUT_MODES.get(INHERITED_MODE);
77          }
78  
79          if ((value instanceof Integer) == false) {
80              throw new IllegalArgumentException("Value must be an Integer !");
81          }
82  
83          for (Iterator it = LAYOUT_MODES.entrySet().iterator(); it.hasNext();) {
84              Map.Entry entry = (Map.Entry) it.next();
85  
86              if (value.equals(entry.getValue())) {
87                  return (String) entry.getKey();
88              }
89          }
90  
91          throw new IllegalArgumentException("Value '" + value
92                  + "' is not supported for a layout manager mode !");
93      }
94  
95      public static final String getName(int layoutManagerMode) {
96          switch (layoutManagerMode) {
97          case ILayoutManagerCapability.INHERITED_LAYOUT_TYPE:
98              return INHERITED_MODE_NAME;
99  
100         case ILayoutManagerCapability.NONE_LAYOUT_TYPE:
101             return NONE_MODE_NAME;
102 
103         case ILayoutManagerCapability.ABSOLUTE_LAYOUT_TYPE:
104             return ABSOLUTE_MODE_NAME;
105         }
106 
107         return null;
108     }
109 }