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