001
014
015 package com.liferay.portlet.expando.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.json.JSONFactoryUtil;
019 import com.liferay.portal.kernel.json.JSONObject;
020 import com.liferay.portal.kernel.jsonwebservice.JSONWebService;
021 import com.liferay.portal.kernel.jsonwebservice.JSONWebServiceMode;
022 import com.liferay.portal.kernel.util.StringPool;
023 import com.liferay.portal.kernel.util.Validator;
024 import com.liferay.portal.security.permission.ActionKeys;
025 import com.liferay.portlet.expando.model.ExpandoColumn;
026 import com.liferay.portlet.expando.model.ExpandoValue;
027 import com.liferay.portlet.expando.service.base.ExpandoValueServiceBaseImpl;
028 import com.liferay.portlet.expando.service.permission.ExpandoColumnPermissionUtil;
029
030 import java.io.Serializable;
031
032 import java.util.Collection;
033 import java.util.Map;
034
035
038 public class ExpandoValueServiceImpl extends ExpandoValueServiceBaseImpl {
039
040 @JSONWebService(mode = JSONWebServiceMode.IGNORE)
041 @Override
042 public ExpandoValue addValue(
043 long companyId, String className, String tableName,
044 String columnName, long classPK, Object data)
045 throws PortalException {
046
047 ExpandoColumn column = expandoColumnLocalService.getColumn(
048 companyId, className, tableName, columnName);
049
050 ExpandoColumnPermissionUtil.check(
051 getPermissionChecker(), column, ActionKeys.UPDATE);
052
053 return expandoValueLocalService.addValue(
054 companyId, className, tableName, columnName, classPK, data);
055 }
056
057 @Override
058 public ExpandoValue addValue(
059 long companyId, String className, String tableName,
060 String columnName, long classPK, String data)
061 throws PortalException {
062
063 ExpandoColumn column = expandoColumnLocalService.getColumn(
064 companyId, className, tableName, columnName);
065
066 ExpandoColumnPermissionUtil.check(
067 getPermissionChecker(), column, ActionKeys.UPDATE);
068
069 return expandoValueLocalService.addValue(
070 companyId, className, tableName, columnName, classPK, data);
071 }
072
073 @Override
074 public void addValues(
075 long companyId, String className, String tableName, long classPK,
076 Map<String, Serializable> attributeValues)
077 throws PortalException {
078
079 for (Map.Entry<String, Serializable> entry :
080 attributeValues.entrySet()) {
081
082 addValue(
083 companyId, className, tableName, entry.getKey(), classPK,
084 entry.getValue());
085 }
086 }
087
088 @Override
089 public Map<String, Serializable> getData(
090 long companyId, String className, String tableName,
091 Collection<String> columnNames, long classPK)
092 throws PortalException {
093
094 Map<String, Serializable> attributeValues =
095 expandoValueLocalService.getData(
096 companyId, className, tableName, columnNames, classPK);
097
098 for (String columnName : columnNames) {
099 ExpandoColumn column = expandoColumnLocalService.getColumn(
100 companyId, className, tableName, columnName);
101
102 if (!ExpandoColumnPermissionUtil.contains(
103 getPermissionChecker(), column, ActionKeys.VIEW)) {
104
105 attributeValues.remove(columnName);
106 }
107 }
108
109 return attributeValues;
110 }
111
112 @Override
113 public Serializable getData(
114 long companyId, String className, String tableName,
115 String columnName, long classPK)
116 throws PortalException {
117
118 ExpandoColumn column = expandoColumnLocalService.getColumn(
119 companyId, className, tableName, columnName);
120
121 if (ExpandoColumnPermissionUtil.contains(
122 getPermissionChecker(), column, ActionKeys.VIEW)) {
123
124 return expandoValueLocalService.getData(
125 companyId, className, tableName, columnName, classPK);
126 }
127 else {
128 return null;
129 }
130 }
131
132 @Override
133 public JSONObject getJSONData(
134 long companyId, String className, String tableName,
135 String columnName, long classPK)
136 throws PortalException {
137
138 ExpandoColumn column = expandoColumnLocalService.getColumn(
139 companyId, className, tableName, columnName);
140
141 if (!ExpandoColumnPermissionUtil.contains(
142 getPermissionChecker(), column, ActionKeys.VIEW)) {
143
144 return null;
145 }
146
147 Serializable dataSerializable = expandoValueLocalService.getData(
148 companyId, className, tableName, columnName, classPK);
149
150 String data = dataSerializable.toString();
151
152 if (Validator.isNull(data)) {
153 return null;
154 }
155
156 if (data.startsWith(StringPool.OPEN_CURLY_BRACE)) {
157 return JSONFactoryUtil.createJSONObject(data);
158 }
159
160 JSONObject jsonObject = JSONFactoryUtil.createJSONObject();
161
162 jsonObject.put("data", data);
163
164 return jsonObject;
165 }
166
167 }