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