This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit fc9a6f8a341188119fcc3fdbbb7c5b31b8165602 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Nov 6 08:26:09 2015 +0100 migration de l'écran d'export des données observateur (refs #7677) --- .../java/fr/ird/observe/ui/DecoratorService.java | 7 ++++ .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 44 ++++++++++++++++------ .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 5 ++- .../observe/ui/admin/export/ExportUIHandler.java | 4 +- .../controller/v1/DataSourceServiceController.java | 6 +++ .../services/service/DataSourceService.java | 7 ++++ .../fr/ird/observe/services/dto/ImportDataDto.java | 38 +++++++++++++++++++ .../services/service/DataSourceServiceTopia.java | 18 +++++++++ 8 files changed, 113 insertions(+), 16 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java index 279a9f0..dec2413 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java @@ -158,6 +158,8 @@ public class DecoratorService extends DecoratorProvider { public static final String OBSERVE_COMMON_PREFIX = "observe.common."; + public static final String TRIP_CONTEXT = "Trip"; + /** la locale du referentiel. */ protected ReferentialLocale referentialLocale; @@ -541,6 +543,11 @@ public class DecoratorService extends DecoratorProvider { registerDecorator(TripLonglineDto.class.getSimpleName(), new ReferenceDecorator("${startDate}$td/%1$tm/%1$tY##${endDate}$td/%2$tm/%2$tY##${vessel}$s##${observer}$s")); + // Trip commun decorator + registerDecorator(TRIP_CONTEXT, + new ReferenceDecorator("${startDate}$td/%1$tm/%1$tY##${endDate}$td/%2$tm/%2$tY##${vessel}$s##${observer}$s")); + + String oldCode = l(locale, "observe.common.oldCode3L"); // Species decorator registerDecorator(new SpeciesDecorator( oldCode)); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java index 6c7afed..53dc106 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java @@ -21,11 +21,15 @@ */ package fr.ird.observe.ui.admin; +import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.SendMessageAble; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.ImportDataDto; import fr.ird.observe.services.service.BabModelVersionException; +import fr.ird.observe.services.service.DataSourceDumpProducerService; +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.ui.DecoratorService; @@ -115,18 +119,34 @@ public class AdminTabUIHandler implements SendMessageAble { protected void replicateData(ObserveSwingDataSource source, ObserveSwingDataSource target, - String... tripIds) { - //FIXME -// ReplicationService service = getReplicationService(); -// if (tripIds == null || tripIds.length == 0) { -// -// // on replique toutes les données -// service.replicateAllData(source, target); -// } else { -// -// // on replique les données specifiees -// service.replicateData(source, target, tripIds); -// } + String... tripIds) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { + + if (tripIds != null && tripIds.length > 0) { + + openSource(source); + + DataSourceDumpProducerService dataSourceDumpProducerService = source.newService(DataSourceDumpProducerService.class); + + // on replique les données specifiees + ImmutableSet<String> dataIds = ImmutableSet.<String>copyOf(tripIds); + + byte[] dataDump = dataSourceDumpProducerService.getDataDump(dataIds); + + source.close(); + + + openSource(target); + + DataSourceService dataSourceService = target.newService(DataSourceService.class); + + ImportDataDto importData = new ImportDataDto(dataDump, dataIds); + + dataSourceService.importData(importData); + + target.close(); + + } + } protected void replicateReferentiel(ObserveSwingDataSource source, diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index fd2d118..e9f8c58 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -1197,8 +1197,9 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { break; case SYNCHRONIZE: case IMPORT_GPS: - validate &= getStepState(s) == - WizardState.SUCCESSED; + //FIXME + //validate &= getStepState(s) == + // WizardState.SUCCESSED; break; case SAVE_LOCAL: // valide si l'action a ete executee avec success diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 4d3798f..5ce47f9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -126,8 +126,8 @@ public class ExportUIHandler extends AdminTabUIHandler { n("observe.synchro.table.exportData.exist.label.tip")); UIHelper.setTableColumnRenderer(table4, 0, UIHelper.newBooleanTableCellRenderer(renderer5)); - UIHelper.setTableColumnRenderer(table4, 1, UIHelper.newDecorateTableCellRenderer(renderer5, ProgramDto.class)); - UIHelper.setTableColumnRenderer(table4, 2, UIHelper.newDecorateTableCellRenderer(renderer5, TripSeineDto.class)); + UIHelper.setTableColumnRenderer(table4, 1, UIHelper.newDecorateTableCellRenderer(renderer5, ReferenceDto.class, ProgramDto.class.getSimpleName())); + UIHelper.setTableColumnRenderer(table4, 2, UIHelper.newDecorateTableCellRenderer(renderer5, ReferenceDto.class, DecoratorService.TRIP_CONTEXT)); UIHelper.setTableColumnRenderer(table4, 3, UIHelper.newBooleanTableCellRenderer(renderer5)); UIHelper.setTableColumnEditor(table4, 0, MyDefaultCellEditor.newBooleanEditor(false)); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java index bd05431..12af1be 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java @@ -35,6 +35,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ImportDataDto; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.service.BabModelVersionException; @@ -136,6 +137,11 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport getAuthenticatedService().migrateData(); } + @Override + public void importData(ImportDataDto importData) { + getAuthenticatedService().importData(importData); + } + protected ObserveDataSourceConfiguration getTopiaDataSourceConfiguration(ObserveDataSourceConfiguration dataSourceConfigurationFromRequest) { Preconditions.checkArgument(dataSourceConfigurationFromRequest instanceof ObserveDataSourceConfigurationRest); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java index 9bb7a62..e079f67 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java @@ -29,9 +29,11 @@ import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ImportDataDto; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.spi.NoDataAccess; +import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.ReadReferentialPermission; import fr.ird.observe.services.spi.Write; @@ -80,4 +82,9 @@ public interface DataSourceService extends ObserveService { @NoDataAccess void migrateData(); + @WriteDataPermission + @Write + @PostRequest + void importData(ImportDataDto importData); + } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ImportDataDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ImportDataDto.java new file mode 100644 index 0000000..8ef6084 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ImportDataDto.java @@ -0,0 +1,38 @@ +package fr.ird.observe.services.dto; + +import com.google.common.collect.ImmutableSet; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ImportDataDto implements ObserveDto { + + protected byte[] dumpData; + + protected ImmutableSet<String> importDataIds; + + public ImportDataDto() { + this(null, null); + } + + public ImportDataDto(byte[] dumpData, ImmutableSet<String> importDataIds) { + this.dumpData = dumpData; + this.importDataIds = importDataIds; + } + + public byte[] getDumpData() { + return dumpData; + } + + public ImmutableSet<String> getImportDataIds() { + return importDataIds; + } + + public void setDumpData(byte[] dumpData) { + this.dumpData = dumpData; + } + + public void setImportDataIds(ImmutableSet<String> importDataIds) { + this.importDataIds = importDataIds; + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index d32d557..d0e9e64 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -43,6 +43,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ImportDataDto; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.ObserveDbUserDto; import org.apache.commons.logging.Log; @@ -380,6 +381,23 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } + @Override + public void importData(ImportDataDto importData) { + + // création d'une base temporaire pour y importer le référentiel et les données + ObserveDataSourceConfigurationTopiaH2 temporaryDataSourceConfiguration = createTemporaryDatabaseFromDump("ImportData", importData.getDumpData()); + ObserveTopiaApplicationContext temporaryTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(temporaryDataSourceConfiguration); + + if (log.isInfoEnabled()) { + log.info("Import data."); + } + + // Réplication des données + ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext(); + replicateData(temporaryTopiaApplicationContext, topiaApplicationContext, importData.getImportDataIds()); + + } + protected void executeGzipSqlStatements(ObserveTopiaApplicationContext topiaApplicationContext, String temporaryFilePrefix, byte... content) { File temporaryDirectory = serviceContext.createTemporaryDirectory(temporaryFilePrefix); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.