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