KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > blandware > atleap > service > news > impl > NewsManagerImpl


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.news.impl;
17
18 import com.blandware.atleap.common.util.PartialCollection;
19 import com.blandware.atleap.common.util.QueryInfo;
20 import com.blandware.atleap.model.news.NewsItem;
21 import com.blandware.atleap.persistence.core.PageDAO;
22 import com.blandware.atleap.persistence.exception.DeleteException;
23 import com.blandware.atleap.persistence.news.NewsDAO;
24 import com.blandware.atleap.service.core.impl.PageManagerImpl;
25 import com.blandware.atleap.service.exception.BeanAlreadyExistsException;
26 import com.blandware.atleap.service.exception.BeanNotFoundException;
27 import com.blandware.atleap.service.news.NewsManager;
28
29 import java.util.Map JavaDoc;
30 import java.util.List JavaDoc;
31 import java.util.Date JavaDoc;
32 import java.util.Iterator JavaDoc;
33
34 /**
35  * <p>Implementation of NewsManager</p>
36  * <p><a HREF="NewsManagerImpl.java.htm"><i>View Source</i></a>
37  * </p>
38  *
39  * @author Sergey Zubtcovskii <a HREF="mailto:sergey.zubtcovskii@blandware.com">&lt;sergey.zubtcovskii@blandware.com&gt;</a>
40  * @version $Revision: 1.8 $ $Date: 2005/08/02 14:53:42 $
41  */

42 public class NewsManagerImpl extends PageManagerImpl implements NewsManager {
43
44     /**
45      * News DAO
46      */

47     protected NewsDAO newsDAO;
48     /**
49      * Page DAO
50      */

51     protected PageDAO pageDAO;
52
53     /**
54      * Creates new instance of PageManagerImpl
55      */

56     public NewsManagerImpl() {
57     }
58
59     /**
60      * Sets DAO for operating with news items
61      *
62      * @param newsDAO the DAO to set
63      */

64     public void setNewsDAO(NewsDAO newsDAO) {
65         this.newsDAO = newsDAO;
66     }
67
68     /**
69      * Sets DAO for operating with pages
70      *
71      * @param pageDAO the DAO to set
72      */

73     public void setPageDAO(PageDAO pageDAO) {
74         this.pageDAO = pageDAO;
75     }
76
77     //~ CRUD Methods ================================================================
78

79     /**
80      * @see com.blandware.atleap.service.news.NewsManager#createNewsItem(com.blandware.atleap.model.news.NewsItem, java.util.Map)
81      */

82     public Long JavaDoc createNewsItem(NewsItem newsItem, Map JavaDoc linkedObjects) throws BeanAlreadyExistsException {
83
84         if ( log.isDebugEnabled() ) {
85             log.debug("Creating new news item...");
86         }
87
88         if ( pageDAO.hasDuplicates(newsItem) ) {
89             // linkable item already exists
90
String JavaDoc errorMessage = "Linkable item with URI '" + newsItem.getUri() + "' already exists";
91             if ( log.isErrorEnabled() ) {
92                 log.error(errorMessage);
93             }
94             throw new BeanAlreadyExistsException(errorMessage);
95         }
96
97         // linkable item does not exist
98
Long JavaDoc newsItemId = newsDAO.createNewsItem(newsItem, linkedObjects);
99         if ( log.isDebugEnabled() ) {
100             log.debug("New news item has been created successfully. Its ID is " + newsItemId);
101         }
102         return newsItemId;
103     }
104
105     /**
106      * @see com.blandware.atleap.service.news.NewsManager#retrieveNewsItem(Long)
107      */

108     public NewsItem retrieveNewsItem(Long JavaDoc newsItemId) {
109         NewsItem newsItem = null;
110         newsItem = newsDAO.retrieveNewsItem(newsItemId);
111
112         return newsItem;
113     }
114
115     /**
116      * @see com.blandware.atleap.service.news.NewsManager#retrieveNewsItemLite(Long)
117      */

118     public NewsItem retrieveNewsItemLite(Long JavaDoc newsItemId) {
119         return newsDAO.retrieveNewsItemLite(newsItemId);
120     }
121
122     /**
123      * @see com.blandware.atleap.service.news.NewsManager#updateNewsItem(com.blandware.atleap.model.news.NewsItem, java.util.Map)
124      */

125     public void updateNewsItem(NewsItem newsItem, Map JavaDoc linkedObjects) throws BeanAlreadyExistsException {
126
127         // remove news item from cache in order to prevent Hibernate from assigning new version number
128
newsDAO.removeFromCache(newsItem);
129
130         if ( log.isDebugEnabled() ) {
131             log.debug("Updating news item...");
132         }
133
134         if ( pageDAO.hasDuplicates(newsItem) ) {
135             // linkable item already exists
136
String JavaDoc errorMessage = "Linkable item with URI '" + newsItem.getUri() + "' already exists";
137             if ( log.isErrorEnabled() ) {
138                 log.error(errorMessage);
139             }
140             throw new BeanAlreadyExistsException(errorMessage);
141         }
142
143         // linkable item does not exist
144
newsDAO.updateNewsItem(newsItem, linkedObjects);
145
146         if ( log.isDebugEnabled() ) {
147             log.debug("News item was updated successfully.");
148         }
149     }
150
151     /**
152      * @see com.blandware.atleap.service.news.NewsManager#updateNewsItem(com.blandware.atleap.model.news.NewsItem)
153      */

154     public void updateNewsItem(NewsItem newsItem) throws BeanAlreadyExistsException {
155         updateNewsItem(newsItem, null);
156     }
157
158     /**
159      * @see com.blandware.atleap.service.news.NewsManager#deleteNewsItem(Long)
160      */

161     public void deleteNewsItem(Long JavaDoc newsItemId) throws DeleteException, BeanNotFoundException {
162         NewsItem newsItem = newsDAO.retrieveNewsItem(newsItemId);
163         if ( newsItem == null ) {
164             String JavaDoc errorMessage = "News item with ID=" + newsItemId + " does not exist";
165             throw new BeanNotFoundException(errorMessage);
166         }
167         newsDAO.deleteNewsItem(newsItem);
168         if ( log.isDebugEnabled() ) {
169             log.debug("Deleted news item: ID=" + newsItemId);
170         }
171     }
172
173     // ~ Additional methods ================================================================
174

175     /**
176      * @see com.blandware.atleap.service.news.NewsManager#listNewsItems(com.blandware.atleap.common.util.QueryInfo)
177      */

178     public PartialCollection listNewsItems(QueryInfo queryInfo) {
179         return newsDAO.listNewsItems(queryInfo);
180     }
181
182     /**
183      * @see com.blandware.atleap.service.news.NewsManager#getLastNews(com.blandware.atleap.common.util.QueryInfo)
184      */

185     public List JavaDoc getLastNews(QueryInfo queryInfo) {
186         return newsDAO.getLastNews(queryInfo);
187     }
188
189     /**
190      * @see com.blandware.atleap.service.news.NewsManager#performActivityCheck()
191      */

192     public void performActivityCheck() {
193         if ( log.isInfoEnabled() ) {
194             log.info("Performing activation check...");
195         }
196         Date JavaDoc today = new Date JavaDoc();
197         List JavaDoc unpublishedNews = newsDAO.findUnpublishedNews(today);
198         if ( log.isInfoEnabled() ) {
199             log.info("Number of news to set active: " + unpublishedNews.size());
200         }
201         for ( Iterator JavaDoc i = unpublishedNews.iterator(); i.hasNext(); ) {
202             NewsItem item = (NewsItem) i.next();
203             item.setActive(Boolean.TRUE);
204         }
205
206         List JavaDoc expiredNews = newsDAO.findExpiredNews(today);
207         if ( log.isInfoEnabled() ) {
208             log.info("Number of news to set inactive: " + expiredNews.size());
209         }
210         for ( Iterator JavaDoc i = expiredNews.iterator(); i.hasNext(); ) {
211             NewsItem item = (NewsItem) i.next();
212             item.setActive(Boolean.FALSE);
213         }
214
215     }
216
217 }
218
Popular Tags