1
2
3
4 package org.rcfaces.core.internal.tools;
5
6 import java.util.Collections;
7 import java.util.List;
8 import java.util.Set;
9
10 import javax.faces.component.UIComponent;
11 import javax.faces.context.FacesContext;
12
13 import org.apache.commons.logging.Log;
14 import org.apache.commons.logging.LogFactory;
15 import org.rcfaces.core.component.AdditionalInformationComponent;
16 import org.rcfaces.core.component.capability.IAdditionalInformationProvider;
17 import org.rcfaces.core.component.capability.IAdditionalInformationValuesCapability;
18 import org.rcfaces.core.component.iterator.IAdditionalInformationIterator;
19 import org.rcfaces.core.internal.capability.IAdditionalInformationComponent;
20 import org.rcfaces.core.internal.capability.IAdditionalInformationRangeComponent;
21 import org.rcfaces.core.internal.util.ComponentIterators;
22 import org.rcfaces.core.lang.provider.ICheckProvider;
23
24
25
26
27
28
29 public class AdditionalInformationTools extends CollectionTools {
30 private static final String REVISION = "$Revision: 1.3 $";
31
32 private static final Log LOG = LogFactory
33 .getLog(AdditionalInformationTools.class);
34
35 private static final IValuesAccessor ADDITIONAL_PROVIDER_VALUES_ACCESSOR = new IValuesAccessor() {
36 private static final String REVISION = "$Revision: 1.3 $";
37
38 public int getCount(Object additionalInformationProvider) {
39 return ((IAdditionalInformationProvider) additionalInformationProvider)
40 .getAdditionalInformationValuesCount();
41 }
42
43 public Object getFirst(Object additionalInformationProvider,
44 Object refValues) {
45 return ((IAdditionalInformationProvider) additionalInformationProvider)
46 .getFirstAdditionalInformationValue();
47 }
48
49 public Object[] listValues(Object additionalInformationProvider,
50 Object refValues) {
51 return convertToObjectArray(((IAdditionalInformationProvider) additionalInformationProvider)
52 .getAdditionalInformationValues());
53 }
54
55 public void setAdaptedValues(Object additionalInformationProvider,
56 Object additionalInformationValues) {
57 ((IAdditionalInformationProvider) additionalInformationProvider)
58 .setAdditionalInformationValues(additionalInformationValues);
59 }
60
61 public Object getAdaptedValues(Object value) {
62 return value;
63 }
64
65 public Object getComponentValues(UIComponent component) {
66 return ((IAdditionalInformationValuesCapability) component)
67 .getAdditionalInformationValues();
68 }
69
70 public void setComponentValues(UIComponent component, Object values) {
71 ((IAdditionalInformationValuesCapability) component)
72 .setAdditionalInformationValues(values);
73 }
74
75 public Class getComponentValuesType(FacesContext facesContext,
76 UIComponent component) {
77 return ((IAdditionalInformationValuesCapability) component)
78 .getAdditionalInformationValuesType(facesContext);
79 }
80 };
81
82 private static final IAdditionalInformationIterator EMPTY_ADDITIONAL_INFORMATION_ITERATOR = new AdditionalInformationListIterator(
83 Collections.EMPTY_LIST);
84
85 public static int getCount(Object additionalInformationValues) {
86 IValuesAccessor valuesAccessor = getValuesAccessor(
87 additionalInformationValues, ICheckProvider.class,
88 ADDITIONAL_PROVIDER_VALUES_ACCESSOR, true);
89
90 if (valuesAccessor == null) {
91 return 0;
92 }
93 return valuesAccessor.getCount(additionalInformationValues);
94 }
95
96 public static Object getFirst(Object additionalInformationValues,
97 Object refValue) {
98 IValuesAccessor valuesAccessor = getValuesAccessor(
99 additionalInformationValues, ICheckProvider.class,
100 ADDITIONAL_PROVIDER_VALUES_ACCESSOR, true);
101
102 if (valuesAccessor == null) {
103 return null;
104 }
105
106 return valuesAccessor.getFirst(additionalInformationValues, refValue);
107 }
108
109 public static Object[] listValues(Object additionalInformationValues,
110 Object refValue) {
111 IValuesAccessor valuesAccessor = getValuesAccessor(
112 additionalInformationValues, ICheckProvider.class,
113 ADDITIONAL_PROVIDER_VALUES_ACCESSOR, true);
114
115 if (valuesAccessor == null) {
116 return EMPTY_VALUES;
117 }
118
119 return valuesAccessor.listValues(additionalInformationValues, refValue);
120 }
121
122 public static void show(FacesContext facesContext,
123 IAdditionalInformationComponent component, Object rowValue) {
124 select((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
125 rowValue);
126 }
127
128 public static void show(FacesContext facesContext,
129 IAdditionalInformationRangeComponent component, int index) {
130 select((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
131 index);
132 }
133
134 public static void show(FacesContext facesContext,
135 IAdditionalInformationRangeComponent component, int indexes[]) {
136 select((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
137 indexes);
138 }
139
140 public static void show(FacesContext facesContext,
141 IAdditionalInformationRangeComponent component, int start, int end) {
142 select((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
143 start, end);
144 }
145
146 public static void showAll(FacesContext facesContext,
147 IAdditionalInformationComponent component) {
148 selectAll((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR);
149 }
150
151 public static void hide(FacesContext facesContext,
152 IAdditionalInformationComponent component, Object rowValue) {
153 deselect((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
154 rowValue);
155 }
156
157 public static void hide(FacesContext facesContext,
158 IAdditionalInformationRangeComponent component, int index) {
159 deselect((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
160 index);
161 }
162
163 public static void hide(FacesContext facesContext,
164 IAdditionalInformationRangeComponent component, int indexes[]) {
165 deselect((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
166 indexes);
167 }
168
169 public static void hide(FacesContext facesContext,
170 IAdditionalInformationRangeComponent component, int start, int end) {
171 deselect((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
172 start, end);
173 }
174
175 public static void hideAll(FacesContext facesContext,
176 IAdditionalInformationComponent component) {
177 deselectAll((UIComponent) component,
178 ADDITIONAL_PROVIDER_VALUES_ACCESSOR);
179 }
180
181 public static IAdditionalInformationIterator listAdditionalInformations(
182 UIComponent component) {
183 List list = ComponentIterators.list(component,
184 AdditionalInformationComponent.class);
185 if (list.isEmpty()) {
186 return EMPTY_ADDITIONAL_INFORMATION_ITERATOR;
187 }
188
189 return new AdditionalInformationListIterator(list);
190 }
191
192
193
194
195
196
197 private static final class AdditionalInformationListIterator extends
198 ComponentIterators.ComponentListIterator implements
199 IAdditionalInformationIterator {
200 private static final String REVISION = "$Revision: 1.3 $";
201
202 public AdditionalInformationListIterator(List list) {
203 super(list);
204 }
205
206 public final AdditionalInformationComponent next() {
207 return (AdditionalInformationComponent) nextComponent();
208 }
209
210 public AdditionalInformationComponent[] toArray() {
211 return (AdditionalInformationComponent[]) toArray(new AdditionalInformationComponent[count()]);
212 }
213 }
214
215 public static Set additionalInformationValuesToSet(
216 FacesContext facesContext,
217 IAdditionalInformationComponent component, boolean immutable) {
218
219 return valuesToSet((UIComponent) component,
220 ADDITIONAL_PROVIDER_VALUES_ACCESSOR, immutable);
221 }
222
223 public static void setAdditionalInformationValues(
224 FacesContext facesContext,
225 IAdditionalInformationComponent component, Set valuesSet) {
226
227 setValues((UIComponent) component, ADDITIONAL_PROVIDER_VALUES_ACCESSOR,
228 valuesSet);
229
230 }
231 }