001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.exception.InvalidRepositoryException;
018 import com.liferay.portal.exception.NoSuchRepositoryException;
019 import com.liferay.portal.kernel.bean.BeanReference;
020 import com.liferay.portal.kernel.exception.PortalException;
021 import com.liferay.portal.kernel.log.Log;
022 import com.liferay.portal.kernel.log.LogFactoryUtil;
023 import com.liferay.portal.kernel.repository.InvalidRepositoryIdException;
024 import com.liferay.portal.kernel.repository.LocalRepository;
025 import com.liferay.portal.kernel.repository.RepositoryFactoryUtil;
026 import com.liferay.portal.kernel.repository.RepositoryProvider;
027 import com.liferay.portal.kernel.repository.capabilities.RepositoryEventTriggerCapability;
028 import com.liferay.portal.kernel.repository.event.RepositoryEventType;
029 import com.liferay.portal.kernel.systemevent.SystemEvent;
030 import com.liferay.portal.kernel.util.UnicodeProperties;
031 import com.liferay.portal.kernel.util.Validator;
032 import com.liferay.portal.model.Group;
033 import com.liferay.portal.model.Repository;
034 import com.liferay.portal.model.SystemEventConstants;
035 import com.liferay.portal.model.User;
036 import com.liferay.portal.service.ServiceContext;
037 import com.liferay.portal.service.base.RepositoryLocalServiceBaseImpl;
038 import com.liferay.portlet.documentlibrary.exception.RepositoryNameException;
039 import com.liferay.portlet.documentlibrary.model.DLFolder;
040
041 import java.util.List;
042
043
046 public class RepositoryLocalServiceImpl extends RepositoryLocalServiceBaseImpl {
047
048 @Override
049 public Repository addRepository(
050 long userId, long groupId, long classNameId, long parentFolderId,
051 String name, String description, String portletId,
052 UnicodeProperties typeSettingsProperties, boolean hidden,
053 ServiceContext serviceContext)
054 throws PortalException {
055
056 User user = userPersistence.findByPrimaryKey(userId);
057
058 long repositoryId = counterLocalService.increment();
059
060 Repository repository = repositoryPersistence.create(repositoryId);
061
062 repository.setUuid(serviceContext.getUuid());
063 repository.setGroupId(groupId);
064 repository.setCompanyId(user.getCompanyId());
065 repository.setUserId(user.getUserId());
066 repository.setUserName(user.getFullName());
067 repository.setClassNameId(classNameId);
068 repository.setName(name);
069 repository.setDescription(description);
070 repository.setPortletId(portletId);
071 repository.setTypeSettingsProperties(typeSettingsProperties);
072 repository.setDlFolderId(
073 getDLFolderId(
074 user, groupId, repositoryId, parentFolderId, name, description,
075 hidden, serviceContext));
076
077 repositoryPersistence.update(repository);
078
079 try {
080 RepositoryFactoryUtil.createRepository(repositoryId);
081 }
082 catch (Exception e) {
083 if (_log.isWarnEnabled()) {
084 _log.warn(e, e);
085 }
086
087 throw new InvalidRepositoryException(e);
088 }
089
090 return repository;
091 }
092
093
098 @Deprecated
099 @Override
100 public Repository addRepository(
101 long userId, long groupId, long classNameId, long parentFolderId,
102 String name, String description, String portletId,
103 UnicodeProperties typeSettingsProperties,
104 ServiceContext serviceContext)
105 throws PortalException {
106
107 return addRepository(
108 userId, groupId, classNameId, parentFolderId, name, description,
109 portletId, typeSettingsProperties, false, serviceContext);
110 }
111
112 @Override
113 public void checkRepository(long repositoryId) {
114 Group group = groupPersistence.fetchByPrimaryKey(repositoryId);
115
116 if (group != null) {
117 return;
118 }
119
120 try {
121 repositoryPersistence.findByPrimaryKey(repositoryId);
122 }
123 catch (NoSuchRepositoryException nsre) {
124 throw new InvalidRepositoryIdException(nsre.getMessage());
125 }
126 }
127
128 @Override
129 public void deleteRepositories(long groupId) throws PortalException {
130 List<Repository> repositories = repositoryPersistence.findByGroupId(
131 groupId);
132
133 for (Repository repository : repositories) {
134 deleteRepository(repository.getRepositoryId());
135 }
136 }
137
138 @Override
139 public Repository deleteRepository(long repositoryId)
140 throws PortalException {
141
142 Repository repository = repositoryPersistence.fetchByPrimaryKey(
143 repositoryId);
144
145 if (repository == null) {
146 return null;
147 }
148
149 LocalRepository localRepository = repositoryProvider.getLocalRepository(
150 repositoryId);
151
152 if (localRepository.isCapabilityProvided(
153 RepositoryEventTriggerCapability.class)) {
154
155 RepositoryEventTriggerCapability repositoryEventTriggerCapability =
156 localRepository.getCapability(
157 RepositoryEventTriggerCapability.class);
158
159 repositoryEventTriggerCapability.trigger(
160 RepositoryEventType.Delete.class, LocalRepository.class,
161 localRepository);
162 }
163
164 return repositoryLocalService.deleteRepository(repository);
165 }
166
167 @Override
168 @SystemEvent(
169 action = SystemEventConstants.ACTION_SKIP,
170 type = SystemEventConstants.TYPE_DELETE
171 )
172 public Repository deleteRepository(Repository repository) {
173 expandoValueLocalService.deleteValues(
174 Repository.class.getName(), repository.getRepositoryId());
175
176 DLFolder dlFolder = dlFolderLocalService.fetchDLFolder(
177 repository.getDlFolderId());
178
179 if (dlFolder != null) {
180 dlFolderLocalService.deleteDLFolder(dlFolder);
181 }
182
183 repositoryPersistence.remove(repository);
184
185 repositoryEntryPersistence.removeByRepositoryId(
186 repository.getRepositoryId());
187
188 return repository;
189 }
190
191 @Override
192 public Repository fetchRepository(long groupId, String portletId) {
193 return fetchRepository(groupId, portletId, portletId);
194 }
195
196 @Override
197 public Repository fetchRepository(
198 long groupId, String name, String portletId) {
199
200 return repositoryPersistence.fetchByG_N_P(groupId, name, portletId);
201 }
202
203 @Override
204 public List<Repository> getGroupRepositories(long groupId) {
205 return repositoryPersistence.findByGroupId(groupId);
206 }
207
208 @Override
209 public Repository getRepository(long groupId, String portletId)
210 throws PortalException {
211
212 return getRepository(groupId, portletId, portletId);
213 }
214
215 @Override
216 public Repository getRepository(long groupId, String name, String portletId)
217 throws PortalException {
218
219 return repositoryPersistence.findByG_N_P(groupId, name, portletId);
220 }
221
222 @Override
223 public UnicodeProperties getTypeSettingsProperties(long repositoryId)
224 throws PortalException {
225
226 Repository repository = repositoryPersistence.findByPrimaryKey(
227 repositoryId);
228
229 return repository.getTypeSettingsProperties();
230 }
231
232 @Override
233 public void updateRepository(
234 long repositoryId, String name, String description)
235 throws PortalException {
236
237 Repository repository = repositoryPersistence.findByPrimaryKey(
238 repositoryId);
239
240 repository.setName(name);
241 repository.setDescription(description);
242
243 repositoryPersistence.update(repository);
244
245 DLFolder dlFolder = dlFolderPersistence.findByPrimaryKey(
246 repository.getDlFolderId());
247
248 dlFolder.setName(name);
249 dlFolder.setDescription(description);
250
251 dlFolderPersistence.update(dlFolder);
252 }
253
254 @Override
255 public void updateRepository(
256 long repositoryId, UnicodeProperties typeSettingsProperties)
257 throws PortalException {
258
259 Repository repository = repositoryPersistence.findByPrimaryKey(
260 repositoryId);
261
262 repository.setTypeSettingsProperties(typeSettingsProperties);
263
264 repositoryPersistence.update(repository);
265 }
266
267 protected long getDLFolderId(
268 User user, long groupId, long repositoryId, long parentFolderId,
269 String name, String description, boolean hidden,
270 ServiceContext serviceContext)
271 throws PortalException {
272
273 if (Validator.isNull(name)) {
274 throw new RepositoryNameException();
275 }
276
277 DLFolder dlFolder = dlFolderLocalService.addFolder(
278 user.getUserId(), groupId, repositoryId, true, parentFolderId, name,
279 description, hidden, serviceContext);
280
281 return dlFolder.getFolderId();
282 }
283
284 @BeanReference(type = RepositoryProvider.class)
285 protected RepositoryProvider repositoryProvider;
286
287 private static final Log _log = LogFactoryUtil.getLog(
288 RepositoryLocalServiceImpl.class);
289
290 }