View Javadoc

1   /*
2    * $Id: AdditionalInformationTools.java,v 1.3 2007/07/19 12:09:02 oeuillot Exp $
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   * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
27   * @version $Revision: 1.3 $ $Date: 2007/07/19 12:09:02 $
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      * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
195      * @version $Revision: 1.3 $ $Date: 2007/07/19 12:09:02 $
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 }