This is an automated email from the git hooks/post-receive script. New commit to branch feature/refactor_reference in repository observe. See http://git.codelutin.com/observe.git commit aee09c8fadf10b42869c5974796d46ba7e0d63a4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Nov 12 09:45:18 2015 +0100 Début d'implantation d'un cache de référentiels (à finir) --- .../fr/ird/observe/db/ObserveReferentialCache.java | 61 ++++++++++++++++++++++ .../ird/observe/db/ObserveReferentialCacheKey.java | 33 ++++++++++++ 2 files changed, 94 insertions(+) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCache.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCache.java new file mode 100644 index 0000000..0a7c8b3 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCache.java @@ -0,0 +1,61 @@ +package fr.ird.observe.db; + +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.referential.ReferentialDto; + +import java.io.Closeable; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Created on 10/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveReferentialCache implements Closeable { + + private final Map<ObserveReferentialCacheKey<?>, ReferenceSetDto> cache; + + public ObserveReferentialCache() { + this.cache = new LinkedHashMap<>(); + } + + public <D extends ReferentialDto> ReferenceSetDto<D> getReferenceSet(ObserveSwingDataSource dataSource, Class<D> type, String optionalContext) { + + ObserveReferentialCacheKey<D> referentialCacheKey = ObserveReferentialCacheKey.of(type, optionalContext); + ReferenceSetDto<D> result = getReferenceSet0(dataSource, referentialCacheKey); + return result; + } + + protected <D extends ReferentialDto> ReferenceSetDto<D> getReferenceSet0(ObserveSwingDataSource dataSource, ObserveReferentialCacheKey<D> key) { + + ReferenceSetDto<D> result=null; +// if (cache.containsKey(key)) { +// result = cache.get(key); +// +// Date lastUpdate = result.getLastUpdate(); +// +// ReferenceSetService referentialService = dataSource.newService(ReferenceSetService.class); +// ReferenceSetDto<D> update = referentialService.getReferentialReferenceSetIfModify(key.getType(), key.getContext().orNull(), lastUpdate); +// if (update != null) { +// result = update; +// cache.remove(key); +// cache.put(key, update); +// } +// +// } else { +// +// ReferentialService referentialService = dataSource.newService(ReferenceSetService.class); +// result = referentialService.getReferentialReferenceSet(key.getType(), key.getContext().orNull()); +// cache.put(key, result); +// +// } + return result; + + } + + @Override + public void close() { + cache.clear(); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCacheKey.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCacheKey.java new file mode 100644 index 0000000..3eda009 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCacheKey.java @@ -0,0 +1,33 @@ +package fr.ird.observe.db; + +import com.google.common.base.Optional; +import fr.ird.observe.services.dto.referential.ReferentialDto; + +/** + * Created on 10/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveReferentialCacheKey<D extends ReferentialDto> { + + private final Class<D> type; + + private final Optional<String> context; + + public ObserveReferentialCacheKey(Class<D> type, Optional<String> context) { + this.type = type; + this.context = context; + } + + public Class<D> getType() { + return type; + } + + public Optional<String> getContext() { + return context; + } + + public static <D extends ReferentialDto> ObserveReferentialCacheKey<D> of(Class<D> type, String optionalContext) { + return new ObserveReferentialCacheKey<>(type, Optional.fromNullable(optionalContext)); + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.