X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/467d468b148490ebdf7f95f8b8dffb40a850a4f9..5b852e5bab53b546a32b71de4ea5dbe5bd4c2d7f:/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java index 288b20eb1..5365fe280 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java @@ -1,15 +1,16 @@ package eu.etaxonomy.cdm.api.cache; +import java.io.File; import java.util.UUID; -import net.sf.ehcache.config.CacheConfiguration; -import net.sf.ehcache.config.SizeOfPolicyConfiguration; - import org.springframework.stereotype.Component; import eu.etaxonomy.cdm.api.application.CdmApplicationState; +import eu.etaxonomy.cdm.api.config.EhCacheConfiguration; +import eu.etaxonomy.cdm.common.CdmUtils; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.DefinedTermBase; +import eu.etaxonomy.cdm.model.common.TermBase; import eu.etaxonomy.taxeditor.remoting.cache.CacheLoader; import eu.etaxonomy.taxeditor.remoting.cache.CdmEntityCacheKey; import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher; @@ -18,11 +19,14 @@ import eu.etaxonomy.taxeditor.session.CdmEntitySession; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManagerObserver; +import net.sf.ehcache.config.CacheConfiguration; +import net.sf.ehcache.config.DiskStoreConfiguration; +import net.sf.ehcache.config.SizeOfPolicyConfiguration; /** * Class which uses CDM services to cache cdm entities * - * FIXME: Currently only handles terms entities. It would be + * FIXME: Currently only handles term entities. It would be * interesting to have a generic method which finds the * correct service to load / cache the entity. * @@ -30,9 +34,8 @@ import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManagerObserver; * * @param */ -@Component -public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionManagerObserver { - +@Component //FIXME This indicates that the CdmServiceCacher is initialized as Spring Component but it seems only to be instantiated directly +public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionManagerObserver { private ICdmEntitySessionManager cdmEntitySessionManager; @@ -43,11 +46,35 @@ public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionMan @Override protected void setup() { + + setUpCacheManager(); + DefinedTermBase.setCacher(this); CdmTransientEntityCacher.setDefaultCacher(this); TermServiceRequestExecutor.setDefaultCacher(this); cacheLoader = new CacheLoader(this); + + } + + + /** + * + */ + private void setUpCacheManager() { + + EhCacheConfiguration cacheConfig = new EhCacheConfiguration(); + + DiskStoreConfiguration diskStoreConfiguration = new DiskStoreConfiguration(); + File ehcacheFolder = CdmUtils.getCdmSubDir("taxeditor-ehcache"); + // FIXME use subfolder per taxeditor version to allow running multiple installations in parallel + // String taxEditorVersion = ..; + // File ehcacheFolder = new File(ehcacheFolder, taxEditorVersion); + diskStoreConfiguration.setPath(ehcacheFolder.getAbsolutePath()); + + cacheConfig.setDiskStoreConfiguration(diskStoreConfiguration); + addCacheManager(cacheConfig.cacheManager()); + } @@ -74,12 +101,10 @@ public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionMan return load(term); } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.model.ICdmCacher#isCachable(eu.etaxonomy.cdm.model.common.CdmBase) - */ @Override public boolean isCachable(CdmBase cdmEntity) { - if(cdmEntity != null && cdmEntity instanceof DefinedTermBase) { + // if(cdmEntity != null && cdmEntity instanceof DefinedTermBase) { + if(cdmEntity != null && cdmEntity instanceof TermBase) { return true; } return false; @@ -121,10 +146,6 @@ public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionMan return cachedCdmEntity; } - - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.cache.CdmCacher#load(eu.etaxonomy.cdm.model.common.CdmBase) - */ @Override public CdmBase load(CdmBase cdmEntity) { CdmBase cachedCdmEntity = getFromCache(cdmEntity.getUuid()); @@ -135,9 +156,6 @@ public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionMan return cachedCdmEntity; } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManagerObserver#changed() - */ @Override public void changed() { ICdmEntitySession cdmEntitySession = cdmEntitySessionManager.getActiveSession();