1
2
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
20
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
56
57
58
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
84
85
86
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 }