Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 0c820790 by Tony CHEMIT at 2018-04-01T09:22:55Z improve longline position api (but still could be improved ?) - - - - - 1491da9a by Tony CHEMIT at 2018-04-01T09:22:59Z improve sql request api (requires now db version) - - - - - 9f65eea2 by Tony CHEMIT at 2018-04-01T09:22:59Z optimize dependences + add missing license header - - - - - 4cd6cb75 by Tony CHEMIT at 2018-04-01T09:22:59Z fix a template - - - - - 30 changed files: - client/src/main/ftl/dataSourceConnectionReport_en.ftl - client/src/main/ftl/dataSourceConnectionReport_es.ftl - client/src/main/ftl/dataSourceConnectionReport_fr.ftl - client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java - client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java - dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java - dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java - − dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdDto.java - dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java - − dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdDto.java - dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java - dto/src/main/models/Observe.model - persistence/pom.xml - persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java - persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java - persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java - persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java - + persistence/src/main/resources/hibernate.properties - services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java - services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java - services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java - services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java - services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java - services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java Changes: ===================================== client/src/main/ftl/dataSourceConnectionReport_en.ftl ===================================== --- a/client/src/main/ftl/dataSourceConnectionReport_en.ftl +++ b/client/src/main/ftl/dataSourceConnectionReport_en.ftl @@ -57,14 +57,14 @@ <li> <!--FIXME Bavencoff 17/03/2016 use decorator--> - [${program.getPropertyValue("gearTypePrefix")}] Programme ${program.getPropertyValue("label")} + [${program.getGearTypePrefix()}] Programme ${program.getLabel()} <ul> <#list selectDataModel.getSelectedTripsByProgram(program) as trip> <li> <!--FIXME Bavencoff 17/03/2016 use decorator--> - ${trip.getPropertyValue("startDate")?date?string.short} - ${trip.getPropertyValue("endDate")?date?string.short} - ${trip.getPropertyValue("vessel")} - ${trip.getPropertyValue("observer")} + ${trip.getStartDate()?date?string.short} - ${trip.getEndDate()?date?string.short} - ${trip.getVesselLabel()} - ${trip.getObserverLabel()} </li> </#list> ===================================== client/src/main/ftl/dataSourceConnectionReport_es.ftl ===================================== --- a/client/src/main/ftl/dataSourceConnectionReport_es.ftl +++ b/client/src/main/ftl/dataSourceConnectionReport_es.ftl @@ -62,14 +62,14 @@ <li> <!--FIXME Bavencoff 17/03/2016 use decorator--> - [${program.getPropertyValue("gearTypePrefix")}] Programa ${program.getPropertyValue("label")} + [${program.getGearTypePrefix()}] Programa ${program.getLabel()} <ul> <#list selectDataModel.getSelectedTripsByProgram(program) as trip> <li> <!--FIXME Bavencoff 17/03/2016 use decorator--> - ${trip.getPropertyValue("startDate")?date?string.short} - ${trip.getPropertyValue("endDate")?date?string.short} - ${trip.getPropertyValue("vessel")} - ${trip.getPropertyValue("observer")} + ${trip.getStartDate()?date?string.short} - ${trip.getEndDate()?date?string.short} - ${trip.getVesselLabel()} - ${trip.getObserverLabel()} </li> </#list> ===================================== client/src/main/ftl/dataSourceConnectionReport_fr.ftl ===================================== --- a/client/src/main/ftl/dataSourceConnectionReport_fr.ftl +++ b/client/src/main/ftl/dataSourceConnectionReport_fr.ftl @@ -57,14 +57,14 @@ <li> <!--FIXME Bavencoff 17/03/2016 use decorator--> - [${program.getPropertyValue("gearTypePrefix")}] Programme ${program.getPropertyValue("label")} + [${program.getGearTypePrefix()}] Programme ${program.getLabel()} <ul> <#list selectDataModel.getSelectedTripsByProgram(program) as trip> <li> <!--FIXME Bavencoff 17/03/2016 use decorator--> - ${trip.getPropertyValue("startDate")?date?string.short} - ${trip.getPropertyValue("endDate")?date?string.short} - ${trip.getPropertyValue("vessel")} - ${trip.getPropertyValue("observer")} + ${trip.getStartDate()?date?string.short} - ${trip.getEndDate()?date?string.short} - ${trip.getVesselLabel()} - ${trip.getObserverLabel()} </li> </#list> ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java @@ -140,7 +140,7 @@ public class SaveLocalUIHandler extends AdminTabUIHandler<SaveLocalUI> implement File backupFile = stepModel.getBackupFile(); SqlScriptProducerService dumpService = source.getSqlScriptProducerService(); - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(source.getVersion()).addSchema().addReferential().addAllData(); byte[] dump = dumpService.produceAddSqlScript(request).getSqlCode(); try (FileOutputStream outputStream = new FileOutputStream(backupFile)) { ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java @@ -268,39 +268,31 @@ public class LonglinePositionHelper<D extends LonglinePositionAwareDto> { } - protected SectionReference getSection(BasketReference basket) { - - String sectionId = ((BasketWithSectionIdReference) basket).getSectionId(); - + private SectionReference getSection(BasketReference basket) { + String sectionId = basket.getSectionId(); return sectionUniverse.stream() .filter(s -> sectionId.equals(s.getId())) .findFirst() .orElse(null); - } - protected BasketReference getBasket(BranchlineReference branchline) { - - String basketId = ((BranchlineWithBasketIdReference) branchline).getBasketId(); - + private BasketReference getBasket(BranchlineReference branchline) { + String basketId = branchline.getBasketId(); return basketUniverse.stream() .filter(b -> basketId.equals(b.getId())) .findFirst() .orElse(null); - } - protected List<BasketReference> getBaskets(SectionReference section) { - + private List<BasketReference> getBaskets(SectionReference section) { return basketUniverse.stream() - .filter(b -> section.getId().equals(((BasketWithSectionIdReference) b).getSectionId())) + .filter(b -> section.getId().equals(b.getSectionId())) .collect(Collectors.toList()); } - protected List<BranchlineReference> getBranchlines(BasketReference basket) { - + private List<BranchlineReference> getBranchlines(BasketReference basket) { return branchlineUniverse.stream() - .filter(b -> basket.getId().equals(((BranchlineWithBasketIdReference) b).getBasketId())) + .filter(b -> basket.getId().equals(b.getBasketId())) .collect(Collectors.toList()); } ===================================== client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java @@ -655,7 +655,7 @@ public class StorageUIHandler implements UIHandler<StorageUI> { log.debug(dst); } - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveSwingApplicationContext.get().getConfig().getModelVersion()).addSchema().addReferential().addAllData(); byte[] dataDump = dumpProducerService.produceAddSqlScript(request).getSqlCode(); try (FileOutputStream outputStream = new FileOutputStream(dst)) { ===================================== client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java @@ -1546,7 +1546,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { SqlScriptProducerService dumpService = source.getSqlScriptProducerService(); - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(source.getVersion()).addSchema().addReferential(); byte[] dump = dumpService.produceAddSqlScript(request).getSqlCode(); result.setImportDatabase(dump); ===================================== dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java ===================================== --- a/dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java +++ b/dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java @@ -41,7 +41,7 @@ public class BasketDtoReferenceBinder extends DataDtoReferenceBinder<BasketDto, @Override public BasketReference toReference(ReferentialLocale referentialLocale, BasketDto dto) { - return new BasketReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier()); + return new BasketReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier(), null); } } ===================================== dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java ===================================== --- a/dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java +++ b/dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java @@ -41,7 +41,7 @@ public class BranchlineDtoReferenceBinder extends DataDtoReferenceBinder<Branchl @Override public BranchlineReference toReference(ReferentialLocale referentialLocale, BranchlineDto dto) { - return new BranchlineReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier()); + return new BranchlineReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier(), null); } } ===================================== dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdDto.java deleted ===================================== --- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdDto.java +++ /dev/null @@ -1,30 +0,0 @@ -package fr.ird.observe.dto.data.longline; - -/*- - * #%L - * ObServe :: Dto - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -public class BasketWithSectionIdDto extends BasketDto { - - private static final long serialVersionUID = 3690753995685507632L; - - public static final String PROPERTY_SECTION_ID = "sectionId"; -} ===================================== dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java ===================================== --- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java +++ b/dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java @@ -34,10 +34,11 @@ public class BasketWithSectionIdReference extends BasketReference { private final String sectionId; public BasketWithSectionIdReference(DtoReferenceAware dto, Integer settingIdentifier, Integer haulingIdentifier, String sectionId) { - super(dto, settingIdentifier, haulingIdentifier); + super(dto, settingIdentifier, haulingIdentifier, sectionId); this.sectionId = sectionId; } + @Override public String getSectionId() { return sectionId; } ===================================== dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdDto.java deleted ===================================== --- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdDto.java +++ /dev/null @@ -1,31 +0,0 @@ -package fr.ird.observe.dto.data.longline; - -/*- - * #%L - * ObServe :: Dto - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -public class BranchlineWithBasketIdDto extends BranchlineDto { - - private static final long serialVersionUID = 7018072108318352694L; - - public static final String PROPERTY_BASKET_ID = "basketId"; - -} ===================================== dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java ===================================== --- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java +++ b/dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java @@ -10,12 +10,12 @@ package fr.ird.observe.dto.data.longline; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. @@ -34,11 +34,12 @@ public class BranchlineWithBasketIdReference extends BranchlineReference { private final String basketId; public BranchlineWithBasketIdReference(DtoReferenceAware dto, Integer settingIdentifier, Integer haulingIdentifier, String basketId) { - super(dto, settingIdentifier, haulingIdentifier); + super(dto, settingIdentifier, haulingIdentifier, basketId); this.basketId = basketId; } + @Override public String getBasketId() { return basketId; } ===================================== dto/src/main/models/Observe.model ===================================== --- a/dto/src/main/models/Observe.model +++ b/dto/src/main/models/Observe.model @@ -109,14 +109,15 @@ individualWeight + {*:1} Float baitSettingStatus {*:1} fr.ird.observe.dto.referential.longline.BaitSettingStatusReference baitType {*:1} fr.ird.observe.dto.referential.longline.BaitTypeReference -data.longline.Basket > data.Data >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier +data.longline.Basket > data.Data >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier,sectionId settingIdentifier + {*:1} Integer haulingIdentifier + {*:1} Integer floatline1Length + {*:1} Float floatline2Length + {*:1} Float branchline + {*} data.longline.Branchline | ordered unique +section + {*:1} fr.ird.observe.dto.data.longline.SectionReference -data.longline.Branchline > data.Commentable >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier +data.longline.Branchline > data.Commentable >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier,basketId settingIdentifier + {*:1} Integer haulingIdentifier + {*:1} Integer depthRecorder + {*:1} Boolean @@ -139,6 +140,7 @@ hookType {*:0..1} fr.ird.observe.dto.referential.longline.HookTypeReference tracelineType {*:0..1} fr.ird.observe.dto.referential.longline.LineTypeReference topType {*:0..1} fr.ird.observe.dto.referential.longline.LineTypeReference baitType {*:0..1} fr.ird.observe.dto.referential.longline.BaitTypeReference +basket + {*:1} fr.ird.observe.dto.data.longline.BasketReference data.longline.BranchlinesComposition > data.Data | references=topTypeLabel,tracelineTypeLabel,length,proportion length + {*:1} Float ===================================== persistence/pom.xml ===================================== --- a/persistence/pom.xml +++ b/persistence/pom.xml @@ -133,6 +133,11 @@ <artifactId>hibernate-core</artifactId> </dependency> <dependency> + <groupId>net.bytebuddy</groupId> + <artifactId>byte-buddy</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <scope>runtime</scope> @@ -140,6 +145,7 @@ <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-hikaricp</artifactId> + <scope>runtime</scope> </dependency> <!-- test --> @@ -277,6 +283,26 @@ </executions> </plugin> + <plugin> + <groupId>org.hibernate.orm.tooling</groupId> + <artifactId>hibernate-enhance-maven-plugin</artifactId> + <version>${lib.version.hibernate}</version> + <executions> + <execution> + <configuration> + <failOnError>true</failOnError> + <enableLazyInitialization>true</enableLazyInitialization> + <enableDirtyTracking>true</enableDirtyTracking> + <enableAssociationManagement>true</enableAssociationManagement> + <enableExtendedEnhancement>false</enableExtendedEnhancement> + </configuration> + <goals> + <goal>enhance</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> </build> </project> ===================================== persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java ===================================== --- a/persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java +++ b/persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java @@ -27,6 +27,7 @@ import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.data.longline.BasketDto; import fr.ird.observe.dto.data.longline.BasketReference; import fr.ird.observe.entities.longline.Basket; +import fr.ird.observe.entities.longline.Section; /** * Created on 24/11/15. @@ -39,10 +40,13 @@ public class BasketEntityReferenceBinder extends DataEntityReferenceBinderSuppor super(BasketDto.class, BasketReference.class, Basket.class); } + public BasketReference toReference(Basket entity, Section section) { + return new BasketReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), section.getTopiaId()); + } + @Override public BasketReference toReference(ReferentialLocale referentialLocale, Basket entity) { - - return new BasketReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier()); + return new BasketReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), null); } } ===================================== persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java ===================================== --- a/persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java +++ b/persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java @@ -23,9 +23,10 @@ package fr.ird.observe.binder.data.longline; */ import fr.ird.observe.binder.data.DataEntityReferenceBinderSupport; -import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.data.longline.BranchlineDto; import fr.ird.observe.dto.data.longline.BranchlineReference; +import fr.ird.observe.dto.referential.ReferentialLocale; +import fr.ird.observe.entities.longline.Basket; import fr.ird.observe.entities.longline.Branchline; /** @@ -39,10 +40,13 @@ public class BranchlineEntityReferenceBinder extends DataEntityReferenceBinderSu super(BranchlineDto.class, BranchlineReference.class, Branchline.class); } + public BranchlineReference toReference(Branchline entity, Basket basket) { + return new BranchlineReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), basket.getTopiaId()); + } + @Override public BranchlineReference toReference(ReferentialLocale referentialLocale, Branchline entity) { - - return new BranchlineReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier()); + return new BranchlineReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), null); } } ===================================== persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java ===================================== --- a/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java +++ b/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java @@ -279,33 +279,6 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat log.info(String.format("For TripSeine, found %d tables to use.", tripSeineTables.size())); } return tripSeineTables; - - /* - return TopiaSqlTables.builder(filterTable, ObserveEntityEnum.TripSeine) // → TripSeine - .addAndEnterJoinTable(ObserveEntityEnum.GearUseFeaturesSeine) // → GearUseFeaturesSeine - .addJoinTable(ObserveEntityEnum.GearUseFeaturesMeasurementSeine) - .backToParent() // ← TripSeine - .addAndEnterJoinTable(ObserveEntityEnum.Route) // → Route - .addAndEnterJoinTable(ObserveEntityEnum.ActivitySeine) // → ActivitySeine - .addAndEnterReverseJoinTable(ObserveEntityEnum.SetSeine) // → SetSeine - .addJoinTable(ObserveEntityEnum.SchoolEstimate) - .addJoinTable(ObserveEntityEnum.NonTargetCatch) - .addJoinTable(ObserveEntityEnum.TargetCatch) - .addAndEnterJoinTable(ObserveEntityEnum.TargetSample) // → TargetSample - .addJoinTable(ObserveEntityEnum.TargetLength) - .backToParent() // ← SetSeine - .addAndEnterJoinTable(ObserveEntityEnum.NonTargetSample) // → NonTargetSample - .addJoinTable(ObserveEntityEnum.NonTargetLength) - .backToParent() // ← SetSeine - .backToParent() // ← ActivitySeine - .addAssociationTable(ObserveEntityEnum.ObservedSystem.name(), true) - .addAndEnterJoinTable(ObserveEntityEnum.FloatingObject) // → FloatingObject - .addJoinTable(ObserveEntityEnum.ObjectObservedSpecies) - .addJoinTable(ObserveEntityEnum.ObjectSchoolEstimate) - .addJoinTable(ObserveEntityEnum.TransmittingBuoy) - .build(); - */ - } public TopiaSqlTables getTripLonglineTables() { @@ -346,43 +319,9 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat null); tripLonglineTables.replaceTable("observe_longline.branchline", branchlineTable); - - } return tripLonglineTables; - - /* - return TopiaSqlTables.builder(filterTable, ObserveEntityEnum.TripLongline) // → TripLongline - .addAndEnterJoinTable(ObserveEntityEnum.GearUseFeaturesLongline) // → GearUseFeaturesLongline - .addJoinTable(ObserveEntityEnum.GearUseFeaturesMeasurementLongline) - .backToParent() // ← TripLongline - .addAndEnterJoinTable(ObserveEntityEnum.ActivityLongline) // → ActivityLongline - .addAndEnterReverseJoinTable(ObserveEntityEnum.SetLongline) // → SetLongline - .addJoinTable(ObserveEntityEnum.BaitsComposition) - .addJoinTable(ObserveEntityEnum.FloatlinesComposition) - .addJoinTable(ObserveEntityEnum.HooksComposition) - .addJoinTable(ObserveEntityEnum.BranchlinesComposition) - .addAssociationTable(ObserveEntityEnum.MitigationType.name(), true) - .addAndEnterJoinTable(ObserveEntityEnum.Section) // → Section - .addAndEnterJoinTable(ObserveEntityEnum.Basket) // → Basket - .addJoinTable(ObserveEntityEnum.Branchline) - .backToParent() // ← Section - .backToParent() // ← SetLongline - .addAndEnterJoinTable(ObserveEntityEnum.CatchLongline) // → CatchLongline - .addJoinTable(ObserveEntityEnum.SizeMeasure) - .addJoinTable(ObserveEntityEnum.WeightMeasure) - .addAssociationTable("Predator", true) - .backToParent() // ← SetLongline - .addAndEnterJoinTable(ObserveEntityEnum.Tdr) // → Tdr - .addJoinTable(ObserveEntityEnum.TdrRecord) - .addAssociationTable(ObserveEntityEnum.Species.name(), true) - .backToParent() // ← SetLongline - .backToParent() // ← ActivityLongline - .addJoinTable(ObserveEntityEnum.Encounter) - .addJoinTable(ObserveEntityEnum.SensorUsed) - .build(); - */ - } +} public TopiaSqlTables getReferentialTables() { @@ -391,139 +330,9 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat referentialTables = topiaSqlTablesFactory.newReplicateEntityTables( new TripReplicateTablesPredicate(), Entities.REFERENCE_ENTITIES); -// ObserveEntityEnum.VesselSizeCategory, -// ObserveEntityEnum.Country, -// ObserveEntityEnum.Harbour, -// ObserveEntityEnum.VesselType, -// ObserveEntityEnum.Vessel, -// ObserveEntityEnum.Ocean, -// ObserveEntityEnum.SpeciesGroup, -// ObserveEntityEnum.Species, -// ObserveEntityEnum.Sex, -// ObserveEntityEnum.FpaZone, -// ObserveEntityEnum.SpeciesList, -// ObserveEntityEnum.Person, -// ObserveEntityEnum.Organism, -// ObserveEntityEnum.LengthWeightParameter, -// ObserveEntityEnum.Program, -// ObserveEntityEnum.GearCaracteristicType, -// ObserveEntityEnum.GearCaracteristic, -// ObserveEntityEnum.Gear, -// ObserveEntityEnum.LastUpdateDate, -// ObserveEntityEnum.VesselActivitySeine, -// ObserveEntityEnum.SurroundingActivity, -// ObserveEntityEnum.ReasonForNullSet, -// ObserveEntityEnum.ReasonForNoFishing, -// ObserveEntityEnum.SpeciesFate, -// ObserveEntityEnum.ObjectFate, -// ObserveEntityEnum.WeightCategory, -// ObserveEntityEnum.DetectionMode, -// ObserveEntityEnum.TransmittingBuoyOperation, -// ObserveEntityEnum.ObjectOperation, -// ObserveEntityEnum.ReasonForDiscard, -// ObserveEntityEnum.SpeciesStatus, -// ObserveEntityEnum.ObservedSystem, -// ObserveEntityEnum.TransmittingBuoyType, -// ObserveEntityEnum.ObjectType, -// ObserveEntityEnum.Wind, -// ObserveEntityEnum.BaitHaulingStatus, -// ObserveEntityEnum.BaitSettingStatus, -// ObserveEntityEnum.BaitType, -// ObserveEntityEnum.CatchFateLongline, -// ObserveEntityEnum.EncounterType, -// ObserveEntityEnum.Healthness, -// ObserveEntityEnum.HookPosition, -// ObserveEntityEnum.HookSize, -// ObserveEntityEnum.HookType, -// ObserveEntityEnum.ItemVerticalPosition, -// ObserveEntityEnum.ItemHorizontalPosition, -// ObserveEntityEnum.LightsticksColor, -// ObserveEntityEnum.LightsticksType, -// ObserveEntityEnum.LineType, -// ObserveEntityEnum.MaturityStatus, -// ObserveEntityEnum.MitigationType, -// ObserveEntityEnum.SensorBrand, -// ObserveEntityEnum.SensorDataFormat, -// ObserveEntityEnum.SensorType, -// ObserveEntityEnum.SettingShape, -// ObserveEntityEnum.SizeMeasureType, -// ObserveEntityEnum.StomacFullness, -// ObserveEntityEnum.TripType, -// ObserveEntityEnum.VesselActivityLongline, -// ObserveEntityEnum.WeightMeasureType); } log.info(String.format("For Referential, found %d tables to use.", referentialTables.size())); return referentialTables; - - /* - - return TopiaSqlTables.builder() - .addMainTable(ObserveEntityEnum.VesselSizeCategory) // → VesselSizeCategory - .addMainTable(ObserveEntityEnum.Country) // → Country - .addMainTable(ObserveEntityEnum.Harbour) // → Harbour - .addMainTable(ObserveEntityEnum.VesselType) // → VesselType - .addMainTable(ObserveEntityEnum.Vessel) // → Vessel - .addMainTable(ObserveEntityEnum.Ocean) // → Ocean - .addMainTable(ObserveEntityEnum.SpeciesGroup) // → SpeciesGroup - .addMainTable(ObserveEntityEnum.Species) // → Species - .addAssociationTable(ObserveEntityEnum.Ocean.name(), false) - .addMainTable(ObserveEntityEnum.Sex) // → Sex - .addMainTable(ObserveEntityEnum.FpaZone) // → FpaZone - .addMainTable(ObserveEntityEnum.SpeciesList) // → SpeciesList - .addAssociationTable(ObserveEntityEnum.Species.name(), false) - .addMainTable(ObserveEntityEnum.Person) // → Person - .addMainTable(ObserveEntityEnum.Organism) // → Organism - .addMainTable(ObserveEntityEnum.LengthWeightParameter) // → LengthWeightParameter - .addMainTable(ObserveEntityEnum.Program) // → Program - .addMainTable(ObserveEntityEnum.GearCaracteristicType) // → GearCaracteristicType - .addMainTable(ObserveEntityEnum.GearCaracteristic) // → GearCaracteristic - .addMainTable(ObserveEntityEnum.Gear) // → Gear - .addAssociationTable(ObserveEntityEnum.GearCaracteristic.name(), false) - .addMainTable(ObserveEntityEnum.LastUpdateDate) // → LastUpdateDate - .addMainTable(ObserveEntityEnum.VesselActivitySeine) // → VesselActivitySeine - .addMainTable(ObserveEntityEnum.SurroundingActivity) // → SurroundingActivity - .addMainTable(ObserveEntityEnum.ReasonForNullSet) // → ReasonForNullSet - .addMainTable(ObserveEntityEnum.ReasonForNoFishing) // → ReasonForNoFishing - .addMainTable(ObserveEntityEnum.SpeciesFate) // → SpeciesFate - .addMainTable(ObserveEntityEnum.ObjectFate) // → ObjectFate - .addMainTable(ObserveEntityEnum.WeightCategory) // → WeightCategory - .addMainTable(ObserveEntityEnum.DetectionMode) // → DetectionMode - .addMainTable(ObserveEntityEnum.TransmittingBuoyOperation) // → TransmittingBuoyOperation - .addMainTable(ObserveEntityEnum.ObjectOperation) // → ObjectOperation - .addMainTable(ObserveEntityEnum.ReasonForDiscard) // → ReasonForDiscard - .addMainTable(ObserveEntityEnum.SpeciesStatus) // → SpeciesStatus - .addMainTable(ObserveEntityEnum.ObservedSystem) // → ObservedSystem - .addMainTable(ObserveEntityEnum.TransmittingBuoyType) // → TransmittingBuoyType - .addMainTable(ObserveEntityEnum.ObjectType) // → ObjectType - .addMainTable(ObserveEntityEnum.Wind) // → Wind - .addMainTable(ObserveEntityEnum.BaitHaulingStatus) // → BaitHaulingStatus - .addMainTable(ObserveEntityEnum.BaitSettingStatus) // → BaitSettingStatus - .addMainTable(ObserveEntityEnum.BaitType) // → BaitType - .addMainTable(ObserveEntityEnum.CatchFateLongline) // → CatchFateLongline - .addMainTable(ObserveEntityEnum.EncounterType) // → EncounterType - .addMainTable(ObserveEntityEnum.Healthness) // → Healthness - .addMainTable(ObserveEntityEnum.HookPosition) // → HookPosition - .addMainTable(ObserveEntityEnum.HookSize) // → HookSize - .addMainTable(ObserveEntityEnum.HookType) // → HookType - .addMainTable(ObserveEntityEnum.ItemVerticalPosition) // → ItemVerticalPosition - .addMainTable(ObserveEntityEnum.ItemHorizontalPosition) // → ItemHorizontalPosition - .addMainTable(ObserveEntityEnum.LightsticksColor) // → LightsticksColor - .addMainTable(ObserveEntityEnum.LightsticksType) // → LightsticksType - .addMainTable(ObserveEntityEnum.LineType) // → LineType - .addMainTable(ObserveEntityEnum.MaturityStatus) // → MaturityStatus - .addMainTable(ObserveEntityEnum.MitigationType) // → MitigationType - .addMainTable(ObserveEntityEnum.SensorBrand) // → SensorBrand - .addMainTable(ObserveEntityEnum.SensorDataFormat) // → SensorDataFormat - .addMainTable(ObserveEntityEnum.SensorType) // → SensorType - .addMainTable(ObserveEntityEnum.SettingShape) // → SettingShape - .addMainTable(ObserveEntityEnum.SizeMeasureType) // → SizeMeasureType - .addMainTable(ObserveEntityEnum.StomacFullness) // → StomacFullness - .addMainTable(ObserveEntityEnum.TripType) // → TripType - .addMainTable(ObserveEntityEnum.VesselActivityLongline) // → VesselActivityLongline - .addMainTable(ObserveEntityEnum.WeightMeasureType) // → WeightMeasureType - - .build(); -*/ } public <E extends ObserveReferentialEntity> TopiaSqlTables getReferentialTable(Class<E> entityType) { ===================================== persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java ===================================== --- a/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java +++ b/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java @@ -22,7 +22,11 @@ package fr.ird.observe.persistence; * #L% */ -import org.hibernate.hikaricp.internal.HikariCPConnectionProvider; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; +import java.util.Properties; +import java.util.TreeMap; import org.nuiton.topia.persistence.BeanTopiaConfiguration; import org.nuiton.topia.persistence.HibernateAvailableSettings; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; @@ -36,27 +40,37 @@ public class ObserveTopiaConfiguration extends BeanTopiaConfiguration { private static final long serialVersionUID = 1L; - protected final boolean h2Configuration; + private final boolean h2Configuration; protected final boolean showSql; + private static final Map<String, String> HIBERNATE_GLOBAL_PROPERTIES; + + static { + + Properties p = new Properties(); + try (InputStream stream = ObserveTopiaPersistenceContext.class.getResourceAsStream("/hibernate.properties")) { + try { + p.load(stream); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } catch (IOException e) { + throw new IllegalStateException(e); + } + HIBERNATE_GLOBAL_PROPERTIES = new TreeMap<>(); + for (String s : p.stringPropertyNames()) { + HIBERNATE_GLOBAL_PROPERTIES.put(s, p.getProperty(s)); + } + + } public ObserveTopiaConfiguration(JdbcConfiguration jdbcConfiguration, boolean h2Configuration, boolean showSql) { super(jdbcConfiguration); this.h2Configuration = h2Configuration; this.showSql = showSql; if (showSql) { - hibernateExtraConfiguration.put("hibernate.show_sql", Boolean.TRUE.toString()); + hibernateExtraConfiguration.put(HibernateAvailableSettings.SHOW_SQL, Boolean.TRUE.toString()); } - - hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, HikariCPConnectionProvider.class.getName()); - hibernateExtraConfiguration.put("hibernate.hikari.minimumIdle", "2"); - hibernateExtraConfiguration.put("hibernate.hikari.maximumPoolSize", "20"); - hibernateExtraConfiguration.put("hibernate.hikari.autoCommit", "false"); - hibernateExtraConfiguration.put("hibernate.hikari.registerMbeans", "true"); - -// hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, "org.hibernate.c3p0.internal.C3P0ConnectionProvider"); -// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_SIZE, "500"); -// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_STATEMENTS, "500"); -// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_TIMEOUT, "100"); + hibernateExtraConfiguration.putAll(HIBERNATE_GLOBAL_PROPERTIES); } public boolean isH2Configuration() { ===================================== persistence/src/main/resources/hibernate.properties ===================================== --- /dev/null +++ b/persistence/src/main/resources/hibernate.properties @@ -0,0 +1,29 @@ +### +# #%L +# ObServe :: Persistence +# %% +# Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/gpl-3.0.html>. +# #L% +### +hibernate.bytecode.provider=bytebuddy +hibernate.use_sql_comments=false +hibernate.format_sql=false +hibernate.connection.provider_class=org.hibernate.hikaricp.internal.HikariCPConnectionProvider +hibernate.hikari.minimumIdle=2 +hibernate.hikari.maximumPoolSize=20 +hibernate.hikari.autoCommit=false +#hibernate.hikari.registerMbeans=true ===================================== services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java ===================================== --- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java +++ b/services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java @@ -68,13 +68,20 @@ public class ObserveJdbcHelper extends JdbcHelper { while (observerDataPrivilege.next()) { String security = observerDataPrivilege.getString("PRIVILEGE"); + String grantor = observerDataPrivilege.getString("GRANTOR"); String grantee = observerDataPrivilege.getString("GRANTEE"); // Il se peut que le login soit echappe sous la forme \"login\" + grantor= grantor.replaceAll("\\\\\"", ""); grantee = grantee.replaceAll("\\\\\"", ""); if (log.isDebugEnabled()) { log.debug(String.format("(security %s) - grantee (%s)", security, grantee)); } - if (grantee.equals(jdbcConfiguration.getJdbcConnectionUser())) { + if (grantor.equals(jdbcConfiguration.getJdbcConnectionUser())) { + if (log.isDebugEnabled()) { + log.debug("for " + tableName + " table " + grantor + '/' + security); + } + tablePrivileges.add(security); + } else if (grantee.equals(jdbcConfiguration.getJdbcConnectionUser())) { if (log.isDebugEnabled()) { log.debug("for " + tableName + " table " + grantee + '/' + security); } ===================================== services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java ===================================== --- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java +++ b/services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java @@ -88,7 +88,7 @@ public class ObserveServiceContextLocal { return observeServiceInitializer.withDataSourceConnection(); } - Optional<ObserveDataSourceConnectionTopia> getDataSourceConnection() { + public Optional<ObserveDataSourceConnectionTopia> getDataSourceConnection() { //noinspection unchecked return (Optional) observeServiceInitializer.getDataSourceConnection(); } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java ===================================== --- a/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java +++ b/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java @@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. @@ -26,7 +26,6 @@ import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; -import fr.ird.observe.spi.DbModelHelper; import fr.ird.observe.dto.db.ObserveDbUserDto; import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; @@ -55,13 +54,7 @@ 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; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; +import fr.ird.observe.spi.DbModelHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.jdbc.JdbcHelper; @@ -69,7 +62,15 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; import org.nuiton.topia.persistence.metadata.TopiaMetadataModelVisitor; import org.nuiton.version.Version; +import org.nuiton.version.Versions; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.l; @@ -234,7 +235,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS temporaryTopiaApplicationContext.getMigrationService().runSchemaMigration(); SqlScriptProducerService dumpProducerService = serviceContext.newService(temporaryConfiguration, SqlScriptProducerService.class); - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres(dataSourceConfiguration.getModelVersion()).addSchema().addReferential().addAllData(); byte[] dump = dumpProducerService.produceAddSqlScript(request).getSqlCode(); topiaApplicationContext.executeSqlStatements(dump); topiaApplicationContext.getMigrationService().createSchemaIfNotExist(); @@ -283,11 +284,12 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration(); + Version dbVersion = Versions.valueOf(topiaApplicationContext.getModelVersion()); AddSqlScriptProducerRequest request; if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) { - request = AddSqlScriptProducerRequest.forH2(); + request = AddSqlScriptProducerRequest.forH2(dbVersion); } else { - request = AddSqlScriptProducerRequest.forPostgres(); + request = AddSqlScriptProducerRequest.forPostgres(dbVersion); } request.addReferential(); @@ -319,12 +321,12 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportDataDataSourceConfiguration(); - + Version dbVersion = Versions.valueOf(topiaApplicationContext.getModelVersion()); AddSqlScriptProducerRequest request; if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) { - request = AddSqlScriptProducerRequest.forH2(); + request = AddSqlScriptProducerRequest.forH2(dbVersion); } else { - request = AddSqlScriptProducerRequest.forPostgres(); + request = AddSqlScriptProducerRequest.forPostgres(dbVersion); } if (!referantialImported) { @@ -612,8 +614,8 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS if (log.isDebugEnabled()) { log.debug("User can write referential : " + writeReferential + ", " + - "read data : " + readData + ", " + - "write data : " + writeData + "."); + "read data : " + readData + ", " + + "write data : " + writeData + "."); } ObserveMigrationConfigurationProvider observeMigrationConfigurationProvider = ObserveMigrationConfigurationProvider.get(); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java ===================================== --- a/services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java +++ b/services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java @@ -166,9 +166,7 @@ import org.nuiton.topia.persistence.TopiaNoResultException; */ public abstract class ObserveServiceLocal implements ObserveService { - /** - * Logger. - */ + /** Logger. */ private static final Log log = LogFactory.getLog(ObserveServiceLocal.class); protected static final DataDtoEntityPersistenceContext<TripSeineDto, TripSeineReference, TripSeine, TripSeineTopiaDao> TRIP_SEINE_SPI = @@ -289,21 +287,6 @@ public abstract class ObserveServiceLocal implements ObserveService { return serviceContext.getTopiaPersistenceContext(); } -// protected <D extends IdDto, E extends ObserveEntity> void deleteEntity(Class<D> dtoType, Class<E> entityType, Iterable<String> ids) { -// ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext(); -// TopiaDao<E> dao = persistenceContext.getDao(entityType); -// for (String id : ids) { -// E entity = dao.forTopiaIdEquals(id).findUniqueOrNull(); -// if (entity == null) { -// throw new DataNotFoundException(dtoType, id); -// } -// dao.delete(entity); -// } -// -// updateLastUpdateDate(entityType); -// -// } - public <E extends ObserveEntity> void updateLastUpdateDate(Class<E> entityType) { getTopiaPersistenceContext().updateLastUpdateDate(entityType, now()); } @@ -331,35 +314,6 @@ public abstract class ObserveServiceLocal implements ObserveService { } - // protected <E extends ObserveDataEntity, D extends DataDto> Form<D> dataEntityToForm(Class<D> dtoType, E entity) { -// -// D dto = DbModelHelper.fromDataDto(dtoType).toDto(serviceContext.getReferentialLocale(), dtoType, entity); -// return Form.newFormDto(dtoType, dto); -// -// } -// -// -// protected <E extends ObserveDataEntity, D extends DataDto> void copyDataDtoToEntity(D dto, E entity) { -// -// DbModelHelper.fromDataDto(dto).copyToEntity(serviceContext.getReferentialLocale(), dto, entity); -// -// } - -// -// protected <E extends ObserveDataEntity, D extends DataDto> E loadOrCreateEntityFromDataDto(D dto) { -// -// Class<E> entityType = DbModelHelper.fromDataDto(dto).toEntityType(); -// -// E entity; -// if (dto.isPersisted()) { -// entity = loadEntity(dto.get(), dto.getId()); -// } else { -// entity = getTopiaPersistenceContext().newEntity(entityType); -// } -// return entity; -// } - - protected <E extends ObserveEntity, D extends IdDto> void checkLastUpdateDate(E entity, D dto) { if (entity.isPersisted()) { @@ -382,14 +336,6 @@ public abstract class ObserveServiceLocal implements ObserveService { return serviceContext.now(); } - // protected <D extends DataDto, E extends ObserveDataEntity> D loadEntityToDataDto(Class<D> dtoType, String id) { -// -// E entity = loadEntity(dtoType, id); -// DataEntityDtoBinderSupport<D, E> binder = DbModelHelper.fromDataDto(dtoType).toEntityBinder(); -// return binder.toDto(getReferentialLocale(), entity); -// -// } -// public <D extends ReferentialDto, E extends ObserveReferentialEntity> D loadEntityToReferentialDto(ReferentialEntityDtoBinderSupport<D, E> binder, String id) { E entity = loadEntity(binder.getDtoType(), id); @@ -397,29 +343,6 @@ public abstract class ObserveServiceLocal implements ObserveService { } -// protected <D extends DataDto, R extends DataDtoReference<D, R>, E extends ObserveDataEntity> R loadEntityToDataReferenceDto(Class<D> dtoType, String id) { -// -// E entity = loadEntity(dtoType, id); -// -// DataEntityReferenceBinderSupport<D, R, E> dataBinderFromDto = DbModelHelper.fromDataDto(dtoType).toEntityReferenceBinder(); -// return dataBinderFromDto.toReference(getReferentialLocale(), entity); -// -// } - -// protected <E extends ObserveEntity> boolean existsEntity(Class<E> entityType, String id) { -// ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext(); -// TopiaDao<E> dao = persistenceContext.getDao(entityType); -// return dao.forTopiaIdEquals(id).exists(); -// } - -// protected <D extends DataDto, R extends DataDtoReference<D, R>, E extends ObserveDataEntity> R toReference(Class<R> referenceType, E entity) { -// -// DataEntityReferenceBinderSupport<D, R, E> binder = DbModelHelper.fromDataReference(referenceType).toEntityReferenceBinder(); -// -// return binder.toReference(getReferentialLocale(), entity); -// -// } - protected <D extends DataDto, E extends ObserveDataEntity, R extends DataDtoReference<D, R>> DataDtoReferenceSet<R> toDataReferenceSet(DataEntityReferenceBinderSupport<D, R, E> binder, Collection<E> entities) { ReferentialLocale referentialLocale = getReferentialLocale(); @@ -455,13 +378,13 @@ public abstract class ObserveServiceLocal implements ObserveService { protected DataFileDto newDataFileDto(Blob data, String dataFilename) { DataFileDto dto = new DataFileDto(); try { - // on copie le blob pour supprimer le lien entre la blob venant de la base et la connexion à la base + // copy blob int length = (int) data.length(); byte[] bytes = data.getBytes(1, length); dto.setContent(bytes); } catch (SQLException e) { if (log.isErrorEnabled()) { - log.error("unable to read blod from " + dataFilename, e); + log.error("unable to read blob from " + dataFilename, e); } } dto.setName(dataFilename); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java ===================================== --- a/services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java +++ b/services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java @@ -44,6 +44,7 @@ import java.util.TreeSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.StringUtil; +import org.nuiton.version.Version; /** * Created on 20/07/16. @@ -76,9 +77,9 @@ public class TripManagementServiceLocal extends ObserveServiceLocal implements T if (log.isInfoEnabled()) { log.info("Start export of trip: " + tripId); } + Version dbVersion = serviceContext.getDataSourceConnection().orElseThrow(IllegalStateException::new).getVersion(); - AddSqlScriptProducerRequest request; - request = (exportRequest.isForPG() ? AddSqlScriptProducerRequest.forPostgres() : AddSqlScriptProducerRequest.forH2()) + AddSqlScriptProducerRequest request = (exportRequest.isForPG() ? AddSqlScriptProducerRequest.forPostgres(dbVersion) : AddSqlScriptProducerRequest.forH2(dbVersion)) .dataIdsToAdd(ImmutableSet.of(tripId)); AddSqlScriptProducerResult producerResult = sqlScriptProducerService.produceAddSqlScript(request); byte[] tripContent = producerResult.getSqlCode(); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java ===================================== --- a/services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java +++ b/services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java @@ -10,22 +10,23 @@ package fr.ird.observe.services.local.service.data.longline; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ +import fr.ird.observe.binder.data.longline.BasketEntityReferenceBinder; +import fr.ird.observe.binder.data.longline.BranchlineEntityReferenceBinder; +import fr.ird.observe.binder.data.longline.SectionEntityReferenceBinder; import fr.ird.observe.dto.data.longline.BasketReference; -import fr.ird.observe.dto.data.longline.BasketWithSectionIdReference; import fr.ird.observe.dto.data.longline.BranchlineReference; -import fr.ird.observe.dto.data.longline.BranchlineWithBasketIdReference; import fr.ird.observe.dto.data.longline.LonglinePositionAwareDto; import fr.ird.observe.dto.data.longline.LonglinePositionSetDto; import fr.ird.observe.dto.data.longline.SectionReference; @@ -39,27 +40,30 @@ import fr.ird.observe.entities.longline.SetLongline; */ class LonglinePositionSetDtoHelper { + private static final SectionEntityReferenceBinder SECTION_BINDER = new SectionEntityReferenceBinder(); + private static final BasketEntityReferenceBinder BASKET_BINDER = new BasketEntityReferenceBinder(); + private static final BranchlineEntityReferenceBinder BRANCHLINE_BINDER = new BranchlineEntityReferenceBinder(); + + // constitution des références des position sur la ligne static void loadPositionSet(SetLongline setLongline, LonglinePositionSetDto target) { for (Section section : setLongline.getSection()) { - SectionReference sectionRef = toSectionReference(section); + SectionReference sectionReference = SECTION_BINDER.toReference(null, section); - target.addSections(sectionRef); + target.addSections(sectionReference); for (Basket basket : section.getBasket()) { - BasketWithSectionIdReference basketRef = toBasketReference(basket, section); + BasketReference basketReference = BASKET_BINDER.toReference(basket, section); - target.addBaskets(basketRef); + target.addBaskets(basketReference); for (Branchline branchline : basket.getBranchline()) { - BranchlineWithBasketIdReference branchlineRef = toBranchlineReference(branchline, basket); - - target.addBranchlines(branchlineRef); - + BranchlineReference branchlineReference = BRANCHLINE_BINDER.toReference(branchline, basket); + target.addBranchlines(branchlineReference); } } @@ -74,21 +78,21 @@ class LonglinePositionSetDtoHelper { if (basketRef != null) { - BasketReference basketRefWithSection = positionSetDto.getBaskets().stream() + BasketReference basketReference = positionSetDto.getBaskets().stream() .filter(b -> basketRef.getId().equals(b.getId())) .findFirst() .orElse(null); - positionDto.setBasket(basketRefWithSection); + positionDto.setBasket(basketReference); } - BranchlineReference branchlineRef = positionDto.getBranchline(); + BranchlineReference branchlineReference = positionDto.getBranchline(); - if (branchlineRef != null) { + if (branchlineReference != null) { BranchlineReference branchlineRefWithSection = positionSetDto.getBranchlines().stream() - .filter(b -> branchlineRef.getId().equals(b.getId())) + .filter(b -> branchlineReference.getId().equals(b.getId())) .findFirst() .orElse(null); @@ -97,19 +101,4 @@ class LonglinePositionSetDtoHelper { } } - private static SectionReference toSectionReference(Section section) { - - return new SectionReference(section, section.getSettingIdentifier(), section.getHaulingIdentifier()); - } - - private static BasketWithSectionIdReference toBasketReference(Basket basket, Section section) { - - return new BasketWithSectionIdReference(basket, basket.getSettingIdentifier(), basket.getHaulingIdentifier(), section.getTopiaId()); - } - - private static BranchlineWithBasketIdReference toBranchlineReference(Branchline branchline, Basket basket) { - - return new BranchlineWithBasketIdReference(branchline, branchline.getSettingIdentifier(), branchline.getHaulingIdentifier(), basket.getTopiaId()); - } - } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java ===================================== --- a/services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java +++ b/services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java @@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service.referential; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. @@ -63,6 +63,14 @@ import fr.ird.observe.spi.context.ReferentialEntityContext; import fr.ird.observe.spi.context.ReferentialReferenceEntityContext; import fr.ird.observe.spi.map.ImmutableDtoMap; import fr.ird.observe.spi.map.ImmutableSetDtoMap; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaDao; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; +import org.nuiton.version.Version; +import org.nuiton.version.Versions; + import java.util.Arrays; import java.util.Collections; import java.util.Date; @@ -71,11 +79,6 @@ import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.Set; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaDao; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; /** * Created on 16/08/15. @@ -84,14 +87,13 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; */ public class ReferentialServiceLocal extends ObserveServiceLocal implements ReferentialService { - private static final Log log = LogFactory.getLog(ReferentialServiceLocal.class); public static final List<String> SPECIES_GROUP_IDS = Arrays.asList( "fr.ird.observe.entities.referentiel.SpeciesGroup#1445863056144#0.9820877553253712", "fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461", "fr.ird.observe.entities.referentiel.SpeciesGroup#1446014286433#0.6480183366605247", "fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683689#0.7120116158620075" ); - + private static final Log log = LogFactory.getLog(ReferentialServiceLocal.class); @Override public <D extends ReferentialDto, R extends ReferentialDtoReference<D, R>> ReferentialDtoReferenceSet<R> getReferenceSet(Class<R> type, Date lastUpdateDate) { @@ -387,7 +389,8 @@ public class ReferentialServiceLocal extends ObserveServiceLocal implements Refe boolean h2 = serviceContext.getDataSourceConfiguration().orElseThrow(IllegalStateException::new).isH2Database(); - AddSqlScriptProducerRequest addRequest = h2 ? AddSqlScriptProducerRequest.forH2() : AddSqlScriptProducerRequest.forPostgres(); + Version dbVersion = Versions.valueOf(serviceContext.getTopiaApplicationContext().getModelVersion()); + AddSqlScriptProducerRequest addRequest = h2 ? AddSqlScriptProducerRequest.forH2(dbVersion) : AddSqlScriptProducerRequest.forPostgres(dbVersion); for (Class<? extends ReferentialDtoReference> dtoType : missingReferentialIds.referentialReferenceTypes()) { Set<String> ids = missingReferentialIds.get(dtoType); addRequest.referentialIdsToAdd(dtoType, ids); ===================================== services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java ===================================== --- a/services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java +++ b/services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java @@ -91,7 +91,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport { @CopyDatabaseConfiguration @Test public void migrateReferentielDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema().addReferential().addAllData(); dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration()); migrate(service.produceAddSqlScript(request)); } @@ -100,7 +100,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport { @CopyDatabaseConfiguration @Test public void migrateDataForTestSeineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema().addReferential().addAllData(); dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration()); migrate(service.produceAddSqlScript(request)); } @@ -109,7 +109,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport { @CopyDatabaseConfiguration @Test public void migrateDataForTestLonglineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema().addReferential().addAllData(); dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration()); migrate(service.produceAddSqlScript(request)); } @@ -118,7 +118,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport { @CopyDatabaseConfiguration @Test public void migrateEmptyH2Db() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema(); dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration()); migrate(service.produceAddSqlScript(request)); } @@ -127,7 +127,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport { @CopyDatabaseConfiguration @Test public void migrateEmptyPgDb() throws IOException { - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema(); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres(ObserveTestConfiguration.getModelVersion()).addSchema(); dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration()); migrate(DatabaseName.empty_pg.name(), service.produceAddSqlScript(request)); } ===================================== services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java ===================================== --- a/services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java +++ b/services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java @@ -38,6 +38,7 @@ import org.junit.Before; import org.junit.Test; import org.nuiton.util.StringUtil; import org.nuiton.util.TimeLog; +import org.nuiton.version.Version; /** * Created on 31/12/15. @@ -49,9 +50,11 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport { private static final TimeLog timeLog = new TimeLog(SqlScriptProducerServiceLocalTest.class, 10, 1000); protected SqlScriptProducerService service; + private Version dbVersion; @Before public void setUp() throws Exception { + dbVersion = localTestMethodResource.getDbVersion(); service = localTestMethodResource.newService(SqlScriptProducerService.class); } @@ -59,8 +62,8 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport { @Test public void testProduceSchema() throws Exception { - produce(AddSqlScriptProducerRequest.forH2().addSchema()); - produce(AddSqlScriptProducerRequest.forPostgres().addSchema()); + produce(AddSqlScriptProducerRequest.forH2(dbVersion).addSchema()); + produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema()); } @@ -68,7 +71,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport { @Test public void testProduceReferential() throws Exception { - produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential()); + produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema().addReferential()); } @@ -76,7 +79,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport { @Test public void testProduceSomeReferential() throws Exception { - produce(AddSqlScriptProducerRequest.forPostgres().addSchema().referentialIdsToAdd(ProgramReference.class, ImmutableSet.of(ObserveFixtures.PROGRAM_ID))); + produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema().referentialIdsToAdd(ProgramReference.class, ImmutableSet.of(ObserveFixtures.PROGRAM_ID))); } @@ -85,7 +88,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport { public void testProduceTripSeine() throws Exception { // produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData()); - produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_SEINE_IDS)); + produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_SEINE_IDS)); } @@ -93,7 +96,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport { @Test public void testProduceTripLongline() throws Exception { - produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData()); + produce(AddSqlScriptProducerRequest.forH2(dbVersion).addSchema().addReferential().addAllData()); // produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_LONGLINE_IDS)); } ===================================== services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java @@ -31,6 +31,7 @@ import fr.ird.observe.dto.ObserveDto; import fr.ird.observe.dto.reference.ReferentialDtoReference; import java.util.Set; import java.util.stream.Collectors; +import org.nuiton.version.Version; /** * Created on 31/12/15. @@ -40,6 +41,8 @@ import java.util.stream.Collectors; public class AddSqlScriptProducerRequest implements ObserveDto { private final boolean postgres; + private final Version dbVersion; + private boolean addSchema; private boolean addReferential; private boolean addSomeReferential; @@ -47,12 +50,12 @@ public class AddSqlScriptProducerRequest implements ObserveDto { private ImmutableSet<String> dataIds; private final ArrayListMultimap<Class<? extends ReferentialDtoReference>, String> referentialIds = ArrayListMultimap.create(); - public static AddSqlScriptProducerRequest forH2() { - return new AddSqlScriptProducerRequest(false); + public static AddSqlScriptProducerRequest forH2(Version dbVersion) { + return new AddSqlScriptProducerRequest(false, dbVersion); } - public static AddSqlScriptProducerRequest forPostgres() { - return new AddSqlScriptProducerRequest(true); + public static AddSqlScriptProducerRequest forPostgres(Version dbVersion) { + return new AddSqlScriptProducerRequest(true, dbVersion); } public AddSqlScriptProducerRequest addSchema() { @@ -94,8 +97,13 @@ public class AddSqlScriptProducerRequest implements ObserveDto { return addReferential; } - protected AddSqlScriptProducerRequest(boolean postgres) { + public Version getDbVersion() { + return dbVersion; + } + + protected AddSqlScriptProducerRequest(boolean postgres, Version dbVersion) { this.postgres = postgres; + this.dbVersion = dbVersion; } public boolean isAddData() { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/0aac62baf2eed2bb70f9b493c40... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/0aac62baf2eed2bb70f9b493c40... You're receiving this email because of your account on gitlab.com.