This is an automated email from the git hooks/post-receive script. New commit to branch feature/refactor_reference in repository tutti. See http://git.codelutin.com/tutti.git commit 2617dd47d372ab3a48aa4b2834f3104f52c18f6e Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Nov 20 08:44:21 2015 +0100 Déplacement du cache de rérentiels dans le module de l'API de service et intégration dans les tests --- .../fr/ird/observe/db/ObserveSwingDataSource.java | 62 +--------------------- .../services/service}/ObserveReferentialCache.java | 58 +++++++++++++++++++- .../ird/observe/services/DataSourceResource.java | 20 +++++-- .../services/service/AbstractServiceTopiaTest.java | 4 +- 4 files changed, 79 insertions(+), 65 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java index 39401f2..6d1312d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -2,7 +2,6 @@ package fr.ird.observe.db; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.event.ObserveSwingDataSourceEvent; @@ -23,20 +22,12 @@ import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportExcept import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.ObserveDbUserDto; -import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; -import fr.ird.observe.services.dto.reference.ObserveReference; -import fr.ird.observe.services.dto.reference.ObserveReferenceSet; -import fr.ird.observe.services.dto.reference.ObserveReferenceSetRequest; -import fr.ird.observe.services.dto.reference.ObserveReferenceSetResult; -import fr.ird.observe.services.dto.reference.ObserveReferentialReference; -import fr.ird.observe.services.dto.reference.definition.ObserveReferenceSetRequestDefinition; -import fr.ird.observe.services.dto.reference.definition.ObserveReferenceSetRequestDefinitions; -import fr.ird.observe.services.dto.reference.definition.ObserveReferenceSetRequestKeyDefinition; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.services.service.ObserveReferentialCache; import fr.ird.observe.services.service.ReferenceSetService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -47,8 +38,6 @@ import javax.swing.JOptionPane; import javax.swing.event.EventListenerList; import java.io.Closeable; import java.io.File; -import java.util.Date; -import java.util.LinkedHashSet; import java.util.Locale; import java.util.Set; @@ -276,54 +265,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements checkIsOpen(); ReferenceSetService referenceSetService = newService(ReferenceSetService.class); - - LinkedHashSet<ReferenceSetDto> values = new LinkedHashSet<>(); - - String referentialRequestName = formDto.getReferentialReferenceSetRequestName(); - if (referentialRequestName != null) { - - if (log.isInfoEnabled()) { - log.info("Loading referantialReferenceSetRequest: " + referentialRequestName); - } - ImmutableMap<String, Date> lastUpdateDates = referentialCache.getLastUpdateDates(referentialRequestName); - - ObserveReferenceSetRequest request = new ObserveReferenceSetRequest(); - request.setRequestName(referentialRequestName); - request.setLastUpdateDates(lastUpdateDates); - - ObserveReferenceSetResult<ObserveReferentialReference> referenceSetResult = referenceSetService.loadReferentialReferenceSets(request); - - ImmutableMap<String, ReferenceSetDto<?>> referenceSets = referentialCache.loadReferenceSets(referenceSetResult); - values.addAll(referenceSets.values()); - } - - String dataRequestName = formDto.getDataReferenceSetRequestName(); - if (dataRequestName != null) { - - if (log.isInfoEnabled()) { - log.info("Loading dataReferenceSetRequest: " + dataRequestName); - } - ObserveReferenceSetRequest request = new ObserveReferenceSetRequest(); - request.setRequestName(dataRequestName); - request.setLastUpdateDates(ImmutableMap.<String, Date>of()); - - ObserveReferenceSetResult<ObserveReference> referenceSetResult = referenceSetService.loadDataReferenceSets(request); - ImmutableMap<String, ObserveReferenceSet<?, ObserveReference>> referenceSets = referenceSetResult.getReferenceSets(); - - ObserveReferenceSetRequestDefinition requestDefinition = ObserveReferenceSetRequestDefinitions.get(dataRequestName); - for (ObserveReferenceSetRequestKeyDefinition requestKeyDefinition : requestDefinition.getKeys()) { - - String requestKeyDefinitionName = requestKeyDefinition.getName(); - ObserveReferenceSet<?, ObserveReference> referenceSet = referenceSets.get(requestKeyDefinitionName); - - ReferenceSetDto<?> referenceSetDto = referenceSet.toReferenceSetDto(requestKeyDefinitionName); - values.add(referenceSetDto); - - } - - } - - formDto.setLabels(values); + referentialCache.loadReferenceSets(referenceSetService, formDto); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCache.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/ObserveReferentialCache.java similarity index 62% rename from observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCache.java rename to observe-services-api/src/main/java/fr/ird/observe/services/service/ObserveReferentialCache.java index 76abd27..e6facfd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveReferentialCache.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/ObserveReferentialCache.java @@ -1,8 +1,11 @@ -package fr.ird.observe.db; +package fr.ird.observe.services.service; import com.google.common.collect.ImmutableMap; +import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.reference.ObserveReference; import fr.ird.observe.services.dto.reference.ObserveReferenceSet; +import fr.ird.observe.services.dto.reference.ObserveReferenceSetRequest; import fr.ird.observe.services.dto.reference.ObserveReferenceSetResult; import fr.ird.observe.services.dto.reference.ObserveReferentialReference; import fr.ird.observe.services.dto.reference.definition.ObserveReferenceSetRequestDefinition; @@ -15,6 +18,7 @@ import java.io.Closeable; import java.io.Serializable; import java.util.Date; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.Map; /** @@ -35,6 +39,58 @@ public class ObserveReferentialCache implements Closeable, Serializable { this.cache = new LinkedHashMap<>(); } + public void loadReferenceSets(ReferenceSetService referenceSetService, FormDto<?> formDto) { + + LinkedHashSet<ReferenceSetDto> values = new LinkedHashSet<>(); + + String referentialRequestName = formDto.getReferentialReferenceSetRequestName(); + if (referentialRequestName != null) { + + if (log.isInfoEnabled()) { + log.info("Loading referantialReferenceSetRequest: " + referentialRequestName); + } + ImmutableMap<String, Date> lastUpdateDates = getLastUpdateDates(referentialRequestName); + + ObserveReferenceSetRequest request = new ObserveReferenceSetRequest(); + request.setRequestName(referentialRequestName); + request.setLastUpdateDates(lastUpdateDates); + + ObserveReferenceSetResult<ObserveReferentialReference> referenceSetResult = referenceSetService.loadReferentialReferenceSets(request); + + ImmutableMap<String, ReferenceSetDto<?>> referenceSets = loadReferenceSets(referenceSetResult); + values.addAll(referenceSets.values()); + } + + String dataRequestName = formDto.getDataReferenceSetRequestName(); + if (dataRequestName != null) { + + if (log.isInfoEnabled()) { + log.info("Loading dataReferenceSetRequest: " + dataRequestName); + } + ObserveReferenceSetRequest request = new ObserveReferenceSetRequest(); + request.setRequestName(dataRequestName); + request.setLastUpdateDates(ImmutableMap.<String, Date>of()); + + ObserveReferenceSetResult<ObserveReference> referenceSetResult = referenceSetService.loadDataReferenceSets(request); + ImmutableMap<String, ObserveReferenceSet<?, ObserveReference>> referenceSets = referenceSetResult.getReferenceSets(); + + ObserveReferenceSetRequestDefinition requestDefinition = ObserveReferenceSetRequestDefinitions.get(dataRequestName); + for (ObserveReferenceSetRequestKeyDefinition requestKeyDefinition : requestDefinition.getKeys()) { + + String requestKeyDefinitionName = requestKeyDefinition.getName(); + ObserveReferenceSet<?, ObserveReference> referenceSet = referenceSets.get(requestKeyDefinitionName); + + ReferenceSetDto<?> referenceSetDto = referenceSet.toReferenceSetDto(requestKeyDefinitionName); + values.add(referenceSetDto); + + } + + } + + formDto.setLabels(values); + + } + /** * Pour récupérer les dates de dernières mises à jour des ensembles de références utiliées par la requète. * diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java index 4f57135..e458270 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java @@ -33,6 +33,7 @@ import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.services.service.ObserveReferentialCache; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -71,6 +72,8 @@ public class DataSourceResource implements TestRule { protected String scriptName; + protected ObserveReferentialCache referentialCache; + public DataSourceResource(ApplicationContextResource applicationContextResource, Set<String> testNamesChangeDataBase, String scriptName) { this.applicationContextResource = applicationContextResource; this.testNamesChangeDataBase = testNamesChangeDataBase; @@ -99,6 +102,13 @@ public class DataSourceResource implements TestRule { } } + public ObserveReferentialCache getReferentialCache() { + if (referentialCache == null) { + referentialCache = new ObserveReferentialCache(); + } + return referentialCache; + } + public void createDataSourceFromScript(String scriptPath) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { byte[] databaseToImportContent = getDatabaseToImportContent(scriptPath); @@ -194,15 +204,15 @@ public class DataSourceResource implements TestRule { File commonsDir = TestHelper.getCommonsDir(); - File dataBaseCommonsRefDirectory = new File (commonsDir, scriptName); + File dataBaseCommonsRefDirectory = new File(commonsDir, scriptName); applicationContextResource.setDataBaseCommonRefDirectory(dataBaseCommonsRefDirectory); //if (testNamesChangeDataBase.contains(methodName)) { - File dataBaseDirectory = new File (testDirectory, scriptName); + File dataBaseDirectory = new File(testDirectory, scriptName); - applicationContextResource.setDataBaseDirectory(dataBaseDirectory); + applicationContextResource.setDataBaseDirectory(dataBaseDirectory); // } else { // @@ -223,6 +233,10 @@ public class DataSourceResource implements TestRule { log.debug("Ends " + testClass.getName() + "::" + methodName); } + if (referentialCache != null) { + referentialCache.close(); + } + applicationContextResource.closeServiceFactory(); applicationContextResource.setTemporaryDirectoryRoot(null); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java index b6fe60f..56b9d85 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java @@ -152,7 +152,9 @@ public abstract class AbstractServiceTopiaTest { return lastUpdateType.getLastUpdate(); - } + public ObserveReferentialCache getReferentialCache() { + return dataSourceResource.getReferentialCache(); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.