KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > blandware > atleap > service > core > impl > ContentFieldManagerImpl


1 /*
2  * Copyright 2004 Blandware (http://www.blandware.com)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package com.blandware.atleap.service.core.impl;
17
18 import com.blandware.atleap.common.util.PartialCollection;
19 import com.blandware.atleap.common.util.QueryInfo;
20 import com.blandware.atleap.model.core.ContentField;
21 import com.blandware.atleap.model.core.ContentFieldValue;
22 import com.blandware.atleap.model.core.ContentLocale;
23 import com.blandware.atleap.model.core.Localizable;
24 import com.blandware.atleap.persistence.core.ContentFieldDAO;
25 import com.blandware.atleap.persistence.core.ContentFieldValueDAO;
26 import com.blandware.atleap.persistence.core.ContentLocaleDAO;
27 import com.blandware.atleap.persistence.core.LocalizableDAO;
28 import com.blandware.atleap.service.core.ContentFieldManager;
29 import com.blandware.atleap.service.exception.BeanAlreadyExistsException;
30 import com.blandware.atleap.service.exception.BeanNotFoundException;
31 import com.blandware.atleap.service.exception.ContentLocaleNotFoundException;
32 import com.blandware.atleap.service.exception.OwnerNotFoundException;
33
34 import java.util.List JavaDoc;
35
36 /**
37  * <p>Implementation of ContentFieldManager</p>
38  * <p><a HREF="ContentFieldManagerImpl.java.htm"><i>View Source</i></a>
39  * </p>
40  *
41  * @author Sergey Zubtcovskii <a HREF="mailto:sergey.zubtcovskii@blandware.com">&lt;sergey.zubtcovskii@blandware.com&gt;</a>
42  * @version $Revision: 1.20 $ $Date: 2005/08/03 15:39:00 $
43  */

44 public class ContentFieldManagerImpl extends BaseManagerImpl implements ContentFieldManager {
45
46     /**
47      * Localizable DAO
48      */

49     protected LocalizableDAO localizableDAO;
50     /**
51      * Content field value DAO
52      */

53     protected ContentFieldValueDAO contentFieldValueDAO;
54     /**
55      * Content field DAO
56      */

57     protected ContentFieldDAO contentFieldDAO;
58     /**
59      * Content locale DAO
60      */

61     protected ContentLocaleDAO contentLocaleDAO;
62
63     /**
64      * Sets DAO for operating with localizables
65      *
66      * @param localizableDAO the DAO to set
67      */

68     public void setLocalizableDAO(LocalizableDAO localizableDAO) {
69         this.localizableDAO = localizableDAO;
70     }
71
72     /**
73      * Sets DAO for operating with content field values
74      *
75      * @param contentFieldValueDAO the DAO to set
76      */

77     public void setContentFieldValueDAO(ContentFieldValueDAO contentFieldValueDAO) {
78         this.contentFieldValueDAO = contentFieldValueDAO;
79     }
80
81     /**
82      * Sets DAO for operating with content fields
83      *
84      * @param contentFieldDAO the DAO to set
85      */

86     public void setContentFieldDAO(ContentFieldDAO contentFieldDAO) {
87         this.contentFieldDAO = contentFieldDAO;
88     }
89
90     /**
91      * Sets DAO for operating with content locales
92      *
93      * @param contentLocaleDAO the DAO to set
94      */

95     public void setContentLocaleDAO(ContentLocaleDAO contentLocaleDAO) {
96         this.contentLocaleDAO = contentLocaleDAO;
97     }
98
99     // F I E L D S
100

101     //~ CRUD Methods ================================================================
102

103     /**
104      * @see com.blandware.atleap.service.core.ContentFieldManager#createContentField(com.blandware.atleap.model.core.ContentField, java.lang.Long)
105      */

106     public Long JavaDoc createContentField(ContentField contentField, Long JavaDoc ownerId) throws BeanNotFoundException, BeanAlreadyExistsException {
107
108         if ( log.isDebugEnabled() ) {
109             log.debug("Creating new field...");
110         }
111
112         Localizable localizable = null;
113         localizable = localizableDAO.retrieveLocalizable(ownerId);
114
115         if ( localizable == null ) {
116             String JavaDoc errorMessage = "No localizable with ID=" + ownerId + "could be found";
117             if ( log.isErrorEnabled() ) {
118                 log.error(errorMessage);
119             }
120             throw new OwnerNotFoundException(errorMessage);
121         }
122
123         if ( contentFieldDAO.hasDuplicates(contentField, ownerId) ) {
124             throw new BeanAlreadyExistsException("Content field with the same identifier already exists on owner with ID=" + ownerId);
125         }
126
127         Long JavaDoc fieldId = contentFieldDAO.createContentField(contentField, localizable);
128
129         if ( log.isDebugEnabled() ) {
130             log.debug("ContentField has been created successfully. Its ID is " + fieldId);
131         }
132         return fieldId;
133     }
134
135     /**
136      * @see com.blandware.atleap.service.core.ContentFieldManager#retrieveContentField(java.lang.Long)
137      */

138     public ContentField retrieveContentField(Long JavaDoc contentFieldId) {
139         ContentField field = null;
140         field = contentFieldDAO.retrieveContentField(contentFieldId);
141         return field;
142     }
143
144     /**
145      * @see com.blandware.atleap.service.core.ContentFieldManager#updateContentField(com.blandware.atleap.model.core.ContentField, java.lang.Long)
146      */

147     public void updateContentField(ContentField contentField, Long JavaDoc localizableId) throws BeanNotFoundException, BeanAlreadyExistsException {
148
149         // remove field from cache in order to prevent Hibernate from assigning new version number
150
contentFieldDAO.removeFromCache(contentField);
151
152         if ( log.isDebugEnabled() ) {
153             log.debug("Updating contentField with ID=" + contentField.getId() + "...");
154         }
155
156         Localizable localizable = null;
157         localizable = localizableDAO.retrieveLocalizable(localizableId);
158
159         if ( localizable == null ) {
160             String JavaDoc errorMessage = "No localizable with ID=" + localizableId + "could be found";
161             if ( log.isErrorEnabled() ) {
162                 log.error(errorMessage);
163             }
164             throw new OwnerNotFoundException(errorMessage);
165         }
166
167         if ( contentFieldDAO.hasDuplicates(contentField, localizableId) ) {
168             throw new BeanAlreadyExistsException("Content field with the same identifier already exists on owner with ID=" + localizableId);
169         }
170
171         // localizable contentField
172
contentFieldDAO.updateContentField(contentField, localizable);
173
174
175         if ( log.isDebugEnabled() ) {
176             log.debug("ContentField was updated successfully.");
177         }
178     }
179
180     /**
181      * @see com.blandware.atleap.service.core.ContentFieldManager#deleteContentField(java.lang.Long)
182      */

183     public void deleteContentField(Long JavaDoc contentFieldId) throws BeanNotFoundException {
184         if ( log.isDebugEnabled() ) {
185             log.debug("Deleting field with ID=" + contentFieldId);
186         }
187
188         ContentField contentField = contentFieldDAO.retrieveContentField(contentFieldId);
189         if ( contentField == null ) {
190             String JavaDoc errorMessage = "No contentField with ID=" + contentFieldId + "could be found";
191             throw new BeanNotFoundException(errorMessage);
192         }
193
194         contentFieldDAO.deleteContentField(contentField);
195
196         if ( log.isDebugEnabled() ) {
197             log.debug("Contentfield has been deleted successfully");
198         }
199     }
200
201     // ~ Additional methods ================================================================
202

203     /**
204      * @see com.blandware.atleap.service.core.ContentFieldManager#listContentFields(com.blandware.atleap.common.util.QueryInfo)
205      */

206     public PartialCollection listContentFields(QueryInfo queryInfo) {
207         return contentFieldDAO.listContentFields(queryInfo);
208     }
209
210     // ~ Finders ================================================================
211

212     /**
213      * @see com.blandware.atleap.service.core.ContentFieldManager#findContentFieldByLayoutDefinition(java.lang.String, java.lang.String)
214      */

215     public ContentField findContentFieldByLayoutDefinition(String JavaDoc identifier, String JavaDoc definition) {
216         return contentFieldDAO.findContentFieldByLayoutDefinition(identifier, definition);
217     }
218
219     /**
220      * @see com.blandware.atleap.service.core.ContentFieldManager#findContentFieldByPageUri(java.lang.String, java.lang.String)
221      */

222     public ContentField findContentFieldByPageUri(String JavaDoc identifier, String JavaDoc uri) {
223         return contentFieldDAO.findContentFieldByPageUri(identifier, uri);
224     }
225
226     /**
227      * @see com.blandware.atleap.service.core.ContentFieldManager#findIndexedContentFieldsByLayoutDefinition(java.lang.String, java.lang.String, java.lang.String)
228      */

229     public List JavaDoc findIndexedContentFieldsByLayoutDefinition(String JavaDoc identifier, String JavaDoc definition, String JavaDoc locale) {
230         return contentFieldDAO.findIndexedContentFieldsByLayoutDefinitionAndLocale(identifier, definition, locale);
231     }
232
233     /**
234      * @see com.blandware.atleap.service.core.ContentFieldManager#findIndexedContentFieldsByPageUri(java.lang.String, java.lang.String, java.lang.String)
235      */

236     public List JavaDoc findIndexedContentFieldsByPageUri(String JavaDoc identifier, String JavaDoc uri, String JavaDoc locale) {
237         return contentFieldDAO.findIndexedContentFieldsByPageUriAndLocale(identifier, uri, locale);
238     }
239
240
241
242     // C O N T E N T F I E L D V A L U E
243

244     //~ CRUD Methods ================================================================
245

246     /**
247      * @see com.blandware.atleap.service.core.ContentFieldManager#createContentFieldValue(com.blandware.atleap.model.core.ContentFieldValue, java.lang.Long, java.lang.String)
248      */

249     public Long JavaDoc createContentFieldValue(ContentFieldValue contentFieldValue, Long JavaDoc fieldId, String JavaDoc localeIdentifier) throws BeanNotFoundException, BeanAlreadyExistsException {
250
251         if ( log.isDebugEnabled() ) {
252             log.debug("Creating new content field value...");
253         }
254
255         ContentField field = null;
256         field = contentFieldDAO.retrieveContentField(fieldId);
257         if ( field == null ) {
258             String JavaDoc errorMessage = "No content field with ID=" + fieldId + "could be found";
259             if ( log.isErrorEnabled() ) {
260                 log.error(errorMessage);
261             }
262             throw new OwnerNotFoundException(errorMessage);
263         }
264
265         ContentLocale contentLocale = null;
266         contentLocale = contentLocaleDAO.retrieveContentLocale(localeIdentifier);
267
268         if ( contentLocale == null ) {
269             String JavaDoc errorMessage = "No content locale with identifier=" + localeIdentifier + "could be found";
270             if ( log.isErrorEnabled() ) {
271                 log.error(errorMessage);
272             }
273             throw new ContentLocaleNotFoundException(errorMessage);
274         }
275
276         if ( contentFieldValueDAO.hasDuplicates(contentFieldValue, fieldId, localeIdentifier) ) {
277             throw new BeanAlreadyExistsException("Content field value already exists for field with ID=" + fieldId + " and locale with identifier='" + localeIdentifier + "'");
278         }
279
280         Long JavaDoc contentFieldValueId = contentFieldValueDAO.createContentFieldValue(contentFieldValue, field, contentLocale);
281
282         if ( log.isDebugEnabled() ) {
283             log.debug("Content has been created successfully. Its ID is " + contentFieldValueId);
284         }
285         return contentFieldValueId;
286     }
287
288     /**
289      * @see com.blandware.atleap.service.core.ContentFieldManager#retrieveContentFieldValue(java.lang.Long)
290      */

291     public ContentFieldValue retrieveContentFieldValue(Long JavaDoc contentFieldValueId) {
292         ContentFieldValue contentFieldValue = null;
293         contentFieldValue = contentFieldValueDAO.retrieveContentFieldValue(contentFieldValueId);
294         return contentFieldValue;
295     }
296
297     /**
298      * @see com.blandware.atleap.service.core.ContentFieldManager#updateContentFieldValue(com.blandware.atleap.model.core.ContentFieldValue, java.lang.Long, java.lang.String)
299      */

300     public void updateContentFieldValue(ContentFieldValue contentFieldValue, Long JavaDoc fieldId, String JavaDoc localeIdentifier) throws BeanNotFoundException, BeanAlreadyExistsException {
301
302         // remove value from cache in order to prevent Hibernate from assigning new version number
303
contentFieldValueDAO.removeFromCache(contentFieldValue);
304
305         if ( log.isDebugEnabled() ) {
306             log.debug("Updating field content with ID=" + contentFieldValue.getId() + "...");
307         }
308
309         ContentField field = null;
310         field = contentFieldDAO.retrieveContentField(fieldId);
311         if ( field == null ) {
312             String JavaDoc errorMessage = "No field with ID=" + fieldId + "could be found";
313             if ( log.isErrorEnabled() ) {
314                 log.error(errorMessage);
315             }
316             throw new OwnerNotFoundException(errorMessage);
317         }
318
319         ContentLocale contentLocale = null;
320         contentLocale = contentLocaleDAO.retrieveContentLocale(localeIdentifier);
321         if ( contentLocale == null ) {
322             String JavaDoc errorMessage = "No content locale with identifier=" + localeIdentifier + "could be found";
323             if ( log.isErrorEnabled() ) {
324                 log.error(errorMessage);
325             }
326             throw new ContentLocaleNotFoundException(errorMessage);
327         }
328
329         if ( contentFieldValueDAO.hasDuplicates(contentFieldValue, fieldId, localeIdentifier) ) {
330             throw new BeanAlreadyExistsException("Content field value already exists for field with ID=" + fieldId + " and locale with identifier='" + localeIdentifier + "'");
331         }
332         
333         // updating field content
334
contentFieldValueDAO.updateContentFieldValue(contentFieldValue, field, contentLocale);
335
336         if ( log.isDebugEnabled() ) {
337             log.debug("ContentField content was updated successfully.");
338         }
339     }
340
341     /**
342      * @see com.blandware.atleap.service.core.ContentFieldManager#deleteContentFieldValue(java.lang.Long)
343      */

344     public void deleteContentFieldValue(Long JavaDoc contentFieldValueId) throws BeanNotFoundException {
345         if ( log.isDebugEnabled() ) {
346             log.debug("Deleting field content with ID=" + contentFieldValueId);
347         }
348
349         ContentFieldValue contentFieldValue = contentFieldValueDAO.retrieveContentFieldValue(contentFieldValueId);
350         if ( contentFieldValue == null ) {
351             String JavaDoc errorMessage = "No contentFieldValue with ID=" + contentFieldValueId + "could be found";
352             throw new BeanNotFoundException(errorMessage);
353         }
354
355         contentFieldValueDAO.deleteContentFieldValue(contentFieldValue);
356         if ( log.isDebugEnabled() ) {
357             log.debug("ContentField content has been deleted successfully");
358         }
359     }
360
361     // ~ Additional methods ================================================================
362

363     /**
364      * @see com.blandware.atleap.service.core.ContentFieldManager#listContentFieldValues(com.blandware.atleap.common.util.QueryInfo)
365      */

366     public PartialCollection listContentFieldValues(QueryInfo queryInfo) {
367         return contentFieldValueDAO.listContentFieldValues(queryInfo);
368     }
369
370     // ~ Finders ================================================================
371

372     /**
373      * @see com.blandware.atleap.service.core.ContentFieldManager#findContentFieldValueByUriAndIdentifierAndLocale(java.lang.String, java.lang.String, java.lang.String)
374      */

375     public ContentFieldValue findContentFieldValueByUriAndIdentifierAndLocale(String JavaDoc uri, String JavaDoc identifier, String JavaDoc localeIdentifier) {
376         return contentFieldValueDAO.findContentFieldValueByUriAndIdentifierAndLocale(uri, identifier, localeIdentifier);
377     }
378
379     /**
380      * @see com.blandware.atleap.service.core.ContentFieldManager#findContentFieldValueByDefinitionAndIdentifierAndLocale(java.lang.String, java.lang.String, java.lang.String)
381      */

382     public ContentFieldValue findContentFieldValueByDefinitionAndIdentifierAndLocale(String JavaDoc definition, String JavaDoc identifier, String JavaDoc localeIdentifier) {
383         return contentFieldValueDAO.findContentFieldValueByDefinitionAndIdentifierAndLocale(definition, identifier, localeIdentifier);
384     }
385
386     /**
387      * @see com.blandware.atleap.service.core.ContentFieldManager#findContentFieldValueByLocalizableIdAndIdentifierAndLocale(java.lang.Long, java.lang.String, java.lang.String)
388      */

389     public ContentFieldValue findContentFieldValueByLocalizableIdAndIdentifierAndLocale(Long JavaDoc localizableId, String JavaDoc identifier, String JavaDoc localeIdentifier) {
390         return contentFieldValueDAO.findContentFieldValueByLocalizableIdAndIdentifierAndLocale(localizableId, identifier, localeIdentifier);
391     }
392
393     /**
394      * @see com.blandware.atleap.service.core.ContentFieldManager#findContentFieldValueByContentFieldIdAndLocale(Long, String)
395      */

396     public ContentFieldValue findContentFieldValueByContentFieldIdAndLocale(Long JavaDoc fieldId, String JavaDoc localeIdentifier) {
397         ContentField field = retrieveContentField(fieldId);
398         ContentLocale locale = contentLocaleDAO.retrieveContentLocale(localeIdentifier);
399         return contentFieldValueDAO.findContentFieldValueByContentFieldAndLocale(field, locale);
400     }
401
402
403 }
404
405
Popular Tags