1 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 ; 30 import java.util.List ; 31 import java.util.Date ; 32 import java.util.Iterator ; 33 34 42 public class NewsManagerImpl extends PageManagerImpl implements NewsManager { 43 44 47 protected NewsDAO newsDAO; 48 51 protected PageDAO pageDAO; 52 53 56 public NewsManagerImpl() { 57 } 58 59 64 public void setNewsDAO(NewsDAO newsDAO) { 65 this.newsDAO = newsDAO; 66 } 67 68 73 public void setPageDAO(PageDAO pageDAO) { 74 this.pageDAO = pageDAO; 75 } 76 77 79 82 public Long createNewsItem(NewsItem newsItem, Map linkedObjects) throws BeanAlreadyExistsException { 83 84 if ( log.isDebugEnabled() ) { 85 log.debug("Creating new news item..."); 86 } 87 88 if ( pageDAO.hasDuplicates(newsItem) ) { 89 String 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 Long 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 108 public NewsItem retrieveNewsItem(Long newsItemId) { 109 NewsItem newsItem = null; 110 newsItem = newsDAO.retrieveNewsItem(newsItemId); 111 112 return newsItem; 113 } 114 115 118 public NewsItem retrieveNewsItemLite(Long newsItemId) { 119 return newsDAO.retrieveNewsItemLite(newsItemId); 120 } 121 122 125 public void updateNewsItem(NewsItem newsItem, Map linkedObjects) throws BeanAlreadyExistsException { 126 127 newsDAO.removeFromCache(newsItem); 129 130 if ( log.isDebugEnabled() ) { 131 log.debug("Updating news item..."); 132 } 133 134 if ( pageDAO.hasDuplicates(newsItem) ) { 135 String 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 newsDAO.updateNewsItem(newsItem, linkedObjects); 145 146 if ( log.isDebugEnabled() ) { 147 log.debug("News item was updated successfully."); 148 } 149 } 150 151 154 public void updateNewsItem(NewsItem newsItem) throws BeanAlreadyExistsException { 155 updateNewsItem(newsItem, null); 156 } 157 158 161 public void deleteNewsItem(Long newsItemId) throws DeleteException, BeanNotFoundException { 162 NewsItem newsItem = newsDAO.retrieveNewsItem(newsItemId); 163 if ( newsItem == null ) { 164 String 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 175 178 public PartialCollection listNewsItems(QueryInfo queryInfo) { 179 return newsDAO.listNewsItems(queryInfo); 180 } 181 182 185 public List getLastNews(QueryInfo queryInfo) { 186 return newsDAO.getLastNews(queryInfo); 187 } 188 189 192 public void performActivityCheck() { 193 if ( log.isInfoEnabled() ) { 194 log.info("Performing activation check..."); 195 } 196 Date today = new Date (); 197 List unpublishedNews = newsDAO.findUnpublishedNews(today); 198 if ( log.isInfoEnabled() ) { 199 log.info("Number of news to set active: " + unpublishedNews.size()); 200 } 201 for ( Iterator i = unpublishedNews.iterator(); i.hasNext(); ) { 202 NewsItem item = (NewsItem) i.next(); 203 item.setActive(Boolean.TRUE); 204 } 205 206 List expiredNews = newsDAO.findExpiredNews(today); 207 if ( log.isInfoEnabled() ) { 208 log.info("Number of news to set inactive: " + expiredNews.size()); 209 } 210 for ( Iterator i = expiredNews.iterator(); i.hasNext(); ) { 211 NewsItem item = (NewsItem) i.next(); 212 item.setActive(Boolean.FALSE); 213 } 214 215 } 216 217 } 218 | Popular Tags |