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.service.impl;
24  
25  import com.liferay.portal.PortalException;
26  import com.liferay.portal.SystemException;
27  import com.liferay.portal.security.auth.CompanyThreadLocal;
28  import com.liferay.portal.util.PortalUtil;
29  import com.liferay.portlet.expando.model.ExpandoColumn;
30  import com.liferay.portlet.expando.model.ExpandoColumnConstants;
31  import com.liferay.portlet.expando.model.ExpandoRow;
32  import com.liferay.portlet.expando.model.ExpandoTable;
33  import com.liferay.portlet.expando.model.ExpandoTableConstants;
34  import com.liferay.portlet.expando.model.ExpandoValue;
35  import com.liferay.portlet.expando.model.impl.ExpandoValueImpl;
36  import com.liferay.portlet.expando.service.base.ExpandoValueLocalServiceBaseImpl;
37  
38  import java.io.Serializable;
39  
40  import java.util.Date;
41  import java.util.List;
42  
43  /**
44   * <a href="ExpandoValueLocalServiceImpl.java.html"><b><i>View Source</i></b>
45   * </a>
46   *
47   * @author Raymond Augé
48   * @author Brian Wing Shun Chan
49   *
50   */
51  public class ExpandoValueLocalServiceImpl
52      extends ExpandoValueLocalServiceBaseImpl {
53  
54      public ExpandoValue addValue(
55              String className, String tableName, String columnName, long classPK,
56              boolean data)
57          throws PortalException, SystemException {
58  
59          ExpandoTable table = expandoTableLocalService.getTable(
60              className, tableName);
61  
62          ExpandoColumn column = expandoColumnLocalService.getColumn(
63              table.getTableId(), columnName);
64  
65          ExpandoValue value = new ExpandoValueImpl();
66  
67          value.setCompanyId(table.getCompanyId());
68          value.setColumnId(column.getColumnId());
69          value.setBoolean(data);
70  
71          return addValue(
72              table.getClassNameId(), table.getTableId(), column.getColumnId(),
73              classPK, value.getData());
74      }
75  
76      public ExpandoValue addValue(
77              String className, String tableName, String columnName, long classPK,
78              boolean[] data)
79          throws PortalException, SystemException {
80  
81          ExpandoTable table = expandoTableLocalService.getTable(
82              className, tableName);
83  
84          ExpandoColumn column = expandoColumnLocalService.getColumn(
85              table.getTableId(), columnName);
86  
87          ExpandoValue value = new ExpandoValueImpl();
88  
89          value.setCompanyId(table.getCompanyId());
90          value.setColumnId(column.getColumnId());
91          value.setBooleanArray(data);
92  
93          return addValue(
94              table.getClassNameId(), table.getTableId(), column.getColumnId(),
95              classPK, value.getData());
96      }
97  
98      public ExpandoValue addValue(
99              String className, String tableName, String columnName, long classPK,
100             Date data)
101         throws PortalException, SystemException {
102 
103         ExpandoTable table = expandoTableLocalService.getTable(
104             className, tableName);
105 
106         ExpandoColumn column = expandoColumnLocalService.getColumn(
107             table.getTableId(), columnName);
108 
109         ExpandoValue value = new ExpandoValueImpl();
110 
111         value.setCompanyId(table.getCompanyId());
112         value.setColumnId(column.getColumnId());
113         value.setDate(data);
114 
115         return addValue(
116             table.getClassNameId(), table.getTableId(), column.getColumnId(),
117             classPK, value.getData());
118     }
119 
120     public ExpandoValue addValue(
121             String className, String tableName, String columnName, long classPK,
122             Date[] data)
123         throws PortalException, SystemException {
124 
125         ExpandoTable table = expandoTableLocalService.getTable(
126             className, tableName);
127 
128         ExpandoColumn column = expandoColumnLocalService.getColumn(
129             table.getTableId(), columnName);
130 
131         ExpandoValue value = new ExpandoValueImpl();
132 
133         value.setCompanyId(table.getCompanyId());
134         value.setColumnId(column.getColumnId());
135         value.setDateArray(data);
136 
137         return addValue(
138             table.getClassNameId(), table.getTableId(), column.getColumnId(),
139             classPK, value.getData());
140     }
141 
142     public ExpandoValue addValue(
143             String className, String tableName, String columnName, long classPK,
144             double data)
145         throws PortalException, SystemException {
146 
147         ExpandoTable table = expandoTableLocalService.getTable(
148             className, tableName);
149 
150         ExpandoColumn column = expandoColumnLocalService.getColumn(
151             table.getTableId(), columnName);
152 
153         ExpandoValue value = new ExpandoValueImpl();
154 
155         value.setCompanyId(table.getCompanyId());
156         value.setColumnId(column.getColumnId());
157         value.setDouble(data);
158 
159         return addValue(
160             table.getClassNameId(), table.getTableId(), column.getColumnId(),
161             classPK, value.getData());
162     }
163 
164     public ExpandoValue addValue(
165             String className, String tableName, String columnName, long classPK,
166             double[] data)
167         throws PortalException, SystemException {
168 
169         ExpandoTable table = expandoTableLocalService.getTable(
170             className, tableName);
171 
172         ExpandoColumn column = expandoColumnLocalService.getColumn(
173             table.getTableId(), columnName);
174 
175         ExpandoValue value = new ExpandoValueImpl();
176 
177         value.setCompanyId(table.getCompanyId());
178         value.setColumnId(column.getColumnId());
179         value.setDoubleArray(data);
180 
181         return addValue(
182             table.getClassNameId(), table.getTableId(), column.getColumnId(),
183             classPK, value.getData());
184     }
185 
186     public ExpandoValue addValue(
187             String className, String tableName, String columnName, long classPK,
188             float data)
189         throws PortalException, SystemException {
190 
191         ExpandoTable table = expandoTableLocalService.getTable(
192             className, tableName);
193 
194         ExpandoColumn column = expandoColumnLocalService.getColumn(
195             table.getTableId(), columnName);
196 
197         ExpandoValue value = new ExpandoValueImpl();
198 
199         value.setCompanyId(table.getCompanyId());
200         value.setColumnId(column.getColumnId());
201         value.setFloat(data);
202 
203         return addValue(
204             table.getClassNameId(), table.getTableId(), column.getColumnId(),
205             classPK, value.getData());
206     }
207 
208     public ExpandoValue addValue(
209             String className, String tableName, String columnName, long classPK,
210             float[] data)
211         throws PortalException, SystemException {
212 
213         ExpandoTable table = expandoTableLocalService.getTable(
214             className, tableName);
215 
216         ExpandoColumn column = expandoColumnLocalService.getColumn(
217             table.getTableId(), columnName);
218 
219         ExpandoValue value = new ExpandoValueImpl();
220 
221         value.setCompanyId(table.getCompanyId());
222         value.setColumnId(column.getColumnId());
223         value.setFloatArray(data);
224 
225         return addValue(
226             table.getClassNameId(), table.getTableId(), column.getColumnId(),
227             classPK, value.getData());
228     }
229 
230     public ExpandoValue addValue(
231             String className, String tableName, String columnName, long classPK,
232             int data)
233         throws PortalException, SystemException {
234 
235         ExpandoTable table = expandoTableLocalService.getTable(
236             className, tableName);
237 
238         ExpandoColumn column = expandoColumnLocalService.getColumn(
239             table.getTableId(), columnName);
240 
241         ExpandoValue value = new ExpandoValueImpl();
242 
243         value.setCompanyId(table.getCompanyId());
244         value.setColumnId(column.getColumnId());
245         value.setInteger(data);
246 
247         return addValue(
248             table.getClassNameId(), table.getTableId(), column.getColumnId(),
249             classPK, value.getData());
250     }
251 
252     public ExpandoValue addValue(
253             String className, String tableName, String columnName, long classPK,
254             int[] data)
255         throws PortalException, SystemException {
256 
257         ExpandoTable table = expandoTableLocalService.getTable(
258             className, tableName);
259 
260         ExpandoColumn column = expandoColumnLocalService.getColumn(
261             table.getTableId(), columnName);
262 
263         ExpandoValue value = new ExpandoValueImpl();
264 
265         value.setCompanyId(table.getCompanyId());
266         value.setColumnId(column.getColumnId());
267         value.setIntegerArray(data);
268 
269         return addValue(
270             table.getClassNameId(), table.getTableId(), column.getColumnId(),
271             classPK, value.getData());
272     }
273 
274     public ExpandoValue addValue(
275             String className, String tableName, String columnName, long classPK,
276             long data)
277         throws PortalException, SystemException {
278 
279         ExpandoTable table = expandoTableLocalService.getTable(
280             className, tableName);
281 
282         ExpandoColumn column = expandoColumnLocalService.getColumn(
283             table.getTableId(), columnName);
284 
285         ExpandoValue value = new ExpandoValueImpl();
286 
287         value.setCompanyId(table.getCompanyId());
288         value.setColumnId(column.getColumnId());
289         value.setLong(data);
290 
291         return addValue(
292             table.getClassNameId(), table.getTableId(), column.getColumnId(),
293             classPK, value.getData());
294     }
295 
296     public ExpandoValue addValue(
297             String className, String tableName, String columnName, long classPK,
298             long[] data)
299         throws PortalException, SystemException {
300 
301         ExpandoTable table = expandoTableLocalService.getTable(
302             className, tableName);
303 
304         ExpandoColumn column = expandoColumnLocalService.getColumn(
305             table.getTableId(), columnName);
306 
307         ExpandoValue value = new ExpandoValueImpl();
308 
309         value.setCompanyId(table.getCompanyId());
310         value.setColumnId(column.getColumnId());
311         value.setLongArray(data);
312 
313         return addValue(
314             table.getClassNameId(), table.getTableId(), column.getColumnId(),
315             classPK, value.getData());
316     }
317 
318     public ExpandoValue addValue(
319             String className, String tableName, String columnName, long classPK,
320             short data)
321         throws PortalException, SystemException {
322 
323         ExpandoTable table = expandoTableLocalService.getTable(
324             className, tableName);
325 
326         ExpandoColumn column = expandoColumnLocalService.getColumn(
327             table.getTableId(), columnName);
328 
329         ExpandoValue value = new ExpandoValueImpl();
330 
331         value.setCompanyId(table.getCompanyId());
332         value.setColumnId(column.getColumnId());
333         value.setShort(data);
334 
335         return addValue(
336             table.getClassNameId(), table.getTableId(), column.getColumnId(),
337             classPK, value.getData());
338     }
339 
340     public ExpandoValue addValue(
341             String className, String tableName, String columnName, long classPK,
342             short[] data)
343         throws PortalException, SystemException {
344 
345         ExpandoTable table = expandoTableLocalService.getTable(
346             className, tableName);
347 
348         ExpandoColumn column = expandoColumnLocalService.getColumn(
349             table.getTableId(), columnName);
350 
351         ExpandoValue value = new ExpandoValueImpl();
352 
353         value.setCompanyId(table.getCompanyId());
354         value.setColumnId(column.getColumnId());
355         value.setShortArray(data);
356 
357         return addValue(
358             table.getClassNameId(), table.getTableId(), column.getColumnId(),
359             classPK, value.getData());
360     }
361 
362     public ExpandoValue addValue(
363             String className, String tableName, String columnName, long classPK,
364             String data)
365         throws PortalException, SystemException {
366 
367         ExpandoTable table = expandoTableLocalService.getTable(
368             className, tableName);
369 
370         ExpandoColumn column = expandoColumnLocalService.getColumn(
371             table.getTableId(), columnName);
372 
373         ExpandoValue value = new ExpandoValueImpl();
374 
375         value.setCompanyId(table.getCompanyId());
376         value.setColumnId(column.getColumnId());
377         value.setString(data);
378 
379         return addValue(
380             table.getClassNameId(), table.getTableId(), column.getColumnId(),
381             classPK, value.getData());
382     }
383 
384     public ExpandoValue addValue(
385             String className, String tableName, String columnName, long classPK,
386             String[] data)
387         throws PortalException, SystemException {
388 
389         ExpandoTable table = expandoTableLocalService.getTable(
390             className, tableName);
391 
392         ExpandoColumn column = expandoColumnLocalService.getColumn(
393             table.getTableId(), columnName);
394 
395         ExpandoValue value = new ExpandoValueImpl();
396 
397         value.setCompanyId(table.getCompanyId());
398         value.setColumnId(column.getColumnId());
399         value.setStringArray(data);
400 
401         return addValue(
402             table.getClassNameId(), table.getTableId(), column.getColumnId(),
403             classPK, value.getData());
404     }
405 
406     public ExpandoValue addValue(
407             String className, String tableName, String columnName, long classPK,
408             Object data)
409         throws PortalException, SystemException {
410 
411         ExpandoColumn column = expandoColumnLocalService.getColumn(
412             className, tableName, columnName);
413 
414         int type = column.getType();
415 
416         if (type == ExpandoColumnConstants.BOOLEAN) {
417             return addValue(
418                 className, tableName, columnName, classPK,
419                 ((Boolean)data).booleanValue());
420         }
421         else if (type == ExpandoColumnConstants.BOOLEAN_ARRAY) {
422             return addValue(
423                 className, tableName, columnName, classPK, (boolean[])data);
424         }
425         else if (type == ExpandoColumnConstants.DATE) {
426             return addValue(
427                 className, tableName, columnName, classPK, (Date)data);
428         }
429         else if (type == ExpandoColumnConstants.DATE_ARRAY) {
430             return addValue(
431                 className, tableName, columnName, classPK, (Date[])data);
432         }
433         else if (type == ExpandoColumnConstants.DOUBLE) {
434             return addValue(
435                 className, tableName, columnName, classPK,
436                 ((Double)data).doubleValue());
437         }
438         else if (type == ExpandoColumnConstants.DOUBLE_ARRAY) {
439             return addValue(
440                 className, tableName, columnName, classPK, (double[])data);
441         }
442         else if (type == ExpandoColumnConstants.FLOAT) {
443             return addValue(
444                 className, tableName, columnName, classPK,
445                 ((Float)data).floatValue());
446         }
447         else if (type == ExpandoColumnConstants.FLOAT_ARRAY) {
448             return addValue(
449                 className, tableName, columnName, classPK, (float[])data);
450         }
451         else if (type == ExpandoColumnConstants.INTEGER) {
452             return addValue(
453                 className, tableName, columnName, classPK,
454                 ((Integer)data).intValue());
455         }
456         else if (type == ExpandoColumnConstants.INTEGER_ARRAY) {
457             return addValue(
458                 className, tableName, columnName, classPK, (int[])data);
459         }
460         else if (type == ExpandoColumnConstants.LONG) {
461             return addValue(
462                 className, tableName, columnName, classPK,
463                 ((Long)data).longValue());
464         }
465         else if (type == ExpandoColumnConstants.LONG_ARRAY) {
466             return addValue(
467                 className, tableName, columnName, classPK, (long[])data);
468         }
469         else if (type == ExpandoColumnConstants.SHORT) {
470             return addValue(
471                 className, tableName, columnName, classPK,
472                 ((Short)data).shortValue());
473         }
474         else if (type == ExpandoColumnConstants.SHORT_ARRAY) {
475             return addValue(
476                 className, tableName, columnName, classPK, (short[])data);
477         }
478         else if (type == ExpandoColumnConstants.STRING_ARRAY) {
479             return addValue(
480                 className, tableName, columnName, classPK, (String[])data);
481         }
482         else {
483             return addValue(
484                 className, tableName, columnName, classPK, (String)data);
485         }
486     }
487 
488     public ExpandoValue addValue(
489             long classNameId, long tableId, long columnId, long classPK,
490             String data)
491         throws SystemException {
492 
493         long companyId = CompanyThreadLocal.getCompanyId();
494 
495         ExpandoRow row = expandoRowPersistence.fetchByT_C(tableId, classPK);
496 
497         if (row == null) {
498             long rowId = counterLocalService.increment();
499 
500             row = expandoRowPersistence.create(rowId);
501 
502             row.setCompanyId(companyId);
503             row.setTableId(tableId);
504             row.setClassPK(classPK);
505 
506             expandoRowPersistence.update(row, false);
507         }
508 
509         ExpandoValue value = expandoValuePersistence.fetchByT_C_R(
510             tableId, columnId, row.getRowId());
511 
512         if (value == null) {
513             long valueId = counterLocalService.increment();
514 
515             value = expandoValuePersistence.create(valueId);
516 
517             value.setCompanyId(companyId);
518             value.setTableId(tableId);
519             value.setColumnId(columnId);
520             value.setRowId(row.getRowId());
521             value.setClassNameId(classNameId);
522             value.setClassPK(classPK);
523         }
524 
525         value.setData(data);
526 
527         expandoValuePersistence.update(value, false);
528 
529         return value;
530     }
531 
532     public void deleteColumnValues(long columnId) throws SystemException {
533         expandoValuePersistence.removeByColumnId(columnId);
534     }
535 
536     public void deleteRowValues(long rowId) throws SystemException {
537         expandoValuePersistence.removeByRowId(rowId);
538     }
539 
540     public void deleteTableValues(long tableId) throws SystemException {
541         expandoValuePersistence.removeByTableId(tableId);
542     }
543 
544     public void deleteValue(long valueId)
545         throws PortalException, SystemException {
546 
547         expandoValuePersistence.remove(valueId);
548     }
549 
550     public void deleteValue(long columnId, long rowId)
551         throws PortalException, SystemException {
552 
553         expandoValuePersistence.removeByC_R(columnId, rowId);
554     }
555 
556     public void deleteValue(
557             String className, String tableName, String columnName, long classPK)
558         throws PortalException, SystemException {
559 
560         long classNameId = PortalUtil.getClassNameId(className);
561 
562         deleteValue(classNameId, tableName, columnName, classPK);
563     }
564 
565     public void deleteValue(
566             long classNameId, String tableName, String columnName, long classPK)
567         throws PortalException, SystemException {
568 
569         long companyId = CompanyThreadLocal.getCompanyId();
570 
571         ExpandoValue value = expandoValueFinder.fetchByTC_TC_TN_CN_C(
572             companyId, classNameId, tableName, columnName, classPK);
573 
574         if (value != null) {
575             deleteValue(value.getValueId());
576         }
577     }
578 
579     public void deleteValues(String className, long classPK)
580         throws SystemException {
581 
582         long classNameId = PortalUtil.getClassNameId(className);
583 
584         deleteValues(classNameId, classPK);
585     }
586 
587     public void deleteValues(long classNameId, long classPK)
588         throws SystemException {
589 
590         expandoValuePersistence.removeByC_C(classNameId, classPK);
591     }
592 
593     public List<ExpandoValue> getColumnValues(long columnId, int start, int end)
594         throws SystemException {
595 
596         return expandoValuePersistence.findByColumnId(columnId, start, end);
597     }
598 
599     public List<ExpandoValue> getColumnValues(
600             String className, String tableName, String columnName, int start,
601             int end)
602         throws SystemException {
603 
604         long classNameId = PortalUtil.getClassNameId(className);
605 
606         return getColumnValues(classNameId, tableName, columnName, start, end);
607     }
608 
609     public List<ExpandoValue> getColumnValues(
610             long classNameId, String tableName, String columnName, int start,
611             int end)
612         throws SystemException {
613 
614         long companyId = CompanyThreadLocal.getCompanyId();
615 
616         return expandoValueFinder.findByTC_TC_TN_CN(
617             companyId, classNameId, tableName, columnName, start, end);
618     }
619 
620     public List<ExpandoValue> getColumnValues(
621             String className, String tableName, String columnName, String data,
622             int start, int end)
623         throws SystemException {
624 
625         long classNameId = PortalUtil.getClassNameId(className);
626 
627         return getColumnValues(
628             classNameId, tableName, columnName, data, start, end);
629     }
630 
631     public List<ExpandoValue> getColumnValues(
632             long classNameId, String tableName, String columnName, String data,
633             int start, int end)
634         throws SystemException {
635 
636         long companyId = CompanyThreadLocal.getCompanyId();
637 
638         return expandoValueFinder.findByTC_TC_TN_CN_D(
639             companyId, classNameId, tableName, columnName, data, start, end);
640     }
641 
642     public int getColumnValuesCount(long columnId) throws SystemException {
643         return expandoValuePersistence.countByColumnId(columnId);
644     }
645 
646     public int getColumnValuesCount(
647             String className, String tableName, String columnName)
648         throws SystemException {
649 
650         long classNameId = PortalUtil.getClassNameId(className);
651 
652         return getColumnValuesCount(classNameId, tableName, columnName);
653     }
654 
655     public int getColumnValuesCount(
656             long classNameId, String tableName, String columnName)
657         throws SystemException {
658 
659         long companyId = CompanyThreadLocal.getCompanyId();
660 
661         return expandoValueFinder.countByTC_TC_TN_CN(
662             companyId, classNameId, tableName, columnName);
663     }
664 
665     public int getColumnValuesCount(
666             String className, String tableName, String columnName, String data)
667         throws SystemException {
668 
669         long classNameId = PortalUtil.getClassNameId(className);
670 
671         return getColumnValuesCount(classNameId, tableName, columnName, data);
672     }
673 
674     public int getColumnValuesCount(
675             long classNameId, String tableName, String columnName, String data)
676         throws SystemException {
677 
678         long companyId = CompanyThreadLocal.getCompanyId();
679 
680         return expandoValueFinder.countByTC_TC_TN_CN_D(
681             companyId, classNameId, tableName, columnName, data);
682     }
683 
684     public boolean getData(
685             String className, String tableName, String columnName, long classPK,
686             boolean defaultData)
687         throws PortalException, SystemException {
688 
689         ExpandoValue value = getValue(
690             className, tableName, columnName, classPK);
691 
692         if (value == null) {
693             return defaultData;
694         }
695         else {
696             return value.getBoolean();
697         }
698     }
699 
700     public boolean[] getData(
701             String className, String tableName, String columnName, long classPK,
702             boolean[] defaultData)
703         throws PortalException, SystemException {
704 
705         ExpandoValue value = getValue(
706             className, tableName, columnName, classPK);
707 
708         if (value == null) {
709             return defaultData;
710         }
711         else {
712             return value.getBooleanArray();
713         }
714     }
715 
716     public Date getData(
717             String className, String tableName, String columnName, long classPK,
718             Date defaultData)
719         throws PortalException, SystemException {
720 
721         ExpandoValue value = getValue(
722             className, tableName, columnName, classPK);
723 
724         if (value == null) {
725             return defaultData;
726         }
727         else {
728             return value.getDate();
729         }
730     }
731 
732     public Date[] getData(
733             String className, String tableName, String columnName, long classPK,
734             Date[] defaultData)
735         throws PortalException, SystemException {
736 
737         ExpandoValue value = getValue(
738             className, tableName, columnName, classPK);
739 
740         if (value == null) {
741             return defaultData;
742         }
743         else {
744             return value.getDateArray();
745         }
746     }
747 
748     public double getData(
749             String className, String tableName, String columnName, long classPK,
750             double defaultData)
751         throws PortalException, SystemException {
752 
753         ExpandoValue value = getValue(
754             className, tableName, columnName, classPK);
755 
756         if (value == null) {
757             return defaultData;
758         }
759         else {
760             return value.getDouble();
761         }
762     }
763 
764     public double[] getData(
765             String className, String tableName, String columnName, long classPK,
766             double[] defaultData)
767         throws PortalException, SystemException {
768 
769         ExpandoValue value = getValue(
770             className, tableName, columnName, classPK);
771 
772         if (value == null) {
773             return defaultData;
774         }
775         else {
776             return value.getDoubleArray();
777         }
778     }
779 
780     public float getData(
781             String className, String tableName, String columnName, long classPK,
782             float defaultData)
783         throws PortalException, SystemException {
784 
785         ExpandoValue value = getValue(
786             className, tableName, columnName, classPK);
787 
788         if (value == null) {
789             return defaultData;
790         }
791         else {
792             return value.getFloat();
793         }
794     }
795 
796     public float[] getData(
797             String className, String tableName, String columnName, long classPK,
798             float[] defaultData)
799         throws PortalException, SystemException {
800 
801         ExpandoValue value = getValue(
802             className, tableName, columnName, classPK);
803 
804         if (value == null) {
805             return defaultData;
806         }
807         else {
808             return value.getFloatArray();
809         }
810     }
811 
812     public int getData(
813             String className, String tableName, String columnName, long classPK,
814             int defaultData)
815         throws PortalException, SystemException {
816 
817         ExpandoValue value = getValue(
818             className, tableName, columnName, classPK);
819 
820         if (value == null) {
821             return defaultData;
822         }
823         else {
824             return value.getInteger();
825         }
826     }
827 
828     public int[] getData(
829             String className, String tableName, String columnName, long classPK,
830             int[] defaultData)
831         throws PortalException, SystemException {
832 
833         ExpandoValue value = getValue(
834             className, tableName, columnName, classPK);
835 
836         if (value == null) {
837             return defaultData;
838         }
839         else {
840             return value.getIntegerArray();
841         }
842     }
843 
844     public long getData(
845             String className, String tableName, String columnName, long classPK,
846             long defaultData)
847         throws PortalException, SystemException {
848 
849         ExpandoValue value = getValue(
850             className, tableName, columnName, classPK);
851 
852         if (value == null) {
853             return defaultData;
854         }
855         else {
856             return value.getLong();
857         }
858     }
859 
860     public long[] getData(
861             String className, String tableName, String columnName, long classPK,
862             long[] defaultData)
863         throws PortalException, SystemException {
864 
865         ExpandoValue value = getValue(
866             className, tableName, columnName, classPK);
867 
868         if (value == null) {
869             return defaultData;
870         }
871         else {
872             return value.getLongArray();
873         }
874     }
875 
876     public short getData(
877             String className, String tableName, String columnName, long classPK,
878             short defaultData)
879         throws PortalException, SystemException {
880 
881         ExpandoValue value = getValue(
882             className, tableName, columnName, classPK);
883 
884         if (value == null) {
885             return defaultData;
886         }
887         else {
888             return value.getShort();
889         }
890     }
891 
892     public short[] getData(
893             String className, String tableName, String columnName, long classPK,
894             short[] defaultData)
895         throws PortalException, SystemException {
896 
897         ExpandoValue value = getValue(
898             className, tableName, columnName, classPK);
899 
900         if (value == null) {
901             return defaultData;
902         }
903         else {
904             return value.getShortArray();
905         }
906     }
907 
908     public String getData(
909             String className, String tableName, String columnName, long classPK,
910             String defaultData)
911         throws PortalException, SystemException {
912 
913         ExpandoValue value = getValue(
914             className, tableName, columnName, classPK);
915 
916         if (value == null) {
917             return defaultData;
918         }
919         else {
920             return value.getString();
921         }
922     }
923 
924     public String[] getData(
925             String className, String tableName, String columnName, long classPK,
926             String[] defaultData)
927         throws PortalException, SystemException {
928 
929         ExpandoValue value = getValue(
930             className, tableName, columnName, classPK);
931 
932         if (value == null) {
933             return defaultData;
934         }
935         else {
936             return value.getStringArray();
937         }
938     }
939 
940     public Serializable getData(
941             String className, String tableName, String columnName, long classPK)
942         throws PortalException, SystemException {
943 
944         ExpandoColumn column = expandoColumnLocalService.getColumn(
945             className, tableName, columnName);
946 
947         ExpandoValue value = new ExpandoValueImpl();
948 
949         value.setColumnId(column.getColumnId());
950 
951         int type = column.getType();
952 
953         if (type == ExpandoColumnConstants.BOOLEAN) {
954             return getData(
955                 className, tableName, columnName, classPK, value.getBoolean());
956         }
957         else if (type == ExpandoColumnConstants.BOOLEAN_ARRAY) {
958             return getData(
959                 className, tableName, columnName, classPK,
960                 value.getBooleanArray());
961         }
962         else if (type == ExpandoColumnConstants.DATE) {
963             return getData(
964                 className, tableName, columnName, classPK, value.getDate());
965         }
966         else if (type == ExpandoColumnConstants.DATE_ARRAY) {
967             return getData(
968                 className, tableName, columnName, classPK,
969                 value.getDateArray());
970         }
971         else if (type == ExpandoColumnConstants.DOUBLE) {
972             return getData(
973                 className, tableName, columnName, classPK, value.getDouble());
974         }
975         else if (type == ExpandoColumnConstants.DOUBLE_ARRAY) {
976             return getData(
977                 className, tableName, columnName, classPK,
978                 value.getDoubleArray());
979         }
980         else if (type == ExpandoColumnConstants.FLOAT) {
981             return getData(
982                 className, tableName, columnName, classPK, value.getFloat());
983         }
984         else if (type == ExpandoColumnConstants.FLOAT_ARRAY) {
985             return getData(
986                 className, tableName, columnName, classPK,
987                 value.getFloatArray());
988         }
989         else if (type == ExpandoColumnConstants.INTEGER) {
990             return getData(
991                 className, tableName, columnName, classPK, value.getInteger());
992         }
993         else if (type == ExpandoColumnConstants.INTEGER_ARRAY) {
994             return getData(
995                 className, tableName, columnName, classPK,
996                 value.getIntegerArray());
997         }
998         else if (type == ExpandoColumnConstants.LONG) {
999             return getData(
1000                className, tableName, columnName, classPK, value.getLong());
1001        }
1002        else if (type == ExpandoColumnConstants.LONG_ARRAY) {
1003            return getData(
1004                className, tableName, columnName, classPK,
1005                value.getLongArray());
1006        }
1007        else if (type == ExpandoColumnConstants.SHORT) {
1008            return getData(
1009                className, tableName, columnName, classPK, value.getShort());
1010        }
1011        else if (type == ExpandoColumnConstants.SHORT_ARRAY) {
1012            return getData(
1013                className, tableName, columnName, classPK,
1014                value.getShortArray());
1015        }
1016        else if (type == ExpandoColumnConstants.STRING_ARRAY) {
1017            return getData(
1018                className, tableName, columnName, classPK,
1019                value.getStringArray());
1020        }
1021        else {
1022            return getData(
1023                className, tableName, columnName, classPK, value.getString());
1024        }
1025    }
1026
1027    public List<ExpandoValue> getDefaultTableColumnValues(
1028            String className, String columnName, int start, int end)
1029        throws SystemException {
1030
1031        long classNameId = PortalUtil.getClassNameId(className);
1032
1033        return getDefaultTableColumnValues(classNameId, columnName, start, end);
1034    }
1035
1036    public List<ExpandoValue> getDefaultTableColumnValues(
1037            long classNameId, String columnName, int start, int end)
1038        throws SystemException {
1039
1040        return getColumnValues(
1041            classNameId, ExpandoTableConstants.DEFAULT_TABLE_NAME, columnName,
1042            start, end);
1043    }
1044
1045    public int getDefaultTableColumnValuesCount(
1046            String className, String columnName)
1047        throws SystemException {
1048
1049        long classNameId = PortalUtil.getClassNameId(className);
1050
1051        return getDefaultTableColumnValuesCount(classNameId, columnName);
1052    }
1053
1054    public int getDefaultTableColumnValuesCount(
1055            long classNameId, String columnName)
1056        throws SystemException {
1057
1058        return getColumnValuesCount(
1059            classNameId, ExpandoTableConstants.DEFAULT_TABLE_NAME, columnName);
1060    }
1061
1062    public List<ExpandoValue> getRowValues(long rowId) throws SystemException {
1063        return expandoValuePersistence.findByRowId(rowId);
1064    }
1065
1066    public List<ExpandoValue> getRowValues(long rowId, int start, int end)
1067        throws SystemException {
1068
1069        return expandoValuePersistence.findByRowId(rowId, start, end);
1070    }
1071
1072    public List<ExpandoValue> getRowValues(
1073            String className, String tableName, long classPK, int start,
1074            int end)
1075        throws SystemException {
1076
1077        long classNameId = PortalUtil.getClassNameId(className);
1078
1079        return getRowValues(classNameId, tableName, classPK, start, end);
1080    }
1081
1082    public List<ExpandoValue> getRowValues(
1083            long classNameId, String tableName, long classPK, int start,
1084            int end)
1085        throws SystemException {
1086
1087        long companyId = CompanyThreadLocal.getCompanyId();
1088
1089        return expandoValueFinder.findByTC_TC_TN_C(
1090            companyId, classNameId, tableName, classPK, start, end);
1091    }
1092
1093    public int getRowValuesCount(long rowId) throws SystemException {
1094        return expandoValuePersistence.countByRowId(rowId);
1095    }
1096
1097    public int getRowValuesCount(
1098            String className, String tableName, long classPK)
1099        throws SystemException {
1100
1101        long classNameId = PortalUtil.getClassNameId(className);
1102
1103        return getRowValuesCount(classNameId, tableName, classPK);
1104    }
1105
1106    public int getRowValuesCount(
1107            long classNameId, String tableName, long classPK)
1108        throws SystemException {
1109
1110        long companyId = CompanyThreadLocal.getCompanyId();
1111
1112        return expandoValueFinder.countByTC_TC_TN_C(
1113            companyId, classNameId, tableName, classPK);
1114    }
1115
1116    public ExpandoValue getValue(long valueId)
1117        throws PortalException, SystemException {
1118
1119        return expandoValuePersistence.findByPrimaryKey(valueId);
1120    }
1121
1122    public ExpandoValue getValue(long columnId, long rowId)
1123        throws PortalException, SystemException {
1124
1125        return expandoValuePersistence.findByC_R(columnId, rowId);
1126    }
1127
1128    public ExpandoValue getValue(
1129            String className, String tableName, String columnName, long classPK)
1130        throws SystemException {
1131
1132        long classNameId = PortalUtil.getClassNameId(className);
1133
1134        return getValue(classNameId, tableName, columnName, classPK);
1135    }
1136
1137    public ExpandoValue getValue(
1138            long classNameId, String tableName, String columnName, long classPK)
1139        throws SystemException {
1140
1141        long companyId = CompanyThreadLocal.getCompanyId();
1142
1143        return expandoValueFinder.fetchByTC_TC_TN_CN_C(
1144            companyId, classNameId, tableName, columnName, classPK);
1145    }
1146
1147}