001
014
015 package com.liferay.portlet.asset.service.impl;
016
017 import com.liferay.portal.kernel.dao.orm.QueryUtil;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.json.JSONArray;
020 import com.liferay.portal.kernel.json.JSONFactoryUtil;
021 import com.liferay.portal.kernel.json.JSONObject;
022 import com.liferay.portal.kernel.util.OrderByComparator;
023 import com.liferay.portal.kernel.util.Validator;
024 import com.liferay.portal.security.permission.ActionKeys;
025 import com.liferay.portal.service.ServiceContext;
026 import com.liferay.portlet.asset.model.AssetTag;
027 import com.liferay.portlet.asset.model.AssetTagDisplay;
028 import com.liferay.portlet.asset.service.base.AssetTagServiceBaseImpl;
029 import com.liferay.portlet.asset.service.permission.AssetPermission;
030 import com.liferay.portlet.asset.service.permission.AssetTagPermission;
031 import com.liferay.portlet.asset.util.comparator.AssetTagNameComparator;
032 import com.liferay.util.Autocomplete;
033 import com.liferay.util.dao.orm.CustomSQLUtil;
034
035 import java.util.ArrayList;
036 import java.util.List;
037 import java.util.Set;
038 import java.util.TreeSet;
039
040
051 public class AssetTagServiceImpl extends AssetTagServiceBaseImpl {
052
053 @Override
054 public AssetTag addTag(
055 long groupId, String name, ServiceContext serviceContext)
056 throws PortalException {
057
058 AssetPermission.check(
059 getPermissionChecker(), groupId, ActionKeys.ADD_TAG);
060
061 return assetTagLocalService.addTag(
062 getUserId(), groupId, name, serviceContext);
063 }
064
065 @Override
066 public void deleteTag(long tagId) throws PortalException {
067 AssetTagPermission.check(
068 getPermissionChecker(), tagId, ActionKeys.DELETE);
069
070 assetTagLocalService.deleteTag(tagId);
071 }
072
073 @Override
074 public void deleteTags(long[] tagIds) throws PortalException {
075 for (long tagId : tagIds) {
076 AssetTagPermission.check(
077 getPermissionChecker(), tagId, ActionKeys.DELETE);
078
079 assetTagLocalService.deleteTag(tagId);
080 }
081 }
082
083 @Override
084 public List<AssetTag> getGroupsTags(long[] groupIds) {
085 Set<AssetTag> groupsTags = new TreeSet<>(new AssetTagNameComparator());
086
087 for (long groupId : groupIds) {
088 List<AssetTag> groupTags = getGroupTags(groupId);
089
090 groupsTags.addAll(groupTags);
091 }
092
093 return new ArrayList<>(groupsTags);
094 }
095
096 @Override
097 public List<AssetTag> getGroupTags(long groupId) {
098 return assetTagPersistence.findByGroupId(groupId);
099 }
100
101 @Override
102 public List<AssetTag> getGroupTags(
103 long groupId, int start, int end, OrderByComparator<AssetTag> obc) {
104
105 return assetTagPersistence.findByGroupId(groupId, start, end, obc);
106 }
107
108 @Override
109 public int getGroupTagsCount(long groupId) {
110 return assetTagPersistence.countByGroupId(groupId);
111 }
112
113 @Override
114 public AssetTagDisplay getGroupTagsDisplay(
115 long groupId, String name, int start, int end) {
116
117 List<AssetTag> tags = null;
118 int total = 0;
119
120 if (Validator.isNotNull(name)) {
121 name = (CustomSQLUtil.keywords(name))[0];
122
123 tags = getTags(groupId, name, start, end);
124 total = getTagsCount(groupId, name);
125 }
126 else {
127 tags = getGroupTags(groupId, start, end, null);
128 total = getGroupTagsCount(groupId);
129 }
130
131 return new AssetTagDisplay(tags, total, start, end);
132 }
133
134
138 @Deprecated
139 @Override
140 public JSONObject getJSONGroupTags(
141 long groupId, String name, int start, int end)
142 throws PortalException {
143
144 JSONObject jsonObject = JSONFactoryUtil.createJSONObject();
145
146 int page = end / (end - start);
147
148 jsonObject.put("page", page);
149
150 List<AssetTag> tags = null;
151 int total = 0;
152
153 if (Validator.isNotNull(name)) {
154 name = (CustomSQLUtil.keywords(name))[0];
155
156 tags = getTags(groupId, name, start, end);
157 total = getTagsCount(groupId, name);
158 }
159 else {
160 tags = getGroupTags(groupId, start, end, null);
161 total = getGroupTagsCount(groupId);
162 }
163
164 String tagsJSON = JSONFactoryUtil.looseSerialize(tags);
165
166 JSONArray tagsJSONArray = JSONFactoryUtil.createJSONArray(tagsJSON);
167
168 jsonObject.put("tags", tagsJSONArray);
169
170 jsonObject.put("total", total);
171
172 return jsonObject;
173 }
174
175 @Override
176 public AssetTag getTag(long tagId) throws PortalException {
177 return assetTagLocalService.getTag(tagId);
178 }
179
180 @Override
181 public List<AssetTag> getTags(long groupId, long classNameId, String name) {
182 return assetTagFinder.findByG_C_N(
183 groupId, classNameId, name, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
184 null);
185 }
186
187 @Override
188 public List<AssetTag> getTags(
189 long groupId, long classNameId, String name, int start, int end,
190 OrderByComparator<AssetTag> obc) {
191
192 return assetTagFinder.findByG_C_N(
193 groupId, classNameId, name, start, end, obc);
194 }
195
196 @Override
197 public List<AssetTag> getTags(
198 long groupId, String name, int start, int end) {
199
200 return getTags(new long[] {groupId}, name, start, end);
201 }
202
203 @Override
204 public List<AssetTag> getTags(
205 long[] groupIds, String name, int start, int end) {
206
207 if (Validator.isNull(name)) {
208 return assetTagPersistence.findByGroupId(
209 groupIds, start, end, new AssetTagNameComparator());
210 }
211
212 return assetTagPersistence.findByG_LikeN(
213 groupIds, name, start, end, new AssetTagNameComparator());
214 }
215
216 @Override
217 public List<AssetTag> getTags(String className, long classPK) {
218 return assetTagLocalService.getTags(className, classPK);
219 }
220
221 @Override
222 public int getTagsCount(long groupId, String name) {
223 if (Validator.isNull(name)) {
224 return assetTagPersistence.countByGroupId(groupId);
225 }
226
227 return assetTagPersistence.countByG_LikeN(groupId, name);
228 }
229
230 @Override
231 public int getVisibleAssetsTagsCount(
232 long groupId, long classNameId, String name) {
233
234 return assetTagFinder.countByG_C_N(groupId, classNameId, name);
235 }
236
237 @Override
238 public int getVisibleAssetsTagsCount(long groupId, String name) {
239 return assetTagFinder.countByG_N(groupId, name);
240 }
241
242 @Override
243 public void mergeTags(long fromTagId, long toTagId) throws PortalException {
244 AssetTagPermission.check(
245 getPermissionChecker(), toTagId, ActionKeys.UPDATE);
246
247 assetTagLocalService.mergeTags(fromTagId, toTagId);
248 }
249
250 @Override
251 public void mergeTags(long[] fromTagIds, long toTagId)
252 throws PortalException {
253
254 for (long fromTagId : fromTagIds) {
255 mergeTags(fromTagId, toTagId);
256 }
257 }
258
259 @Override
260 public JSONArray search(long groupId, String name, int start, int end) {
261 return search(new long[] {groupId}, name, start, end);
262 }
263
264 @Override
265 public JSONArray search(long[] groupIds, String name, int start, int end) {
266 List<AssetTag> tags = getTags(groupIds, name, start, end);
267
268 return Autocomplete.listToJson(tags, "name", "name");
269 }
270
271 @Override
272 public AssetTag updateTag(
273 long tagId, String name, ServiceContext serviceContext)
274 throws PortalException {
275
276 AssetTagPermission.check(
277 getPermissionChecker(), tagId, ActionKeys.UPDATE);
278
279 return assetTagLocalService.updateTag(
280 getUserId(), tagId, name, serviceContext);
281 }
282
283 }