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