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