package de.juwimm.cms.beans; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.springframework.transaction.annotation.Transactional; import de.juwimm.cms.model.SiteHbm; import de.juwimm.cms.model.SiteHbmDao; /** * @author <a href="florin.zalum@juwimm.com">Florin Zalum</a> * @version $Id$ */ @Transactional public class ExternalSitesCronService { private static Logger log = Logger.getLogger(ExternalSitesCronService.class); SiteHbmDao siteHbmDao; WebCrawlerService webCrawler; boolean cronIsRunning = false; public WebCrawlerService getWebCrawler() { return webCrawler; } public void setWebCrawler(WebCrawlerService webCrawler) { this.webCrawler = webCrawler; } public SiteHbmDao getSiteHbmDao() { return siteHbmDao; } public void setSiteHbmDao(SiteHbmDao siteHbmDao) { this.siteHbmDao = siteHbmDao; } public void indexSites() { if (cronIsRunning) { log.info("ExternalSitesCronService: cron is running"); return; } cronIsRunning = true; log.info("ExternalSitesCronService: starting index external sites"); List<SiteHbm> externalSites = getExternalSites(); if (externalSites == null || externalSites.size() == 0) { cronIsRunning = false; return; } for (SiteHbm externalSite : externalSites) { webCrawler.indexSite(externalSite); externalSite.setUpdateSiteIndex(false); } cronIsRunning = false; log.info("ExternalSitesCronService: end index end sites"); } private List<SiteHbm> getExternalSites() { List<SiteHbm> sites = (List<SiteHbm>) siteHbmDao.findAll(); List<SiteHbm> externalSites = new ArrayList<SiteHbm>(); if (sites == null || sites.size() == 0) { return externalSites; } for (SiteHbm site : sites) { //check if it is an external site and if it is scheduled for indexing if (site.getExternalSiteSearch() != null && site.getExternalSiteSearch() && site.getUpdateSiteIndex() != null && site.getUpdateSiteIndex()) { externalSites.add(site); } } return externalSites; } }