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