package org.openedit.entermedia.cluster; import java.io.File; import java.util.Date; import java.util.Iterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openedit.Data; import org.openedit.data.Searcher; import org.openedit.data.SearcherManager; import com.openedit.WebPageRequest; import com.openedit.hittracker.HitTracker; import com.openedit.hittracker.SearchQuery; import com.openedit.page.manage.PageManager; import com.openedit.users.UserManager; public class LocalDataManager { //we should at least have a dirty flag to speed up checking private static final Log log = LogFactory.getLog(LocalDataManager.class); protected UserManager fieldUserManager; protected PageManager fieldPageManager; protected File fieldRoot; protected SearcherManager fieldSearcherManager; public UserManager getUserManager() { return fieldUserManager; } public void setUserManager(UserManager inUserManager) { fieldUserManager = inUserManager; } public PageManager getPageManager() { return fieldPageManager; } public void setPageManager(PageManager inPageManager) { fieldPageManager = inPageManager; } public File getRoot() { return fieldRoot; } public void setRoot(File inRoot) { fieldRoot = inRoot; } public SearcherManager getSearcherManager() { return fieldSearcherManager; } public void setSearcherManager(SearcherManager inSearcherManager) { fieldSearcherManager = inSearcherManager; } public HitTracker listChangesSince(String inAppId, Date inFrom) { //first update the index DataFileSearcher searcher = (DataFileSearcher)getSearcherManager().getSearcher(inAppId, "dataFile"); searcher.updateFileList(); SearchQuery query = searcher.createSearchQuery(); query.addAfter("lastmodified",inFrom); HitTracker tracker = searcher.search(query); return tracker; } protected void verifyClustersFile(WebPageRequest inReq) { String applicationid = inReq.findValue("applicationid"); Searcher clusters = getSearcherManager().getSearcher(applicationid, "cluster"); String thishost = inReq.getSiteRoot(); boolean hasself = false; for (Iterator iterator = clusters.getAllHits().iterator(); iterator.hasNext();) { Data remoteserver = (Data) iterator.next(); String host = remoteserver.get("siteroot"); if(thishost.equals(host)) { hasself = true; String status =remoteserver.get("status"); if( !"active".equals(status)) { remoteserver.setProperty("status", "active"); clusters.saveData(remoteserver, inReq.getUser()); return; } } } if( !hasself ) { Data self = clusters.createNewData(); self.setProperty("siteroot", inReq.getSiteRoot()); self.setProperty("status", "active"); clusters.saveData(self, inReq.getUser()); } } }