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