001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.dynamicdatalists.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.security.permission.ActionKeys;
019    import com.liferay.portal.service.ServiceContext;
020    import com.liferay.portlet.dynamicdatalists.model.DDLRecord;
021    import com.liferay.portlet.dynamicdatalists.service.base.DDLRecordServiceBaseImpl;
022    import com.liferay.portlet.dynamicdatalists.service.permission.DDLRecordPermission;
023    import com.liferay.portlet.dynamicdatalists.service.permission.DDLRecordSetPermission;
024    import com.liferay.portlet.dynamicdatamapping.storage.DDMFormValues;
025    import com.liferay.portlet.dynamicdatamapping.storage.Fields;
026    
027    import java.io.Serializable;
028    
029    import java.util.Locale;
030    import java.util.Map;
031    
032    /**
033     * Provides the remote service for accessing, adding, deleting, and updating
034     * dynamic data list (DDL) records. Its methods include permission checks.
035     *
036     * @author Brian Wing Shun Chan
037     * @author Eduardo Lundgren
038     */
039    public class DDLRecordServiceImpl extends DDLRecordServiceBaseImpl {
040    
041            @Override
042            public DDLRecord addRecord(
043                            long groupId, long recordSetId, int displayIndex,
044                            DDMFormValues ddmFormValues, ServiceContext serviceContext)
045                    throws PortalException {
046    
047                    DDLRecordSetPermission.check(
048                            getPermissionChecker(), recordSetId, ActionKeys.ADD_RECORD);
049    
050                    return ddlRecordLocalService.addRecord(
051                            getGuestOrUserId(), groupId, recordSetId, displayIndex,
052                            ddmFormValues, serviceContext);
053            }
054    
055            @Override
056            public DDLRecord addRecord(
057                            long groupId, long recordSetId, int displayIndex, Fields fields,
058                            ServiceContext serviceContext)
059                    throws PortalException {
060    
061                    DDLRecordSetPermission.check(
062                            getPermissionChecker(), recordSetId, ActionKeys.ADD_RECORD);
063    
064                    return ddlRecordLocalService.addRecord(
065                            getGuestOrUserId(), groupId, recordSetId, displayIndex, fields,
066                            serviceContext);
067            }
068    
069            @Override
070            public DDLRecord addRecord(
071                            long groupId, long recordSetId, int displayIndex,
072                            Map<String, Serializable> fieldsMap, ServiceContext serviceContext)
073                    throws PortalException {
074    
075                    DDLRecordSetPermission.check(
076                            getPermissionChecker(), recordSetId, ActionKeys.ADD_RECORD);
077    
078                    return ddlRecordLocalService.addRecord(
079                            getGuestOrUserId(), groupId, recordSetId, displayIndex, fieldsMap,
080                            serviceContext);
081            }
082    
083            @Override
084            public void deleteRecord(long recordId) throws PortalException {
085                    DDLRecord record = ddlRecordLocalService.getDDLRecord(recordId);
086    
087                    DDLRecordPermission.check(
088                            getPermissionChecker(), record.getRecordId(), ActionKeys.DELETE);
089    
090                    ddlRecordLocalService.deleteRecord(record);
091            }
092    
093            @Override
094            public DDLRecord deleteRecordLocale(
095                            long recordId, Locale locale, ServiceContext serviceContext)
096                    throws PortalException {
097    
098                    DDLRecord record = ddlRecordLocalService.getDDLRecord(recordId);
099    
100                    DDLRecordPermission.check(
101                            getPermissionChecker(), record.getRecordId(), ActionKeys.UPDATE);
102    
103                    return ddlRecordLocalService.deleteRecordLocale(
104                            recordId, locale, serviceContext);
105            }
106    
107            @Override
108            public DDLRecord getRecord(long recordId) throws PortalException {
109                    DDLRecord record = ddlRecordLocalService.getDDLRecord(recordId);
110    
111                    DDLRecordPermission.check(
112                            getPermissionChecker(), record.getRecordId(), ActionKeys.VIEW);
113    
114                    return record;
115            }
116    
117            @Override
118            public void revertRecord(
119                            long recordId, String version, ServiceContext serviceContext)
120                    throws PortalException {
121    
122                    DDLRecord record = ddlRecordLocalService.getDDLRecord(recordId);
123    
124                    DDLRecordPermission.check(
125                            getPermissionChecker(), record.getRecordId(), ActionKeys.UPDATE);
126    
127                    ddlRecordLocalService.revertRecord(
128                            getGuestOrUserId(), recordId, version, serviceContext);
129            }
130    
131            /**
132             * @deprecated As of 7.0.0, replaced by {@link #revertRecord(long, long,
133             *             String, ServiceContext)}
134             */
135            @Deprecated
136            @Override
137            public void revertRecordVersion(
138                            long recordId, String version, ServiceContext serviceContext)
139                    throws PortalException {
140    
141                    revertRecord(recordId, version, serviceContext);
142            }
143    
144            @Override
145            public DDLRecord updateRecord(
146                            long recordId, boolean majorVersion, int displayIndex,
147                            DDMFormValues ddmFormValues, ServiceContext serviceContext)
148                    throws PortalException {
149    
150                    DDLRecord record = ddlRecordLocalService.getDDLRecord(recordId);
151    
152                    DDLRecordPermission.check(
153                            getPermissionChecker(), record.getRecordId(), ActionKeys.UPDATE);
154    
155                    return ddlRecordLocalService.updateRecord(
156                            getUserId(), recordId, majorVersion, displayIndex, ddmFormValues,
157                            serviceContext);
158            }
159    
160            @Override
161            public DDLRecord updateRecord(
162                            long recordId, boolean majorVersion, int displayIndex,
163                            Fields fields, boolean mergeFields, ServiceContext serviceContext)
164                    throws PortalException {
165    
166                    DDLRecord record = ddlRecordLocalService.getDDLRecord(recordId);
167    
168                    DDLRecordPermission.check(
169                            getPermissionChecker(), record.getRecordId(), ActionKeys.UPDATE);
170    
171                    return ddlRecordLocalService.updateRecord(
172                            getUserId(), recordId, majorVersion, displayIndex, fields,
173                            mergeFields, serviceContext);
174            }
175    
176            @Override
177            public DDLRecord updateRecord(
178                            long recordId, int displayIndex,
179                            Map<String, Serializable> fieldsMap, boolean mergeFields,
180                            ServiceContext serviceContext)
181                    throws PortalException {
182    
183                    DDLRecord record = ddlRecordLocalService.getDDLRecord(recordId);
184    
185                    DDLRecordPermission.check(
186                            getPermissionChecker(), record.getRecordId(), ActionKeys.UPDATE);
187    
188                    return ddlRecordLocalService.updateRecord(
189                            getUserId(), recordId, displayIndex, fieldsMap, mergeFields,
190                            serviceContext);
191            }
192    
193    }