1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.expando.service.impl;
16  
17  import com.liferay.portal.kernel.exception.PortalException;
18  import com.liferay.portal.kernel.exception.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 PortalException, SystemException {
51  
52          ExpandoTable table = expandoTablePersistence.findByPrimaryKey(tableId);
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(table.getCompanyId());
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(table.getCompanyId());
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              long companyId, String className, String tableName,
93              String columnName, long classPK, boolean data)
94          throws PortalException, SystemException {
95  
96          ExpandoTable table = expandoTableLocalService.getTable(
97              companyId, 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             long companyId, String className, String tableName,
115             String columnName, long classPK, boolean[] data)
116         throws PortalException, SystemException {
117 
118         ExpandoTable table = expandoTableLocalService.getTable(
119             companyId, 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             long companyId, String className, String tableName,
137             String columnName, long classPK, Date data)
138         throws PortalException, SystemException {
139 
140         ExpandoTable table = expandoTableLocalService.getTable(
141             companyId, 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             long companyId, String className, String tableName,
159             String columnName, long classPK, Date[] data)
160         throws PortalException, SystemException {
161 
162         ExpandoTable table = expandoTableLocalService.getTable(
163             companyId, 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             long companyId, String className, String tableName,
181             String columnName, long classPK, double data)
182         throws PortalException, SystemException {
183 
184         ExpandoTable table = expandoTableLocalService.getTable(
185             companyId, 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             long companyId, String className, String tableName,
203             String columnName, long classPK, double[] data)
204         throws PortalException, SystemException {
205 
206         ExpandoTable table = expandoTableLocalService.getTable(
207             companyId, 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             long companyId, String className, String tableName,
225             String columnName, long classPK, float data)
226         throws PortalException, SystemException {
227 
228         ExpandoTable table = expandoTableLocalService.getTable(
229             companyId, 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             long companyId, String className, String tableName,
247             String columnName, long classPK, float[] data)
248         throws PortalException, SystemException {
249 
250         ExpandoTable table = expandoTableLocalService.getTable(
251             companyId, 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             long companyId, String className, String tableName,
269             String columnName, long classPK, int data)
270         throws PortalException, SystemException {
271 
272         ExpandoTable table = expandoTableLocalService.getTable(
273             companyId, 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             long companyId, String className, String tableName,
291             String columnName, long classPK, int[] data)
292         throws PortalException, SystemException {
293 
294         ExpandoTable table = expandoTableLocalService.getTable(
295             companyId, 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             long companyId, String className, String tableName,
313             String columnName, long classPK, long data)
314         throws PortalException, SystemException {
315 
316         ExpandoTable table = expandoTableLocalService.getTable(
317             companyId, 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             long companyId, String className, String tableName,
335             String columnName, long classPK, long[] data)
336         throws PortalException, SystemException {
337 
338         ExpandoTable table = expandoTableLocalService.getTable(
339             companyId, 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             long companyId, String className, String tableName,
357             String columnName, long classPK, Object data)
358         throws PortalException, SystemException {
359 
360         ExpandoColumn column = expandoColumnLocalService.getColumn(
361             companyId, className, tableName, columnName);
362 
363         int type = column.getType();
364 
365         if (type == ExpandoColumnConstants.BOOLEAN) {
366             return addValue(
367                 companyId, className, tableName, columnName, classPK,
368                 ((Boolean)data).booleanValue());
369         }
370         else if (type == ExpandoColumnConstants.BOOLEAN_ARRAY) {
371             return addValue(
372                 companyId, className, tableName, columnName, classPK,
373                 (boolean[])data);
374         }
375         else if (type == ExpandoColumnConstants.DATE) {
376             return addValue(
377                 companyId, className, tableName, columnName, classPK,
378                 (Date)data);
379         }
380         else if (type == ExpandoColumnConstants.DATE_ARRAY) {
381             return addValue(
382                 companyId, className, tableName, columnName, classPK,
383                 (Date[])data);
384         }
385         else if (type == ExpandoColumnConstants.DOUBLE) {
386             return addValue(
387                 companyId, className, tableName, columnName, classPK,
388                 ((Double)data).doubleValue());
389         }
390         else if (type == ExpandoColumnConstants.DOUBLE_ARRAY) {
391             return addValue(
392                 companyId, className, tableName, columnName, classPK,
393                 (double[])data);
394         }
395         else if (type == ExpandoColumnConstants.FLOAT) {
396             return addValue(
397                 companyId, className, tableName, columnName, classPK,
398                 ((Float)data).floatValue());
399         }
400         else if (type == ExpandoColumnConstants.FLOAT_ARRAY) {
401             return addValue(
402                 companyId, className, tableName, columnName, classPK,
403                 (float[])data);
404         }
405         else if (type == ExpandoColumnConstants.INTEGER) {
406             return addValue(
407                 companyId, className, tableName, columnName, classPK,
408                 ((Integer)data).intValue());
409         }
410         else if (type == ExpandoColumnConstants.INTEGER_ARRAY) {
411             return addValue(
412                 companyId, className, tableName, columnName, classPK,
413                 (int[])data);
414         }
415         else if (type == ExpandoColumnConstants.LONG) {
416             return addValue(
417                 companyId, className, tableName, columnName, classPK,
418                 ((Long)data).longValue());
419         }
420         else if (type == ExpandoColumnConstants.LONG_ARRAY) {
421             return addValue(
422                 companyId, className, tableName, columnName, classPK,
423                 (long[])data);
424         }
425         else if (type == ExpandoColumnConstants.SHORT) {
426             return addValue(
427                 companyId, className, tableName, columnName, classPK,
428                 ((Short)data).shortValue());
429         }
430         else if (type == ExpandoColumnConstants.SHORT_ARRAY) {
431             return addValue(
432                 companyId, className, tableName, columnName, classPK,
433                 (short[])data);
434         }
435         else if (type == ExpandoColumnConstants.STRING_ARRAY) {
436             return addValue(
437                 companyId, className, tableName, columnName, classPK,
438                 (String[])data);
439         }
440         else {
441             return addValue(
442                 companyId, className, tableName, columnName, classPK,
443                 (String)data);
444         }
445     }
446 
447     public ExpandoValue addValue(
448             long companyId, String className, String tableName,
449             String columnName, long classPK, short data)
450         throws PortalException, SystemException {
451 
452         ExpandoTable table = expandoTableLocalService.getTable(
453             companyId, className, tableName);
454 
455         ExpandoColumn column = expandoColumnLocalService.getColumn(
456             table.getTableId(), columnName);
457 
458         ExpandoValue value = new ExpandoValueImpl();
459 
460         value.setCompanyId(table.getCompanyId());
461         value.setColumnId(column.getColumnId());
462         value.setShort(data);
463 
464         return addValue(
465             table.getClassNameId(), table.getTableId(), column.getColumnId(),
466             classPK, value.getData());
467     }
468 
469     public ExpandoValue addValue(
470             long companyId, String className, String tableName,
471             String columnName, long classPK, short[] data)
472         throws PortalException, SystemException {
473 
474         ExpandoTable table = expandoTableLocalService.getTable(
475             companyId, className, tableName);
476 
477         ExpandoColumn column = expandoColumnLocalService.getColumn(
478             table.getTableId(), columnName);
479 
480         ExpandoValue value = new ExpandoValueImpl();
481 
482         value.setCompanyId(table.getCompanyId());
483         value.setColumnId(column.getColumnId());
484         value.setShortArray(data);
485 
486         return addValue(
487             table.getClassNameId(), table.getTableId(), column.getColumnId(),
488             classPK, value.getData());
489     }
490 
491     public ExpandoValue addValue(
492             long companyId, String className, String tableName,
493             String columnName, long classPK, String data)
494         throws PortalException, SystemException {
495 
496         ExpandoTable table = expandoTableLocalService.getTable(
497             companyId, className, tableName);
498 
499         ExpandoColumn column = expandoColumnLocalService.getColumn(
500             table.getTableId(), columnName);
501 
502         ExpandoValue value = new ExpandoValueImpl();
503 
504         value.setCompanyId(table.getCompanyId());
505         value.setColumnId(column.getColumnId());
506         value.setString(data);
507 
508         return addValue(
509             table.getClassNameId(), table.getTableId(), column.getColumnId(),
510             classPK, value.getData());
511     }
512 
513     public ExpandoValue addValue(
514             long companyId, String className, String tableName,
515             String columnName, long classPK, String[] data)
516         throws PortalException, SystemException {
517 
518         ExpandoTable table = expandoTableLocalService.getTable(
519             companyId, className, tableName);
520 
521         ExpandoColumn column = expandoColumnLocalService.getColumn(
522             table.getTableId(), columnName);
523 
524         ExpandoValue value = new ExpandoValueImpl();
525 
526         value.setCompanyId(table.getCompanyId());
527         value.setColumnId(column.getColumnId());
528         value.setStringArray(data);
529 
530         return addValue(
531             table.getClassNameId(), table.getTableId(), column.getColumnId(),
532             classPK, value.getData());
533     }
534 
535     /**
536      * @deprecated {@link #addValue(long, String, String, String, long,
537      *             boolean[])}
538      */
539     public ExpandoValue addValue(
540             String className, String tableName, String columnName, long classPK,
541             boolean data)
542         throws PortalException, SystemException {
543 
544         long companyId = CompanyThreadLocal.getCompanyId();
545 
546         return addValue(
547             companyId, className, tableName, columnName, classPK, data);
548     }
549 
550     /**
551      * @deprecated {@link #addValue(long, String, String, String, long,
552      *             boolean[])}
553      */
554     public ExpandoValue addValue(
555             String className, String tableName, String columnName, long classPK,
556             boolean[] data)
557         throws PortalException, SystemException {
558 
559         long companyId = CompanyThreadLocal.getCompanyId();
560 
561         return addValue(
562             companyId, className, tableName, columnName, classPK, data);
563     }
564 
565     /**
566      * @deprecated {@link #addValue(long, String, String, String, long, Date[])}
567      */
568     public ExpandoValue addValue(
569             String className, String tableName, String columnName, long classPK,
570             Date data)
571         throws PortalException, SystemException {
572 
573         long companyId = CompanyThreadLocal.getCompanyId();
574 
575         return addValue(
576             companyId, className, tableName, columnName, classPK, data);
577     }
578 
579     /**
580      * @deprecated {@link #addValue(long, String, String, String, long, Date[])}
581      */
582     public ExpandoValue addValue(
583             String className, String tableName, String columnName, long classPK,
584             Date[] data)
585         throws PortalException, SystemException {
586 
587         long companyId = CompanyThreadLocal.getCompanyId();
588 
589         return addValue(
590             companyId, className, tableName, columnName, classPK, data);
591     }
592 
593     /**
594      * @deprecated {@link #addValue(long, String, String, String, long,
595      *             double[])}
596      */
597     public ExpandoValue addValue(
598             String className, String tableName, String columnName, long classPK,
599             double data)
600         throws PortalException, SystemException {
601 
602         long companyId = CompanyThreadLocal.getCompanyId();
603 
604         return addValue(
605             companyId, className, tableName, columnName, classPK, data);
606     }
607 
608     /**
609      * @deprecated {@link #addValue(long, String, String, String, long,
610      *             double[])}
611      */
612     public ExpandoValue addValue(
613             String className, String tableName, String columnName, long classPK,
614             double[] data)
615         throws PortalException, SystemException {
616 
617         long companyId = CompanyThreadLocal.getCompanyId();
618 
619         return addValue(
620             companyId, className, tableName, columnName, classPK, data);
621     }
622 
623     /**
624      * @deprecated {@link #addValue(long, String, String, String, long,
625      *             float[])}
626      */
627     public ExpandoValue addValue(
628             String className, String tableName, String columnName, long classPK,
629             float data)
630         throws PortalException, SystemException {
631 
632         long companyId = CompanyThreadLocal.getCompanyId();
633 
634         return addValue(
635             companyId, className, tableName, columnName, classPK, data);
636     }
637 
638     /**
639      * @deprecated {@link #addValue(long, String, String, String, long,
640      *             float[])}
641      */
642     public ExpandoValue addValue(
643             String className, String tableName, String columnName, long classPK,
644             float[] data)
645         throws PortalException, SystemException {
646 
647         long companyId = CompanyThreadLocal.getCompanyId();
648 
649         return addValue(
650             companyId, className, tableName, columnName, classPK, data);
651     }
652 
653     /**
654      * @deprecated {@link #addValue(long, String, String, String, long, int[])}
655      */
656     public ExpandoValue addValue(
657             String className, String tableName, String columnName, long classPK,
658             int data)
659         throws PortalException, SystemException {
660 
661         long companyId = CompanyThreadLocal.getCompanyId();
662 
663         return addValue(
664             companyId, className, tableName, columnName, classPK, data);
665     }
666 
667     /**
668      * @deprecated {@link #addValue(long, String, String, String, long, int[])}
669      */
670     public ExpandoValue addValue(
671             String className, String tableName, String columnName, long classPK,
672             int[] data)
673         throws PortalException, SystemException {
674 
675         long companyId = CompanyThreadLocal.getCompanyId();
676 
677         return addValue(
678             companyId, className, tableName, columnName, classPK, data);
679     }
680 
681     /**
682      * @deprecated {@link #addValue(long, String, String, String, long, long[])}
683      */
684     public ExpandoValue addValue(
685             String className, String tableName, String columnName, long classPK,
686             long data)
687         throws PortalException, SystemException {
688 
689         long companyId = CompanyThreadLocal.getCompanyId();
690 
691         return addValue(
692             companyId, className, tableName, columnName, classPK, data);
693     }
694 
695     /**
696      * @deprecated {@link #addValue(long, String, String, String, long, long[])}
697      */
698     public ExpandoValue addValue(
699             String className, String tableName, String columnName, long classPK,
700             long[] data)
701         throws PortalException, SystemException {
702 
703         long companyId = CompanyThreadLocal.getCompanyId();
704 
705         return addValue(
706             companyId, className, tableName, columnName, classPK, data);
707     }
708 
709     /**
710      * @deprecated {@link #addValue(long, String, String, String, long, Object)}
711      */
712     public ExpandoValue addValue(
713             String className, String tableName, String columnName, long classPK,
714             Object data)
715         throws PortalException, SystemException {
716 
717         long companyId = CompanyThreadLocal.getCompanyId();
718 
719         return addValue(
720             companyId, className, tableName, columnName, classPK, data);
721     }
722 
723     /**
724      * @deprecated {@link #addValue(long, String, String, String, long,
725      *             short[])}
726      */
727     public ExpandoValue addValue(
728             String className, String tableName, String columnName, long classPK,
729             short data)
730         throws PortalException, SystemException {
731 
732         long companyId = CompanyThreadLocal.getCompanyId();
733 
734         return addValue(
735             companyId, className, tableName, columnName, classPK, data);
736     }
737 
738     /**
739      * @deprecated {@link #addValue(long, String, String, String, long,
740      *             short[])}
741      */
742     public ExpandoValue addValue(
743             String className, String tableName, String columnName, long classPK,
744             short[] data)
745         throws PortalException, SystemException {
746 
747         long companyId = CompanyThreadLocal.getCompanyId();
748 
749         return addValue(
750             companyId, className, tableName, columnName, classPK, data);
751     }
752 
753     /**
754      * @deprecated {@link #addValue(long, String, String, String, long,
755      *             String[])}
756      */
757     public ExpandoValue addValue(
758             String className, String tableName, String columnName, long classPK,
759             String data)
760         throws PortalException, SystemException {
761 
762         long companyId = CompanyThreadLocal.getCompanyId();
763 
764         return addValue(
765             companyId, className, tableName, columnName, classPK, data);
766     }
767 
768     /**
769      * @deprecated {@link #addValue(long, String, String, String, long,
770      *             String[])}
771      */
772     public ExpandoValue addValue(
773             String className, String tableName, String columnName, long classPK,
774             String[] data)
775         throws PortalException, SystemException {
776 
777         long companyId = CompanyThreadLocal.getCompanyId();
778 
779         return addValue(
780             companyId, className, tableName, columnName, classPK, data);
781     }
782 
783     public void addValues(
784             long classNameId, long tableId, List<ExpandoColumn> columns,
785             long classPK, Map<String, String> data)
786         throws PortalException, SystemException {
787 
788         ExpandoTable table = expandoTablePersistence.findByPrimaryKey(tableId);
789 
790         ExpandoRow row = expandoRowPersistence.fetchByT_C(tableId, classPK);
791 
792         if (row == null) {
793             long rowId = counterLocalService.increment();
794 
795             row = expandoRowPersistence.create(rowId);
796 
797             row.setCompanyId(table.getCompanyId());
798             row.setTableId(tableId);
799             row.setClassPK(classPK);
800 
801             expandoRowPersistence.update(row, false);
802         }
803 
804         for (ExpandoColumn column : columns) {
805             if (data.containsKey(column.getName())) {
806                 ExpandoValue value = expandoValuePersistence.fetchByC_R(
807                     column.getColumnId(), row.getRowId());
808 
809                 if (value == null) {
810                     long valueId = counterLocalService.increment();
811 
812                     value = expandoValuePersistence.create(valueId);
813 
814                     value.setCompanyId(table.getCompanyId());
815                     value.setTableId(tableId);
816                     value.setColumnId(column.getColumnId());
817                     value.setRowId(row.getRowId());
818                     value.setClassNameId(classNameId);
819                     value.setClassPK(classPK);
820                 }
821 
822                 value.setData(data.get(column.getName()));
823 
824                 expandoValuePersistence.update(value, false);
825             }
826         }
827     }
828 
829     public void deleteColumnValues(long columnId) throws SystemException {
830         expandoValuePersistence.removeByColumnId(columnId);
831     }
832 
833     public void deleteRowValues(long rowId) throws SystemException {
834         expandoValuePersistence.removeByRowId(rowId);
835     }
836 
837     public void deleteTableValues(long tableId) throws SystemException {
838         expandoValuePersistence.removeByTableId(tableId);
839     }
840 
841     public void deleteValue(long valueId)
842         throws PortalException, SystemException {
843 
844         expandoValuePersistence.remove(valueId);
845     }
846 
847     public void deleteValue(long columnId, long rowId)
848         throws PortalException, SystemException {
849 
850         expandoValuePersistence.removeByC_R(columnId, rowId);
851     }
852 
853     public void deleteValue(
854             long companyId, long classNameId, String tableName,
855             String columnName, long classPK)
856         throws PortalException, SystemException {
857 
858         ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
859             companyId, classNameId, tableName);
860 
861         if (table == null) {
862             return;
863         }
864 
865         ExpandoColumn column = expandoColumnPersistence.fetchByT_N(
866             table.getTableId(), columnName);
867 
868         if (column == null) {
869             return;
870         }
871 
872         ExpandoValue value = expandoValuePersistence.fetchByT_C_C(
873             table.getTableId(), column.getColumnId(), classPK);
874 
875         if (value != null) {
876             deleteValue(value.getValueId());
877         }
878     }
879 
880     public void deleteValue(
881             long companyId, String className, String tableName,
882             String columnName, long classPK)
883         throws PortalException, SystemException {
884 
885         long classNameId = PortalUtil.getClassNameId(className);
886 
887         deleteValue(companyId, classNameId, tableName, columnName, classPK);
888     }
889 
890     public void deleteValues(long classNameId, long classPK)
891         throws SystemException {
892 
893         expandoValuePersistence.removeByC_C(classNameId, classPK);
894     }
895 
896     public void deleteValues(String className, long classPK)
897         throws SystemException {
898 
899         long classNameId = PortalUtil.getClassNameId(className);
900 
901         deleteValues(classNameId, classPK);
902     }
903 
904     public List<ExpandoValue> getColumnValues(long columnId, int start, int end)
905         throws SystemException {
906 
907         return expandoValuePersistence.findByColumnId(columnId, start, end);
908     }
909 
910     public List<ExpandoValue> getColumnValues(
911             long companyId, long classNameId, String tableName,
912             String columnName, int start, int end)
913         throws SystemException {
914 
915         ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
916             companyId, classNameId, tableName);
917 
918         if (table == null) {
919             return Collections.EMPTY_LIST;
920         }
921 
922         ExpandoColumn column = expandoColumnPersistence.fetchByT_N(
923             table.getTableId(), columnName);
924 
925         if (column == null) {
926             return Collections.EMPTY_LIST;
927         }
928 
929         return expandoValuePersistence.findByT_C(
930             table.getTableId(), column.getColumnId(), start, end);
931     }
932 
933     public List<ExpandoValue> getColumnValues(
934             long companyId, long classNameId, String tableName,
935             String columnName, String data, int start, int end)
936         throws SystemException {
937 
938         ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
939             companyId, classNameId, tableName);
940 
941         if (table == null) {
942             return Collections.EMPTY_LIST;
943         }
944 
945         ExpandoColumn column = expandoColumnPersistence.fetchByT_N(
946             table.getTableId(), columnName);
947 
948         if (column == null) {
949             return Collections.EMPTY_LIST;
950         }
951 
952         return expandoValuePersistence.findByT_C_D(
953             table.getTableId(), column.getColumnId(), data, start, end);
954     }
955 
956     public List<ExpandoValue> getColumnValues(
957             long companyId, String className, String tableName,
958             String columnName, int start, int end)
959         throws SystemException {
960 
961         long classNameId = PortalUtil.getClassNameId(className);
962 
963         return getColumnValues(
964             companyId, classNameId, tableName, columnName, start, end);
965     }
966 
967     public List<ExpandoValue> getColumnValues(
968             String className, String tableName, String columnName, String data,
969             int start, int end)
970         throws SystemException {
971 
972         long classNameId = PortalUtil.getClassNameId(className);
973 
974         return getColumnValues(
975             classNameId, tableName, columnName, data, start, end);
976     }
977 
978     public int getColumnValuesCount(long columnId) throws SystemException {
979         return expandoValuePersistence.countByColumnId(columnId);
980     }
981 
982     public int getColumnValuesCount(
983             long companyId, long classNameId, String tableName,
984             String columnName)
985         throws SystemException {
986 
987         ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
988             companyId, classNameId, tableName);
989 
990         if (table == null) {
991             return 0;
992         }
993 
994         ExpandoColumn column = expandoColumnPersistence.fetchByT_N(
995             table.getTableId(), columnName);
996 
997         if (column == null) {
998             return 0;
999         }
1000
1001        return expandoValuePersistence.countByT_C(
1002            table.getTableId(), column.getColumnId());
1003    }
1004
1005    public int getColumnValuesCount(
1006            long companyId, long classNameId, String tableName,
1007            String columnName, String data)
1008        throws SystemException {
1009
1010        ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
1011            companyId, classNameId, tableName);
1012
1013        if (table == null) {
1014            return 0;
1015        }
1016
1017        ExpandoColumn column = expandoColumnPersistence.fetchByT_N(
1018            table.getTableId(), columnName);
1019
1020        if (column == null) {
1021            return 0;
1022        }
1023
1024        return expandoValuePersistence.countByT_C_D(
1025            table.getTableId(), column.getColumnId(), data);
1026    }
1027
1028    public int getColumnValuesCount(
1029            long companyId, String className, String tableName,
1030            String columnName)
1031        throws SystemException {
1032
1033        long classNameId = PortalUtil.getClassNameId(className);
1034
1035        return getColumnValuesCount(
1036            companyId, classNameId, tableName, columnName);
1037    }
1038
1039    public int getColumnValuesCount(
1040            String className, String tableName, String columnName, String data)
1041        throws SystemException {
1042
1043        long classNameId = PortalUtil.getClassNameId(className);
1044
1045        return getColumnValuesCount(classNameId, tableName, columnName, data);
1046    }
1047
1048    public Serializable getData(
1049            long companyId, String className, String tableName,
1050            String columnName, long classPK)
1051        throws PortalException, SystemException {
1052
1053        ExpandoColumn column = expandoColumnLocalService.getColumn(
1054            companyId, className, tableName, columnName);
1055
1056        ExpandoValue value = new ExpandoValueImpl();
1057
1058        value.setColumnId(column.getColumnId());
1059        value.setData(column.getDefaultData());
1060
1061        int type = column.getType();
1062
1063        if (type == ExpandoColumnConstants.BOOLEAN) {
1064            return getData(
1065                companyId, className, tableName, columnName, classPK,
1066                value.getBoolean());
1067        }
1068        else if (type == ExpandoColumnConstants.BOOLEAN_ARRAY) {
1069            return getData(
1070                companyId, className, tableName, columnName, classPK,
1071                value.getBooleanArray());
1072        }
1073        else if (type == ExpandoColumnConstants.DATE) {
1074            return getData(
1075                companyId, className, tableName, columnName, classPK,
1076                value.getDate());
1077        }
1078        else if (type == ExpandoColumnConstants.DATE_ARRAY) {
1079            return getData(
1080                companyId, className, tableName, columnName, classPK,
1081                value.getDateArray());
1082        }
1083        else if (type == ExpandoColumnConstants.DOUBLE) {
1084            return getData(
1085                companyId, className, tableName, columnName, classPK,
1086                value.getDouble());
1087        }
1088        else if (type == ExpandoColumnConstants.DOUBLE_ARRAY) {
1089            return getData(
1090                companyId, className, tableName, columnName, classPK,
1091                value.getDoubleArray());
1092        }
1093        else if (type == ExpandoColumnConstants.FLOAT) {
1094            return getData(
1095                companyId, className, tableName, columnName, classPK,
1096                value.getFloat());
1097        }
1098        else if (type == ExpandoColumnConstants.FLOAT_ARRAY) {
1099            return getData(
1100                companyId, className, tableName, columnName, classPK,
1101                value.getFloatArray());
1102        }
1103        else if (type == ExpandoColumnConstants.INTEGER) {
1104            return getData(
1105                companyId, className, tableName, columnName, classPK,
1106                value.getInteger());
1107        }
1108        else if (type == ExpandoColumnConstants.INTEGER_ARRAY) {
1109            return getData(
1110                companyId, className, tableName, columnName, classPK,
1111                value.getIntegerArray());
1112        }
1113        else if (type == ExpandoColumnConstants.LONG) {
1114            return getData(
1115                companyId, className, tableName, columnName, classPK,
1116                value.getLong());
1117        }
1118        else if (type == ExpandoColumnConstants.LONG_ARRAY) {
1119            return getData(
1120                companyId, className, tableName, columnName, classPK,
1121                value.getLongArray());
1122        }
1123        else if (type == ExpandoColumnConstants.SHORT) {
1124            return getData(
1125                companyId, className, tableName, columnName, classPK,
1126                value.getShort());
1127        }
1128        else if (type == ExpandoColumnConstants.SHORT_ARRAY) {
1129            return getData(
1130                companyId, className, tableName, columnName, classPK,
1131                value.getShortArray());
1132        }
1133        else if (type == ExpandoColumnConstants.STRING_ARRAY) {
1134            return getData(
1135                companyId, className, tableName, columnName, classPK,
1136                value.getStringArray());
1137        }
1138        else {
1139            return getData(
1140                companyId, className, tableName, columnName, classPK,
1141                value.getString());
1142        }
1143    }
1144
1145    public boolean getData(
1146            long companyId, String className, String tableName,
1147            String columnName, long classPK, boolean defaultData)
1148        throws PortalException, SystemException {
1149
1150        ExpandoValue value = getValue(
1151            companyId, className, tableName, columnName, classPK);
1152
1153        if (value == null) {
1154            return defaultData;
1155        }
1156        else {
1157            return value.getBoolean();
1158        }
1159    }
1160
1161    public boolean[] getData(
1162            long companyId, String className, String tableName,
1163            String columnName, long classPK, boolean[] defaultData)
1164        throws PortalException, SystemException {
1165
1166        ExpandoValue value = getValue(
1167            companyId, className, tableName, columnName, classPK);
1168
1169        if (value == null) {
1170            return defaultData;
1171        }
1172        else {
1173            return value.getBooleanArray();
1174        }
1175    }
1176
1177    public Date getData(
1178            long companyId, String className, String tableName,
1179            String columnName, long classPK, Date defaultData)
1180        throws PortalException, SystemException {
1181
1182        ExpandoValue value = getValue(
1183            companyId, className, tableName, columnName, classPK);
1184
1185        if (value == null) {
1186            return defaultData;
1187        }
1188        else {
1189            return value.getDate();
1190        }
1191    }
1192
1193    public Date[] getData(
1194            long companyId, String className, String tableName,
1195            String columnName, long classPK, Date[] defaultData)
1196        throws PortalException, SystemException {
1197
1198        ExpandoValue value = getValue(
1199            companyId, className, tableName, columnName, classPK);
1200
1201        if (value == null) {
1202            return defaultData;
1203        }
1204        else {
1205            return value.getDateArray();
1206        }
1207    }
1208
1209    public double getData(
1210            long companyId, String className, String tableName,
1211            String columnName, long classPK, double defaultData)
1212        throws PortalException, SystemException {
1213
1214        ExpandoValue value = getValue(
1215            companyId, className, tableName, columnName, classPK);
1216
1217        if (value == null) {
1218            return defaultData;
1219        }
1220        else {
1221            return value.getDouble();
1222        }
1223    }
1224
1225    public double[] getData(
1226            long companyId, String className, String tableName,
1227            String columnName, long classPK, double[] defaultData)
1228        throws PortalException, SystemException {
1229
1230        ExpandoValue value = getValue(
1231            companyId, className, tableName, columnName, classPK);
1232
1233        if (value == null) {
1234            return defaultData;
1235        }
1236        else {
1237            return value.getDoubleArray();
1238        }
1239    }
1240
1241    public float getData(
1242            long companyId, String className, String tableName,
1243            String columnName, long classPK, float defaultData)
1244        throws PortalException, SystemException {
1245
1246        ExpandoValue value = getValue(
1247            companyId, className, tableName, columnName, classPK);
1248
1249        if (value == null) {
1250            return defaultData;
1251        }
1252        else {
1253            return value.getFloat();
1254        }
1255    }
1256
1257    public float[] getData(
1258            long companyId, String className, String tableName,
1259            String columnName, long classPK, float[] defaultData)
1260        throws PortalException, SystemException {
1261
1262        ExpandoValue value = getValue(
1263            companyId, className, tableName, columnName, classPK);
1264
1265        if (value == null) {
1266            return defaultData;
1267        }
1268        else {
1269            return value.getFloatArray();
1270        }
1271    }
1272
1273    public int getData(
1274            long companyId, String className, String tableName,
1275            String columnName, long classPK, int defaultData)
1276        throws PortalException, SystemException {
1277
1278        ExpandoValue value = getValue(
1279            companyId, className, tableName, columnName, classPK);
1280
1281        if (value == null) {
1282            return defaultData;
1283        }
1284        else {
1285            return value.getInteger();
1286        }
1287    }
1288
1289    public int[] getData(
1290            long companyId, String className, String tableName,
1291            String columnName, long classPK, int[] defaultData)
1292        throws PortalException, SystemException {
1293
1294        ExpandoValue value = getValue(
1295            companyId, className, tableName, columnName, classPK);
1296
1297        if (value == null) {
1298            return defaultData;
1299        }
1300        else {
1301            return value.getIntegerArray();
1302        }
1303    }
1304
1305    public long getData(
1306            long companyId, String className, String tableName,
1307            String columnName, long classPK, long defaultData)
1308        throws PortalException, SystemException {
1309
1310        ExpandoValue value = getValue(
1311            companyId, className, tableName, columnName, classPK);
1312
1313        if (value == null) {
1314            return defaultData;
1315        }
1316        else {
1317            return value.getLong();
1318        }
1319    }
1320
1321    public long[] getData(
1322            long companyId, String className, String tableName,
1323            String columnName, long classPK, long[] defaultData)
1324        throws PortalException, SystemException {
1325
1326        ExpandoValue value = getValue(
1327            companyId, className, tableName, columnName, classPK);
1328
1329        if (value == null) {
1330            return defaultData;
1331        }
1332        else {
1333            return value.getLongArray();
1334        }
1335    }
1336
1337    public short getData(
1338            long companyId, String className, String tableName,
1339            String columnName, long classPK, short defaultData)
1340        throws PortalException, SystemException {
1341
1342        ExpandoValue value = getValue(
1343            companyId, className, tableName, columnName, classPK);
1344
1345        if (value == null) {
1346            return defaultData;
1347        }
1348        else {
1349            return value.getShort();
1350        }
1351    }
1352
1353    public short[] getData(
1354            long companyId, String className, String tableName,
1355            String columnName, long classPK, short[] defaultData)
1356        throws PortalException, SystemException {
1357
1358        ExpandoValue value = getValue(
1359            companyId, className, tableName, columnName, classPK);
1360
1361        if (value == null) {
1362            return defaultData;
1363        }
1364        else {
1365            return value.getShortArray();
1366        }
1367    }
1368
1369    public String getData(
1370            long companyId, String className, String tableName,
1371            String columnName, long classPK, String defaultData)
1372        throws PortalException, SystemException {
1373
1374        ExpandoValue value = getValue(
1375            companyId, className, tableName, columnName, classPK);
1376
1377        if (value == null) {
1378            return defaultData;
1379        }
1380        else {
1381            return value.getString();
1382        }
1383    }
1384
1385    public String[] getData(
1386            long companyId, String className, String tableName,
1387            String columnName, long classPK, String[] defaultData)
1388        throws PortalException, SystemException {
1389
1390        ExpandoValue value = getValue(
1391            companyId, className, tableName, columnName, classPK);
1392
1393        if (value == null) {
1394            return defaultData;
1395        }
1396        else {
1397            return value.getStringArray();
1398        }
1399    }
1400
1401    /**
1402     * @deprecated {@link #getData(long, String, String, String, long)}
1403     */
1404    public Serializable getData(
1405            String className, String tableName, String columnName, long classPK)
1406        throws PortalException, SystemException {
1407
1408        long companyId = CompanyThreadLocal.getCompanyId();
1409
1410        return getData(companyId, className, tableName, columnName, classPK);
1411    }
1412
1413    /**
1414     * @deprecated {@link #getData(long, String, String, String, long,
1415     *             boolean[])}
1416     */
1417    public boolean getData(
1418            String className, String tableName, String columnName, long classPK,
1419            boolean defaultData)
1420        throws PortalException, SystemException {
1421
1422        long companyId = CompanyThreadLocal.getCompanyId();
1423
1424        return getData(
1425            companyId, className, tableName, columnName, classPK, defaultData);
1426    }
1427
1428    /**
1429     * @deprecated {@link #getData(long, String, String, String, long,
1430     *             boolean[])}
1431     */
1432    public boolean[] getData(
1433            String className, String tableName, String columnName, long classPK,
1434            boolean[] defaultData)
1435        throws PortalException, SystemException {
1436
1437        long companyId = CompanyThreadLocal.getCompanyId();
1438
1439        return getData(
1440            companyId, className, tableName, columnName, classPK, defaultData);
1441    }
1442
1443    /**
1444     * @deprecated {@link #getData(long, String, String, String, long, Date[])}
1445     */
1446    public Date getData(
1447            String className, String tableName, String columnName, long classPK,
1448            Date defaultData)
1449        throws PortalException, SystemException {
1450
1451        long companyId = CompanyThreadLocal.getCompanyId();
1452
1453        return getData(
1454            companyId, className, tableName, columnName, classPK, defaultData);
1455    }
1456
1457    /**
1458     * @deprecated {@link #getData(long, String, String, String, long, Date[])}
1459     */
1460    public Date[] getData(
1461            String className, String tableName, String columnName, long classPK,
1462            Date[] defaultData)
1463        throws PortalException, SystemException {
1464
1465        long companyId = CompanyThreadLocal.getCompanyId();
1466
1467        return getData(
1468            companyId, className, tableName, columnName, classPK, defaultData);
1469    }
1470
1471    /**
1472     * @deprecated {@link #getData(long, String, String, String, long,
1473     *             double[])}
1474     */
1475    public double getData(
1476            String className, String tableName, String columnName, long classPK,
1477            double defaultData)
1478        throws PortalException, SystemException {
1479
1480        long companyId = CompanyThreadLocal.getCompanyId();
1481
1482        return getData(
1483            companyId, className, tableName, columnName, classPK, defaultData);
1484    }
1485
1486    /**
1487     * @deprecated {@link #getData(long, String, String, String, long,
1488     *             double[])}
1489     */
1490    public double[] getData(
1491            String className, String tableName, String columnName, long classPK,
1492            double[] defaultData)
1493        throws PortalException, SystemException {
1494
1495        long companyId = CompanyThreadLocal.getCompanyId();
1496
1497        return getData(
1498            companyId, className, tableName, columnName, classPK, defaultData);
1499    }
1500
1501    /**
1502     * @deprecated {@link #getData(long, String, String, String, long, float[])}
1503     */
1504    public float getData(
1505            String className, String tableName, String columnName, long classPK,
1506            float defaultData)
1507        throws PortalException, SystemException {
1508
1509        long companyId = CompanyThreadLocal.getCompanyId();
1510
1511        return getData(
1512            companyId, className, tableName, columnName, classPK, defaultData);
1513    }
1514
1515    /**
1516     * @deprecated {@link #getData(long, String, String, String, long, float[])}
1517     */
1518    public float[] getData(
1519            String className, String tableName, String columnName, long classPK,
1520            float[] defaultData)
1521        throws PortalException, SystemException {
1522
1523        long companyId = CompanyThreadLocal.getCompanyId();
1524
1525        return getData(
1526            companyId, className, tableName, columnName, classPK, defaultData);
1527    }
1528
1529    /**
1530     * @deprecated {@link #getData(long, String, String, String, long, int[])}
1531     */
1532    public int getData(
1533            String className, String tableName, String columnName, long classPK,
1534            int defaultData)
1535        throws PortalException, SystemException {
1536
1537        long companyId = CompanyThreadLocal.getCompanyId();
1538
1539        return getData(
1540            companyId, className, tableName, columnName, classPK, defaultData);
1541    }
1542
1543    /**
1544     * @deprecated {@link #getData(long, String, String, String, long, int[])}
1545     */
1546    public int[] getData(
1547            String className, String tableName, String columnName, long classPK,
1548            int[] defaultData)
1549        throws PortalException, SystemException {
1550
1551        long companyId = CompanyThreadLocal.getCompanyId();
1552
1553        return getData(
1554            companyId, className, tableName, columnName, classPK, defaultData);
1555    }
1556
1557    /**
1558     * @deprecated {@link #getData(long, String, String, String, long, long[])}
1559     */
1560    public long getData(
1561            String className, String tableName, String columnName, long classPK,
1562            long defaultData)
1563        throws PortalException, SystemException {
1564
1565        long companyId = CompanyThreadLocal.getCompanyId();
1566
1567        return getData(
1568            companyId, className, tableName, columnName, classPK, defaultData);
1569    }
1570
1571    /**
1572     * @deprecated {@link #getData(long, String, String, String, long, long[])}
1573     */
1574    public long[] getData(
1575            String className, String tableName, String columnName, long classPK,
1576            long[] defaultData)
1577        throws PortalException, SystemException {
1578
1579        long companyId = CompanyThreadLocal.getCompanyId();
1580
1581        return getData(
1582            companyId, className, tableName, columnName, classPK, defaultData);
1583    }
1584
1585    /**
1586     * @deprecated {@link #getData(long, String, String, String, long, short[])}
1587     */
1588    public short getData(
1589            String className, String tableName, String columnName, long classPK,
1590            short defaultData)
1591        throws PortalException, SystemException {
1592
1593        long companyId = CompanyThreadLocal.getCompanyId();
1594
1595        return getData(
1596            companyId, className, tableName, columnName, classPK, defaultData);
1597    }
1598
1599    /**
1600     * @deprecated {@link #getData(long, String, String, String, long, short[])}
1601     */
1602    public short[] getData(
1603            String className, String tableName, String columnName, long classPK,
1604            short[] defaultData)
1605        throws PortalException, SystemException {
1606
1607        long companyId = CompanyThreadLocal.getCompanyId();
1608
1609        return getData(
1610            companyId, className, tableName, columnName, classPK, defaultData);
1611    }
1612
1613    /**
1614     * @deprecated {@link #getData(long, String, String, String, long,
1615     *             String[])}
1616     */
1617    public String getData(
1618            String className, String tableName, String columnName, long classPK,
1619            String defaultData)
1620        throws PortalException, SystemException {
1621
1622        long companyId = CompanyThreadLocal.getCompanyId();
1623
1624        return getData(
1625            companyId, className, tableName, columnName, classPK, defaultData);
1626    }
1627
1628    /**
1629     * @deprecated {@link #getData(long, String, String, String, long,
1630     *             String[])}
1631     */
1632    public String[] getData(
1633            String className, String tableName, String columnName, long classPK,
1634            String[] defaultData)
1635        throws PortalException, SystemException {
1636
1637        long companyId = CompanyThreadLocal.getCompanyId();
1638
1639        return getData(
1640            companyId, className, tableName, columnName, classPK, defaultData);
1641    }
1642
1643    public List<ExpandoValue> getDefaultTableColumnValues(
1644            long companyId, long classNameId, String columnName, int start,
1645            int end)
1646        throws SystemException {
1647
1648        return getColumnValues(
1649            companyId, classNameId, ExpandoTableConstants.DEFAULT_TABLE_NAME,
1650            columnName, start, end);
1651    }
1652
1653    public List<ExpandoValue> getDefaultTableColumnValues(
1654            long companyId, String className, String columnName, int start,
1655            int end)
1656        throws SystemException {
1657
1658        long classNameId = PortalUtil.getClassNameId(className);
1659
1660        return getDefaultTableColumnValues(
1661            companyId, classNameId, columnName, start, end);
1662    }
1663
1664    public int getDefaultTableColumnValuesCount(
1665            long companyId, long classNameId, String columnName)
1666        throws SystemException {
1667
1668        return getColumnValuesCount(
1669            companyId, classNameId, ExpandoTableConstants.DEFAULT_TABLE_NAME,
1670            columnName);
1671    }
1672
1673    public int getDefaultTableColumnValuesCount(
1674            long companyId, String className, String columnName)
1675        throws SystemException {
1676
1677        long classNameId = PortalUtil.getClassNameId(className);
1678
1679        return getDefaultTableColumnValuesCount(
1680            companyId, classNameId, columnName);
1681    }
1682
1683    public List<ExpandoValue> getRowValues(long rowId) throws SystemException {
1684        return expandoValuePersistence.findByRowId(rowId);
1685    }
1686
1687    public List<ExpandoValue> getRowValues(long rowId, int start, int end)
1688        throws SystemException {
1689
1690        return expandoValuePersistence.findByRowId(rowId, start, end);
1691    }
1692
1693    public List<ExpandoValue> getRowValues(
1694            long companyId, long classNameId, String tableName, long classPK,
1695            int start, int end)
1696        throws SystemException {
1697
1698        ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
1699            companyId, classNameId, tableName);
1700
1701        if (table == null) {
1702            return Collections.EMPTY_LIST;
1703        }
1704
1705        return expandoValuePersistence.findByT_CPK(
1706            table.getTableId(), classPK, start, end);
1707    }
1708
1709    public List<ExpandoValue> getRowValues(
1710            long companyId, String className, String tableName, long classPK,
1711            int start, int end)
1712        throws SystemException {
1713
1714        long classNameId = PortalUtil.getClassNameId(className);
1715
1716        return getRowValues(
1717            companyId, classNameId, tableName, classPK, start, end);
1718    }
1719
1720    public int getRowValuesCount(long rowId) throws SystemException {
1721        return expandoValuePersistence.countByRowId(rowId);
1722    }
1723
1724    public int getRowValuesCount(
1725            long companyId, long classNameId, String tableName, long classPK)
1726        throws SystemException {
1727
1728        ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
1729            companyId, classNameId, tableName);
1730
1731        if (table == null) {
1732            return 0;
1733        }
1734
1735        return expandoValuePersistence.countByT_CPK(
1736            table.getTableId(), classPK);
1737    }
1738
1739    public int getRowValuesCount(
1740            long companyId, String className, String tableName, long classPK)
1741        throws SystemException {
1742
1743        long classNameId = PortalUtil.getClassNameId(className);
1744
1745        return getRowValuesCount(companyId, classNameId, tableName, classPK);
1746    }
1747
1748    public ExpandoValue getValue(long valueId)
1749        throws PortalException, SystemException {
1750
1751        return expandoValuePersistence.findByPrimaryKey(valueId);
1752    }
1753
1754    public ExpandoValue getValue(long columnId, long rowId)
1755        throws PortalException, SystemException {
1756
1757        return expandoValuePersistence.findByC_R(columnId, rowId);
1758    }
1759
1760    public ExpandoValue getValue(long tableId, long columnId, long classPK)
1761        throws SystemException {
1762
1763        return expandoValuePersistence.fetchByT_C_C(
1764            tableId, columnId, classPK);
1765    }
1766
1767    public ExpandoValue getValue(
1768            long companyId, long classNameId, String tableName,
1769            String columnName, long classPK)
1770        throws SystemException {
1771
1772        ExpandoTable table = expandoTablePersistence.fetchByC_C_N(
1773            companyId, classNameId, tableName);
1774
1775        if (table == null) {
1776            return null;
1777        }
1778
1779        ExpandoColumn column = expandoColumnPersistence.fetchByT_N(
1780            table.getTableId(), columnName);
1781
1782        if (column == null) {
1783            return null;
1784        }
1785
1786        return expandoValuePersistence.fetchByT_C_C(
1787            table.getTableId(), column.getColumnId(), classPK);
1788    }
1789
1790    public ExpandoValue getValue(
1791            long companyId, String className, String tableName,
1792            String columnName, long classPK)
1793        throws SystemException {
1794
1795        long classNameId = PortalUtil.getClassNameId(className);
1796
1797        return getValue(companyId, classNameId, tableName, columnName, classPK);
1798    }
1799
1800}