Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 5e12a2a1 by Tony Chemit at 2021-03-20T09:24:05+01:00 Petits ajustements sur le gestionnaire de connection - Closes #1816 - - - - - f96e4be5 by Tony Chemit at 2021-03-20T09:24:05+01:00 update pom - - - - - 44b34eba by Tony Chemit at 2021-03-20T09:24:05+01:00 Fix referenceProperty on Simple Data - - - - - 18 changed files: - client/core/src/main/java/fr/ird/observe/client/action/api/FeedBackBuilder.java - client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java - client/core/src/main/java/fr/ird/observe/client/datasource/h2/backup/BackupsManager.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorHelper.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/loading/close/CloseDataSourceAction.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/loading/close/DestroyLocalDataSourceActionStep.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/loading/open/OpenDataSourceActionStep.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/simple/ContentSimpleUIDescriptor.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/simple/GenerateContentSimpleUINavigationScope.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java - pom.xml - server/core/src/main/filtered-resources/mapping - services/api-test/pom.xml - services/api-test/src/main/java/fr/ird/observe/services/service/DataSourceServiceFixtures.java - services/api-test/src/main/java/fr/ird/observe/services/service/data/DataFileServiceFixtures.java - services/local-impl/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocalSupport.java - services/local-impl/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java - services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivitySampleServiceLocalSupport.java Changes: ===================================== client/core/src/main/java/fr/ird/observe/client/action/api/FeedBackBuilder.java ===================================== @@ -113,6 +113,9 @@ public class FeedBackBuilder { } private void copyDirectoryToZip(Path rootFile, ZipOutputStream zipOutputStream) throws IOException { + if (Files.notExists(rootFile )) { + return; + } Path rootFileParent = rootFile.getParent(); Files.walk(rootFile).filter(Files::isRegularFile).forEach(p -> copyFileToZip(rootFileParent, p, zipOutputStream)); } ===================================== client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java ===================================== @@ -56,7 +56,6 @@ import fr.ird.observe.services.ObserveServicesProviderSupport; 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.DatabaseDestroyNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.ObserveService; import fr.ird.observe.services.service.referential.ObserveReferentialCache; @@ -81,6 +80,7 @@ import javax.swing.BoundedRangeModel; import javax.swing.Icon; import javax.swing.JOptionPane; import javax.swing.event.EventListenerList; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.util.Iterator; @@ -206,7 +206,7 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple } public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - checkIsNotAlreadyOpen(); + checkIsNotOpen(); fireNewMessage(t("observe.ui.datasource.storage.message.opening", getLabel())); fireOpening(); DataSourceService dataSourceService = servicesProvider.getDataSourceService(); @@ -218,7 +218,7 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple public void create(DataSourceCreateConfigurationDto createDto) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException, BabModelVersionException { - checkIsNotAlreadyOpen(); + checkIsNotOpen(); fireNewMessage(t("observe.ui.datasource.storage.message.creating", getLabel())); fireOpening(); DataSourceService dataSourceService = servicesProvider.getDataSourceService(); @@ -256,24 +256,14 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple } } - public void destroy() throws DatabaseDestroyNotAuthorizedException { - checkIsOpen(); + public void destroy() { + checkIsNotOpen(); fireNewMessage(t("observe.ui.datasource.storage.message.destroying", getLabel())); - fireClosing(); - referentialCache.close(); try { - DataSourceService dataSourceService = servicesProvider.getDataSourceService(); - dataSourceService.destroy(); + destroy0(); } finally { ObserveUtil.cleanMemory(); - try { - servicesProvider.close(); - } catch (Exception e) { - log.error("Could not close properly services provider", e); - } - setConnection(null); fireNewMessage(t("observe.ui.datasource.storage.message.destroyed", getLabel())); - fireClosed(); } } @@ -370,7 +360,7 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple } public ObserveDataSourceInformation checkCanConnect(boolean canBeEmpty) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - checkIsNotAlreadyOpen(); + checkIsNotOpen(); DataSourceService dataSourceService = servicesProvider.getDataSourceService(); ObserveDataSourceInformation dataSourceInformation = canBeEmpty ? dataSourceService.checkCanConnectOrBeEmpty(getConfiguration()) : dataSourceService.checkCanConnect(getConfiguration()); setOwner(dataSourceInformation.isOwner()); @@ -495,12 +485,6 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple } } - private void checkIsNotAlreadyOpen() { - if (isOpen()) { - throw new IllegalStateException("Connection is already open"); - } - } - private void checkIsNotOpen() { if (isOpen()) { throw new IllegalStateException("Connection is open"); @@ -614,4 +598,18 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple public String getSummaryText() { return ObserveSwingDataSourceTemplate.generate(this); } + + + public void destroy0() { + + if (!isLocal()) { + throw new IllegalStateException("CAN NOT DESTROY A NONE LOCAL DATABASE"); + } + ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = (ObserveDataSourceConfigurationTopiaH2) getConfiguration(); + File databaseFile = dataSourceConfigurationH2.getDatabaseFile(); + if (!databaseFile.delete()) { + throw new IllegalStateException("could not delete " + databaseFile); + } + } + } ===================================== client/core/src/main/java/fr/ird/observe/client/datasource/h2/backup/BackupsManager.java ===================================== @@ -100,11 +100,12 @@ public class BackupsManager implements Closeable { DataSourceCreateConfigurationDto createDto = new DataSourceCreateConfigurationDto(); createDto.setImportDatabase(TopiaSqlScript.of(backupStorage.getFile().toURI())); - ObserveSwingDataSource dataSource = dataSourcesManager.newTemporaryH2DataSource("check-" + backupStorage.getName()); - try { - dataSource.create(createDto); - } finally { - dataSource.destroy(); + try (ObserveSwingDataSource dataSource = dataSourcesManager.newTemporaryH2DataSource("check-" + backupStorage.getName())) { + try { + dataSource.create(createDto); + } finally { + dataSource.destroy(); + } } backupStorage.setVerified(true); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorHelper.java ===================================== @@ -204,6 +204,7 @@ public class DataSourceEditorHelper { if (response == 1) { // creation de la base locale initMode = DataSourceInitMode.CREATE; + dbModes.add(DataSourceConnectMode.LOCAL); title = I18n.n("observe.runner.initStorage.title.create.local.db"); } else { // connexion à une base distante ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/loading/close/CloseDataSourceAction.java ===================================== @@ -48,7 +48,7 @@ public class CloseDataSourceAction extends ActionWithSteps<LoadingDataSourceCont boolean currentDataSourceIsLocal = currentDataSource != null && currentDataSource.isLocal(); boolean doBackupLocal = localStorageExist && model.isDoBackup(); boolean doDestroyLocal = localStorageExist && model.getChooseDb().getInitModel().isOnCreateMode(); - boolean doOpenLocal = (currentDataSourceIsLocal || localStorageExist) && (doBackupLocal || doDestroyLocal); + boolean doOpenLocal = !currentDataSourceIsLocal && doBackupLocal; boolean doCloseCurrentDataSource = currentDataSource != null && !doOpenLocal; return ImmutableList.of( @@ -56,10 +56,10 @@ public class CloseDataSourceAction extends ActionWithSteps<LoadingDataSourceCont new OpenLocalDataSourceActionStep(actionContext, doOpenLocal), // Backup local data source new BackupLocalDataSourceActionStep(actionContext, doBackupLocal), - // Destroy local data source - new DestroyLocalDataSourceActionStep(actionContext, doDestroyLocal), // Close local data source new CloseLocalDataSourceActionStep(actionContext, doOpenLocal), + // Destroy local data source + new DestroyLocalDataSourceActionStep(actionContext, doDestroyLocal), // Close current data source new CloseCurrentDataSourceActionStep(actionContext, doCloseCurrentDataSource)); } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/loading/close/DestroyLocalDataSourceActionStep.java ===================================== @@ -56,7 +56,7 @@ public class DestroyLocalDataSourceActionStep extends CloseDataSourceActionStepS } @Override - public void doAction0(ActionWithSteps<LoadingDataSourceContext> mainAction) throws Exception { + public void doAction0(ActionWithSteps<LoadingDataSourceContext> mainAction) { ObserveSwingDataSource localDataSource = Objects.requireNonNull(actionContext.getLocalDataSource()); log.info(String.format("Destroy local data source %s", localDataSource)); try { ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/loading/open/OpenDataSourceActionStep.java ===================================== @@ -92,7 +92,7 @@ public class OpenDataSourceActionStep extends OpenDataSourceActionStepSupport { newDataSource.setProgressModel(actionContext.getProgressModel()); DataSourceInitModel initModel = model.getChooseDb().getInitModel(); - boolean useLocalDataSource = initModel.isOnConnectModeLocal(); + boolean useLocalDataSource = initModel.isOnConnectMode() && initModel.isOnConnectModeLocal(); if (useLocalDataSource) { // try an explicit data source migration @@ -105,7 +105,7 @@ public class OpenDataSourceActionStep extends OpenDataSourceActionStepSupport { log.error(String.format("could not get local data source information: %s", newDataSource), e); throw e; } - + //FIXME Add User to migrate or cancel try { newDataSource.migrateData(dataSourceInformation, config.getModelVersion()); incrementsProgress(); ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/simple/ContentSimpleUIDescriptor.java ===================================== @@ -108,4 +108,9 @@ public class ContentSimpleUIDescriptor implements ContentUIDescriptor { public void setCapabilitiesDescriptor(Map<String, List<CapabilityDescriptor>> capabilities) { capabilitiesDescriptor = capabilities; } + + @Override + public String getReferenceProperty() { + return "getParentReference()"; + } } ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/simple/GenerateContentSimpleUINavigationScope.java ===================================== @@ -48,10 +48,15 @@ public class GenerateContentSimpleUINavigationScope extends GenerateContentSimpl @Override public Builder createBuilder(String contentUiType, String nodeType) { - String selectTypeName = generator.detectCapabilities.parentRelations.get(generator.packageName + "." + nodeType).replace(generator.packageName, generator.dtoPackage).replace("UINavigationNode", "Dto"); - return newBuilder(contentUiType, nodeType) + String parentNode = generator.detectCapabilities.parentRelations.get(generator.packageName + "." + nodeType).replace("UINavigationNode", "Dto"); + String selectTypeName = parentNode.replace(generator.packageName, generator.dtoPackage); + + if (selectTypeName.startsWith(parentNode)) { + // parent node is not in this package + selectTypeName = null; + } + Builder builder = newBuilder(contentUiType, nodeType) .setModule() - .setSubNode() .setDtoTypeFromNodeType() .setMainDtoTypeFromDtoType() .setDtoReferenceTypeFromMainDtoType() @@ -60,6 +65,10 @@ public class GenerateContentSimpleUINavigationScope extends GenerateContentSimpl .setNodeDataTypeFromDtoType() .setServiceTypeFromDtoType() .setServiceParentTypeFromParentType(); + if (selectTypeName != null) { + builder.setSubNode(); + } + return builder; } @Override ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java ===================================== @@ -256,7 +256,7 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport { serviceParentMethod = serviceParentMethodPrefix + StringUtils.capitalize(serviceParentType.getSimpleName()); } if (extraType == null) { - if (editNode != null && selectNode != null && selectNode.getType().equals(editNode.getType())) { + if (generator.getDescriptor().getContentNodeType() != ContentNodeType.SIMPLE && editNode != null && selectNode != null && selectNode.getType().equals(editNode.getType())) { imports.add(MoveAction.class.getName()); imports.add(MoveRequestBuilder.class.getName()); String methodName = "getBrothers"; ===================================== pom.xml ===================================== @@ -24,7 +24,7 @@ <parent> <groupId>io.ultreia.maven</groupId> <artifactId>pom</artifactId> - <version>2021.22</version> + <version>2021.23</version> </parent> <groupId>fr.ird.observe</groupId> @@ -151,7 +151,7 @@ <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> <buildDate>${maven.build.timestamp}</buildDate> - <toolkit.version>5.0.12</toolkit.version> + <toolkit.version>5.0.13</toolkit.version> <lib.version.ognl>3.1.28</lib.version.ognl> <!--can't use 1.4.197 (date has changed + blob also)--> ===================================== server/core/src/main/filtered-resources/mapping ===================================== @@ -59,7 +59,6 @@ GET /api/v1/DataSourceService/checkCanConnect GET /api/v1/DataSourceService/checkCanConnectOrBeEmpty v1.DataSourceServiceRestApi.checkCanConnectOrBeEmpty GET /api/v1/DataSourceService/close v1.DataSourceServiceRestApi.close GET /api/v1/DataSourceService/create v1.DataSourceServiceRestApi.create -GET /api/v1/DataSourceService/destroy v1.DataSourceServiceRestApi.destroy GET /api/v1/DataSourceService/generateHomeId v1.DataSourceServiceRestApi.generateHomeId GET /api/v1/DataSourceService/getUsers v1.DataSourceServiceRestApi.getUsers GET /api/v1/DataSourceService/isIdValid v1.DataSourceServiceRestApi.isIdValid ===================================== services/api-test/pom.xml ===================================== @@ -126,10 +126,6 @@ <artifactId>junit</artifactId> <scope>provided</scope> </dependency> - <dependency> - <groupId>fr.ird.observe</groupId> - <artifactId>toolkit-persistence</artifactId> - </dependency> </dependencies> <build> @@ -137,6 +133,7 @@ <plugin> <groupId>io.ultreia.java4all.http</groupId> <artifactId>http-maven-plugin</artifactId> + <version>${lib.version.java4all.http}</version> <executions> <execution> <id>default-generate-api-test</id> ===================================== services/api-test/src/main/java/fr/ird/observe/services/service/DataSourceServiceFixtures.java ===================================== @@ -90,14 +90,6 @@ public class DataSourceServiceFixtures extends GeneratedDataSourceServiceFixture super.create(service); } - @Override - public void destroy(DataSourceService service) { - // FIXME:Test Remove super method invocation and implements fixture - // actual = service.destroy(getProperty("destroy.id")); - // Assert.assertNotNull(actual); - super.destroy(service); - } - @Override public void getUsers(DataSourceService service) { // FIXME:Test Remove super method invocation and implements fixture ===================================== services/api-test/src/main/java/fr/ird/observe/services/service/data/DataFileServiceFixtures.java ===================================== @@ -23,9 +23,8 @@ package fr.ird.observe.services.service.data; */ +import fr.ird.observe.dto.DataNotFoundException; import fr.ird.observe.dto.data.DataFileDto; -import fr.ird.observe.entities.DataNotFoundException; -import fr.ird.observe.services.service.DataFileNotFoundException; import org.junit.Assert; public class DataFileServiceFixtures extends GeneratedDataFileServiceFixtures { @@ -34,7 +33,7 @@ public class DataFileServiceFixtures extends GeneratedDataFileServiceFixtures { public void getDataFile(DataFileService service) { try { - service.getDataFile(getProperty("getDataFile.id")+"Fake"+System.nanoTime()); + service.getDataFile(getProperty("getDataFile.id") + "Fake" + System.nanoTime()); Assert.fail("Should not find a data file for a fake id"); } catch (DataNotFoundException e) { // fine :) @@ -49,12 +48,12 @@ public class DataFileServiceFixtures extends GeneratedDataFileServiceFixtures { DataFileDto actual = service.getDataFile(getProperty("getDataFile.id")); Assert.assertNotNull(actual); Assert.assertNotNull(actual.getContent()); - Assert.assertEquals(getIntegerProperty("getDataFile.length"),actual.getContent().length); + Assert.assertEquals(getIntegerProperty("getDataFile.length"), actual.getContent().length); actual = service.getDataFile(getProperty("getDataFile.id.sensorUsed")); Assert.assertNotNull(actual); Assert.assertNotNull(actual.getContent()); - Assert.assertEquals(getIntegerProperty("getDataFile.sensorUsed.length"),actual.getContent().length); + Assert.assertEquals(getIntegerProperty("getDataFile.sensorUsed.length"), actual.getContent().length); } ===================================== services/local-impl/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocalSupport.java ===================================== @@ -46,7 +46,6 @@ import fr.ird.observe.services.local.ObserveSecurityHelper; 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.DatabaseDestroyNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.SqlScriptProducerService; @@ -263,23 +262,23 @@ public class DataSourceServiceLocalSupport extends ObserveServiceLocal implement Optional<ObserveTopiaApplicationContext> optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContextIfPresent(dataSourceConfiguration); close(dataSourceConfiguration, optionalTopiaApplicationContext.orElse(null)); } - - @Override - public void destroy() throws DatabaseDestroyNotAuthorizedException { - ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = (ObserveDataSourceConfigurationTopiaSupport) serviceContext.getServiceInitializer().optionalConfiguration().orElseThrow(IllegalStateException::new); - if (!dataSourceConfiguration.isLocal()) { - throw new DatabaseDestroyNotAuthorizedException(getApplicationLocale()); - } - - Optional<ObserveTopiaApplicationContext> optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContextIfPresent(dataSourceConfiguration); - close(dataSourceConfiguration, optionalTopiaApplicationContext.orElse(null)); - - ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = (ObserveDataSourceConfigurationTopiaH2) dataSourceConfiguration; - File databaseFile = dataSourceConfigurationH2.getDatabaseFile(); - if (!databaseFile.delete()) { - throw new IllegalStateException("could not delete " + databaseFile); - } - } +// +// @Override +// public void destroy() throws DatabaseDestroyNotAuthorizedException { +// ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = (ObserveDataSourceConfigurationTopiaSupport) serviceContext.getServiceInitializer().optionalConfiguration().orElseThrow(IllegalStateException::new); +// if (!dataSourceConfiguration.isLocal()) { +// throw new DatabaseDestroyNotAuthorizedException(getApplicationLocale()); +// } +// +// Optional<ObserveTopiaApplicationContext> optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContextIfPresent(dataSourceConfiguration); +// close(dataSourceConfiguration, optionalTopiaApplicationContext.orElse(null)); +// +// ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = (ObserveDataSourceConfigurationTopiaH2) dataSourceConfiguration; +// File databaseFile = dataSourceConfigurationH2.getDatabaseFile(); +// if (!databaseFile.delete()) { +// throw new IllegalStateException("could not delete " + databaseFile); +// } +// } @Override public void backup(File backupFile) { ===================================== services/local-impl/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java ===================================== @@ -36,7 +36,7 @@ import fr.ird.observe.dto.reference.ReferentialDtoReferenceSet; import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.result.SaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; +import fr.ird.observe.dto.DataNotFoundException; import fr.ird.observe.entities.Entity; import fr.ird.observe.entities.ObserveTopiaApplicationContext; import fr.ird.observe.entities.ObserveTopiaApplicationContextFactory; ===================================== services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivitySampleServiceLocalSupport.java ===================================== @@ -29,7 +29,7 @@ import fr.ird.observe.dto.data.ll.logbook.ActivitySampleDto; import fr.ird.observe.dto.data.ll.logbook.ActivitySampleReference; import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.result.SaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; +import fr.ird.observe.dto.DataNotFoundException; import fr.ird.observe.entities.Entity; import fr.ird.observe.entities.ReplicateDataEngine; import fr.ird.observe.entities.data.TripAware; View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3e74435541d61ea00f6ad3036... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3e74435541d61ea00f6ad3036... You're receiving this email because of your account on gitlab.com.