1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.expando.model.impl;
24  
25  import com.liferay.portal.PortalException;
26  import com.liferay.portal.SystemException;
27  import com.liferay.portal.kernel.util.GetterUtil;
28  import com.liferay.portal.kernel.util.StringUtil;
29  import com.liferay.portlet.expando.ValueDataException;
30  import com.liferay.portlet.expando.model.ExpandoColumn;
31  import com.liferay.portlet.expando.model.ExpandoColumnConstants;
32  import com.liferay.portlet.expando.model.ExpandoValue;
33  import com.liferay.portlet.expando.service.ExpandoColumnLocalServiceUtil;
34  
35  import java.util.Date;
36  
37  /**
38   * <a href="ExpandoValueImpl.java.html"><b><i>View Source</i></b></a>
39   *
40   * @author Raymond Augé
41   * @author Brian Wing Shun Chan
42   */
43  public class ExpandoValueImpl
44      extends ExpandoValueModelImpl implements ExpandoValue {
45  
46      public ExpandoValueImpl() {
47      }
48  
49      public boolean getBoolean() throws PortalException, SystemException {
50          validate(ExpandoColumnConstants.BOOLEAN);
51  
52          return GetterUtil.getBoolean(getData());
53      }
54  
55      public void setBoolean(boolean data)
56          throws PortalException, SystemException {
57  
58          validate(ExpandoColumnConstants.BOOLEAN);
59  
60          setData(String.valueOf(data));
61      }
62  
63      public boolean[] getBooleanArray() throws PortalException, SystemException {
64          validate(ExpandoColumnConstants.BOOLEAN_ARRAY);
65  
66          return GetterUtil.getBooleanValues(StringUtil.split(getData()));
67      }
68  
69      public void setBooleanArray(boolean[] data)
70          throws PortalException, SystemException {
71  
72          validate(ExpandoColumnConstants.BOOLEAN_ARRAY);
73  
74          setData(StringUtil.merge(data));
75      }
76  
77      public Date getDate() throws PortalException, SystemException {
78          validate(ExpandoColumnConstants.DATE);
79  
80          return new Date(GetterUtil.getLong(getData()));
81      }
82  
83      public void setDate(Date data) throws PortalException, SystemException {
84          validate(ExpandoColumnConstants.DATE);
85  
86          setData(String.valueOf(data.getTime()));
87      }
88  
89      public Date[] getDateArray() throws PortalException, SystemException {
90          validate(ExpandoColumnConstants.DATE_ARRAY);
91  
92          String[] data = StringUtil.split(getData());
93  
94          Date[] dateArray = new Date[data.length];
95  
96          for (int i = 0; i < data.length; i++) {
97              dateArray[i] = new Date(GetterUtil.getLong(data[i]));
98          }
99  
100         return dateArray;
101     }
102 
103     public void setDateArray(Date[] data)
104         throws PortalException, SystemException {
105 
106         validate(ExpandoColumnConstants.DATE_ARRAY);
107 
108         setData(StringUtil.merge(data));
109     }
110 
111     public double getDouble() throws PortalException, SystemException {
112         validate(ExpandoColumnConstants.DOUBLE);
113 
114         return GetterUtil.getDouble(getData());
115     }
116 
117     public void setDouble(double data) throws PortalException, SystemException {
118         validate(ExpandoColumnConstants.DOUBLE);
119 
120         setData(String.valueOf(data));
121     }
122 
123     public double[] getDoubleArray() throws PortalException, SystemException {
124         validate(ExpandoColumnConstants.DOUBLE_ARRAY);
125 
126         return GetterUtil.getDoubleValues(StringUtil.split(getData()));
127     }
128 
129     public void setDoubleArray(double[] data)
130         throws PortalException, SystemException {
131 
132         validate(ExpandoColumnConstants.DOUBLE_ARRAY);
133 
134         setData(StringUtil.merge(data));
135     }
136 
137     public float getFloat() throws PortalException, SystemException {
138         validate(ExpandoColumnConstants.FLOAT);
139 
140         return GetterUtil.getFloat(getData());
141     }
142 
143     public void setFloat(float data) throws PortalException, SystemException {
144         validate(ExpandoColumnConstants.FLOAT);
145 
146         setData(String.valueOf(data));
147     }
148 
149     public float[] getFloatArray() throws PortalException, SystemException {
150         validate(ExpandoColumnConstants.FLOAT_ARRAY);
151 
152         return GetterUtil.getFloatValues(StringUtil.split(getData()));
153     }
154 
155     public void setFloatArray(float[] data)
156         throws PortalException, SystemException {
157 
158         validate(ExpandoColumnConstants.FLOAT_ARRAY);
159 
160         setData(StringUtil.merge(data));
161     }
162 
163     public int getInteger() throws PortalException, SystemException {
164         validate(ExpandoColumnConstants.INTEGER);
165 
166         return GetterUtil.getInteger(getData());
167     }
168 
169     public void setInteger(int data) throws PortalException, SystemException {
170         validate(ExpandoColumnConstants.INTEGER);
171 
172         setData(String.valueOf(data));
173     }
174 
175     public int[] getIntegerArray() throws PortalException, SystemException {
176         validate(ExpandoColumnConstants.INTEGER_ARRAY);
177 
178         return GetterUtil.getIntegerValues(StringUtil.split(getData()));
179     }
180 
181     public void setIntegerArray(int[] data)
182         throws PortalException, SystemException {
183 
184         validate(ExpandoColumnConstants.INTEGER_ARRAY);
185 
186         setData(StringUtil.merge(data));
187     }
188 
189     public long getLong() throws PortalException, SystemException {
190         validate(ExpandoColumnConstants.LONG);
191 
192         return GetterUtil.getLong(getData());
193     }
194 
195     public void setLong(long data) throws PortalException, SystemException {
196         validate(ExpandoColumnConstants.LONG);
197 
198         setData(String.valueOf(data));
199     }
200 
201     public long[] getLongArray() throws PortalException, SystemException {
202         validate(ExpandoColumnConstants.LONG_ARRAY);
203 
204         return GetterUtil.getLongValues(StringUtil.split(getData()));
205     }
206 
207     public void setLongArray(long[] data)
208         throws PortalException, SystemException {
209 
210         validate(ExpandoColumnConstants.LONG_ARRAY);
211 
212         setData(StringUtil.merge(data));
213     }
214 
215     public short getShort() throws PortalException, SystemException {
216         validate(ExpandoColumnConstants.SHORT);
217 
218         return GetterUtil.getShort(getData());
219     }
220 
221     public void setShort(short data) throws PortalException, SystemException {
222         validate(ExpandoColumnConstants.SHORT);
223 
224         setData(String.valueOf(data));
225     }
226 
227     public short[] getShortArray() throws PortalException, SystemException {
228         validate(ExpandoColumnConstants.SHORT_ARRAY);
229 
230         return GetterUtil.getShortValues(StringUtil.split(getData()));
231     }
232 
233     public void setShortArray(short[] data)
234         throws PortalException, SystemException {
235 
236         validate(ExpandoColumnConstants.SHORT_ARRAY);
237 
238         setData(StringUtil.merge(data));
239     }
240 
241     public String getString() throws PortalException, SystemException {
242         validate(ExpandoColumnConstants.STRING);
243 
244         return getData();
245     }
246 
247     public void setString(String data) throws PortalException, SystemException {
248         validate(ExpandoColumnConstants.STRING);
249 
250         setData(data);
251     }
252 
253     public String[] getStringArray() throws PortalException, SystemException {
254         validate(ExpandoColumnConstants.STRING_ARRAY);
255 
256         return StringUtil.split(getData());
257     }
258 
259     public void setStringArray(String[] data)
260         throws PortalException, SystemException {
261 
262         validate(ExpandoColumnConstants.STRING_ARRAY);
263 
264         setData(StringUtil.merge(data));
265     }
266 
267     protected void validate(int type) throws PortalException, SystemException {
268         ExpandoColumn column = ExpandoColumnLocalServiceUtil.getColumn(
269             getColumnId());
270 
271         if (column.getType() != type) {
272             throw new ValueDataException(
273                 "Column " + getColumnId() + " has type " +
274                     ExpandoColumnConstants.getTypeLabel(column.getType()) +
275                         " and is not compatbile with type " +
276                             ExpandoColumnConstants.getTypeLabel(type));
277         }
278     }
279 
280 }