001
014
015 package com.liferay.portlet.dynamicdatalists.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.systemevent.SystemEvent;
019 import com.liferay.portal.kernel.util.LocaleUtil;
020 import com.liferay.portal.kernel.util.OrderByComparator;
021 import com.liferay.portal.kernel.util.Validator;
022 import com.liferay.portal.model.ResourceConstants;
023 import com.liferay.portal.model.SystemEventConstants;
024 import com.liferay.portal.model.User;
025 import com.liferay.portal.service.ServiceContext;
026 import com.liferay.portlet.dynamicdatalists.RecordSetDDMStructureIdException;
027 import com.liferay.portlet.dynamicdatalists.RecordSetDuplicateRecordSetKeyException;
028 import com.liferay.portlet.dynamicdatalists.RecordSetNameException;
029 import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
030 import com.liferay.portlet.dynamicdatalists.service.base.DDLRecordSetLocalServiceBaseImpl;
031 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
032 import com.liferay.portlet.dynamicdatamapping.model.DDMStructureLink;
033
034 import java.util.Date;
035 import java.util.List;
036 import java.util.Locale;
037 import java.util.Map;
038
039
046 public class DDLRecordSetLocalServiceImpl
047 extends DDLRecordSetLocalServiceBaseImpl {
048
049 @Override
050 public DDLRecordSet addRecordSet(
051 long userId, long groupId, long ddmStructureId, String recordSetKey,
052 Map<Locale, String> nameMap, Map<Locale, String> descriptionMap,
053 int minDisplayRows, int scope, ServiceContext serviceContext)
054 throws PortalException {
055
056
057
058 User user = userPersistence.findByPrimaryKey(userId);
059
060 if (Validator.isNull(recordSetKey)) {
061 recordSetKey = String.valueOf(counterLocalService.increment());
062 }
063
064 Date now = new Date();
065
066 validate(groupId, ddmStructureId, recordSetKey, nameMap);
067
068 long recordSetId = counterLocalService.increment();
069
070 DDLRecordSet recordSet = ddlRecordSetPersistence.create(recordSetId);
071
072 recordSet.setUuid(serviceContext.getUuid());
073 recordSet.setGroupId(groupId);
074 recordSet.setCompanyId(user.getCompanyId());
075 recordSet.setUserId(user.getUserId());
076 recordSet.setUserName(user.getFullName());
077 recordSet.setCreateDate(serviceContext.getCreateDate(now));
078 recordSet.setModifiedDate(serviceContext.getModifiedDate(now));
079 recordSet.setDDMStructureId(ddmStructureId);
080 recordSet.setRecordSetKey(recordSetKey);
081 recordSet.setNameMap(nameMap);
082 recordSet.setDescriptionMap(descriptionMap);
083 recordSet.setMinDisplayRows(minDisplayRows);
084 recordSet.setScope(scope);
085
086 ddlRecordSetPersistence.update(recordSet);
087
088
089
090 if (serviceContext.isAddGroupPermissions() ||
091 serviceContext.isAddGuestPermissions()) {
092
093 addRecordSetResources(
094 recordSet, serviceContext.isAddGroupPermissions(),
095 serviceContext.isAddGuestPermissions());
096 }
097 else {
098 addRecordSetResources(
099 recordSet, serviceContext.getGroupPermissions(),
100 serviceContext.getGuestPermissions());
101 }
102
103
104
105 long classNameId = classNameLocalService.getClassNameId(
106 DDLRecordSet.class);
107
108 ddmStructureLinkLocalService.addStructureLink(
109 classNameId, recordSetId, ddmStructureId, serviceContext);
110
111 return recordSet;
112 }
113
114 @Override
115 public void addRecordSetResources(
116 DDLRecordSet recordSet, boolean addGroupPermissions,
117 boolean addGuestPermissions)
118 throws PortalException {
119
120 resourceLocalService.addResources(
121 recordSet.getCompanyId(), recordSet.getGroupId(),
122 recordSet.getUserId(), DDLRecordSet.class.getName(),
123 recordSet.getRecordSetId(), false, addGroupPermissions,
124 addGuestPermissions);
125 }
126
127 @Override
128 public void addRecordSetResources(
129 DDLRecordSet recordSet, String[] groupPermissions,
130 String[] guestPermissions)
131 throws PortalException {
132
133 resourceLocalService.addModelResources(
134 recordSet.getCompanyId(), recordSet.getGroupId(),
135 recordSet.getUserId(), DDLRecordSet.class.getName(),
136 recordSet.getRecordSetId(), groupPermissions, guestPermissions);
137 }
138
139 @Override
140 @SystemEvent(
141 action = SystemEventConstants.ACTION_SKIP,
142 type = SystemEventConstants.TYPE_DELETE)
143 public void deleteRecordSet(DDLRecordSet recordSet) throws PortalException {
144
145
146
147 ddlRecordSetPersistence.remove(recordSet);
148
149
150
151 resourceLocalService.deleteResource(
152 recordSet.getCompanyId(), DDLRecordSet.class.getName(),
153 ResourceConstants.SCOPE_INDIVIDUAL, recordSet.getRecordSetId());
154
155
156
157 ddlRecordLocalService.deleteRecords(recordSet.getRecordSetId());
158
159
160
161 ddmStructureLinkLocalService.deleteClassStructureLink(
162 recordSet.getRecordSetId());
163
164
165
166 workflowDefinitionLinkLocalService.deleteWorkflowDefinitionLink(
167 recordSet.getCompanyId(), recordSet.getGroupId(),
168 DDLRecordSet.class.getName(), recordSet.getRecordSetId(), 0);
169 }
170
171 @Override
172 public void deleteRecordSet(long recordSetId) throws PortalException {
173 DDLRecordSet recordSet = ddlRecordSetPersistence.findByPrimaryKey(
174 recordSetId);
175
176 ddlRecordSetLocalService.deleteRecordSet(recordSet);
177 }
178
179 @Override
180 public void deleteRecordSet(long groupId, String recordSetKey)
181 throws PortalException {
182
183 DDLRecordSet recordSet = ddlRecordSetPersistence.findByG_R(
184 groupId, recordSetKey);
185
186 ddlRecordSetLocalService.deleteRecordSet(recordSet);
187 }
188
189 @Override
190 public void deleteRecordSets(long groupId) throws PortalException {
191 List<DDLRecordSet> recordSets = ddlRecordSetPersistence.findByGroupId(
192 groupId);
193
194 for (DDLRecordSet recordSet : recordSets) {
195 ddlRecordSetLocalService.deleteRecordSet(recordSet);
196 }
197 }
198
199 @Override
200 public DDLRecordSet fetchRecordSet(long recordSetId) {
201 return ddlRecordSetPersistence.fetchByPrimaryKey(recordSetId);
202 }
203
204 @Override
205 public DDLRecordSet fetchRecordSet(long groupId, String recordSetKey) {
206 return ddlRecordSetPersistence.fetchByG_R(groupId, recordSetKey);
207 }
208
209 @Override
210 public DDLRecordSet getRecordSet(long recordSetId) throws PortalException {
211 return ddlRecordSetPersistence.findByPrimaryKey(recordSetId);
212 }
213
214 @Override
215 public DDLRecordSet getRecordSet(long groupId, String recordSetKey)
216 throws PortalException {
217
218 return ddlRecordSetPersistence.findByG_R(groupId, recordSetKey);
219 }
220
221 @Override
222 public List<DDLRecordSet> getRecordSets(long groupId) {
223 return ddlRecordSetPersistence.findByGroupId(groupId);
224 }
225
226 @Override
227 public int getRecordSetsCount(long groupId) {
228 return ddlRecordSetPersistence.countByGroupId(groupId);
229 }
230
231 @Override
232 public List<DDLRecordSet> search(
233 long companyId, long groupId, String keywords, int scope, int start,
234 int end, OrderByComparator<DDLRecordSet> orderByComparator) {
235
236 return ddlRecordSetFinder.findByKeywords(
237 companyId, groupId, keywords, scope, start, end, orderByComparator);
238 }
239
240 @Override
241 public List<DDLRecordSet> search(
242 long companyId, long groupId, String name, String description,
243 int scope, boolean andOperator, int start, int end,
244 OrderByComparator<DDLRecordSet> orderByComparator) {
245
246 return ddlRecordSetFinder.findByC_G_N_D_S(
247 companyId, groupId, name, description, scope, andOperator, start,
248 end, orderByComparator);
249 }
250
251 @Override
252 public int searchCount(
253 long companyId, long groupId, String keywords, int scope) {
254
255 return ddlRecordSetFinder.countByKeywords(
256 companyId, groupId, keywords, scope);
257 }
258
259 @Override
260 public int searchCount(
261 long companyId, long groupId, String name, String description,
262 int scope, boolean andOperator) {
263
264 return ddlRecordSetFinder.countByC_G_N_D_S(
265 companyId, groupId, name, description, scope, andOperator);
266 }
267
268 @Override
269 public DDLRecordSet updateMinDisplayRows(
270 long recordSetId, int minDisplayRows, ServiceContext serviceContext)
271 throws PortalException {
272
273 DDLRecordSet recordSet = ddlRecordSetPersistence.findByPrimaryKey(
274 recordSetId);
275
276 recordSet.setModifiedDate(serviceContext.getModifiedDate(null));
277 recordSet.setMinDisplayRows(minDisplayRows);
278
279 ddlRecordSetPersistence.update(recordSet);
280
281 return recordSet;
282 }
283
284 @Override
285 public DDLRecordSet updateRecordSet(
286 long recordSetId, long ddmStructureId, Map<Locale, String> nameMap,
287 Map<Locale, String> descriptionMap, int minDisplayRows,
288 ServiceContext serviceContext)
289 throws PortalException {
290
291 DDLRecordSet recordSet = ddlRecordSetPersistence.findByPrimaryKey(
292 recordSetId);
293
294 return doUpdateRecordSet(
295 ddmStructureId, nameMap, descriptionMap, minDisplayRows,
296 serviceContext, recordSet);
297 }
298
299 @Override
300 public DDLRecordSet updateRecordSet(
301 long groupId, long ddmStructureId, String recordSetKey,
302 Map<Locale, String> nameMap, Map<Locale, String> descriptionMap,
303 int minDisplayRows, ServiceContext serviceContext)
304 throws PortalException {
305
306 DDLRecordSet recordSet = ddlRecordSetPersistence.findByG_R(
307 groupId, recordSetKey);
308
309 return doUpdateRecordSet(
310 ddmStructureId, nameMap, descriptionMap, minDisplayRows,
311 serviceContext, recordSet);
312 }
313
314 protected DDLRecordSet doUpdateRecordSet(
315 long ddmStructureId, Map<Locale, String> nameMap,
316 Map<Locale, String> descriptionMap, int minDisplayRows,
317 ServiceContext serviceContext, DDLRecordSet recordSet)
318 throws PortalException {
319
320
321
322 validateDDMStructureId(ddmStructureId);
323 validateName(nameMap);
324
325 long oldDDMStructureId = recordSet.getDDMStructureId();
326
327 recordSet.setModifiedDate(serviceContext.getModifiedDate(null));
328 recordSet.setDDMStructureId(ddmStructureId);
329 recordSet.setNameMap(nameMap);
330 recordSet.setDescriptionMap(descriptionMap);
331 recordSet.setMinDisplayRows(minDisplayRows);
332
333 ddlRecordSetPersistence.update(recordSet);
334
335 if (oldDDMStructureId != ddmStructureId) {
336
337
338
339 ddlRecordLocalService.deleteRecords(recordSet.getRecordSetId());
340
341
342
343 DDMStructureLink ddmStructureLink =
344 ddmStructureLinkLocalService.getClassStructureLink(
345 recordSet.getRecordSetId());
346
347 long classNameId = classNameLocalService.getClassNameId(
348 DDLRecordSet.class);
349
350 ddmStructureLinkLocalService.updateStructureLink(
351 ddmStructureLink.getStructureLinkId(), classNameId,
352 recordSet.getRecordSetId(), ddmStructureId);
353 }
354
355 return recordSet;
356 }
357
358 protected void validate(
359 long groupId, long ddmStructureId, String recordSetKey,
360 Map<Locale, String> nameMap)
361 throws PortalException {
362
363 validateDDMStructureId(ddmStructureId);
364
365 if (Validator.isNotNull(recordSetKey)) {
366 DDLRecordSet recordSet = ddlRecordSetPersistence.fetchByG_R(
367 groupId, recordSetKey);
368
369 if (recordSet != null) {
370 RecordSetDuplicateRecordSetKeyException rsdrske =
371 new RecordSetDuplicateRecordSetKeyException();
372
373 rsdrske.setRecordSetKey(recordSet.getRecordSetKey());
374
375 throw rsdrske;
376 }
377 }
378
379 validateName(nameMap);
380 }
381
382 protected void validateDDMStructureId(long ddmStructureId)
383 throws PortalException {
384
385 DDMStructure ddmStructure = ddmStructurePersistence.fetchByPrimaryKey(
386 ddmStructureId);
387
388 if (ddmStructure == null) {
389 throw new RecordSetDDMStructureIdException();
390 }
391 }
392
393 protected void validateName(Map<Locale, String> nameMap)
394 throws PortalException {
395
396 String name = nameMap.get(LocaleUtil.getSiteDefault());
397
398 if (Validator.isNull(name)) {
399 throw new RecordSetNameException();
400 }
401 }
402
403 }