branch feature/7528 updated (f74b745 -> f723352)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7528 in repository observe. See http://git.codelutin.com/observe.git from f74b745 ignorer un test et mise à jour des dépendences (refs #7529) new f723352 creation d'un base local (refs #7529) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit f7233525d18c3f8c53c7559cd4fcc8c82f3d46ac Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 17:59:04 2015 +0200 creation d'un base local (refs #7529) Summary of changes: .../main/java/fr/ird/observe/ObserveRunner.java | 2 +- .../observe/ObserveSwingApplicationContext.java | 32 +++ .../ird/observe/ui/storage/StorageUIHandler.java | 52 ++-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 290 ++++++++++++--------- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 14 +- .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 17 ++ .../ui/storage/tabs/StorageTabUIHandler.java | 9 +- .../observe-application-swing_en_GB.properties | 2 + .../observe-application-swing_es_ES.properties | 2 + .../observe-application-swing_fr_FR.properties | 2 + .../DataSourceDumpProducerServiceController.java | 29 +++ .../observe/services/dto/gson/VersionAdapter.java | 9 +- .../services/dto/referential/ProgramDtos.java | 24 +- .../services/ObserveServiceContextTopia.java | 3 + .../EntityToReferentialReferenceDtoBuilder.java | 13 + .../services/dto/ObserveDtosInitializer.java | 284 ++++++++++---------- ...EntityToReferentialReferenceDtoBuilderTest.java | 57 ++++ 17 files changed, 551 insertions(+), 290 deletions(-) create mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java create mode 100644 observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7528 in repository observe. See http://git.codelutin.com/observe.git commit f7233525d18c3f8c53c7559cd4fcc8c82f3d46ac Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 17:59:04 2015 +0200 creation d'un base local (refs #7529) --- .../main/java/fr/ird/observe/ObserveRunner.java | 2 +- .../observe/ObserveSwingApplicationContext.java | 32 +++ .../ird/observe/ui/storage/StorageUIHandler.java | 52 ++-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 290 ++++++++++++--------- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 14 +- .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 17 ++ .../ui/storage/tabs/StorageTabUIHandler.java | 9 +- .../observe-application-swing_en_GB.properties | 2 + .../observe-application-swing_es_ES.properties | 2 + .../observe-application-swing_fr_FR.properties | 2 + .../DataSourceDumpProducerServiceController.java | 29 +++ .../observe/services/dto/gson/VersionAdapter.java | 9 +- .../services/dto/referential/ProgramDtos.java | 24 +- .../services/ObserveServiceContextTopia.java | 3 + .../EntityToReferentialReferenceDtoBuilder.java | 13 + .../services/dto/ObserveDtosInitializer.java | 284 ++++++++++---------- ...EntityToReferentialReferenceDtoBuilderTest.java | 57 ++++ 17 files changed, 551 insertions(+), 290 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java index 0398e30..1158503 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java @@ -506,7 +506,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } protected void detectLocalDataBase(ObserveSwingApplicationConfig config) throws IOException { - boolean hasLocalStorage = config.getLocalDBDirectory().exists(); + boolean hasLocalStorage = new File(config.getLocalDBDirectory(),ObserveSwingApplicationConfig.DB_NAME).exists(); config.setLocalStorageExist(hasLocalStorage); if (!hasLocalStorage) { if (log.isInfoEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index 9f5fc4b..5dc2fd9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -37,7 +37,16 @@ import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.longline.TripLonglineStubDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramDtos; +import fr.ird.observe.services.dto.seine.TripSeineStubDto; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.TripSeineService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; @@ -718,6 +727,29 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { t("observe.message.db.loaded", source.getLabel())); } + + if (log.isInfoEnabled()) { + ReferentialService referentialService = source.newService(ReferentialService.class); + TripSeineService tripSeineService = source.newService(TripSeineService.class); + TripLonglineService tripLonglineService = source.newService(TripLonglineService.class); + + ReferenceSetDto<ProgramDto> programDtoRefs = referentialService.getReferentialReferenceSet(ProgramDto.class); + for (ReferenceDto<ProgramDto> programDtoRef : programDtoRefs.getReference()) { + String programName = (String) programDtoRef.getPropertyValue("label"); + log.info("- " + programName); + if (ProgramDtos.isProgramSeine(programDtoRef)) { + List<TripSeineStubDto> tripSeines = tripSeineService.getTripSeineByProgram(programDtoRef.getId()); + for (TripSeineStubDto tripSeine :tripSeines) { + log.info(" - " + tripSeine.getVesselLabel() + " " + tripSeine.getStartDate() + " - " + tripSeine.getEndDate()); + } + } else if (ProgramDtos.isProgramLongline(programDtoRef)) { + List<TripLonglineStubDto> tripLonglines = tripLonglineService.getTripLonglineStubByProgram(programDtoRef.getId()); + for (TripLonglineStubDto tripLongline :tripLonglines) { + log.info(" - " + tripLongline.getVesselLabel() + " " + tripLongline.getStartDate() + " - " + tripLongline.getEndDate()); + } + } + } + } } }); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index 2b69301..fc0c6a0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -41,6 +41,7 @@ import fr.ird.observe.db.event.ObserveSwingDataSourceListenerAdapter; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.service.DataSourceDumpProducerService; @@ -488,21 +489,9 @@ public class StorageUIHandler { observeContext.setDataSource(currentDataSource); observeContext.prepareMainStorage(currentDataSource); - // ouverture du nouveau storage - currentDataSource.open(); - - - - if (log.isInfoEnabled()) { - log.info(">>> main storage opened " + currentDataSource.getLabel()); - } - - if (model.isStoreRemoteConfig()) { - storeRemoteConfig(context, model); - } - if (model.getDbMode() == DbMode.CREATE_LOCAL && - model.getCreationMode() == - CreationMode.IMPORT_REMOTE_STORAGE) { + if (DbMode.CREATE_LOCAL.equals(model.getDbMode()) + && (CreationMode.IMPORT_REMOTE_STORAGE.equals(model.getCreationMode()) || CreationMode.IMPORT_SERVER_STORAGE.equals(model.getCreationMode())) + && config.isLocalStorageExist()) { // si on a creer la base locale a partir d'un import d'une base // distante, on sauvegarde la base locale comme dump initial // il s'agit d'un dump du référentiel @@ -511,12 +500,12 @@ public class StorageUIHandler { // on supprime le dump sql de la base embarquée if (!f.delete()) { throw new IllegalStateException("could not delete " + - f); + f); } } if (log.isInfoEnabled()) { log.info(">>> create initial dump with " + localDataSource + - " in " + f); + " in " + f); } try { DataSourceDumpProducerService dumpProducerService = observeContext.newService(DataSourceDumpProducerService.class); @@ -529,6 +518,31 @@ public class StorageUIHandler { } } } + + + if (model.getDbMode() == DbMode.CREATE_LOCAL) { + + DataSourceCreateConfigurationDto creationConfigurationDto = model.getCreationConfigurationDto(); + + currentDataSource.create(creationConfigurationDto); + } else { + // ouverture du nouveau storage + currentDataSource.open(); + } + + + + + + + if (log.isInfoEnabled()) { + log.info(">>> main storage opened " + currentDataSource.getLabel()); + } + + if (model.isStoreRemoteConfig()) { + storeRemoteConfig(context, model); + } + } catch (Exception ex) { ErrorDialogUI.showError(ex); if (log.isErrorEnabled()) { @@ -758,13 +772,13 @@ public class StorageUIHandler { addTag("h3", sb, t("observe.storage.report.action.import.remote.referentiel")); - addTag("pre", sb, model.getPgConfig().toString()); + addTag("pre", sb, model.getDataSourceConfigDetail()); break; case IMPORT_SERVER_STORAGE: addTag("h3", sb, t("observe.storage.report.action.import.server.referentiel")); - addTag("pre", sb, model.getRestConfig().toString()); + addTag("pre", sb, model.getDataSourceConfigDetail()); break; case EMPTY: diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index 0d1cc85..dfdd5de 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -35,6 +35,9 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.service.DataSourceDumpProducerService; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.PingService; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.JAXXContext; @@ -54,6 +57,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -117,6 +121,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { public static final String DATA_IMPORT_MODE_PROPERTY_NAME = "dataImportMode"; + public static final String EDIT_REMOTE_CONFIG_PROPERTY_NAME = "editRemoteConfig"; + + public static final String EDIT_SERVER_CONFIG_PROPERTY_NAME = "editServerConfig"; + public static final String VALID_PROPERTY_NAME = "valid"; private static final char[] EMPTY_PASSWORD = new char[0]; @@ -126,6 +134,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { /** Le dbMode de connexion requis. */ protected DbMode dbMode; + protected boolean editServerConfig; + + protected boolean editRemoteConfig; + /** Un drapeau pour savoir si une base locale existe. */ protected boolean localStorageExist; @@ -816,9 +828,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { case IMPORT_REMOTE_STORAGE: importDataConfig = pgConfig; universe.add(StorageStep.CONFIG); + break; case IMPORT_SERVER_STORAGE: importDataConfig = restConfig; universe.add(StorageStep.CONFIG); + break; } } break; @@ -894,7 +908,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { } break; case CONFIG: - if (dbMode == DbMode.USE_REMOTE || dbMode == DbMode.USE_SERVER) { + if (DbMode.USE_REMOTE.equals(dbMode) + || DbMode.USE_SERVER.equals(dbMode) + || DbMode.CREATE_LOCAL.equals(dbMode) + && (CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode) + || CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode))) { validate = ConnexionStatus.SUCCESS.equals(getConnexionStatus()); //FIXME Il faut savoir si l'utilisateur est le //FIXME propriétaire de la base @@ -1116,6 +1134,14 @@ public class StorageUIModel extends WizardModel<StorageStep> { return dbMode; } + public boolean isEditRemoteConfig() { + return editRemoteConfig; + } + + public boolean isEditServerConfig() { + return editServerConfig; + } + public ObserveDataSourceConfiguration getPreviousDataSourceConfiguration() { return previousDataSourceConfiguration; } @@ -1128,6 +1154,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { DbMode oldValue = this.dbMode; this.dbMode = dbMode; firePropertyChange(DB_MODE_PROPERTY_NAME, oldValue, dbMode); + updateEditConfig(); if (oldValue != dbMode) { // on recalcule l'univers des étapes disponibles @@ -1141,6 +1168,21 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePropertyChange(CAN_MIGRATE_PROPERTY_NAME, null, isCanMigrate()); } + protected void updateEditConfig() { + + boolean oldValueRemote = isEditRemoteConfig(); + editRemoteConfig = DbMode.USE_REMOTE.equals(dbMode) || + DbMode.CREATE_LOCAL.equals(dbMode) && CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode); + firePropertyChange(EDIT_REMOTE_CONFIG_PROPERTY_NAME, oldValueRemote, editRemoteConfig); + + boolean oldValueServer = isEditServerConfig(); + editServerConfig = DbMode.USE_SERVER.equals(dbMode) || + DbMode.CREATE_LOCAL.equals(dbMode) && CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode); + firePropertyChange(EDIT_SERVER_CONFIG_PROPERTY_NAME, oldValueServer, editServerConfig); + + } + + public void setLocalStorageExist(boolean localStorageExist) { boolean oldValue = this.localStorageExist; this.localStorageExist = localStorageExist; @@ -1236,10 +1278,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { CreationMode oldValue = getCreationMode(); this.creationMode = creationMode; firePropertyChange(CREATION_MODE_PROPERTY_NAME, oldValue, creationMode); + updateEditConfig(); if (oldValue != creationMode) { updateUniverse(); } - if (creationMode == CreationMode.IMPORT_REMOTE_STORAGE) { + if (CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode) || CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode)) { //TC-20100308 : dans le cas d'un import du référentiel distant //TC-20100308 : on utilise toujours l'utilisateur referentiel String s = getRemoteLogin(); @@ -1264,45 +1307,45 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getRemoteLogin() { String login = ""; - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - login = pgConfig.getUsername(); - break; - case USE_SERVER: - login = restConfig.getLogin(); - break; - } + + if (isEditRemoteConfig()) { + + login = pgConfig.getUsername(); + + } else if (isEditServerConfig()) { + + login = restConfig.getLogin(); + } return login; } public char[] getRemotePassword() { char[] password = EMPTY_PASSWORD; - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - password = pgConfig.getPassword(); - break; - case USE_SERVER: - password = restConfig.getPassword(); - break; - } + + if (isEditRemoteConfig()) { + + password = pgConfig.getPassword(); + + } else if (isEditServerConfig()) { + + password = restConfig.getPassword(); + } return password; } public String getRemoteUrl() { String url = ""; - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - url = pgConfig.getJdbcUrl(); - break; - case USE_SERVER: - url = serverUrl; - break; - } + + if (isEditRemoteConfig()) { + + url = pgConfig.getJdbcUrl(); + + } else if (isEditServerConfig()) { + + url = serverUrl; + } return url; } @@ -1337,63 +1380,55 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getDataSourceConfigDetail() { String result = null; - if (dbMode != null) { - switch (dbMode) { - case USE_LOCAL: - case CREATE_LOCAL: - result = t("observe.storage.detail.local", h2Config.getDbName()); - break; - case USE_REMOTE: - String yes = t("observe.boolean.yes"); - String no = t("observe.boolean.no"); - result = t("observe.storage.detail.remote", - pgConfig.getJdbcUrl(), - pgConfig.getUsername(), - "***", - (pgConfig.isUseSsl() ? yes : no)); - break; - case USE_SERVER: - result = t("observe.storage.detail.server", - restConfig.getServerUrl(), - restConfig.getLogin(), - "***", - restConfig.getOptionalDatabaseName().orNull()); - break; - } + if (isEditRemoteConfig()) { + String yes = t("observe.boolean.yes"); + String no = t("observe.boolean.no"); + result = t("observe.storage.detail.remote", + pgConfig.getJdbcUrl(), + pgConfig.getUsername(), + "***", + (pgConfig.isUseSsl() ? yes : no)); + } else if (isEditServerConfig()) { + result = t("observe.storage.detail.server", + restConfig.getServerUrl(), + restConfig.getLogin(), + "***", + restConfig.getOptionalDatabaseName().orNull()); + } else { + result = t("observe.storage.detail.local", h2Config.getDbName()); } return result; } - - public void setRemoteLogin(String remoteLogin) { + String oldValue = getRemoteLogin(); - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - pgConfig.setUsername(remoteLogin); - break; - case USE_SERVER: - restConfig.setLogin(remoteLogin); - break; - } + + if (isEditRemoteConfig()) { + + pgConfig.setUsername(remoteLogin); + + } else if (isEditServerConfig()) { + + restConfig.setLogin(remoteLogin); + } + firePgConfigChanged(REMOTE_LOGIN_ROPERTY_NAME, oldValue, remoteLogin); } public void setRemotePassword(char[] remotePassword) { char[] oldValue = getRemotePassword(); - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - pgConfig.setPassword(remotePassword); - break; - case USE_SERVER: - restConfig.setPassword(remotePassword); - break; - } + if (isEditRemoteConfig()) { + + pgConfig.setPassword(remotePassword); + + } else if (isEditServerConfig()) { + + restConfig.setPassword(remotePassword); + } firePgConfigChanged(REMOTE_PASSWORD_PROPERTY_NAME, oldValue, remotePassword); @@ -1423,15 +1458,15 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void setRemoteUrl(String remoteUrl) { String oldValue = getRemoteUrl(); - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - pgConfig.setJdbcUrl(remoteUrl); - break; - case USE_SERVER: - serverUrl = remoteUrl; - break; - } + + if (isEditRemoteConfig()) { + + pgConfig.setJdbcUrl(remoteUrl); + + } else if (isEditServerConfig()) { + + serverUrl = remoteUrl; + } firePgConfigChanged(REMOTE_URL_ROPERTY_NAME, oldValue, remoteUrl); } @@ -1472,43 +1507,58 @@ public class StorageUIModel extends WizardModel<StorageStep> { restConfig = sourceConfig; } - public DataSourceCreateConfigurationDto getCreationConfigurationDto() { - - DataSourceCreateConfigurationDto createConfigurationDto = null; - // FIXME -// if (getDbMode() == DbMode.CREATE_LOCAL) { -// switch (getCreationMode()) { -// case EMPTY: -// case IMPORT_EXTERNAL_DUMP: -// // rien a faire -// break; -// case IMPORT_INTERNAL_DUMP: -// -// createConfigurationDto = new DataSourceCreateConfigurationDto(); -// -// -// try { -// result.setDbDump( -// config.getInitialDbDump().toURI().toURL()); -// } catch (MalformedURLException ex) { -// throw new IllegalArgumentException( -// "can not build url for initialDbDump for " + -// "reason " + ex.getMessage(), ex); -// } -// break; -// case IMPORT_LOCAL_STORAGE: -// result.getImportConfig().setShortLabel( -// n("observe.storage.label.import.local")); -// break; -// case IMPORT_REMOTE_STORAGE: -// result.getImportConfig().setShortLabel( -// n("observe.storage.label.import.remote")); -// break; -// } -// -// -// } - return createConfigurationDto; + public DataSourceCreateConfigurationDto getCreationConfigurationDto() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + + DataSourceCreateConfigurationDto result = null; + + if (getDbMode() == DbMode.CREATE_LOCAL) { + result = new DataSourceCreateConfigurationDto(); + + if (CreationMode.IMPORT_EXTERNAL_DUMP.equals(creationMode) || CreationMode.IMPORT_INTERNAL_DUMP.equals(creationMode)) { + + File dumpFile; + + if (CreationMode.IMPORT_EXTERNAL_DUMP.equals(creationMode)) { + dumpFile = getDumpFile(); + } else { + dumpFile = config.getInitialDbDump(); + } + + byte[] dump = Files.readAllBytes(dumpFile.toPath()); + result.setImportDatabase(dump); + + } else { + + ObserveDataSourceConfiguration configSrc = null; + + switch (getCreationMode()) { + case IMPORT_LOCAL_STORAGE: + configSrc = h2Config; + break; + case IMPORT_REMOTE_STORAGE: + configSrc = pgConfig; + break; + case IMPORT_SERVER_STORAGE: + configSrc = restConfig; + break; + } + + if (configSrc != null) { + ObserveSwingDataSource source = new ObserveSwingDataSource(configSrc); + source.open(); + DataSourceDumpProducerService dumpService = source.newService(DataSourceDumpProducerService.class); + byte[] dump = dumpService.getReferentialDump(); + result.setImportDatabase(dump); + + source.close(); + + } + + } + + } + + return result; } public ObserveDataSourceConfigurationTopiaH2 toH2StorageConfig(String label) { @@ -1595,9 +1645,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { boolean result = false; connexionStatusError = ""; - if (DbMode.USE_REMOTE.equals(getDbMode())) { + if (isEditRemoteConfig()) { config = pgConfig; - } else if (DbMode.USE_SERVER.equals(getDbMode())) { + } else if (isEditServerConfig()) { try { URL url = new URL(serverUrl); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css index cfcb07b..4399f7b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css @@ -44,6 +44,14 @@ layout:{new BorderLayout()}; } +#IMPORT_SERVER_STORAGE { + _description:{n("observe.storage.importServerStorage.description")}; +} + +#IMPORT_SERVER_STORAGE_content { + layout:{new BorderLayout()}; +} + #USE_REMOTE { _description:{n("observe.storage.useRemoteStorage.description")}; } @@ -77,16 +85,16 @@ } #serverDataBaseLabel { - visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; + visible: {model.isEditServerConfig()}; } #serverDataBase { - visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; + visible: {model.isEditServerConfig()}; text:{model.getServerDatabase()}; } #remoteUseSsl { - visible: {DbMode.USE_REMOTE.equals(model.getDbMode())}; + visible: {model.isEditRemoteConfig()}; text:"observe.storage.remote.useSll"; selected:{model.isUseSsl()}; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx index 779fd17..aed93d0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx @@ -118,6 +118,23 @@ public void init() { </Table> + <!-- configurer creation base locale et import referentiel depuis un server distant --> + <Table id='IMPORT_SERVER_STORAGE' + fill="both" + constraints='"IMPORT_SERVER_STORAGE"'> + <row> + <cell> + <JLabel text='observe.storage.importServerStorage.config'/> + </cell> + </row> + <row> + <cell weighty='1' weightx='1'> + <JPanel id='IMPORT_SERVER_STORAGE_content'/> + </cell> + </row> + + </Table> + <!-- configurer connexion a base distante --> <Table id='USE_REMOTE' constraints='"USE_REMOTE"' fill='both'> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java index b0cee4b..1a5d591 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java @@ -21,7 +21,6 @@ */ package fr.ird.observe.ui.storage.tabs; -import com.google.common.collect.ImmutableSet; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; @@ -302,6 +301,8 @@ public class StorageTabUIHandler { ui.setDescriptionText(t(text)); if (c.equals(ui.IMPORT_REMOTE_STORAGE)) { ui.IMPORT_REMOTE_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); + } else if (c.equals(ui.IMPORT_SERVER_STORAGE)) { + ui.IMPORT_SERVER_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); } else if (c.equals(ui.USE_REMOTE)) { ui.USE_REMOTE_content.add(ui.remoteConfig, BorderLayout.CENTER); } else if (c.equals(ui.USE_SERVER)) { @@ -448,7 +449,8 @@ public class StorageTabUIHandler { // on recopie la configuration de la source d'import ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); - ui.getModel().getCreationConfigurationDto().setImportReferentialDataSourceConfiguration(config); + //Fixme + //ui.getModel().getCreationConfigurationDto().setImportReferentialDataSourceConfiguration(config); sourceModel.validate(StorageStep.CONFIG); @@ -465,7 +467,8 @@ public class StorageTabUIHandler { // on recopie la configuration de la source d'import ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); - ui.getModel().getCreationConfigurationDto().setImportDataConfiguration(config, ImmutableSet.<String>of()); + // Fixme + //ui.getModel().getCreationConfigurationDto().setImportDataConfiguration(config, ImmutableSet.<String>of()); sourceModel.validate(StorageStep.CONFIG); diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties index dfd2c7e..edc8d1e 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties @@ -1800,6 +1800,8 @@ observe.storage.importRemoteStorage.config= observe.storage.importRemoteStorage.description= observe.storage.importRemoteStorageData.config= observe.storage.importRemoteStorageReferentiel.config= +observe.storage.importServerStorage.config= +observe.storage.importServerStorage.description= observe.storage.internalDump.last.modified= observe.storage.internalDump.not.exist= observe.storage.label.backup= diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties index 082d33d..5fa9165 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties @@ -1802,6 +1802,8 @@ observe.storage.importRemoteStorage.config=Seleccione la base remota a importar observe.storage.importRemoteStorage.description=Configurar la conección hacia una base remota.\nAntes de continuar, debe validad la conexión. observe.storage.importRemoteStorageData.config= observe.storage.importRemoteStorageReferentiel.config=Escoja la base remota que contenga el referencial a importar +observe.storage.importServerStorage.config= +observe.storage.importServerStorage.description= observe.storage.internalDump.last.modified=(última importación \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) observe.storage.internalDump.not.exist=No hay base de embarque. observe.storage.label.backup=Base temporal para backup diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index 7884eda..1ca4299 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -1801,6 +1801,8 @@ observe.storage.importRemoteStorage.config=Sélection de la base distante à imp observe.storage.importRemoteStorage.description=Veuillez configurer la connexion vers une base distante.\nAvant de pouvoir poursuivre, vous devez valider la connexion. observe.storage.importRemoteStorageData.config=Choisir la base distante contenant les données à importer observe.storage.importRemoteStorageReferentiel.config=Choisir la base distante contenant le référentiel à importer +observe.storage.importServerStorage.config= +observe.storage.importServerStorage.description= observe.storage.internalDump.last.modified=(dernier import \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) observe.storage.internalDump.not.exist=Pas de base embarquée. observe.storage.label.backup=Base temporaire pour backup diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java new file mode 100644 index 0000000..d93f13d --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java @@ -0,0 +1,29 @@ +package fr.ird.observe.application.web.controller.v1; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.service.DataSourceDumpProducerService; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class DataSourceDumpProducerServiceController extends ObserveAuthenticatedServiceControllerSupport<DataSourceDumpProducerService> implements DataSourceDumpProducerService{ + + public DataSourceDumpProducerServiceController() { + super(DataSourceDumpProducerService.class); + } + + @Override + public byte[] getReferentialDump() { + return service.getReferentialDump(); + } + + @Override + public byte[] getAllDataDump() { + return service.getAllDataDump(); + } + + @Override + public byte[] getDataDump(ImmutableSet<String> importDataIds) { + return service.getDataDump(importDataIds); + } +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java index 15c576d..7ee9d9d 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java @@ -21,11 +21,16 @@ public class VersionAdapter implements JsonSerializer<Version>, JsonDeserializer String versionStr = json.getAsString(); - return Versions.valueOf(versionStr); + Version version = Versions.valueOf(versionStr); + + return version; } @Override public JsonElement serialize(Version src, Type typeOfSrc, JsonSerializationContext context) { - return context.serialize(src.getVersion()); + + JsonElement jsonElement = context.serialize(src.getVersion()); + + return jsonElement; } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java index ce96aa0..ec2f720 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java @@ -10,21 +10,35 @@ public class ProgramDtos extends AbstractProgramDtos { } public static boolean isProgramSeine(ProgramDto programDto) { - return GearType.longline.equals(programDto.getGearType()); + return GearType.seine.equals(programDto.getGearType()); } public static boolean isProgramLongline(ReferenceDto<ProgramDto> programDtoRef) { - GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + boolean result = false; + + if (programDtoRef.getPropertyNames().contains(ProgramDto.PROPERTY_GEAR_TYPE)) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + result = GearType.longline.equals(gearType); + } - return GearType.longline.equals(gearType); + return result; } public static boolean isProgramSeine(ReferenceDto<ProgramDto> programDtoRef) { - GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + boolean result = false; + + if (programDtoRef.getPropertyNames().contains(ProgramDto.PROPERTY_GEAR_TYPE)) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + result = GearType.seine.equals(gearType); + } - return GearType.longline.equals(gearType); + return result; } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java index cac1eb6..6ebad2b 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java @@ -135,6 +135,9 @@ public class ObserveServiceContextTopia { public File createTemporaryDirectory(String prefix) { Set<PosixFilePermission> posixFilePermissions = PosixFilePermissions.fromString("rwxr-x---"); FileAttribute<Set<PosixFilePermission>> fileAttribute = PosixFilePermissions.asFileAttribute(posixFilePermissions); + if (! getTemporaryDirectoryRoot().exists()) { + getTemporaryDirectoryRoot().mkdirs(); + } try { return Files.createTempDirectory(getTemporaryDirectoryRoot().toPath(), prefix, fileAttribute).toFile(); } catch (IOException e) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java index b8af7db..72616eb 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java @@ -22,10 +22,12 @@ package fr.ird.observe.services.builder; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import fr.ird.observe.entities.referentiel.ReferenceEntity; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.ObserveDtoBinders; +import fr.ird.observe.services.dto.ObserveDtosInitializer; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; @@ -75,6 +77,8 @@ public class EntityToReferentialReferenceDtoBuilder<E extends TopiaEntity, D ext Class referenceDtoType = ObserveServiceTopia.getDtoType(topiaEntity.getClass()); propertyValue = EntityToReferenceDtoBuilder.build(referenceDtoType, referentialLocale, topiaEntity); + } else { + propertyValue = transform(propertyValue); } result.setPropertyValue(referentialLocale, propertyName, (Serializable) propertyValue); @@ -87,4 +91,13 @@ public class EntityToReferentialReferenceDtoBuilder<E extends TopiaEntity, D ext } + protected static Object transform(Object propertyValue) { + Function function = ObserveDtosInitializer.ENTITY_TO_DTO_FUNCTIONS.get(propertyValue.getClass()); + if (function != null) { + propertyValue = function.apply(propertyValue); + } + return propertyValue; + } + + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java index b914890..ebc41b6 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java @@ -234,6 +234,8 @@ import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import org.nuiton.util.beans.BinderModelBuilder; +import java.util.Map; + /** * Pour initialiser tous les binders. * @@ -867,7 +869,7 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { ProgramDto.PROPERTY_BIRDS_OBSERVATION, ProgramDto.PROPERTY_TARGET_DISCARDS_OBSERVATION, ProgramDto.PROPERTY_GEAR_TYPE); - registerReferentialReferenceDtoBinder(ProgramDto.class, Program.class); + registerReferentialReferenceDtoBinder(ProgramDto.class, Program.class, ProgramDto.PROPERTY_GEAR_TYPE); } @Override @@ -1277,22 +1279,22 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initActivitySeineDto() { registerMainDto(ActivitySeineDto.class, ActivitySeine.class, - ActivitySeineDto.PROPERTY_COMMENT, - ActivitySeineDto.PROPERTY_TIME, - ActivitySeineDto.PROPERTY_LATITUDE, - ActivitySeineDto.PROPERTY_LONGITUDE, - ActivitySeineDto.PROPERTY_VESSEL_SPEED, - ActivitySeineDto.PROPERTY_SEA_SURFACE_TEMPERATURE, - ActivitySeineDto.PROPERTY_ERS_ID, - ActivitySeineDto.PROPERTY_VESSEL_ACTIVITY_SEINE, - ActivitySeineDto.PROPERTY_SURROUNDING_ACTIVITY, - ActivitySeineDto.PROPERTY_DETECTION_MODE, - ActivitySeineDto.PROPERTY_REASON_FOR_NO_FISHING, - ActivitySeineDto.PROPERTY_PREVIOUS_FPA_ZONE, - ActivitySeineDto.PROPERTY_CURRENT_FPA_ZONE, - ActivitySeineDto.PROPERTY_NEXT_FPA_ZONE, - ActivitySeineDto.PROPERTY_WIND, - ActivitySeineDto.PROPERTY_LAST_UPDATE + ActivitySeineDto.PROPERTY_COMMENT, + ActivitySeineDto.PROPERTY_TIME, + ActivitySeineDto.PROPERTY_LATITUDE, + ActivitySeineDto.PROPERTY_LONGITUDE, + ActivitySeineDto.PROPERTY_VESSEL_SPEED, + ActivitySeineDto.PROPERTY_SEA_SURFACE_TEMPERATURE, + ActivitySeineDto.PROPERTY_ERS_ID, + ActivitySeineDto.PROPERTY_VESSEL_ACTIVITY_SEINE, + ActivitySeineDto.PROPERTY_SURROUNDING_ACTIVITY, + ActivitySeineDto.PROPERTY_DETECTION_MODE, + ActivitySeineDto.PROPERTY_REASON_FOR_NO_FISHING, + ActivitySeineDto.PROPERTY_PREVIOUS_FPA_ZONE, + ActivitySeineDto.PROPERTY_CURRENT_FPA_ZONE, + ActivitySeineDto.PROPERTY_NEXT_FPA_ZONE, + ActivitySeineDto.PROPERTY_WIND, + ActivitySeineDto.PROPERTY_LAST_UPDATE ); } @@ -1315,12 +1317,12 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initFloatingObjectDto() { registerMainDto(FloatingObjectDto.class, FloatingObject.class, - FloatingObjectDto.PROPERTY_COMMENT, - FloatingObjectDto.PROPERTY_DAYS_AT_SEA_COUNT, - FloatingObjectDto.PROPERTY_SUPPORT_VESSEL_NAME, - FloatingObjectDto.PROPERTY_OBJECT_FATE, - FloatingObjectDto.PROPERTY_OBJECT_OPERATION, - FloatingObjectDto.PROPERTY_OBJECT_TYPE + FloatingObjectDto.PROPERTY_COMMENT, + FloatingObjectDto.PROPERTY_DAYS_AT_SEA_COUNT, + FloatingObjectDto.PROPERTY_SUPPORT_VESSEL_NAME, + FloatingObjectDto.PROPERTY_OBJECT_FATE, + FloatingObjectDto.PROPERTY_OBJECT_OPERATION, + FloatingObjectDto.PROPERTY_OBJECT_TYPE ); } @@ -1348,8 +1350,8 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initFloatingObjectTransmittingBuoyDto() { registerDto(FloatingObjectTransmittingBuoyDto.class, FloatingObject.class, - FloatingObjectTransmittingBuoyDto.PROPERTY_COMMENT, - FloatingObjectTransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY + FloatingObjectTransmittingBuoyDto.PROPERTY_COMMENT, + FloatingObjectTransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY ); } @@ -1459,23 +1461,23 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initSetSeineDto() { registerMainDto(SetSeineDto.class, SetSeine.class, - SetSeineDto.PROPERTY_COMMENT, - SetSeineDto.PROPERTY_START_TIME, - SetSeineDto.PROPERTY_END_PURSING_TIME_STAMP, - SetSeineDto.PROPERTY_END_SET_TIME_STAMP, - SetSeineDto.PROPERTY_MAX_GEAR_DEPTH, - SetSeineDto.PROPERTY_CURRENT_SPEED, - SetSeineDto.PROPERTY_CURRENT_DIRECTION, - SetSeineDto.PROPERTY_SCHOOL_TOP_DEPTH, - SetSeineDto.PROPERTY_SCHOOL_MEAN_DEPTH, - SetSeineDto.PROPERTY_SCHOOL_THICKNESS, - SetSeineDto.PROPERTY_SONAR_USED, - SetSeineDto.PROPERTY_SUPPORT_VESSEL_NAME, - SetSeineDto.PROPERTY_NON_TARGET_DISCARDED, - SetSeineDto.PROPERTY_CURRENT_MEASURE_DEPTH, - SetSeineDto.PROPERTY_SCHOOL_TYPE, - SetSeineDto.PROPERTY_REASON_FOR_NULL_SET, - SetSeineDto.PROPERTY_LAST_UPDATE + SetSeineDto.PROPERTY_COMMENT, + SetSeineDto.PROPERTY_START_TIME, + SetSeineDto.PROPERTY_END_PURSING_TIME_STAMP, + SetSeineDto.PROPERTY_END_SET_TIME_STAMP, + SetSeineDto.PROPERTY_MAX_GEAR_DEPTH, + SetSeineDto.PROPERTY_CURRENT_SPEED, + SetSeineDto.PROPERTY_CURRENT_DIRECTION, + SetSeineDto.PROPERTY_SCHOOL_TOP_DEPTH, + SetSeineDto.PROPERTY_SCHOOL_MEAN_DEPTH, + SetSeineDto.PROPERTY_SCHOOL_THICKNESS, + SetSeineDto.PROPERTY_SONAR_USED, + SetSeineDto.PROPERTY_SUPPORT_VESSEL_NAME, + SetSeineDto.PROPERTY_NON_TARGET_DISCARDED, + SetSeineDto.PROPERTY_CURRENT_MEASURE_DEPTH, + SetSeineDto.PROPERTY_SCHOOL_TYPE, + SetSeineDto.PROPERTY_REASON_FOR_NULL_SET, + SetSeineDto.PROPERTY_LAST_UPDATE ); } @@ -1499,8 +1501,8 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initSetSeineTargetCatchDto() { registerDto(SetSeineTargetCatchDto.class, SetSeine.class, - SetSeineTargetCatchDto.PROPERTY_TARGET_CATCH, - SetSeineTargetCatchDto.PROPERTY_LAST_UPDATE + SetSeineTargetCatchDto.PROPERTY_TARGET_CATCH, + SetSeineTargetCatchDto.PROPERTY_LAST_UPDATE ); } @@ -1544,11 +1546,11 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initTransmittingBuoyDto() { registerMainDto(TransmittingBuoyDto.class, TransmittingBuoy.class, - TransmittingBuoyDto.PROPERTY_CODE, - TransmittingBuoyDto.PROPERTY_BRAND, - TransmittingBuoyDto.PROPERTY_OWNERSHIP, - TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_OPERATION, - TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_TYPE + TransmittingBuoyDto.PROPERTY_CODE, + TransmittingBuoyDto.PROPERTY_BRAND, + TransmittingBuoyDto.PROPERTY_OWNERSHIP, + TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_OPERATION, + TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_TYPE ); } @@ -1740,101 +1742,109 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { return builder; } - protected static <Source extends IdDto, Target> void addDtoToEntityFunctions(BinderModelBuilder<Source, Target> builder) { - - builder.addFunction(fr.ird.observe.services.dto.constants.GearType.class, new Function<fr.ird.observe.services.dto.constants.GearType, fr.ird.observe.entities.constants.GearType>() { - - @Override - public fr.ird.observe.entities.constants.GearType apply(fr.ird.observe.services.dto.constants.GearType input) { - return fr.ird.observe.entities.constants.GearType.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.ReferenceStatus.class, new Function<fr.ird.observe.services.dto.constants.ReferenceStatus, fr.ird.observe.entities.constants.ReferenceStatus>() { - - @Override - public fr.ird.observe.entities.constants.ReferenceStatus apply(fr.ird.observe.services.dto.constants.ReferenceStatus input) { - return fr.ird.observe.entities.constants.ReferenceStatus.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.Ownership.class, new Function<fr.ird.observe.services.dto.constants.seine.Ownership, fr.ird.observe.entities.constants.seine.Ownership>() { - - @Override - public fr.ird.observe.entities.constants.seine.Ownership apply(fr.ird.observe.services.dto.constants.seine.Ownership input) { - return fr.ird.observe.entities.constants.seine.Ownership.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.SchoolType.class, new Function<fr.ird.observe.services.dto.constants.seine.SchoolType, fr.ird.observe.entities.constants.seine.SchoolType>() { + public static ImmutableMap<Class, Function> DTO_TO_ENTITY_FUNCTIONS = ImmutableMap.<Class, Function>builder() + .put(fr.ird.observe.services.dto.constants.GearType.class, new Function<fr.ird.observe.services.dto.constants.GearType, fr.ird.observe.entities.constants.GearType>() { + + @Override + public fr.ird.observe.entities.constants.GearType apply(fr.ird.observe.services.dto.constants.GearType input) { + return fr.ird.observe.entities.constants.GearType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.ReferenceStatus.class, new Function<fr.ird.observe.services.dto.constants.ReferenceStatus, fr.ird.observe.entities.constants.ReferenceStatus>() { + + @Override + public fr.ird.observe.entities.constants.ReferenceStatus apply(fr.ird.observe.services.dto.constants.ReferenceStatus input) { + return fr.ird.observe.entities.constants.ReferenceStatus.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.Ownership.class, new Function<fr.ird.observe.services.dto.constants.seine.Ownership, fr.ird.observe.entities.constants.seine.Ownership>() { + + @Override + public fr.ird.observe.entities.constants.seine.Ownership apply(fr.ird.observe.services.dto.constants.seine.Ownership input) { + return fr.ird.observe.entities.constants.seine.Ownership.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.SchoolType.class, new Function<fr.ird.observe.services.dto.constants.seine.SchoolType, fr.ird.observe.entities.constants.seine.SchoolType>() { + + @Override + public fr.ird.observe.entities.constants.seine.SchoolType apply(fr.ird.observe.services.dto.constants.seine.SchoolType input) { + return fr.ird.observe.entities.constants.seine.SchoolType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation>() { + + @Override + public fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation input) { + return fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource>() { + + @Override + public fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource input) { + return fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); + } + }) + .build(); + + public static ImmutableMap<Class, Function> ENTITY_TO_DTO_FUNCTIONS = ImmutableMap.<Class, Function>builder() + .put(fr.ird.observe.entities.constants.GearType.class, new Function<fr.ird.observe.entities.constants.GearType, fr.ird.observe.services.dto.constants.GearType>() { + + @Override + public fr.ird.observe.services.dto.constants.GearType apply(fr.ird.observe.entities.constants.GearType input) { + return fr.ird.observe.services.dto.constants.GearType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.ReferenceStatus.class, new Function<fr.ird.observe.entities.constants.ReferenceStatus, fr.ird.observe.services.dto.constants.ReferenceStatus>() { + + @Override + public fr.ird.observe.services.dto.constants.ReferenceStatus apply(fr.ird.observe.entities.constants.ReferenceStatus input) { + return fr.ird.observe.services.dto.constants.ReferenceStatus.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.Ownership.class, new Function<fr.ird.observe.entities.constants.seine.Ownership, fr.ird.observe.services.dto.constants.seine.Ownership>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.Ownership apply(fr.ird.observe.entities.constants.seine.Ownership input) { + return fr.ird.observe.services.dto.constants.seine.Ownership.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.SchoolType.class, new Function<fr.ird.observe.entities.constants.seine.SchoolType, fr.ird.observe.services.dto.constants.seine.SchoolType>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.SchoolType apply(fr.ird.observe.entities.constants.seine.SchoolType input) { + return fr.ird.observe.services.dto.constants.seine.SchoolType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation input) { + return fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource input) { + return fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); + } + }) + .build(); - @Override - public fr.ird.observe.entities.constants.seine.SchoolType apply(fr.ird.observe.services.dto.constants.seine.SchoolType input) { - return fr.ird.observe.entities.constants.seine.SchoolType.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation>() { - @Override - public fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation input) { - return fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource>() { + protected static <Source extends IdDto, Target> void addDtoToEntityFunctions(BinderModelBuilder<Source, Target> builder) { - @Override - public fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource input) { - return fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); - } - }); + for(Map.Entry<Class, Function> entry : DTO_TO_ENTITY_FUNCTIONS.entrySet()) { + builder.addFunction(entry.getKey(), entry.getValue()); + } } protected static <Source extends TopiaEntity, Target> void addEntityToDtoFunctions(BinderModelBuilder<Source, Target> builder) { - builder.addFunction(fr.ird.observe.entities.constants.GearType.class, new Function<fr.ird.observe.entities.constants.GearType, fr.ird.observe.services.dto.constants.GearType>() { - - @Override - public fr.ird.observe.services.dto.constants.GearType apply(fr.ird.observe.entities.constants.GearType input) { - return fr.ird.observe.services.dto.constants.GearType.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.ReferenceStatus.class, new Function<fr.ird.observe.entities.constants.ReferenceStatus, fr.ird.observe.services.dto.constants.ReferenceStatus>() { - - @Override - public fr.ird.observe.services.dto.constants.ReferenceStatus apply(fr.ird.observe.entities.constants.ReferenceStatus input) { - return fr.ird.observe.services.dto.constants.ReferenceStatus.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.Ownership.class, new Function<fr.ird.observe.entities.constants.seine.Ownership, fr.ird.observe.services.dto.constants.seine.Ownership>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.Ownership apply(fr.ird.observe.entities.constants.seine.Ownership input) { - return fr.ird.observe.services.dto.constants.seine.Ownership.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.SchoolType.class, new Function<fr.ird.observe.entities.constants.seine.SchoolType, fr.ird.observe.services.dto.constants.seine.SchoolType>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.SchoolType apply(fr.ird.observe.entities.constants.seine.SchoolType input) { - return fr.ird.observe.services.dto.constants.seine.SchoolType.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation input) { - return fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource input) { - return fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); - } - }); + for(Map.Entry<Class, Function> entry : ENTITY_TO_DTO_FUNCTIONS.entrySet()) { + builder.addFunction(entry.getKey(), entry.getValue()); + } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java new file mode 100644 index 0000000..c64795b --- /dev/null +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java @@ -0,0 +1,57 @@ +package fr.ird.observe.services.builder; + +import fr.ird.observe.entities.constants.GearType; +import fr.ird.observe.entities.constants.ReferenceStatus; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.referentiel.ProgramImpl; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.util.DateUtil; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class EntityToReferentialReferenceDtoBuilderTest { + + @BeforeClass + public static void setUp() throws Exception { + ObserveServiceTopia.init(); + } + + @Test + public void testCopy() { + + Program program = new ProgramImpl(); + program.setCode("code"); + program.setNeedComment(true); + program.setStatus(ReferenceStatus.enabled); + program.setLabel1("label1"); + program.setLabel2("label2"); + program.setLabel3("label3"); + program.setLabel4("label4"); + program.setLabel5("label5"); + program.setLabel6("label6"); + program.setLabel7("label7"); + program.setLabel8("label8"); + program.setTopiaId("Program1"); + program.setStartDate(DateUtil.createDate(1, 1, 1)); + program.setEndDate(DateUtil.createDate(1, 1, 2)); + program.setGearType(GearType.seine); + program.setTargetDiscardsObservation(1); + + ReferentialReferenceDto<ProgramDto> referenceProgramDto = EntityToReferentialReferenceDtoBuilder.build(ProgramDto.class, ReferentialLocale.FR, program); + + // On vérife que le program a bien été copié + Assert.assertEquals(program.getTopiaId(), referenceProgramDto.getId()); + Assert.assertEquals(program.getCode(), referenceProgramDto.getPropertyValue(ProgramDto.PROPERTY_CODE)); + Assert.assertEquals(program.getLabel2(), referenceProgramDto.getPropertyValue("label")); + Assert.assertEquals(fr.ird.observe.services.dto.constants.GearType.seine, referenceProgramDto.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE)); + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm