mailman.cloud.codelutin.com
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Observe-commits

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2013 -----
  • December
  • November
  • October
  • September
observe-commits@list.forge.codelutin.com

  • 7199 discussions
[Git][ultreiaio/ird-observe][develop] 2 commits: [7.6.3][PS] Les thonidés sont disponibles dans la liste déroulante du form...
by Tony CHEMIT 01 Jul '20

01 Jul '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 5e1b7baa by Tony Chemit at 2020-07-01T13:45:10+02:00 [7.6.3][PS] Les thonidés sont disponibles dans la liste déroulante du form Espèces accessoires, alors qu&#39;ils ne sont pas dans la display liste correspondante - Closes #1562 (report v8) - - - - - db96c24b by Tony Chemit at 2020-07-01T13:48:53+02:00 Deux comportements étranges sur l&#39;assistant tableaux de synthèse - Closes #1533 (report v8) - - - - - 3 changed files: - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/config/ConfigModel.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetCatchUIHandler.java Changes: ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/config/ConfigModel.java ===================================== @@ -27,6 +27,7 @@ import fr.ird.observe.client.datasource.actions.AdminActionModel; import fr.ird.observe.client.datasource.actions.AdminStep; import fr.ird.observe.client.datasource.actions.AdminUI; import fr.ird.observe.client.datasource.actions.AdminUIModel; +import fr.ird.observe.client.datasource.actions.report.ReportModel; import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.ReferentialSynchronizeMode; import fr.ird.observe.client.datasource.api.ObserveDataSourcesManagerApplicationComponent; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; @@ -37,6 +38,7 @@ import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; +import fr.ird.observe.services.service.actions.report.Report; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -44,6 +46,7 @@ import org.apache.logging.log4j.Logger; import java.beans.PropertyChangeListener; import java.io.File; import java.util.EnumSet; +import java.util.List; import java.util.Objects; import static fr.ird.observe.client.constants.DbMode.USE_LOCAL; @@ -365,8 +368,10 @@ public class ConfigModel extends AdminActionModel { if (uiModel.containsOperation(AdminStep.REPORT)) { // il faut le fichier di'mport existe - File reportFile = uiModel.getReportModel().getReportFile(); - validate &= reportFile != null && reportFile.exists(); + ReportModel reportModel = uiModel.getReportModel(); + File reportFile = reportModel.getReportFile(); + List<Report> reports = reportModel.getReports(); + validate &= reportFile != null && reportFile.exists() && reports!=null && !reports.isEmpty(); } if (uiModel.containsOperation(AdminStep.ACTIVITY_LONGLINE_PAIRING)) { validate &= localSourceModel.getDataSourceInformation() != null ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java ===================================== @@ -39,6 +39,8 @@ import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; import java.net.URL; +import java.nio.file.Files; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -184,12 +186,18 @@ public class ReportModel extends AdminActionModel { public List<Report> getAllReports() { if (allReports == null) { - try { - URL resource = reportFile.toURI().toURL(); - allReports = loadReports(resource); - log.debug(String.format("Add loaded %d report(s).", allReports.size())); - } catch (IOException e) { - throw new IllegalStateException(String.format("Could not load reports definition file (%s).", reportFile), e); + if (reportFile == null || Files.notExists(reportFile.toPath())) { + log.warn("No report file, no reports loaded."); + allReports = Collections.emptyList(); + } else { + try { + URL resource = reportFile.toURI().toURL(); + allReports = loadReports(resource); + log.debug(String.format("Add loaded %d report(s).", allReports.size())); + } catch (IOException e) { + throw new IllegalStateException( + String.format("Could not load reports definition file (%s).", reportFile), e); + } } } return allReports; @@ -257,6 +265,7 @@ public class ReportModel extends AdminActionModel { public void updateReports() { setSelectedReport(null); + allReports = null; if (reportFile == null) { return; } @@ -272,12 +281,11 @@ public class ReportModel extends AdminActionModel { File reportFile = ObserveClientResourceManager.Resource.report.getFile(config.getReportDirectory()); if (reportFile.exists()) { - log.info(String.format("Will use report file : %s", reportFile)); - - setReportFile(reportFile); + log.info(String.format("Will use default report file : %s", reportFile)); } else { log.warn(String.format("Default report file %s does not exists.", reportFile)); } + setReportFile(reportFile); // on ecoute la modification du modèle PropertyChangeListener listenReportModified = evt -> { ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetCatchUIHandler.java ===================================== @@ -179,13 +179,6 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetNonTargetC protected void loadEditBean(String beanId) { Form<SetNonTargetCatchDto> form = getPsObservationNonTargetCatchService().loadForm(beanId); getModel().openForm(form); - //FIXME voir pk on faisait ça à ce moment -// addReferentialFilter(NonTargetCatchDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto, SpeciesReference>) incomingReferences -> { -// String speciesListId = getClientConfig().getSpeciesListSeineObservationNonTargetCatchId(); -// String tripId = ObserveSelectModelApplicationComponent.value().getSeine().getTrip().getId(); -// List<SpeciesReference> result = getTripService().getSpeciesByListAndTrip(tripId, speciesListId).toList(); -// return DtoReferenceCollection.filterEnabled(result); -// }); } @Override View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/621d20eb4303b6d0fb9854bd… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/621d20eb4303b6d0fb9854bd… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [7.6.3][PS] Les thonidés sont disponibles dans la liste déroulante du form...
by Tony CHEMIT 01 Jul '20

01 Jul '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: da612dee by Tony Chemit at 2020-07-01T13:42:27+02:00 [7.6.3][PS] Les thonidés sont disponibles dans la liste déroulante du form Espèces accessoires, alors qu&#39;ils ne sont pas dans la display liste correspondante - Closes #1562 - - - - - 1 changed file: - client-core/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetCatchUIHandler.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetCatchUIHandler.java ===================================== @@ -124,6 +124,16 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineNonTa NonTargetCatchDto source = (NonTargetCatchDto) evt.getSource(); source.setMeanLengthComputedSource(null); }; + addReferentialFilter(NonTargetCatchDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto, SpeciesReference>) incomingReferences -> { + + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineNonTargetCatchId(); + String tripId = getDataContext().getSelectedTripSeineId(); + + List<SpeciesReference> result = getTripSeineService().getSpeciesByListAndTrip(tripId, speciesListId).toList(); + + return DtoReferenceCollection.filterEnabled(result); + + }); } String getCatchWeightDataTip(NonTargetCatchComputedValueSource computed) { @@ -375,16 +385,6 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineNonTa loadReferentialReferenceSetsInModel(form); getModel().setForm(form); SetSeineNonTargetCatchHelper.copySetSeineNonTargetCatchDto(form.getObject(), getBean()); - addReferentialFilter(NonTargetCatchDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto, SpeciesReference>) incomingReferences -> { - - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineNonTargetCatchId(); - String tripId = getDataContext().getSelectedTripSeineId(); - - List<SpeciesReference> result = getTripSeineService().getSpeciesByListAndTrip(tripId, speciesListId).toList(); - - return DtoReferenceCollection.filterEnabled(result); - - }); } boolean showReasonForDiscard(SpeciesFateReference speciesFate) { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/da612dee9f3b1e1c60939c7db… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/da612dee9f3b1e1c60939c7db… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [PS][Observations] Activité : contrôle trop strict - Closes #1552
by Tony CHEMIT 01 Jul '20

01 Jul '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 6c2075f2 by Tony Chemit at 2020-07-01T11:20:02+02:00 [PS][Observations] Activité : contrôle trop strict - Closes #1552 - - - - - 2 changed files: - dto/src/main/models/Observe.model - services-local/src/test/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocalTest.java Changes: ===================================== dto/src/main/models/Observe.model ===================================== @@ -610,7 +610,7 @@ data.seine.ActivitySeine > data.Openable | references=time,vesselActivitySeine,s time + {*:1} Date | notNull latitude + {*:1} Float | notNull longitude + {*:1} Float | notNull -vesselSpeed + {*:1} Float | strictlyPositiveNumber +vesselSpeed + {*:1} Float | positiveNumber seaSurfaceTemperature + {*:1} Float | mayNotNull strictlyPositiveNumber ersId + {*:1} String floatingObjectEmpty + {*:1} boolean ===================================== services-local/src/test/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocalTest.java ===================================== @@ -251,7 +251,7 @@ public class ValidateServiceLocalTest extends ServiceLocalTestSupport { assertValidateResult(result, TripSeineDto.class, 5); assertValidateResult(result, RouteDto.class, 3); // 55 - assertValidateResult(result, ActivitySeineDto.class, 12); // 11 + assertValidateResult(result, ActivitySeineDto.class, 11); assertValidateResult(result, TransmittingBuoyDto.class, 1); assertValidateResult(result, SetSeineDto.class, 3); assertValidateResult(result, NonTargetCatchDto.class, 3); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/6c2075f2bb212d6566484c5b1… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/6c2075f2bb212d6566484c5b1… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] 2 commits: Requêtes de synthèse PS - Closes #1529
by Tony CHEMIT 01 Jul '20

01 Jul '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: b4c3bb68 by Tony Chemit at 2020-07-01T11:13:28+02:00 Requêtes de synthèse PS - Closes #1529 - - - - - 87541675 by Tony Chemit at 2020-07-01T11:13:31+02:00 [PS][Observations] Activité : contrôle trop strict - Closes #1552 - - - - - 3 changed files: - dto/src/main/models/Observe.model - services-local/src/test/java/fr/ird/observe/services/local/service/actions/report/ReportDcpUsageTest.java - services/src/main/resources/observe-reports.properties Changes: ===================================== dto/src/main/models/Observe.model ===================================== @@ -610,7 +610,7 @@ data.seine.ActivitySeine > data.Openable | references=time,vesselActivitySeine,s time + {*:1} Date | notNull latitude + {*:1} Float | notNull longitude + {*:1} Float | notNull -vesselSpeed + {*:1} Float | strictlyPositiveNumber +vesselSpeed + {*:1} Float | positiveNumber seaSurfaceTemperature + {*:1} Float | mayNotNull strictlyPositiveNumber ersId + {*:1} String floatingObjectEmpty + {*:1} boolean ===================================== services-local/src/test/java/fr/ird/observe/services/local/service/actions/report/ReportDcpUsageTest.java ===================================== @@ -32,7 +32,9 @@ import org.junit.Ignore; * * @author Tony Chemit - dev(a)tchemit.fr * @since 1.9 + * FIXME Use new report for FOB (see https://gitlab.com/ultreiaio/ird-observe/-/issues/1529) */ +@Ignore public class ReportDcpUsageTest extends AbstractReportServiceLocalTest { @Override ===================================== services/src/main/resources/observe-reports.properties ===================================== @@ -119,13 +119,19 @@ report.dailySetAndCatch.request.1=0,0|row|\ Group By r.date \ Order By r.date ################################################################################ -## Utilisation des FOB +## Utilisation des FOB, tableau simplifie ################################################################################ -report.dcpUsage.modelType=PS -report.dcpUsage.name=Utilisation des FOB -report.dcpUsage.description=Tableau r\u00e9capitulatif du nombre de FOB visit\u00e9s selon l\u2019action effectu\u00e9e (visites avec et sans p\u00eache, mis \u00e0 l\u2019eau, r\u00e9cuperation), et tortues observ\u00e9es -report.dcpUsage.columns=Type de FOB (Tableau 8),Visit\u00e9s sans p\u00eache,P\u00each\u00e9s,Mis \u00e0 l\u2019eau seuls,Modifi\u00e9s ou renforc\u00e9s,Retir\u00e9s,Abandonn\u00e9s (sans balise ou non d\u00e9truit ou non coul\u00e9),Coul\u00e9s,Remplac\u00e9s,Autre (p\u00e9ciser dans les notes),Tortues associ\u00e9es -report.dcpUsage.repeatVariable.typeObjetId=java.lang.String|\ +report.fobUsageMinimal.modelType=PS +report.fobUsageMinimal.name=Utilisation des FOB, tableau simplifi\u00e9e +report.fobUsageMinimal.description=Tableau r\u00e9capitulatif des FOB rencontr\u00e9s, par types CECOFAD et types d\u2019actions regroup\u00e9s (rencontr\u00e9s et p\u00each\u00e9s, rencontr\u00e9s non p\u00each\u00e9s, d\u00e9ploy\u00e9s), et nombres de tortues observ\u00e9es +report.fobUsageMinimal.columns=Type de FOB, \ + Rencontr\u00e9s p\u00each\u00e9s, \ + Rencontr\u00e9s non p\u00each\u00e9s, \ + D\u00e9ploy\u00e9s, \ + Tortues associ\u00e9es + +# liste des types CECOFAD en presence sur les donnees selectionnees +report.fobUsageMinimal.repeatVariable.typeObjetId=java.lang.String|\ Select distinct (om.standardCode) \ From ObjectMaterialImpl om \ Where standardCode is not null \ @@ -139,15 +145,37 @@ report.dcpUsage.repeatVariable.typeObjetId=java.lang.String|\ m.id In :tripId \ and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \ ) > 0 -report.dcpUsage.request.1=0,0|row|\ +report.fobUsageMinimal.request.1=0,0|row|\ Select concat(str(om.standardCode) , ' - ', om.label2) \ From ObjectMaterialImpl om \ Where \ om.standardCode = :typeObjetId \ And om.status != 0 -report.dcpUsage.request.1.repeat=typeObjetId|column -# visite -report.dcpUsage.request.2=1,0|row|\ +report.fobUsageMinimal.request.1.repeat=typeObjetId|column + +# rencontres + peches +report.fobUsageMinimal.request.2=1,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' \ + and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') +report.fobUsageMinimal.request.2.repeat=typeObjetId|column + +# rencontres - peches +report.fobUsageMinimal.request.3=2,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -156,23 +184,120 @@ report.dcpUsage.request.2=1,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' -report.dcpUsage.request.2.repeat=typeObjetId|column -# peche -report.dcpUsage.request.3=2,0|row|\ +and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') +report.fobUsageMinimal.request.3.repeat=typeObjetId|column + +# deployes +report.fobUsageMinimal.request.4=3,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ Join r.activitySeine a \ Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' +report.fobUsageMinimal.request.4.repeat=typeObjetId|column + +# Nombre de tortues +report.fobUsageMinimal.request.5=4,0|row| \ + Select Sum(efo.count) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Join dcp.objectObservedSpecies efo \ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3' Or a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586') -report.dcpUsage.request.3.repeat=typeObjetId|column -# mis a l'eau -report.dcpUsage.request.4=3,0|row|\ + and efo.species.speciesGroup.id = 'fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461' +report.fobUsageMinimal.request.5.repeat=typeObjetId|column +################################################################################ +## Utilisation des FOB, tableau detaille +################################################################################ +report.fobUsageExtended.modelType=PS +report.fobUsageExtended.name=Utilisation des FOB, tableau d\u00e9taill\u00e9 +report.fobUsageExtended.description=Tableau r\u00e9capitulatif des FOB rencontr\u00e9s, par types CECOFAD et types d\u2019actions (d\u00e9ploiements, simples visites, modifications, diverses modalit\u00e9s de retraits), avec et sans p\u00eache, et nombres de tortues observ\u00e9es +report.fobUsageExtended.columns=Type de FOB, \ + Visit\u00e9s P\u00each\u00e9s, \ + Visit\u00e9s non P\u00each\u00e9s, \ + D\u00e9ploiement apr\u00e8s P\u00eaches, \ + D\u00e9ploiement seul, \ + Modifi\u00e9s P\u00each\u00e9s, \ + Modifi\u00e9s non P\u00each\u00e9s, \ + Retir\u00e9s P\u00each\u00e9s, \ + Retir\u00e9s non P\u00each\u00e9s, \ + Abandonn\u00e9s P\u00each\u00e9s, \ + Abandonn\u00e9s non P\u00each\u00e9s, \ + Coul\u00e9s P\u00each\u00e9s, \ + Coul\u00e9s non P\u00each\u00e9s, \ + Remplac\u00e9s P\u00each\u00e9s, \ + Remplac\u00e9s non P\u00each\u00e9s, \ + Autre P\u00each\u00e9s, \ + Autre non P\u00each\u00e9s, \ + Tortues associ\u00e9es + +report.fobUsageExtended.repeatVariable.typeObjetId=java.lang.String|\ + Select distinct (om.standardCode) \ + From ObjectMaterialImpl om \ + Where standardCode is not null \ + And standardCode != '' \ + And (Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \ + ) > 0 +report.fobUsageExtended.request.1=0,0|row|\ + Select concat(str(om.standardCode) , ' - ', om.label2) \ + From ObjectMaterialImpl om \ + Where \ + om.standardCode = :typeObjetId \ + And om.status != 0 +report.fobUsageExtended.request.1.repeat=typeObjetId|column + +# visite + peche +report.fobUsageExtended.request.2=1,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.2.repeat=typeObjetId|column + +# visite - peche +report.fobUsageExtended.request.3=2,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.3.repeat=typeObjetId|column + +# Deploiement + peche +report.fobUsageExtended.request.4=3,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -181,12 +306,110 @@ report.dcpUsage.request.4=3,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' -report.dcpUsage.request.4.repeat=typeObjetId|column -# modification ou renforcement -#FIXME Supprime de la requete du dessous -#FIXME and dcp.objectFate.id = 'fr.ird.observe.entities.referentiel.seine.ObjectFate#1396860761530#0.8869464242156488' \ -report.dcpUsage.request.5=4,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.4.repeat=typeObjetId|column + +# Deploiement - peche +report.fobUsageExtended.request.5=4,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.5.repeat=typeObjetId|column + +# Modifie + peche +report.fobUsageExtended.request.6=5,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.6.repeat=typeObjetId|column + +# Modifie - peche +report.fobUsageExtended.request.7=6,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.7.repeat=typeObjetId|column + +# Retire + peche +report.fobUsageExtended.request.8=7,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.8.repeat=typeObjetId|column + +# Retire - peche +report.fobUsageExtended.request.9=8,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.9.repeat=typeObjetId|column + +# Abandonne + peche +report.fobUsageExtended.request.10=9,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.10.repeat=typeObjetId|column + +# Abandonne - peche +report.fobUsageExtended.request.11=10,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.11.repeat=typeObjetId|column + +# Coule + peche +report.fobUsageExtended.request.12=11,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -195,10 +418,12 @@ report.dcpUsage.request.5=4,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' -report.dcpUsage.request.5.repeat=typeObjetId|column -# Retrait -report.dcpUsage.request.6=5,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.12.repeat=typeObjetId|column + +# Coule - peche +report.fobUsageExtended.request.13=12,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -207,10 +432,12 @@ report.dcpUsage.request.6=5,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' -report.dcpUsage.request.6.repeat=typeObjetId|column -# abondonne -report.dcpUsage.request.7=6,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.13.repeat=typeObjetId|column + +# Remplace + peche +report.fobUsageExtended.request.14=13,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -219,10 +446,12 @@ report.dcpUsage.request.7=6,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' -report.dcpUsage.request.7.repeat=typeObjetId|column -# coule -report.dcpUsage.request.8=7,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.14.repeat=typeObjetId|column + +# Remplace - peche +report.fobUsageExtended.request.15=14,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -231,10 +460,12 @@ report.dcpUsage.request.8=7,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' -report.dcpUsage.request.8.repeat=typeObjetId|column -# remplacement -report.dcpUsage.request.9=8,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.15.repeat=typeObjetId|column + +# Autre ou ancien peche + peche +report.fobUsageExtended.request.16=15,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -243,10 +474,13 @@ report.dcpUsage.request.9=8,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#09' -report.dcpUsage.request.9.repeat=typeObjetId|column -# autre -report.dcpUsage.request.10=9,0|row|\ + and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.16.repeat=typeObjetId|column + +# Autre ou ancien peche - peche +report.fobUsageExtended.request.17=16,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -255,10 +489,13 @@ report.dcpUsage.request.10=9,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' -report.dcpUsage.request.10.repeat=typeObjetId|column -# tortues -report.dcpUsage.request.11=10,0|row| \ + and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.17.repeat=typeObjetId|column + +# Nombre de tortues +report.fobUsageExtended.request.18=17,0|row| \ Select Sum(efo.count) \ From TripSeineImpl m \ Join m.route r \ @@ -269,8 +506,7 @@ report.dcpUsage.request.11=10,0|row| \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ and efo.species.speciesGroup.id = 'fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461' -report.dcpUsage.request.11.repeat=typeObjetId|column - +report.fobUsageExtended.request.18.repeat=typeObjetId|column ################################################################################ ## Nombre des cal\u00e9es selon le type d'association ################################################################################ View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/abe16820422541fbf4fb2558… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/abe16820422541fbf4fb2558… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [PS][Observations] Activité : contrôle trop strict - Closes #1552
by Tony CHEMIT 01 Jul '20

01 Jul '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: abe16820 by Tony Chemit at 2020-07-01T11:02:50+02:00 [PS][Observations] Activité : contrôle trop strict - Closes #1552 - - - - - 1 changed file: - dto/src/main/models/Observe.model Changes: ===================================== dto/src/main/models/Observe.model ===================================== @@ -610,7 +610,7 @@ data.seine.ActivitySeine > data.Openable | references=time,vesselActivitySeine,s time + {*:1} Date | notNull latitude + {*:1} Float | notNull longitude + {*:1} Float | notNull -vesselSpeed + {*:1} Float | strictlyPositiveNumber +vesselSpeed + {*:1} Float | positiveNumber seaSurfaceTemperature + {*:1} Float | mayNotNull strictlyPositiveNumber ersId + {*:1} String floatingObjectEmpty + {*:1} boolean View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/abe16820422541fbf4fb25581… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/abe16820422541fbf4fb25581… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] 3 commits: Deux comportements étranges sur l'assistant tableaux de synthèse - Closes #1533
by Tony CHEMIT 01 Jul '20

01 Jul '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 6d8bef84 by Tony Chemit at 2020-07-01T10:30:35+02:00 Deux comportements étranges sur l&#39;assistant tableaux de synthèse - Closes #1533 - - - - - ce0547c6 by Tony Chemit at 2020-07-01T10:41:29+02:00 Correction des composants graphiques numériques et sélection - Closes #1563 - - - - - 9c48d5ae by Tony Chemit at 2020-07-01T10:58:50+02:00 Requêtes de synthèse PS - Closes #1529 - - - - - 8 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigModel.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java - dto/pom.xml - persistence/pom.xml - pom.xml - server-core/pom.xml - services-client/pom.xml - services/src/main/resources/observe-reports.properties Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigModel.java ===================================== @@ -30,6 +30,7 @@ import fr.ird.observe.client.ui.admin.AdminActionModel; import fr.ird.observe.client.ui.admin.AdminStep; import fr.ird.observe.client.ui.admin.AdminUI; import fr.ird.observe.client.ui.admin.AdminUIModel; +import fr.ird.observe.client.ui.admin.report.ReportModel; import fr.ird.observe.client.ui.storage.StorageUIModel; import fr.ird.observe.client.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; @@ -37,6 +38,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.services.service.actions.report.Report; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -44,6 +46,7 @@ import org.apache.logging.log4j.Logger; import java.beans.PropertyChangeListener; import java.io.File; import java.util.EnumSet; +import java.util.List; import java.util.Objects; import static fr.ird.observe.client.constants.DbMode.USE_LOCAL; @@ -427,8 +430,10 @@ public class ConfigModel extends AdminActionModel { if (uiModel.containsOperation(AdminStep.REPORT)) { // il faut le fichier di'mport existe - File reportFile = uiModel.getReportModel().getReportFile(); - validate &= reportFile != null && reportFile.exists(); + ReportModel reportModel = uiModel.getReportModel(); + File reportFile = reportModel.getReportFile(); + List<Report> reports = reportModel.getReports(); + validate &= reportFile != null && reportFile.exists() && reports!=null && !reports.isEmpty(); } return validate; ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java ===================================== @@ -32,13 +32,15 @@ import fr.ird.observe.client.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.dto.ObserveModelType; import fr.ird.observe.services.service.actions.report.Report; import fr.ird.observe.services.service.actions.report.ReportBuilder; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; import java.net.URL; +import java.nio.file.Files; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -200,15 +202,18 @@ public class ReportModel extends AdminActionModel { public List<Report> getAllReports() { if (allReports == null) { - try { - URL resource = reportFile.toURI().toURL(); - allReports = loadReports(resource); - if (log.isDebugEnabled()) { - log.debug("Add loaded " + allReports.size() + " report(s)."); + if (reportFile == null || Files.notExists(reportFile.toPath())) { + log.warn("No report file, no reports loaded."); + allReports = Collections.emptyList(); + } else { + try { + URL resource = reportFile.toURI().toURL(); + allReports = loadReports(resource); + log.debug(String.format("Add loaded %d report(s).", allReports.size())); + } catch (IOException e) { + throw new IllegalStateException( + String.format("Could not load reports definition file (%s).", reportFile), e); } - } catch (IOException e) { - throw new IllegalStateException( - "Could not load reports definition file (" + reportFile + ").", e); } } return allReports; @@ -276,6 +281,7 @@ public class ReportModel extends AdminActionModel { public void updateReports() { setSelectedReport(null); + allReports=null; reports = getAllReports().stream().filter(r -> modelType == r.getModelType()).collect(Collectors.toList()); firePropertyChange(REPORTS_PROPERTY_NAME, reports); if (log.isInfoEnabled()) { @@ -290,15 +296,11 @@ public class ReportModel extends AdminActionModel { File reportFile = ObserveResourceManager.Resource.report.getFile(config.getReportDirectory()); if (reportFile.exists()) { - if (log.isInfoEnabled()) { - log.info("Will use report file : " + reportFile); - } - - setReportFile(reportFile); + log.info(String.format("Will use default report file : %s", reportFile)); } else { - if (log.isWarnEnabled()) - log.warn("Default report file " + reportFile + " does not exists."); + log.warn(String.format("Default report file %s does not exists.", reportFile)); } + setReportFile(reportFile); // on ecoute la modification du modèle PropertyChangeListener listenReportModified = evt -> { ===================================== dto/pom.xml ===================================== @@ -180,6 +180,12 @@ <artifactId>templates</artifactId> <version>${observeToolkitVersion}</version> </dependency> + <dependency> + <groupId>io.ultreia.java4all.jaxx</groupId> + <artifactId>jaxx-runtime-spi</artifactId> + <version>${lib.version.java4all.jaxx}</version> + </dependency> + </dependencies> </plugin> <plugin> ===================================== persistence/pom.xml ===================================== @@ -238,6 +238,11 @@ <artifactId>templates</artifactId> <version>${observeToolkitVersion}</version> </dependency> + <dependency> + <groupId>io.ultreia.java4all.jaxx</groupId> + <artifactId>jaxx-runtime-spi</artifactId> + <version>${lib.version.java4all.jaxx}</version> + </dependency> </dependencies> </plugin> </plugins> ===================================== pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>io.ultreia.maven</groupId> <artifactId>pom</artifactId> - <version>2020.32</version> + <version>2020.36</version> </parent> <groupId>fr.ird.observe</groupId> @@ -155,18 +155,19 @@ <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> <buildDate>${maven.build.timestamp}</buildDate> - <observeToolkitVersion>3.7.28</observeToolkitVersion> - <!--<lib.version.java4all.http>1.0.13</lib.version.java4all.http>--> + <!--Fixed versions--> <lib.version.nuiton.validation>3.1</lib.version.nuiton.validation> - <!--<lib.version.java4all.config>1.0.3</lib.version.java4all.config>--> - <!--can't use 1.4.197 (date has changed + blob also--> <lib.version.h2>1.4.196</lib.version.h2> <lib.version.java4all.eugene>3.0-alpha-26</lib.version.java4all.eugene> - <!--<lib.version.java4all.jaxx>3.0-alpha-69-SNAPSHOT</lib.version.java4all.jaxx>--> - <!--<lib.version.java4all.i18n>4.0-beta-8-SNAPSHOT</lib.version.java4all.i18n>--> <lib.version.java4all.topia>1.1.17</lib.version.java4all.topia> <lib.version.nuiton.utils>3.0</lib.version.nuiton.utils> + + <observeToolkitVersion>3.7.29</observeToolkitVersion> + <!--<lib.version.java4all.http>1.0.13</lib.version.java4all.http>--> + <!--<lib.version.java4all.config>1.0.3</lib.version.java4all.config>--> + <!--<lib.version.java4all.jaxx>3.0-alpha-69-SNAPSHOT</lib.version.java4all.jaxx>--> + <!--<lib.version.java4all.i18n>4.0-beta-8-SNAPSHOT</lib.version.java4all.i18n>--> <!--<lib.version.nuiton.topia>3.6-SNAPSHOT</lib.version.nuiton.topia>--> <!--<lib.version.java4all.eugene>3.0-alpha-21</lib.version.java4all.eugene>--> <!--<lib.version.java4all.config>1.0.9-SNAPSHOT</lib.version.java4all.config>--> ===================================== server-core/pom.xml ===================================== @@ -247,6 +247,11 @@ <artifactId>guava</artifactId> <version>${lib.version.google.guava}</version> </dependency> + <dependency> + <groupId>io.ultreia.java4all.jaxx</groupId> + <artifactId>jaxx-runtime-spi</artifactId> + <version>${lib.version.java4all.jaxx}</version> + </dependency> </dependencies> </plugin> </plugins> ===================================== services-client/pom.xml ===================================== @@ -176,6 +176,11 @@ <artifactId>services</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>io.ultreia.java4all.jaxx</groupId> + <artifactId>jaxx-runtime-spi</artifactId> + <version>${lib.version.java4all.jaxx}</version> + </dependency> </dependencies> </plugin> </plugins> ===================================== services/src/main/resources/observe-reports.properties ===================================== @@ -119,13 +119,19 @@ report.dailySetAndCatch.request.1=0,0|row|\ Group By r.date \ Order By r.date ################################################################################ -## Utilisation des FOB +## Utilisation des FOB, tableau simplifie ################################################################################ -report.dcpUsage.modelType=PS -report.dcpUsage.name=Utilisation des FOB -report.dcpUsage.description=Tableau r\u00e9capitulatif du nombre de FOB visit\u00e9s selon l\u2019action effectu\u00e9e (visites avec et sans p\u00eache, mis \u00e0 l\u2019eau, r\u00e9cuperation), et tortues observ\u00e9es -report.dcpUsage.columns=Type de FOB (Tableau 8),Visit\u00e9s sans p\u00eache,P\u00each\u00e9s,Mis \u00e0 l\u2019eau seuls,Modifi\u00e9s ou renforc\u00e9s,Retir\u00e9s,Abandonn\u00e9s (sans balise ou non d\u00e9truit ou non coul\u00e9),Coul\u00e9s,Remplac\u00e9s,Autre (p\u00e9ciser dans les notes),Tortues associ\u00e9es -report.dcpUsage.repeatVariable.typeObjetId=java.lang.String|\ +report.fobUsageMinimal.modelType=PS +report.fobUsageMinimal.name=Utilisation des FOB, tableau simplifi\u00e9e +report.fobUsageMinimal.description=Tableau r\u00e9capitulatif des FOB rencontr\u00e9s, par types CECOFAD et types d\u2019actions regroup\u00e9s (rencontr\u00e9s et p\u00each\u00e9s, rencontr\u00e9s non p\u00each\u00e9s, d\u00e9ploy\u00e9s), et nombres de tortues observ\u00e9es +report.fobUsageMinimal.columns=Type de FOB, \ + Rencontr\u00e9s p\u00each\u00e9s, \ + Rencontr\u00e9s non p\u00each\u00e9s, \ + D\u00e9ploy\u00e9s, \ + Tortues associ\u00e9es + +# liste des types CECOFAD en presence sur les donnees selectionnees +report.fobUsageMinimal.repeatVariable.typeObjetId=java.lang.String|\ Select distinct (om.standardCode) \ From ObjectMaterialImpl om \ Where standardCode is not null \ @@ -139,15 +145,37 @@ report.dcpUsage.repeatVariable.typeObjetId=java.lang.String|\ m.id In :tripId \ and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \ ) > 0 -report.dcpUsage.request.1=0,0|row|\ +report.fobUsageMinimal.request.1=0,0|row|\ Select concat(str(om.standardCode) , ' - ', om.label2) \ From ObjectMaterialImpl om \ Where \ om.standardCode = :typeObjetId \ And om.status != 0 -report.dcpUsage.request.1.repeat=typeObjetId|column -# visite -report.dcpUsage.request.2=1,0|row|\ +report.fobUsageMinimal.request.1.repeat=typeObjetId|column + +# rencontres + peches +report.fobUsageMinimal.request.2=1,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' \ + and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') +report.fobUsageMinimal.request.2.repeat=typeObjetId|column + +# rencontres - peches +report.fobUsageMinimal.request.3=2,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -156,23 +184,120 @@ report.dcpUsage.request.2=1,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' -report.dcpUsage.request.2.repeat=typeObjetId|column -# peche -report.dcpUsage.request.3=2,0|row|\ +and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') +report.fobUsageMinimal.request.3.repeat=typeObjetId|column + +# deployes +report.fobUsageMinimal.request.4=3,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ Join r.activitySeine a \ Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' +report.fobUsageMinimal.request.4.repeat=typeObjetId|column + +# Nombre de tortues +report.fobUsageMinimal.request.5=4,0|row| \ + Select Sum(efo.count) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Join dcp.objectObservedSpecies efo \ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3' Or a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586') -report.dcpUsage.request.3.repeat=typeObjetId|column -# mis a l'eau -report.dcpUsage.request.4=3,0|row|\ + and efo.species.speciesGroup.id = 'fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461' +report.fobUsageMinimal.request.5.repeat=typeObjetId|column +################################################################################ +## Utilisation des FOB, tableau detaille +################################################################################ +report.fobUsageExtended.modelType=PS +report.fobUsageExtended.name=Utilisation des FOB, tableau d\u00e9taill\u00e9 +report.fobUsageExtended.description=Tableau r\u00e9capitulatif des FOB rencontr\u00e9s, par types CECOFAD et types d\u2019actions (d\u00e9ploiements, simples visites, modifications, diverses modalit\u00e9s de retraits), avec et sans p\u00eache, et nombres de tortues observ\u00e9es +report.fobUsageExtended.columns=Type de FOB, \ + Visit\u00e9s P\u00each\u00e9s, \ + Visit\u00e9s non P\u00each\u00e9s, \ + D\u00e9ploiement apr\u00e8s P\u00eaches, \ + D\u00e9ploiement seul, \ + Modifi\u00e9s P\u00each\u00e9s, \ + Modifi\u00e9s non P\u00each\u00e9s, \ + Retir\u00e9s P\u00each\u00e9s, \ + Retir\u00e9s non P\u00each\u00e9s, \ + Abandonn\u00e9s P\u00each\u00e9s, \ + Abandonn\u00e9s non P\u00each\u00e9s, \ + Coul\u00e9s P\u00each\u00e9s, \ + Coul\u00e9s non P\u00each\u00e9s, \ + Remplac\u00e9s P\u00each\u00e9s, \ + Remplac\u00e9s non P\u00each\u00e9s, \ + Autre P\u00each\u00e9s, \ + Autre non P\u00each\u00e9s, \ + Tortues associ\u00e9es + +report.fobUsageExtended.repeatVariable.typeObjetId=java.lang.String|\ + Select distinct (om.standardCode) \ + From ObjectMaterialImpl om \ + Where standardCode is not null \ + And standardCode != '' \ + And (Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and (dcp.computedWhenArrivingSimplifiedObjectType = om.standardCode Or dcp.computedWhenLeavingSimplifiedObjectType = om.standardCode) \ + ) > 0 +report.fobUsageExtended.request.1=0,0|row|\ + Select concat(str(om.standardCode) , ' - ', om.label2) \ + From ObjectMaterialImpl om \ + Where \ + om.standardCode = :typeObjetId \ + And om.status != 0 +report.fobUsageExtended.request.1.repeat=typeObjetId|column + +# visite + peche +report.fobUsageExtended.request.2=1,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.2.repeat=typeObjetId|column + +# visite - peche +report.fobUsageExtended.request.3=2,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#2' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.3.repeat=typeObjetId|column + +# Deploiement + peche +report.fobUsageExtended.request.4=3,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -181,12 +306,110 @@ report.dcpUsage.request.4=3,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' -report.dcpUsage.request.4.repeat=typeObjetId|column -# modification ou renforcement -#FIXME Supprime de la requete du dessous -#FIXME and dcp.objectFate.id = 'fr.ird.observe.entities.referentiel.seine.ObjectFate#1396860761530#0.8869464242156488' \ -report.dcpUsage.request.5=4,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.4.repeat=typeObjetId|column + +# Deploiement - peche +report.fobUsageExtended.request.5=4,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenLeavingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#1' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.5.repeat=typeObjetId|column + +# Modifie + peche +report.fobUsageExtended.request.6=5,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.6.repeat=typeObjetId|column + +# Modifie - peche +report.fobUsageExtended.request.7=6,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.7.repeat=typeObjetId|column + +# Retire + peche +report.fobUsageExtended.request.8=7,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.8.repeat=typeObjetId|column + +# Retire - peche +report.fobUsageExtended.request.9=8,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.9.repeat=typeObjetId|column + +# Abandonne + peche +report.fobUsageExtended.request.10=9,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.10.repeat=typeObjetId|column + +# Abandonne - peche +report.fobUsageExtended.request.11=10,0|row|\ + Select Count(dcp) \ + From TripSeineImpl m \ + Join m.route r \ + Join r.activitySeine a \ + Join a.floatingObject dcp \ + Where \ + m.id In :tripId \ + and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.11.repeat=typeObjetId|column + +# Coule + peche +report.fobUsageExtended.request.12=11,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -195,10 +418,12 @@ report.dcpUsage.request.5=4,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#8' -report.dcpUsage.request.5.repeat=typeObjetId|column -# Retrait -report.dcpUsage.request.6=5,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.12.repeat=typeObjetId|column + +# Coule - peche +report.fobUsageExtended.request.13=12,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -207,10 +432,12 @@ report.dcpUsage.request.6=5,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#4' -report.dcpUsage.request.6.repeat=typeObjetId|column -# abondonne -report.dcpUsage.request.7=6,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.13.repeat=typeObjetId|column + +# Remplace + peche +report.fobUsageExtended.request.14=13,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -219,10 +446,12 @@ report.dcpUsage.request.7=6,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#5' -report.dcpUsage.request.7.repeat=typeObjetId|column -# coule -report.dcpUsage.request.8=7,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.14.repeat=typeObjetId|column + +# Remplace - peche +report.fobUsageExtended.request.15=14,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -231,10 +460,12 @@ report.dcpUsage.request.8=7,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#7' -report.dcpUsage.request.8.repeat=typeObjetId|column -# remplacement -report.dcpUsage.request.9=8,0|row|\ + and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#9' \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.15.repeat=typeObjetId|column + +# Autre ou ancien peche + peche +report.fobUsageExtended.request.16=15,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -243,10 +474,13 @@ report.dcpUsage.request.9=8,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#09' -report.dcpUsage.request.9.repeat=typeObjetId|column -# autre -report.dcpUsage.request.10=9,0|row|\ + and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') \ + and a.vesselActivitySeine.id = 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.16.repeat=typeObjetId|column + +# Autre ou ancien peche - peche +report.fobUsageExtended.request.17=16,0|row|\ Select Count(dcp) \ From TripSeineImpl m \ Join m.route r \ @@ -255,10 +489,13 @@ report.dcpUsage.request.10=9,0|row|\ Where \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ - and dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' -report.dcpUsage.request.10.repeat=typeObjetId|column -# tortues -report.dcpUsage.request.11=10,0|row| \ + and (dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#10' \ + or dcp.objectOperation.id = 'fr.ird.observe.entities.referentiel.seine.ObjectOperation#0#3') \ + and a.vesselActivitySeine.id != 'fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586' +report.fobUsageExtended.request.17.repeat=typeObjetId|column + +# Nombre de tortues +report.fobUsageExtended.request.18=17,0|row| \ Select Sum(efo.count) \ From TripSeineImpl m \ Join m.route r \ @@ -269,8 +506,7 @@ report.dcpUsage.request.11=10,0|row| \ m.id In :tripId \ and dcp.computedWhenArrivingSimplifiedObjectType = :typeObjetId \ and efo.species.speciesGroup.id = 'fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461' -report.dcpUsage.request.11.repeat=typeObjetId|column - +report.fobUsageExtended.request.18.repeat=typeObjetId|column ################################################################################ ## Nombre des cal\u00e9es selon le type d'association ################################################################################ View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/ee51e70ab424f184eda02d52… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/ee51e70ab424f184eda02d52… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] Bascule entre langues - Closes #1553
by Tony CHEMIT 30 Jun '20

30 Jun '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 621d20eb by Tony Chemit at 2020-06-30T13:41:44+02:00 Bascule entre langues - Closes #1553 - - - - - 5 changed files: - client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java - client-core/src/main/java/fr/ird/observe/client/main/actions/CloseApplicationAction.java - client-core/src/main/java/fr/ird/observe/client/main/actions/ReloadApplicationAction.java - client-core/src/main/java/fr/ird/observe/client/main/callback/ReloadApplicationCallback.java - client-runner/src/main/java/fr/ird/observe/client/RunObserve.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java ===================================== @@ -22,7 +22,7 @@ package fr.ird.observe.client; import fr.ird.observe.client.configuration.ClientConfig; -import fr.ird.observe.client.configuration.ClientConfigApplicationComponent; +import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.ObserveServiceMainFactoryApplicationComponent; import fr.ird.observe.spi.DtoModelHelper; @@ -30,6 +30,8 @@ import io.ultreia.java4all.application.context.ApplicationContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.Optional; + import static io.ultreia.java4all.i18n.I18n.n; /** @@ -43,6 +45,7 @@ import static io.ultreia.java4all.i18n.I18n.n; public class ObserveSwingApplicationContext extends ApplicationContext { private static final Logger log = LogManager.getLogger(ObserveSwingApplicationContext.class); + private static ObserveSwingDataSource dataSourceToReload; public static ObserveSwingApplicationContext init(ClientConfig config) { ClientConfigFinderInstance.config = config; @@ -90,4 +93,12 @@ public class ObserveSwingApplicationContext extends ApplicationContext { n("observe.runner.initStorage.title.no.local.db.found"); } + + public static void setDataSourceToReload(ObserveSwingDataSource dataSourceToReload) { + ObserveSwingApplicationContext.dataSourceToReload = dataSourceToReload; + } + + public static Optional<ObserveSwingDataSource> getDataSourceToReload() { + return Optional.ofNullable(dataSourceToReload); + } } ===================================== client-core/src/main/java/fr/ird/observe/client/main/actions/CloseApplicationAction.java ===================================== @@ -28,6 +28,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.swing.application.ApplicationRunner; +import javax.swing.KeyStroke; import java.awt.event.ActionEvent; import static io.ultreia.java4all.i18n.I18n.t; @@ -46,6 +47,22 @@ public class CloseApplicationAction extends MainUIActionSupport implements Runna super(t("observe.action.exit"), t("observe.action.exit.tip"), "exit", 'Q'); } + public CloseApplicationAction(String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + + public CloseApplicationAction(String actionCommandKey, String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(actionCommandKey, label, shortDescription, actionIcon, acceleratorKey); + } + + public CloseApplicationAction(String label, String shortDescription, String actionIcon, char acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + + public CloseApplicationAction(String actionCommandKey, String label, String shortDescription, String actionIcon, char acceleratorKey) { + super(actionCommandKey, label, shortDescription, actionIcon, acceleratorKey); + } + @Override public void run() { ===================================== client-core/src/main/java/fr/ird/observe/client/main/actions/ReloadApplicationAction.java ===================================== @@ -22,12 +22,13 @@ package fr.ird.observe.client.main.actions; * #L% */ -import fr.ird.observe.client.main.ObserveMainUI; +import fr.ird.observe.client.ObserveSwingApplicationContext; +import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.main.body.NoBodyContentComponent; +import fr.ird.observe.client.util.UIHelper; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - -import java.awt.event.ActionEvent; +import org.nuiton.jaxx.runtime.swing.application.ApplicationRunner; import static io.ultreia.java4all.i18n.I18n.t; @@ -37,7 +38,7 @@ import static io.ultreia.java4all.i18n.I18n.t; * @author Tony Chemit - dev(a)tchemit.fr * @since 8.0 */ -public class ReloadApplicationAction extends MainUIActionSupport { +public class ReloadApplicationAction extends CloseApplicationAction { private static final Logger log = LogManager.getLogger(ReloadApplicationAction.class); @@ -46,14 +47,28 @@ public class ReloadApplicationAction extends MainUIActionSupport { } @Override - protected void doActionPerformed(ActionEvent event, ObserveMainUI ui) { - + public void run() { log.info("ObServe reloading..."); + boolean canContinue = ui.changeBodyContent(NoBodyContentComponent.class); -// boolean canContinue = ContentUIManagerApplicationComponent.value().closeSelectedContentUI(); - if (canContinue) { - getClientUIContext().getUiCallbackManager().run("application"); + if (!canContinue) { + return; + } + + ObserveSwingDataSource mainDataSource = getObserveDataSourcesManager().getMainDataSource(); + if (mainDataSource != null) { + if (mainDataSource.isOpen()) { + try { + mainDataSource.close(); + } catch (Exception e) { + UIHelper.handlingError("Can't close data source", e); + mainDataSource = null; + } + } + ObserveSwingApplicationContext.setDataSourceToReload(mainDataSource); } + ApplicationRunner.getRunner().setReload(true); + super.run(); } } ===================================== client-core/src/main/java/fr/ird/observe/client/main/callback/ReloadApplicationCallback.java ===================================== @@ -25,9 +25,8 @@ package fr.ird.observe.client.main.callback; import com.google.auto.service.AutoService; import fr.ird.observe.client.ClientUIContext; import fr.ird.observe.client.main.ObserveMainUI; -import fr.ird.observe.client.main.actions.CloseApplicationAction; +import fr.ird.observe.client.main.actions.ReloadApplicationAction; import org.nuiton.jaxx.runtime.swing.SwingUtil; -import org.nuiton.jaxx.runtime.swing.application.ApplicationRunner; import javax.swing.Icon; @@ -64,8 +63,7 @@ public class ReloadApplicationCallback implements ObserveUICallback { @Override public void run() { - ApplicationRunner.getRunner().setReload(true); - CloseApplicationAction action = new CloseApplicationAction(); + ReloadApplicationAction action = new ReloadApplicationAction(); action.setUi(mainUI); action.run(); } ===================================== client-runner/src/main/java/fr/ird/observe/client/RunObserve.java ===================================== @@ -75,6 +75,7 @@ import java.util.Arrays; import java.util.Date; import java.util.EnumSet; import java.util.Locale; +import java.util.Optional; import java.util.Set; import java.util.logging.Level; @@ -271,7 +272,9 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, // // return; // } - if (!config.isLoadLocalStorage()) { + Optional<ObserveSwingDataSource> dataSourceToReload = ObserveSwingApplicationContext.getDataSourceToReload(); + ObserveSwingApplicationContext.setDataSourceToReload(null); + if (!config.isLoadLocalStorage() && !dataSourceToReload.isPresent()) { // on ne charge rien au démarrage log.info(t("observe.runner.loaded", config.getVersion())); @@ -280,7 +283,8 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, // 4 - init storage - Runnable initStorage = () -> initStorage(config, ui); + + Runnable initStorage = () -> initStorage(config, ui, dataSourceToReload.orElse(null)); getObserveActionExecutor().addAction(t("observe.runner.load.database"), initStorage); } @@ -364,57 +368,65 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, //FIXME Need to have a unified API and only one //FIXME first try to open specified ds (here local ds) //FIXME if can not load local ds, then feedback it and propose to load automatic backup, or to create a new local ds - private void initStorage(ClientConfig config, JFrame ui) { + private void initStorage(ClientConfig config, JFrame ui, ObserveSwingDataSource previousDataSource) { ObserveMainUI mainUI = (ObserveMainUI) ui; ObserveDataSourcesManager dataSourcesManager = getObserveDataSourcesManager(); BackupsManager backupsManager = getBackupsManager(); - BackupStorage lastAutomaticBackup = backupsManager.getAutomaticBackups().stream().findFirst().orElse(null); - - boolean askToCreate = true; - if (config.isLocalStorageExist()) { + if (previousDataSource != null) { - // une base locale existe, on l'ouvre + // reuse previous data source + previousDataSource.setProgressModel(new ProgressModel()); + mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, previousDataSource, true); - ObserveSwingDataSource dataSource = dataSourcesManager.newLocalDataSource(); - dataSource.setProgressModel(new ProgressModel()); + } else if (config.isLoadLocalStorage()){ - try { + boolean askToCreate = true; + BackupStorage lastAutomaticBackup = backupsManager.getAutomaticBackups().stream().findFirst().orElse(null); - ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(false); - dataSource.setOwner(dataSourceInformation.isOwner()); - dataSource.setSuperUser(dataSourceInformation.isSuperUser()); - dataSource.migrateDataIfPossible(dataSourceInformation, config.getModelVersion()); + if (config.isLocalStorageExist()) { - // la source sera utilisée dans les ui - mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, dataSource, true); + // une base locale existe, on l'ouvre - askToCreate = false; - } catch (Exception e) { + ObserveSwingDataSource dataSource = dataSourcesManager.newLocalDataSource(); + dataSource.setProgressModel(new ProgressModel()); - if (lastAutomaticBackup != null) { + try { - log.error("Could not load local database", e); + ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(false); + dataSource.setOwner(dataSourceInformation.isOwner()); + dataSource.setSuperUser(dataSourceInformation.isSuperUser()); + dataSource.migrateDataIfPossible(dataSourceInformation, config.getModelVersion()); - InitStorageModel initStorageModel = new InitStorageModel(config.getLocalDBDirectory(), lastAutomaticBackup); + // la source sera utilisée dans les ui + mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, dataSource, true); - JOptionPane.showMessageDialog( - mainUI, - t("observe.runner.initStorage.local.db.error", initStorageModel.getBackupDate()), - t("observe.runner.title.error.dialog"), - JOptionPane.WARNING_MESSAGE - ); - loadBackup(dataSourcesManager, mainUI, lastAutomaticBackup); askToCreate = false; + } catch (Exception e) { + + if (lastAutomaticBackup != null) { + + log.error("Could not load local database", e); + + InitStorageModel initStorageModel = new InitStorageModel(config.getLocalDBDirectory(), lastAutomaticBackup); + + JOptionPane.showMessageDialog( + mainUI, + t("observe.runner.initStorage.local.db.error", initStorageModel.getBackupDate()), + t("observe.runner.title.error.dialog"), + JOptionPane.WARNING_MESSAGE + ); + loadBackup(dataSourcesManager, mainUI, lastAutomaticBackup); + askToCreate = false; + } } - } - } - if (askToCreate) { - askToCreateLocalDatabase(mainUI, config, dataSourcesManager, lastAutomaticBackup); + if (askToCreate) { + askToCreateLocalDatabase(mainUI, config, dataSourcesManager, lastAutomaticBackup); + } + } } - log.info(t("observe.runner.initStorage.done")); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/621d20eb4303b6d0fb9854bd5… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/621d20eb4303b6d0fb9854bd5… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] 2 commits: Élimination des points non effectifs dans la carte - Closes #1560
by Tony CHEMIT 30 Jun '20

30 Jun '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 42c7753d by Tony Chemit at 2020-06-30T13:00:25+02:00 Élimination des points non effectifs dans la carte - Closes #1560 - - - - - 7b72d889 by Tony Chemit at 2020-06-30T13:00:26+02:00 Carte - Closes #1517 - - - - - 20 changed files: - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/ObserveMapPaneLegendItem.java - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapContentBuilder.java - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUIHandler.java - client-datasource-editor-common/src/main/map/ll-style.xml - client-datasource-editor-common/src/main/map/ps-style.xml - client-datasource-editor-ll/src/main/i18n/getters/java.getter - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/common/TripMapContentBuilder.java - client-datasource-editor-ps/src/main/i18n/getters/java.getter - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/common/TripMapContentBuilder.java - dto/src/main/java/fr/ird/observe/dto/data/TripMapPoint.java - dto/src/main/java/fr/ird/observe/spi/DtoModelClasses.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - persistence/src/main/java/fr/ird/observe/entities/Entities.java - persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java - persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java - services-local/src/main/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java Changes: ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/ObserveMapPaneLegendItem.java ===================================== @@ -49,13 +49,13 @@ public class ObserveMapPaneLegendItem { public static Coordinate[] lineCoordinates() { Coordinate[] coordinates = new Coordinate[2]; - coordinates[0] = new Coordinate(LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2); - coordinates[1] = new Coordinate(LEGEND_SYMBOL_WIDTH - LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2); + coordinates[0] = new Coordinate(LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2.); + coordinates[1] = new Coordinate(LEGEND_SYMBOL_WIDTH - LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2.); return coordinates; } public static Coordinate pointCoordinates() { - return new Coordinate(LEGEND_SYMBOL_WIDTH / 2, LEGEND_ITEM_HEIGHT / 2); + return new Coordinate(LEGEND_SYMBOL_WIDTH / 2., LEGEND_ITEM_HEIGHT / 2.); } public SimpleFeature getSimpleFeature() { ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapContentBuilder.java ===================================== @@ -62,11 +62,14 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.ServiceLoader; import java.util.Set; +import static io.ultreia.java4all.i18n.I18n.t; + /** * @author Tony Chemit - dev(a)tchemit.fr */ @@ -76,12 +79,14 @@ public abstract class TripMapContentBuilder { protected static final String TRIP_LOGBOOK_POINTS_LAYER_NAME = "Trip Logbook points"; protected static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM"); - protected MapContent mapContent; + private static ImmutableSet<TripMapContentBuilder> PROVIDERS; + protected final List<ObserveMapPaneLegendItem> legendItems; + protected final List<TripMapPoint> notValidPoints = new LinkedList<>(); protected final Set<TripMapPointType> acceptedTripPointTypes; + protected MapContent mapContent; protected StyledLayerDescriptor styledLayerDescriptor; - private static ImmutableSet<TripMapContentBuilder> PROVIDERS; public abstract boolean accept(TripMapDto tripMapDto); @@ -121,7 +126,8 @@ public abstract class TripMapContentBuilder { private void reset() { legendItems.clear(); - mapContent=new MapContent(); + notValidPoints.clear(); + mapContent = new MapContent(); } protected TripMapContentBuilder(Set<TripMapPointType> acceptedTripPointTypes) { @@ -152,7 +158,7 @@ public abstract class TripMapContentBuilder { mapContent.addLayer(layer); } - public void addPoints(List<TripMapPoint> tripMapPoints, String layerName) throws FactoryException { + public void addPoints(List<TripMapPoint> tripMapPoints, String layerName, String notValidPointsLabel) throws FactoryException { GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); @@ -171,8 +177,11 @@ public abstract class TripMapContentBuilder { Style stylePoints = findStyle(styledLayerDescriptor, layerName, null); Set<TripMapPointType> pointTypeInLegend = new HashSet<>(); - for (TripMapPoint tripMapPoint : tripMapPoints) { + if (!tripMapPoint.isValid()) { + notValidPoints.add(tripMapPoint); + continue; + } Coordinate coordinate = new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()); TripMapPointType type = tripMapPoint.getType(); @@ -205,6 +214,19 @@ public abstract class TripMapContentBuilder { mapContent.addLayer(pointsLayer); } + if (!notValidPoints.isEmpty()) { + Point point = geometryFactory.createPoint(ObserveMapPaneLegendItem.pointCoordinates()); + pointBuilder.add(point); + pointBuilder.add(""); + pointBuilder.add("notValidPoint"); + + ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem( + pointBuilder.buildFeature(null), + stylePoints, + t(notValidPointsLabel, notValidPoints.size())); + legendItems.add(legendPoint); + } + } ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUIHandler.java ===================================== @@ -94,7 +94,9 @@ public class TripMapUIHandler implements UIHandler<TripMapUI> { // set zoom tripArea = new ReferencedEnvelope(); for (TripMapPoint point : tripMapPoints) { - tripArea.expandToInclude(new DirectPosition2D(point.getLongitude(), point.getLatitude())); + if (point.isValid()) { + tripArea.expandToInclude(new DirectPosition2D(point.getLongitude(), point.getLatitude())); + } } tripArea.expandBy(1.1); ===================================== client-datasource-editor-common/src/main/map/ll-style.xml ===================================== @@ -118,7 +118,7 @@ <LineSymbolizer> <Stroke> <CssParameter name="stroke">#00FF00</CssParameter> - <CssParameter name="stroke-width">1</CssParameter> + <CssParameter name="stroke-width">2</CssParameter> <CssParameter name="stroke-dasharray">5 7</CssParameter> </Stroke> </LineSymbolizer> @@ -404,6 +404,33 @@ </TextSymbolizer> </Rule> </FeatureTypeStyle> + <FeatureTypeStyle> + <Rule> + <Name>Not valid observation point</Name> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>notValidPoint</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>ttf://Serif#U+0021</WellKnownName> + <Fill> + <CssParameter name="fill">#00FF00</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </Mark> + <Size>12</Size> + </Graphic> + </PointSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> </NamedLayer> @@ -596,6 +623,33 @@ </Rule> </FeatureTypeStyle> + <FeatureTypeStyle> + <Rule> + <Name>Not valid logbook point</Name> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>notValidPoint</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>ttf://Serif#U+0021</WellKnownName> + <Fill> + <CssParameter name="fill">#FF0000</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </Mark> + <Size>12</Size> + </Graphic> + </PointSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> </NamedLayer> ===================================== client-datasource-editor-common/src/main/map/ps-style.xml ===================================== @@ -196,6 +196,33 @@ </Rule> </FeatureTypeStyle> + <FeatureTypeStyle> + <Rule> + <Name>Not valid point</Name> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>notValidPoint</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>ttf://Serif#U+0021</WellKnownName> + <Fill> + <CssParameter name="fill">#00FF00</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </Mark> + <Size>12</Size> + </Graphic> + </PointSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> </NamedLayer> ===================================== client-datasource-editor-ll/src/main/i18n/getters/java.getter ===================================== @@ -317,6 +317,8 @@ observe.data.ll.observation.WeightMeasure.table.weight.tip observe.data.ll.observation.WeightMeasure.table.weightMeasureType observe.data.ll.observation.WeightMeasure.table.weightMeasureType.tip observe.data.ps.common.GearUseFeatures.delete +observe.map.logbook.points.not.valid +observe.map.observation.points.not.valid observe.menu.navigation.action.move.activityLongline observe.menu.navigation.action.move.sample observe.menu.navigation.action.move.sample.choice ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/common/TripMapContentBuilder.java ===================================== @@ -51,6 +51,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; +import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -106,8 +107,8 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit @Override protected void addPoints(List<TripMapPoint> tripMapPoints) throws FactoryException { - addPoints(tripMapPoints.stream().filter(f->f.getType().isTrip() || f.getType().isObs()).collect(Collectors.toList()), TRIP_OBS_POINTS_LAYER_NAME); - addPoints(tripMapPoints.stream().filter(f->f.getType().isTrip() || f.getType().isLogbook()).collect(Collectors.toList()), TRIP_LOGBOOK_POINTS_LAYER_NAME); + addPoints(tripMapPoints.stream().filter(f -> f.getType().isTrip() || f.getType().isObs()).collect(Collectors.toList()), TRIP_OBS_POINTS_LAYER_NAME, n("observe.map.observation.points.not.valid")); + addPoints(tripMapPoints.stream().filter(f -> f.getType().isTrip() || f.getType().isLogbook()).collect(Collectors.toList()), TRIP_LOGBOOK_POINTS_LAYER_NAME, n("observe.map.logbook.points.not.valid")); } private void addLonglineObsFishingZone(List<TripMapPoint> tripMapPoints) throws FactoryException { @@ -126,24 +127,31 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit DefaultFeatureCollection polygonsFeatures = new DefaultFeatureCollection(); for (int indexPoint = 3; indexPoint < tripMapPoints.size(); indexPoint++) { - if (tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityObsWithHaulingStart) - && tripMapPoints.get(indexPoint - 2).getType().equals(TripMapPointType.llActivityObsWithSettingEnd) - && tripMapPoints.get(indexPoint - 3).getType().equals(TripMapPointType.llActivityObsWithSettingStart)) { + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPoint tripMapPoint1 = tripMapPoints.get(indexPoint - 1); + TripMapPoint tripMapPoint2 = tripMapPoints.get(indexPoint - 2); + TripMapPoint tripMapPoint3 = tripMapPoints.get(indexPoint - 3); + if (!(tripMapPoint.isValid()&& tripMapPoint1.isValid() && tripMapPoint2.isValid() && tripMapPoint3.isValid())) { + continue; + } + if (tripMapPoint.getType().equals(TripMapPointType.llActivityObsWithHaulingEnd) + && tripMapPoint1.getType().equals(TripMapPointType.llActivityObsWithHaulingStart) + && tripMapPoint2.getType().equals(TripMapPointType.llActivityObsWithSettingEnd) + && tripMapPoint3.getType().equals(TripMapPointType.llActivityObsWithSettingStart)) { Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 2).getLongitude(), tripMapPoints.get(indexPoint - 2).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()) + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()), + new Coordinate(tripMapPoint2.getLongitude(), tripMapPoint2.getLatitude()), + new Coordinate(tripMapPoint1.getLongitude(), tripMapPoint1.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()) }; Polygon polygon = geometryFactory.createPolygon(coordinates); //polygon = (Polygon) polygon.convexHull(); // permet de transformer un poliqgone croisé en polygon convex polygonBuilder.add(polygon); - polygonBuilder.add(DATE_FORMAT.format(tripMapPoints.get(indexPoint - 3).getTime())); + polygonBuilder.add(DATE_FORMAT.format(tripMapPoint3.getTime())); polygonBuilder.add("longlineFishingZone"); SimpleFeature feature = polygonBuilder.buildFeature(null); polygonsFeatures.add(feature); @@ -174,24 +182,31 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit DefaultFeatureCollection polygonsFeatures = new DefaultFeatureCollection(); for (int indexPoint = 3; indexPoint < tripMapPoints.size(); indexPoint++) { - if (tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart) - && tripMapPoints.get(indexPoint - 2).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) - && tripMapPoints.get(indexPoint - 3).getType().equals(TripMapPointType.llActivityLogbookWithSettingStart)) { + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPoint tripMapPoint1 = tripMapPoints.get(indexPoint - 1); + TripMapPoint tripMapPoint2 = tripMapPoints.get(indexPoint - 2); + TripMapPoint tripMapPoint3 = tripMapPoints.get(indexPoint - 3); + if (!(tripMapPoint.isValid()&& tripMapPoint1.isValid() && tripMapPoint2.isValid() && tripMapPoint3.isValid())) { + continue; + } + if (tripMapPoint.getType().equals(TripMapPointType.llActivityLogbookWithHaulingEnd) + && tripMapPoint1.getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart) + && tripMapPoint2.getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) + && tripMapPoint3.getType().equals(TripMapPointType.llActivityLogbookWithSettingStart)) { Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 2).getLongitude(), tripMapPoints.get(indexPoint - 2).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()) + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()), + new Coordinate(tripMapPoint2.getLongitude(), tripMapPoint2.getLatitude()), + new Coordinate(tripMapPoint1.getLongitude(), tripMapPoint1.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()) }; Polygon polygon = geometryFactory.createPolygon(coordinates); //polygon = (Polygon) polygon.convexHull(); // permet de transformer un poliqgone croisé en polygon convex polygonBuilder.add(polygon); - polygonBuilder.add(DATE_FORMAT.format(tripMapPoints.get(indexPoint - 3).getTime())); + polygonBuilder.add(DATE_FORMAT.format(tripMapPoint3.getTime())); polygonBuilder.add("longlineFishingZone"); SimpleFeature feature = polygonBuilder.buildFeature(null); polygonsFeatures.add(feature); @@ -223,35 +238,44 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit List<Coordinate> defaultLineCoordinates = new LinkedList<>(); boolean found = false; for (int indexPoint = 0; indexPoint < tripMapPoints.size(); indexPoint++) { - if (indexPoint > 1 && tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityObsWithSettingStart) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityObsWithHaulingStart)) { - - found = true; - Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - }; - - boolean setting = tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingEnd); - LineString lineString = geometryFactory.createLineString(coordinates); - lineBuilder.add(lineString); - lineBuilder.add(setting ? "setting" : "hauling"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - - defaultLineCoordinates.clear(); + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPointType pointType = tripMapPoint.getType(); + if (tripMapPoint.isValid() && indexPoint > 1) { + + TripMapPoint previousTripMapPoint = tripMapPoints.get(indexPoint - 1); + TripMapPointType previousTripMapPointType = previousTripMapPoint.getType(); + if (previousTripMapPoint.isValid()) { + if ( + pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithSettingStart) + || + pointType.equals(TripMapPointType.llActivityObsWithHaulingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithHaulingStart)) { + + found = true; + Coordinate[] coordinates = { + new Coordinate(previousTripMapPoint.getLongitude(), previousTripMapPoint.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + }; + + boolean setting = pointType.equals(TripMapPointType.llActivityObsWithSettingEnd); + LineString lineString = geometryFactory.createLineString(coordinates); + lineBuilder.add(lineString); + lineBuilder.add(setting ? "setting" : "hauling"); + SimpleFeature feature = lineBuilder.buildFeature(null); + linesFeatures.add(feature); + + defaultLineCoordinates.clear(); + } + } } - if (!(tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingEnd) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithHaulingStart))) { + if (tripMapPoint.isValid() && !(pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) + || pointType.equals(TripMapPointType.llActivityObsWithHaulingStart))) { - defaultLineCoordinates.add(new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude())); + defaultLineCoordinates.add(new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude())); } - if ((tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingStart) + if ((pointType.equals(TripMapPointType.llActivityObsWithSettingStart) || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { LineString lineString = geometryFactory.createLineString(defaultLineCoordinates.toArray(new Coordinate[0])); @@ -315,34 +339,40 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit List<Coordinate> defaultLineCoordinates = new LinkedList<>(); boolean found = false; for (int indexPoint = 0; indexPoint < tripMapPoints.size(); indexPoint++) { - if (indexPoint > 1 && tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityLogbookWithSettingStart) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart)) { - found = true; - Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - }; - - boolean setting = tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd); - LineString lineString = geometryFactory.createLineString(coordinates); - lineBuilder.add(lineString); - lineBuilder.add(setting ? "setting" : "hauling"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - - defaultLineCoordinates.clear(); + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPointType tripMapPointType = tripMapPoint.getType(); + if (tripMapPoint.isValid() && indexPoint > 1) { + TripMapPoint previousTripMapPoint = tripMapPoints.get(indexPoint - 1); + if (previousTripMapPoint.isValid()) { + TripMapPointType previousTripMapPointType = previousTripMapPoint.getType(); + if (tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd) + && previousTripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingStart) + || tripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingEnd) + && previousTripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingStart)) { + found = true; + Coordinate[] coordinates = { + new Coordinate(previousTripMapPoint.getLongitude(), previousTripMapPoint.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + }; + + boolean setting = tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd); + LineString lineString = geometryFactory.createLineString(coordinates); + lineBuilder.add(lineString); + lineBuilder.add(setting ? "setting" : "hauling"); + SimpleFeature feature = lineBuilder.buildFeature(null); + linesFeatures.add(feature); + + defaultLineCoordinates.clear(); + } + } } - - if (!(tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart))) { - - defaultLineCoordinates.add(new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude())); + if (tripMapPoint.isValid() && + !(tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd) || tripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingStart))) { + defaultLineCoordinates.add(new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude())); } - if ((tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingStart) + if ((tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingStart) || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { LineString lineString = geometryFactory.createLineString(defaultLineCoordinates.toArray(new Coordinate[0])); ===================================== client-datasource-editor-ps/src/main/i18n/getters/java.getter ===================================== @@ -171,6 +171,7 @@ observe.data.ps.observation.TargetLength.table.species observe.data.ps.observation.TargetLength.table.species.tip observe.data.ps.observation.TargetLength.table.totalWeight observe.data.ps.observation.TargetLength.table.totalWeight.tip +observe.map.observation.points.not.valid observe.menu.navigation.action.move.activity observe.menu.navigation.action.move.route observe.menu.navigation.action.move.trip ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/common/TripMapContentBuilder.java ===================================== @@ -51,6 +51,7 @@ import java.text.DateFormat; import java.util.LinkedList; import java.util.List; +import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -85,8 +86,7 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit @Override protected void addPoints(List<TripMapPoint> tripMapPoints) throws FactoryException { - addPoints(tripMapPoints, TRIP_OBS_POINTS_LAYER_NAME); -// addPoints(tripMapPoints, TRIP_LOGBOOK_POINTS_LAYER_NAME); + addPoints(tripMapPoints, TRIP_OBS_POINTS_LAYER_NAME, n("observe.map.observation.points.not.valid")); } @Override ===================================== dto/src/main/java/fr/ird/observe/dto/data/TripMapPoint.java ===================================== @@ -22,29 +22,33 @@ package fr.ird.observe.dto.data; * #L% */ -import java.io.Serializable; -import java.util.Date; - -public class TripMapPoint implements Serializable { - - public static final String PROPERTY_TIME = "time"; - - public static final String PROPERTY_LATITUDE = "latitude"; +import fr.ird.observe.dto.ObserveDto; - public static final String PROPERTY_LONGITUDE = "longitude"; - - public static final String PROPERTY_TYPE = "type"; - - private static final long serialVersionUID = 1L; +import java.util.Date; +import java.util.Objects; + +public class TripMapPoint implements ObserveDto { + + public static TripMapPoint of(TripMapPointType type, Date time, Float latitude, Float longitude) { + TripMapPoint result = new TripMapPoint(); + result.setType(Objects.requireNonNull(type)); + result.setTime(time); + result.setLatitude(latitude); + result.setLongitude(longitude); + result.setValid(time != null && latitude != null && longitude != null); + return result; + } protected Date time; - protected float latitude; + protected Float latitude; - protected float longitude; + protected Float longitude; protected TripMapPointType type; + protected boolean valid; + public Date getTime() { return time; } @@ -53,19 +57,19 @@ public class TripMapPoint implements Serializable { this.time = time; } - public float getLatitude() { + public Float getLatitude() { return latitude; } - public void setLatitude(float latitude) { + public void setLatitude(Float latitude) { this.latitude = latitude; } - public float getLongitude() { + public Float getLongitude() { return longitude; } - public void setLongitude(float longitude) { + public void setLongitude(Float longitude) { this.longitude = longitude; } @@ -76,4 +80,12 @@ public class TripMapPoint implements Serializable { public void setType(TripMapPointType type) { this.type = type; } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + this.valid = valid; + } } ===================================== dto/src/main/java/fr/ird/observe/spi/DtoModelClasses.java ===================================== @@ -28,6 +28,8 @@ import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.ll.common.HealthStatusDto; import fr.ird.observe.dto.referential.ll.observation.StomachFullnessDto; +import java.util.function.Predicate; + /** * Created by tchemit on 03/09/17. * @@ -35,6 +37,9 @@ import fr.ird.observe.dto.referential.ll.observation.StomachFullnessDto; */ public class DtoModelClasses { + public static final Predicate<String> IS_SEINE_ID = DtoModelClasses::isSeineId; + public static final Predicate<String> IS_LONGLINE_ID = DtoModelClasses::isLonglineId; + public static final ImmutableSet<Class<? extends ReferentialDto>> COMMON_REFERENTIAL_TYPES = ImmutableSet.of( fr.ird.observe.dto.referential.common.VesselSizeCategoryDto.class, fr.ird.observe.dto.referential.common.CountryDto.class, @@ -87,7 +92,7 @@ public class DtoModelClasses { fr.ird.observe.dto.referential.ps.observation.ReasonForDiscardDto.class, fr.ird.observe.dto.referential.ps.observation.SpeciesStatusDto.class, fr.ird.observe.dto.referential.ps.observation.ObservedSystemDto.class - ); + ); public static final ImmutableSet<Class<? extends ReferentialDto>> SEINE_REFERENTIAL_TYPES = ImmutableSet.<Class<? extends ReferentialDto>>builder() .addAll(SEINE_COMMON_REFERENTIAL_TYPES) @@ -141,7 +146,6 @@ public class DtoModelClasses { .addAll(SEINE_REFERENTIAL_TYPES) .addAll(LONGLINE_REFERENTIAL_TYPES) .build(); - private static final ImmutableSet<Class<? extends DataDto>> SEINE_ENTITY_DATA_TYPES = ImmutableSet.of( fr.ird.observe.dto.data.ps.observation.ActivityDto.class, fr.ird.observe.dto.data.ps.observation.FloatingObjectDto.class, ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -2324,6 +2324,8 @@ observe.init.local.db.error=Could not find local database, will load last backup observe.init.no.initial.dump.detected=Internal data source %1$s not detected. observe.init.no.local.db.detected=Local data source %1$s not detected. observe.init.storage.done=Init of Persistent Service done. +observe.map.logbook.points.not.valid=LogBook - Number of none displayed points\: %d +observe.map.observation.points.not.valid=Observation - Number of none displayed points\: %d observe.menu.actions=Actions observe.menu.configuration=Configuration observe.menu.configuration.tip=To configure application ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -2324,6 +2324,8 @@ observe.init.local.db.error=Imposible cargar la base local, se cargará el últi observe.init.no.initial.dump.detected=fuente de datos interna %1$s no detectada. observe.init.no.local.db.detected=Base local %1$s no detectada. observe.init.storage.done=Inicialización del servicio de persistencia terminado. +observe.map.logbook.points.not.valid=LogBook - Number of none displayed points\: %d \#TODO +observe.map.observation.points.not.valid=Observation - Number of none displayed points\: %d \#TODO observe.menu.actions=Acciones observe.menu.configuration=Configuración observe.menu.configuration.tip=Menú de configuración ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -2324,6 +2324,8 @@ observe.init.local.db.error=Impossible de charger la base locale, la dernière s observe.init.no.initial.dump.detected=Base embarquée %1$s non détectée. observe.init.no.local.db.detected=Base locale %1$s non détectée. observe.init.storage.done=Initialisation du service de persistance terminé. +observe.map.logbook.points.not.valid=Libre de bord - Nombre de points non affichés \: %d +observe.map.observation.points.not.valid=Observation - Nombre de points non affichés \: %d observe.menu.actions=Actions observe.menu.configuration=Configuration observe.menu.configuration.tip=Menu de configuration ===================================== persistence/src/main/java/fr/ird/observe/entities/Entities.java ===================================== @@ -22,10 +22,17 @@ package fr.ird.observe.entities; * #L% */ +import fr.ird.observe.dto.data.TripMapPoint; +import fr.ird.observe.dto.data.TripMapPointType; +import fr.ird.observe.entities.referential.common.Harbour; + +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.Arrays; import java.util.Collections; +import java.util.Date; import java.util.List; -import java.util.function.Predicate; +import java.util.Optional; /** * Created on 8/27/14. @@ -122,15 +129,28 @@ public class Entities { }; public static final List<ObserveEntityEnum> REFERENCE_ENTITIES_LIST = Collections.unmodifiableList(Arrays.asList(REFERENCE_ENTITIES)); - public static final Predicate<String> IS_SEINE_ID = Entities::isSeineId; - public static final Predicate<String> IS_LONGLINE_ID = Entities::isLonglineId; - public static boolean isSeineId(String id) { - return id.contains(".ps."); + public static Float getFloat(ResultSet resultSet, int columnIndex) throws SQLException { + float result = resultSet.getFloat(columnIndex); + return resultSet.wasNull() ? null : result; + } + + public static Optional<TripMapPoint> createHarbourPoint(Harbour harbour, Date date, TripMapPointType tripMapPointType) { + TripMapPoint result = null; + if (harbour != null) { + result = TripMapPoint.of(tripMapPointType, date, harbour.getLatitude(), harbour.getLongitude()); + } + return Optional.ofNullable(result); } - public static boolean isLonglineId(String id) { - return id.contains(".ll."); + public static TripMapPoint createPoint(TripMapPointType type, Date dateTime, ResultSet resultSet, int columnIndex) throws SQLException { + Float latitude = getFloat(resultSet, columnIndex); + Float longitude = getFloat(resultSet, columnIndex + 1); + return TripMapPoint.of(type, dateTime, latitude, longitude); } + public static TripMapPoint createPoint(TripMapPointType type, ResultSet resultSet, int dateColumnIndex) throws SQLException { + java.sql.Date date = resultSet.getDate(dateColumnIndex); + return createPoint(type, date, resultSet, dateColumnIndex + 1); + } } ===================================== persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java ===================================== @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableMap; import fr.ird.observe.dto.data.TripMapConfigDto; import fr.ird.observe.dto.data.TripMapPoint; import fr.ird.observe.dto.data.TripMapPointType; -import fr.ird.observe.entities.referential.common.Harbour; +import fr.ird.observe.entities.Entities; import org.nuiton.topia.persistence.support.TopiaSqlQuery; import org.nuiton.topia.persistence.support.TopiaSqlSupport; import org.nuiton.util.DateUtil; @@ -42,7 +42,6 @@ import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.stream.Collectors; public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { @@ -57,7 +56,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { LinkedHashSet<TripMapPoint> tripMapPoints = new LinkedHashSet<>(); // add departure harbour - createPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.llTripDepartureHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.llTripDepartureHarbour).map(tripMapPoints::add); if (addObservation) { // Add Activities Observation @@ -73,7 +72,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { } // add landing harbour - createPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.llTripLandingHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.llTripLandingHarbour).map(tripMapPoints::add); return tripMapPoints; } @@ -128,10 +127,10 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { return Collections.emptyList(); } return this. - <Trip>stream("From TripImpl Where vessel.id = :vesselId " + - "And (( :startDate <= endDate And :endDate >= endDate ) " + - " Or ( :endDate <= startDate And :endDate >= startDate )) " + - "Order By startDate, endDate", ImmutableMap.of( + <Trip>stream("From fr.ird.observe.entities.data.ll.common.TripImpl Where vessel.id = :vesselId " + + "And (( :startDate <= endDate And :endDate >= endDate ) " + + " Or ( :endDate <= startDate And :endDate >= startDate )) " + + "Order By startDate, endDate", ImmutableMap.of( "vesselId", vesselId, "startDate", startDate, "endDate", endDate)) @@ -146,6 +145,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { " a.latitude," + " a.longitude," + " a.vesselActivity," + + " s.topiaId," + " s.settingStartTimestamp," + " s.settingStartLatitude," + " s.settingStartLongitude," + @@ -184,26 +184,32 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { if (resultSet.getString(5) == null) { // simple activity - Optional<TripMapPoint> activity = createPoint(resultSet, 1, TripMapPointType.llActivityObs); - activity.ifPresent(result::add); + TripMapPoint activity = Entities.createPoint(TripMapPointType.llActivityObs, resultSet, 1); + result.add(activity); } // settingStart - Optional<TripMapPoint> settingStart = createPoint(resultSet, 5, TripMapPointType.llActivityObsWithSettingStart); - settingStart.ifPresent(result::add); + TripMapPoint settingStart = Entities.createPoint(TripMapPointType.llActivityObsWithSettingStart, resultSet, 6); + result.add(settingStart); // settingEnd - Optional<TripMapPoint> settingEnd = createPoint(resultSet, 8, TripMapPointType.llActivityObsWithSettingEnd); - settingEnd.ifPresent(result::add); + TripMapPoint settingEnd = Entities.createPoint(TripMapPointType.llActivityObsWithSettingEnd, resultSet, 9); + result.add(settingEnd); // haulingStart - Optional<TripMapPoint> haulingStart = createPoint(resultSet, 11, TripMapPointType.llActivityObsWithHaulingStart); - haulingStart.ifPresent(result::add); + TripMapPoint haulingStart = Entities.createPoint(TripMapPointType.llActivityObsWithHaulingStart, resultSet, 12); + result.add(haulingStart); // haulingEnd - Optional<TripMapPoint> haulingEnd = createPoint(resultSet, 14, TripMapPointType.llActivityObsWithHaulingEnd); - haulingEnd.ifPresent(result::add); - + TripMapPoint haulingEnd = Entities.createPoint(TripMapPointType.llActivityObsWithHaulingEnd, resultSet, 15); + result.add(haulingEnd); + + if (!(settingStart.isValid() && settingEnd.isValid() && haulingStart.isValid() && haulingEnd.isValid())) { + settingStart.setValid(false); + settingEnd.setValid(false); + haulingStart.setValid(false); + haulingEnd.setValid(false); + } return result; } } @@ -215,6 +221,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { " a.latitude," + " a.longitude," + " a.vesselActivity," + + " s.topiaId," + " s.settingStartTimestamp," + " s.settingStartLatitude," + " s.settingStartLongitude," + @@ -253,25 +260,32 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { if (resultSet.getString(5) == null) { // simple activity - Optional<TripMapPoint> activity = createPoint(resultSet, 1, TripMapPointType.llActivityLogbook); - activity.ifPresent(result::add); + TripMapPoint activity = Entities.createPoint(TripMapPointType.llActivityLogbook, resultSet, 1); + result.add(activity); } // settingStart - Optional<TripMapPoint> settingStart = createPoint(resultSet, 5, TripMapPointType.llActivityLogbookWithSettingStart); - settingStart.ifPresent(result::add); + TripMapPoint settingStart = Entities.createPoint(TripMapPointType.llActivityLogbookWithSettingStart, resultSet, 6); + result.add(settingStart); // settingEnd - Optional<TripMapPoint> settingEnd = createPoint(resultSet, 8, TripMapPointType.llActivityLogbookWithSettingEnd); - settingEnd.ifPresent(result::add); + TripMapPoint settingEnd = Entities.createPoint(TripMapPointType.llActivityLogbookWithSettingEnd, resultSet, 9); + result.add(settingEnd); // haulingStart - Optional<TripMapPoint> haulingStart = createPoint(resultSet, 11, TripMapPointType.llActivityLogbookWithHaulingStart); - haulingStart.ifPresent(result::add); + TripMapPoint haulingStart = Entities.createPoint(TripMapPointType.llActivityLogbookWithHaulingStart, resultSet, 12); + result.add(haulingStart); // haulingEnd - Optional<TripMapPoint> haulingEnd = createPoint(resultSet, 14, TripMapPointType.llActivityLogbookWithHaulingEnd); - haulingEnd.ifPresent(result::add); + TripMapPoint haulingEnd = Entities.createPoint(TripMapPointType.llActivityLogbookWithHaulingEnd, resultSet, 15); + result.add(haulingEnd); + + if (!(settingStart.isValid() && settingEnd.isValid() && haulingStart.isValid() && haulingEnd.isValid())) { + settingStart.setValid(false); + settingEnd.setValid(false); + haulingStart.setValid(false); + haulingEnd.setValid(false); + } return result; } @@ -315,29 +329,4 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { } - private static Optional<TripMapPoint> createPoint(Harbour harbour, Date date, TripMapPointType tripMapPointType) { - TripMapPoint result = null; - if (harbour != null && harbour.getLatitude() != null && harbour.getLongitude() != null) { - result = new TripMapPoint(); - result.setTime(date); - result.setLatitude(harbour.getLatitude()); - result.setLongitude(harbour.getLongitude()); - result.setType(tripMapPointType); - } - return Optional.ofNullable(result); - } - - private static Optional<TripMapPoint> createPoint(ResultSet resultSet, int dateColumnIndex, TripMapPointType tripMapPointType) throws SQLException { - - TripMapPoint result = null; - if (resultSet.getString(dateColumnIndex) != null) { - result = new TripMapPoint(); - result.setTime(resultSet.getDate(dateColumnIndex)); - result.setLatitude(resultSet.getFloat(dateColumnIndex + 1)); - result.setLongitude(resultSet.getFloat(dateColumnIndex + 2)); - result.setType(tripMapPointType); - } - return Optional.ofNullable(result); - } - } ===================================== persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java ===================================== @@ -26,7 +26,7 @@ import fr.ird.observe.dto.ProtectedIds; import fr.ird.observe.dto.data.TripMapConfigDto; import fr.ird.observe.dto.data.TripMapPoint; import fr.ird.observe.dto.data.TripMapPointType; -import fr.ird.observe.entities.referential.common.Harbour; +import fr.ird.observe.entities.Entities; import org.nuiton.topia.persistence.support.TopiaSqlQuery; import org.nuiton.topia.persistence.support.TopiaSqlSupport; import org.nuiton.util.DateUtil; @@ -40,7 +40,6 @@ import java.util.Date; import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.stream.Collectors; /** @@ -58,14 +57,14 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { LinkedHashSet<TripMapPoint> tripMapPoints = new LinkedHashSet<>(); // add departure harbour - createPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.psTripDepartureHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.psTripDepartureHarbour).map(tripMapPoints::add); // Add Activities TripMapActivityPointQuery tripMapActivityPointQuery = new TripMapActivityPointQuery(tripId); tripMapPoints.addAll(topiaSqlSupport.findMultipleResult(tripMapActivityPointQuery)); // add landing harbour - createPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.psTripLandingHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.psTripLandingHarbour).map(tripMapPoints::add); return tripMapPoints; } @@ -75,7 +74,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { return Collections.emptyList(); } return this. - <Trip>stream("From TripImpl Where vessel.id = :vesselId " + + <Trip>stream("From fr.ird.observe.entities.data.ps.common.TripImpl Where vessel.id = :vesselId " + "And (( :startDate <= endDate And :endDate >= endDate ) " + " Or ( :endDate <= startDate And :endDate >= startDate )) " + "Order By startDate, endDate", ImmutableMap.of( @@ -119,32 +118,32 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { @Override public TripMapPoint prepareResult(ResultSet resultSet) throws SQLException { - TripMapPoint point = new TripMapPoint(); - Date time = DateUtil.getDateAndTime(resultSet.getDate(1), resultSet.getTime(2), true, false); - point.setTime(time); - point.setLatitude(resultSet.getFloat(3)); - point.setLongitude(resultSet.getFloat(4)); + TripMapPointType type; + if (ProtectedIds.PS_COMMON_ACTIVITY_HARBOUR_ID.equals(resultSet.getString(5))) { - point.setType(TripMapPointType.psActivityObsInHarbour); + type = TripMapPointType.psActivityObsInHarbour; } else if (resultSet.getString(6) == null) { - point.setType(TripMapPointType.psActivityObs); + type = TripMapPointType.psActivityObs; } else { String schoolType = resultSet.getString(6); switch (schoolType) { case ProtectedIds.PS_COMMON_SCHOOL_TYPE_FREE_ID: - point.setType(TripMapPointType.psActivityObsWithFreeSchoolType); + type = TripMapPointType.psActivityObsWithFreeSchoolType; break; case ProtectedIds.PS_COMMON_SCHOOL_TYPE_OBJECT_ID: - point.setType(TripMapPointType.psActivityObsWithObjectSchoolType); + type = TripMapPointType.psActivityObsWithObjectSchoolType; break; default: - point.setType(TripMapPointType.psActivityObs); + type = TripMapPointType.psActivityObs; } } - return point; + + Date time = DateUtil.getDateAndTime(resultSet.getDate(1), resultSet.getTime(2), true, false); + return Entities.createPoint(type, time, resultSet, 3); } } + public boolean updateEndDate(Trip trip) { boolean wasUpdated = false; @@ -230,16 +229,4 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { } - private static Optional<TripMapPoint> createPoint(Harbour harbour, Date date, TripMapPointType tripMapPointType) { - TripMapPoint result = null; - if (harbour != null && harbour.getLatitude() != null && harbour.getLongitude() != null) { - result = new TripMapPoint(); - result.setTime(date); - result.setLatitude(harbour.getLatitude()); - result.setLongitude(harbour.getLongitude()); - result.setType(tripMapPointType); - } - return Optional.ofNullable(result); - } - } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocal.java ===================================== @@ -31,7 +31,6 @@ import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.referential.common.SpeciesDto; import fr.ird.observe.dto.referential.ps.observation.ObservedSystemReference; -import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.data.TripAware; import fr.ird.observe.entities.referential.ReferentialEntity; import fr.ird.observe.entities.referential.common.Species; @@ -47,6 +46,7 @@ import fr.ird.observe.services.service.actions.validate.ValidateService; import fr.ird.observe.services.service.actions.validate.ValidationRequest; import fr.ird.observe.services.service.referential.ReferentialService; import fr.ird.observe.spi.DbModelHelper; +import fr.ird.observe.spi.DtoModelClasses; import fr.ird.observe.spi.type.TypeTranslators; import fr.ird.observe.validation.ServiceValidationContext; import fr.ird.observe.validation.ValidatorsMap; @@ -156,7 +156,7 @@ public class ValidateServiceLocal extends ObserveServiceLocal implements Validat private void validateData(String dataId, ValidationMessageDetector detector, ServiceValidationContext validationContext, Set<SpeciesDto> species) { TripAware<?, ?> trip; - if (Entities.isSeineId(dataId)) { + if (DtoModelClasses.isSeineId(dataId)) { trip = fr.ird.observe.entities.data.ps.common.Trip.loadEntity(getTopiaPersistenceContext(), dataId); } else { trip = fr.ird.observe.entities.data.ll.common.Trip.loadEntity(getTopiaPersistenceContext(), dataId); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java ===================================== @@ -34,7 +34,6 @@ import fr.ird.observe.dto.referential.ReferenceStatus; 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.Entities; import fr.ird.observe.entities.ObserveEntityEnum; import fr.ird.observe.entities.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.data.ll.common.Trip; @@ -247,11 +246,11 @@ public class ReferentialServiceLocal extends ObserveServiceLocal implements Refe ReferentialShellBuilder referentialShellBuilder = ReferentialShellBuilder.builder(request.getCentralSourceReferential()); for (String tripId : request.getTripIds()) { - if (Entities.isLonglineId(tripId)) { + if (DtoModelClasses.isLonglineId(tripId)) { Trip trip = fr.ird.observe.entities.data.ll.common.Trip.loadEntity(getTopiaPersistenceContext(), tripId); log.info("Compute missing referential for trip: " + tripId); referentialShellBuilder.scan(trip); - } else if (Entities.isSeineId(tripId)) { + } else if (DtoModelClasses.isSeineId(tripId)) { fr.ird.observe.entities.data.ps.common.Trip trip = fr.ird.observe.entities.data.ps.common.Trip.loadEntity(getTopiaPersistenceContext(), tripId); log.info("Compute missing referential for trip: " + tripId); referentialShellBuilder.scan(trip); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java ===================================== @@ -25,7 +25,6 @@ package fr.ird.observe.services.local.service.sql; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ListMultimap; import fr.ird.observe.dto.reference.ReferentialDtoReference; -import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.ObserveEntityEnum; import fr.ird.observe.entities.ObserveTopiaApplicationContext; import fr.ird.observe.services.local.service.ObserveServiceLocal; @@ -33,6 +32,7 @@ import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.DeleteSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.spi.DbModelHelper; +import fr.ird.observe.spi.DtoModelClasses; import org.apache.commons.collections4.CollectionUtils; import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; import org.nuiton.topia.persistence.script.TopiaBlobsContainer; @@ -46,8 +46,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import static fr.ird.observe.entities.Entities.IS_LONGLINE_ID; -import static fr.ird.observe.entities.Entities.IS_SEINE_ID; +import static fr.ird.observe.spi.DtoModelClasses.IS_LONGLINE_ID; +import static fr.ird.observe.spi.DtoModelClasses.IS_SEINE_ID; import static fr.ird.observe.entities.Entities.REFERENCE_ENTITIES_LIST; /** @@ -174,14 +174,14 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement } else { { - Set<String> tripIds1 = tripIds.stream().filter(Entities.IS_SEINE_ID).collect(Collectors.toSet()); + Set<String> tripIds1 = tripIds.stream().filter(DtoModelClasses.IS_SEINE_ID).collect(Collectors.toSet()); if (!tripIds1.isEmpty()) { builder.addDeleteTablesRequest(topiaApplicationContext.getTripSeineTables(), TopiaSqlTableSelectArgument.of(tripIds1)); } } { - Set<String> tripIds1 = tripIds.stream().filter(Entities.IS_LONGLINE_ID).collect(Collectors.toSet()); + Set<String> tripIds1 = tripIds.stream().filter(DtoModelClasses.IS_LONGLINE_ID).collect(Collectors.toSet()); if (!tripIds1.isEmpty()) { builder.addDeleteTablesRequest(topiaApplicationContext.getTripLonglineTables(), TopiaSqlTableSelectArgument.of(tripIds1)); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/2ed828ccb130e70a93159e57… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/2ed828ccb130e70a93159e57… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] 2 commits: Élimination des points non effectifs dans la carte - Cloes #1560
by Tony CHEMIT 30 Jun '20

30 Jun '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: a670d27c by Tony Chemit at 2020-06-30T12:58:27+02:00 Élimination des points non effectifs dans la carte - Cloes #1560 - - - - - 2ed828cc by Tony Chemit at 2020-06-30T12:59:02+02:00 Carte - Cloes #1517 - - - - - 20 changed files: - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/ObserveMapPaneLegendItem.java - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapContentBuilder.java - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUIHandler.java - client-datasource-editor-common/src/main/map/ll-style.xml - client-datasource-editor-common/src/main/map/ps-style.xml - client-datasource-editor-ll/src/main/i18n/getters/java.getter - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/common/TripMapContentBuilder.java - client-datasource-editor-ps/src/main/i18n/getters/java.getter - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/common/TripMapContentBuilder.java - dto/src/main/java/fr/ird/observe/dto/data/TripMapPoint.java - dto/src/main/java/fr/ird/observe/spi/DtoModelClasses.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - persistence/src/main/java/fr/ird/observe/entities/Entities.java - persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java - persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java - services-local/src/main/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java Changes: ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/ObserveMapPaneLegendItem.java ===================================== @@ -49,13 +49,13 @@ public class ObserveMapPaneLegendItem { public static Coordinate[] lineCoordinates() { Coordinate[] coordinates = new Coordinate[2]; - coordinates[0] = new Coordinate(LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2); - coordinates[1] = new Coordinate(LEGEND_SYMBOL_WIDTH - LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2); + coordinates[0] = new Coordinate(LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2.); + coordinates[1] = new Coordinate(LEGEND_SYMBOL_WIDTH - LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2.); return coordinates; } public static Coordinate pointCoordinates() { - return new Coordinate(LEGEND_SYMBOL_WIDTH / 2, LEGEND_ITEM_HEIGHT / 2); + return new Coordinate(LEGEND_SYMBOL_WIDTH / 2., LEGEND_ITEM_HEIGHT / 2.); } public SimpleFeature getSimpleFeature() { ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapContentBuilder.java ===================================== @@ -62,11 +62,14 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.ServiceLoader; import java.util.Set; +import static io.ultreia.java4all.i18n.I18n.t; + /** * @author Tony Chemit - dev(a)tchemit.fr */ @@ -76,12 +79,14 @@ public abstract class TripMapContentBuilder { protected static final String TRIP_LOGBOOK_POINTS_LAYER_NAME = "Trip Logbook points"; protected static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM"); - protected MapContent mapContent; + private static ImmutableSet<TripMapContentBuilder> PROVIDERS; + protected final List<ObserveMapPaneLegendItem> legendItems; + protected final List<TripMapPoint> notValidPoints = new LinkedList<>(); protected final Set<TripMapPointType> acceptedTripPointTypes; + protected MapContent mapContent; protected StyledLayerDescriptor styledLayerDescriptor; - private static ImmutableSet<TripMapContentBuilder> PROVIDERS; public abstract boolean accept(TripMapDto tripMapDto); @@ -121,7 +126,8 @@ public abstract class TripMapContentBuilder { private void reset() { legendItems.clear(); - mapContent=new MapContent(); + notValidPoints.clear(); + mapContent = new MapContent(); } protected TripMapContentBuilder(Set<TripMapPointType> acceptedTripPointTypes) { @@ -152,7 +158,7 @@ public abstract class TripMapContentBuilder { mapContent.addLayer(layer); } - public void addPoints(List<TripMapPoint> tripMapPoints, String layerName) throws FactoryException { + public void addPoints(List<TripMapPoint> tripMapPoints, String layerName, String notValidPointsLabel) throws FactoryException { GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); @@ -171,8 +177,11 @@ public abstract class TripMapContentBuilder { Style stylePoints = findStyle(styledLayerDescriptor, layerName, null); Set<TripMapPointType> pointTypeInLegend = new HashSet<>(); - for (TripMapPoint tripMapPoint : tripMapPoints) { + if (!tripMapPoint.isValid()) { + notValidPoints.add(tripMapPoint); + continue; + } Coordinate coordinate = new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()); TripMapPointType type = tripMapPoint.getType(); @@ -205,6 +214,19 @@ public abstract class TripMapContentBuilder { mapContent.addLayer(pointsLayer); } + if (!notValidPoints.isEmpty()) { + Point point = geometryFactory.createPoint(ObserveMapPaneLegendItem.pointCoordinates()); + pointBuilder.add(point); + pointBuilder.add(""); + pointBuilder.add("notValidPoint"); + + ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem( + pointBuilder.buildFeature(null), + stylePoints, + t(notValidPointsLabel, notValidPoints.size())); + legendItems.add(legendPoint); + } + } ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUIHandler.java ===================================== @@ -94,7 +94,9 @@ public class TripMapUIHandler implements UIHandler<TripMapUI> { // set zoom tripArea = new ReferencedEnvelope(); for (TripMapPoint point : tripMapPoints) { - tripArea.expandToInclude(new DirectPosition2D(point.getLongitude(), point.getLatitude())); + if (point.isValid()) { + tripArea.expandToInclude(new DirectPosition2D(point.getLongitude(), point.getLatitude())); + } } tripArea.expandBy(1.1); ===================================== client-datasource-editor-common/src/main/map/ll-style.xml ===================================== @@ -118,7 +118,7 @@ <LineSymbolizer> <Stroke> <CssParameter name="stroke">#00FF00</CssParameter> - <CssParameter name="stroke-width">1</CssParameter> + <CssParameter name="stroke-width">2</CssParameter> <CssParameter name="stroke-dasharray">5 7</CssParameter> </Stroke> </LineSymbolizer> @@ -404,6 +404,33 @@ </TextSymbolizer> </Rule> </FeatureTypeStyle> + <FeatureTypeStyle> + <Rule> + <Name>Not valid observation point</Name> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>notValidPoint</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>ttf://Serif#U+0021</WellKnownName> + <Fill> + <CssParameter name="fill">#00FF00</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </Mark> + <Size>12</Size> + </Graphic> + </PointSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> </NamedLayer> @@ -596,6 +623,33 @@ </Rule> </FeatureTypeStyle> + <FeatureTypeStyle> + <Rule> + <Name>Not valid logbook point</Name> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>notValidPoint</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>ttf://Serif#U+0021</WellKnownName> + <Fill> + <CssParameter name="fill">#FF0000</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </Mark> + <Size>12</Size> + </Graphic> + </PointSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> </NamedLayer> ===================================== client-datasource-editor-common/src/main/map/ps-style.xml ===================================== @@ -196,6 +196,33 @@ </Rule> </FeatureTypeStyle> + <FeatureTypeStyle> + <Rule> + <Name>Not valid point</Name> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>notValidPoint</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>ttf://Serif#U+0021</WellKnownName> + <Fill> + <CssParameter name="fill">#00FF00</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </Mark> + <Size>12</Size> + </Graphic> + </PointSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> </NamedLayer> ===================================== client-datasource-editor-ll/src/main/i18n/getters/java.getter ===================================== @@ -317,6 +317,8 @@ observe.data.ll.observation.WeightMeasure.table.weight.tip observe.data.ll.observation.WeightMeasure.table.weightMeasureType observe.data.ll.observation.WeightMeasure.table.weightMeasureType.tip observe.data.ps.common.GearUseFeatures.delete +observe.map.logbook.points.not.valid +observe.map.observation.points.not.valid observe.menu.navigation.action.move.activityLongline observe.menu.navigation.action.move.sample observe.menu.navigation.action.move.sample.choice ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/common/TripMapContentBuilder.java ===================================== @@ -51,6 +51,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; +import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -106,8 +107,8 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit @Override protected void addPoints(List<TripMapPoint> tripMapPoints) throws FactoryException { - addPoints(tripMapPoints.stream().filter(f->f.getType().isTrip() || f.getType().isObs()).collect(Collectors.toList()), TRIP_OBS_POINTS_LAYER_NAME); - addPoints(tripMapPoints.stream().filter(f->f.getType().isTrip() || f.getType().isLogbook()).collect(Collectors.toList()), TRIP_LOGBOOK_POINTS_LAYER_NAME); + addPoints(tripMapPoints.stream().filter(f -> f.getType().isTrip() || f.getType().isObs()).collect(Collectors.toList()), TRIP_OBS_POINTS_LAYER_NAME, n("observe.map.observation.points.not.valid")); + addPoints(tripMapPoints.stream().filter(f -> f.getType().isTrip() || f.getType().isLogbook()).collect(Collectors.toList()), TRIP_LOGBOOK_POINTS_LAYER_NAME, n("observe.map.logbook.points.not.valid")); } private void addLonglineObsFishingZone(List<TripMapPoint> tripMapPoints) throws FactoryException { @@ -126,24 +127,31 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit DefaultFeatureCollection polygonsFeatures = new DefaultFeatureCollection(); for (int indexPoint = 3; indexPoint < tripMapPoints.size(); indexPoint++) { - if (tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityObsWithHaulingStart) - && tripMapPoints.get(indexPoint - 2).getType().equals(TripMapPointType.llActivityObsWithSettingEnd) - && tripMapPoints.get(indexPoint - 3).getType().equals(TripMapPointType.llActivityObsWithSettingStart)) { + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPoint tripMapPoint1 = tripMapPoints.get(indexPoint - 1); + TripMapPoint tripMapPoint2 = tripMapPoints.get(indexPoint - 2); + TripMapPoint tripMapPoint3 = tripMapPoints.get(indexPoint - 3); + if (!(tripMapPoint.isValid()&& tripMapPoint1.isValid() && tripMapPoint2.isValid() && tripMapPoint3.isValid())) { + continue; + } + if (tripMapPoint.getType().equals(TripMapPointType.llActivityObsWithHaulingEnd) + && tripMapPoint1.getType().equals(TripMapPointType.llActivityObsWithHaulingStart) + && tripMapPoint2.getType().equals(TripMapPointType.llActivityObsWithSettingEnd) + && tripMapPoint3.getType().equals(TripMapPointType.llActivityObsWithSettingStart)) { Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 2).getLongitude(), tripMapPoints.get(indexPoint - 2).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()) + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()), + new Coordinate(tripMapPoint2.getLongitude(), tripMapPoint2.getLatitude()), + new Coordinate(tripMapPoint1.getLongitude(), tripMapPoint1.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()) }; Polygon polygon = geometryFactory.createPolygon(coordinates); //polygon = (Polygon) polygon.convexHull(); // permet de transformer un poliqgone croisé en polygon convex polygonBuilder.add(polygon); - polygonBuilder.add(DATE_FORMAT.format(tripMapPoints.get(indexPoint - 3).getTime())); + polygonBuilder.add(DATE_FORMAT.format(tripMapPoint3.getTime())); polygonBuilder.add("longlineFishingZone"); SimpleFeature feature = polygonBuilder.buildFeature(null); polygonsFeatures.add(feature); @@ -174,24 +182,31 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit DefaultFeatureCollection polygonsFeatures = new DefaultFeatureCollection(); for (int indexPoint = 3; indexPoint < tripMapPoints.size(); indexPoint++) { - if (tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart) - && tripMapPoints.get(indexPoint - 2).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) - && tripMapPoints.get(indexPoint - 3).getType().equals(TripMapPointType.llActivityLogbookWithSettingStart)) { + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPoint tripMapPoint1 = tripMapPoints.get(indexPoint - 1); + TripMapPoint tripMapPoint2 = tripMapPoints.get(indexPoint - 2); + TripMapPoint tripMapPoint3 = tripMapPoints.get(indexPoint - 3); + if (!(tripMapPoint.isValid()&& tripMapPoint1.isValid() && tripMapPoint2.isValid() && tripMapPoint3.isValid())) { + continue; + } + if (tripMapPoint.getType().equals(TripMapPointType.llActivityLogbookWithHaulingEnd) + && tripMapPoint1.getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart) + && tripMapPoint2.getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) + && tripMapPoint3.getType().equals(TripMapPointType.llActivityLogbookWithSettingStart)) { Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 2).getLongitude(), tripMapPoints.get(indexPoint - 2).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint - 3).getLongitude(), tripMapPoints.get(indexPoint - 3).getLatitude()) + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()), + new Coordinate(tripMapPoint2.getLongitude(), tripMapPoint2.getLatitude()), + new Coordinate(tripMapPoint1.getLongitude(), tripMapPoint1.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()) }; Polygon polygon = geometryFactory.createPolygon(coordinates); //polygon = (Polygon) polygon.convexHull(); // permet de transformer un poliqgone croisé en polygon convex polygonBuilder.add(polygon); - polygonBuilder.add(DATE_FORMAT.format(tripMapPoints.get(indexPoint - 3).getTime())); + polygonBuilder.add(DATE_FORMAT.format(tripMapPoint3.getTime())); polygonBuilder.add("longlineFishingZone"); SimpleFeature feature = polygonBuilder.buildFeature(null); polygonsFeatures.add(feature); @@ -223,35 +238,44 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit List<Coordinate> defaultLineCoordinates = new LinkedList<>(); boolean found = false; for (int indexPoint = 0; indexPoint < tripMapPoints.size(); indexPoint++) { - if (indexPoint > 1 && tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityObsWithSettingStart) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityObsWithHaulingStart)) { - - found = true; - Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - }; - - boolean setting = tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingEnd); - LineString lineString = geometryFactory.createLineString(coordinates); - lineBuilder.add(lineString); - lineBuilder.add(setting ? "setting" : "hauling"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - - defaultLineCoordinates.clear(); + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPointType pointType = tripMapPoint.getType(); + if (tripMapPoint.isValid() && indexPoint > 1) { + + TripMapPoint previousTripMapPoint = tripMapPoints.get(indexPoint - 1); + TripMapPointType previousTripMapPointType = previousTripMapPoint.getType(); + if (previousTripMapPoint.isValid()) { + if ( + pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithSettingStart) + || + pointType.equals(TripMapPointType.llActivityObsWithHaulingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithHaulingStart)) { + + found = true; + Coordinate[] coordinates = { + new Coordinate(previousTripMapPoint.getLongitude(), previousTripMapPoint.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + }; + + boolean setting = pointType.equals(TripMapPointType.llActivityObsWithSettingEnd); + LineString lineString = geometryFactory.createLineString(coordinates); + lineBuilder.add(lineString); + lineBuilder.add(setting ? "setting" : "hauling"); + SimpleFeature feature = lineBuilder.buildFeature(null); + linesFeatures.add(feature); + + defaultLineCoordinates.clear(); + } + } } - if (!(tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingEnd) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithHaulingStart))) { + if (tripMapPoint.isValid() && !(pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) + || pointType.equals(TripMapPointType.llActivityObsWithHaulingStart))) { - defaultLineCoordinates.add(new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude())); + defaultLineCoordinates.add(new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude())); } - if ((tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityObsWithSettingStart) + if ((pointType.equals(TripMapPointType.llActivityObsWithSettingStart) || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { LineString lineString = geometryFactory.createLineString(defaultLineCoordinates.toArray(new Coordinate[0])); @@ -315,34 +339,40 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit List<Coordinate> defaultLineCoordinates = new LinkedList<>(); boolean found = false; for (int indexPoint = 0; indexPoint < tripMapPoints.size(); indexPoint++) { - if (indexPoint > 1 && tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityLogbookWithSettingStart) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithHaulingEnd) - && tripMapPoints.get(indexPoint - 1).getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart)) { - found = true; - Coordinate[] coordinates = { - new Coordinate(tripMapPoints.get(indexPoint - 1).getLongitude(), tripMapPoints.get(indexPoint - 1).getLatitude()), - new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude()), - }; - - boolean setting = tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd); - LineString lineString = geometryFactory.createLineString(coordinates); - lineBuilder.add(lineString); - lineBuilder.add(setting ? "setting" : "hauling"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - - defaultLineCoordinates.clear(); + TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); + TripMapPointType tripMapPointType = tripMapPoint.getType(); + if (tripMapPoint.isValid() && indexPoint > 1) { + TripMapPoint previousTripMapPoint = tripMapPoints.get(indexPoint - 1); + if (previousTripMapPoint.isValid()) { + TripMapPointType previousTripMapPointType = previousTripMapPoint.getType(); + if (tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd) + && previousTripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingStart) + || tripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingEnd) + && previousTripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingStart)) { + found = true; + Coordinate[] coordinates = { + new Coordinate(previousTripMapPoint.getLongitude(), previousTripMapPoint.getLatitude()), + new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), + }; + + boolean setting = tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd); + LineString lineString = geometryFactory.createLineString(coordinates); + lineBuilder.add(lineString); + lineBuilder.add(setting ? "setting" : "hauling"); + SimpleFeature feature = lineBuilder.buildFeature(null); + linesFeatures.add(feature); + + defaultLineCoordinates.clear(); + } + } } - - if (!(tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) - || tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart))) { - - defaultLineCoordinates.add(new Coordinate(tripMapPoints.get(indexPoint).getLongitude(), tripMapPoints.get(indexPoint).getLatitude())); + if (tripMapPoint.isValid() && + !(tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd) || tripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingStart))) { + defaultLineCoordinates.add(new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude())); } - if ((tripMapPoints.get(indexPoint).getType().equals(TripMapPointType.llActivityLogbookWithSettingStart) + if ((tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingStart) || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { LineString lineString = geometryFactory.createLineString(defaultLineCoordinates.toArray(new Coordinate[0])); ===================================== client-datasource-editor-ps/src/main/i18n/getters/java.getter ===================================== @@ -171,6 +171,7 @@ observe.data.ps.observation.TargetLength.table.species observe.data.ps.observation.TargetLength.table.species.tip observe.data.ps.observation.TargetLength.table.totalWeight observe.data.ps.observation.TargetLength.table.totalWeight.tip +observe.map.observation.points.not.valid observe.menu.navigation.action.move.activity observe.menu.navigation.action.move.route observe.menu.navigation.action.move.trip ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/common/TripMapContentBuilder.java ===================================== @@ -51,6 +51,7 @@ import java.text.DateFormat; import java.util.LinkedList; import java.util.List; +import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -85,8 +86,7 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit @Override protected void addPoints(List<TripMapPoint> tripMapPoints) throws FactoryException { - addPoints(tripMapPoints, TRIP_OBS_POINTS_LAYER_NAME); -// addPoints(tripMapPoints, TRIP_LOGBOOK_POINTS_LAYER_NAME); + addPoints(tripMapPoints, TRIP_OBS_POINTS_LAYER_NAME, n("observe.map.observation.points.not.valid")); } @Override ===================================== dto/src/main/java/fr/ird/observe/dto/data/TripMapPoint.java ===================================== @@ -22,29 +22,33 @@ package fr.ird.observe.dto.data; * #L% */ -import java.io.Serializable; -import java.util.Date; - -public class TripMapPoint implements Serializable { - - public static final String PROPERTY_TIME = "time"; - - public static final String PROPERTY_LATITUDE = "latitude"; +import fr.ird.observe.dto.ObserveDto; - public static final String PROPERTY_LONGITUDE = "longitude"; - - public static final String PROPERTY_TYPE = "type"; - - private static final long serialVersionUID = 1L; +import java.util.Date; +import java.util.Objects; + +public class TripMapPoint implements ObserveDto { + + public static TripMapPoint of(TripMapPointType type, Date time, Float latitude, Float longitude) { + TripMapPoint result = new TripMapPoint(); + result.setType(Objects.requireNonNull(type)); + result.setTime(time); + result.setLatitude(latitude); + result.setLongitude(longitude); + result.setValid(time != null && latitude != null && longitude != null); + return result; + } protected Date time; - protected float latitude; + protected Float latitude; - protected float longitude; + protected Float longitude; protected TripMapPointType type; + protected boolean valid; + public Date getTime() { return time; } @@ -53,19 +57,19 @@ public class TripMapPoint implements Serializable { this.time = time; } - public float getLatitude() { + public Float getLatitude() { return latitude; } - public void setLatitude(float latitude) { + public void setLatitude(Float latitude) { this.latitude = latitude; } - public float getLongitude() { + public Float getLongitude() { return longitude; } - public void setLongitude(float longitude) { + public void setLongitude(Float longitude) { this.longitude = longitude; } @@ -76,4 +80,12 @@ public class TripMapPoint implements Serializable { public void setType(TripMapPointType type) { this.type = type; } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + this.valid = valid; + } } ===================================== dto/src/main/java/fr/ird/observe/spi/DtoModelClasses.java ===================================== @@ -28,6 +28,8 @@ import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.ll.common.HealthStatusDto; import fr.ird.observe.dto.referential.ll.observation.StomachFullnessDto; +import java.util.function.Predicate; + /** * Created by tchemit on 03/09/17. * @@ -35,6 +37,9 @@ import fr.ird.observe.dto.referential.ll.observation.StomachFullnessDto; */ public class DtoModelClasses { + public static final Predicate<String> IS_SEINE_ID = DtoModelClasses::isSeineId; + public static final Predicate<String> IS_LONGLINE_ID = DtoModelClasses::isLonglineId; + public static final ImmutableSet<Class<? extends ReferentialDto>> COMMON_REFERENTIAL_TYPES = ImmutableSet.of( fr.ird.observe.dto.referential.common.VesselSizeCategoryDto.class, fr.ird.observe.dto.referential.common.CountryDto.class, @@ -87,7 +92,7 @@ public class DtoModelClasses { fr.ird.observe.dto.referential.ps.observation.ReasonForDiscardDto.class, fr.ird.observe.dto.referential.ps.observation.SpeciesStatusDto.class, fr.ird.observe.dto.referential.ps.observation.ObservedSystemDto.class - ); + ); public static final ImmutableSet<Class<? extends ReferentialDto>> SEINE_REFERENTIAL_TYPES = ImmutableSet.<Class<? extends ReferentialDto>>builder() .addAll(SEINE_COMMON_REFERENTIAL_TYPES) @@ -141,7 +146,6 @@ public class DtoModelClasses { .addAll(SEINE_REFERENTIAL_TYPES) .addAll(LONGLINE_REFERENTIAL_TYPES) .build(); - private static final ImmutableSet<Class<? extends DataDto>> SEINE_ENTITY_DATA_TYPES = ImmutableSet.of( fr.ird.observe.dto.data.ps.observation.ActivityDto.class, fr.ird.observe.dto.data.ps.observation.FloatingObjectDto.class, ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -2324,6 +2324,8 @@ observe.init.local.db.error=Could not find local database, will load last backup observe.init.no.initial.dump.detected=Internal data source %1$s not detected. observe.init.no.local.db.detected=Local data source %1$s not detected. observe.init.storage.done=Init of Persistent Service done. +observe.map.logbook.points.not.valid=LogBook - Number of none displayed points\: %d +observe.map.observation.points.not.valid=Observation - Number of none displayed points\: %d observe.menu.actions=Actions observe.menu.configuration=Configuration observe.menu.configuration.tip=To configure application ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -2324,6 +2324,8 @@ observe.init.local.db.error=Imposible cargar la base local, se cargará el últi observe.init.no.initial.dump.detected=fuente de datos interna %1$s no detectada. observe.init.no.local.db.detected=Base local %1$s no detectada. observe.init.storage.done=Inicialización del servicio de persistencia terminado. +observe.map.logbook.points.not.valid=LogBook - Number of none displayed points\: %d \#TODO +observe.map.observation.points.not.valid=Observation - Number of none displayed points\: %d \#TODO observe.menu.actions=Acciones observe.menu.configuration=Configuración observe.menu.configuration.tip=Menú de configuración ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -2324,6 +2324,8 @@ observe.init.local.db.error=Impossible de charger la base locale, la dernière s observe.init.no.initial.dump.detected=Base embarquée %1$s non détectée. observe.init.no.local.db.detected=Base locale %1$s non détectée. observe.init.storage.done=Initialisation du service de persistance terminé. +observe.map.logbook.points.not.valid=Libre de bord - Nombre de points non affichés \: %d +observe.map.observation.points.not.valid=Observation - Nombre de points non affichés \: %d observe.menu.actions=Actions observe.menu.configuration=Configuration observe.menu.configuration.tip=Menu de configuration ===================================== persistence/src/main/java/fr/ird/observe/entities/Entities.java ===================================== @@ -22,10 +22,17 @@ package fr.ird.observe.entities; * #L% */ +import fr.ird.observe.dto.data.TripMapPoint; +import fr.ird.observe.dto.data.TripMapPointType; +import fr.ird.observe.entities.referential.common.Harbour; + +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.Arrays; import java.util.Collections; +import java.util.Date; import java.util.List; -import java.util.function.Predicate; +import java.util.Optional; /** * Created on 8/27/14. @@ -122,15 +129,28 @@ public class Entities { }; public static final List<ObserveEntityEnum> REFERENCE_ENTITIES_LIST = Collections.unmodifiableList(Arrays.asList(REFERENCE_ENTITIES)); - public static final Predicate<String> IS_SEINE_ID = Entities::isSeineId; - public static final Predicate<String> IS_LONGLINE_ID = Entities::isLonglineId; - public static boolean isSeineId(String id) { - return id.contains(".ps."); + public static Float getFloat(ResultSet resultSet, int columnIndex) throws SQLException { + float result = resultSet.getFloat(columnIndex); + return resultSet.wasNull() ? null : result; + } + + public static Optional<TripMapPoint> createHarbourPoint(Harbour harbour, Date date, TripMapPointType tripMapPointType) { + TripMapPoint result = null; + if (harbour != null) { + result = TripMapPoint.of(tripMapPointType, date, harbour.getLatitude(), harbour.getLongitude()); + } + return Optional.ofNullable(result); } - public static boolean isLonglineId(String id) { - return id.contains(".ll."); + public static TripMapPoint createPoint(TripMapPointType type, Date dateTime, ResultSet resultSet, int columnIndex) throws SQLException { + Float latitude = getFloat(resultSet, columnIndex); + Float longitude = getFloat(resultSet, columnIndex + 1); + return TripMapPoint.of(type, dateTime, latitude, longitude); } + public static TripMapPoint createPoint(TripMapPointType type, ResultSet resultSet, int dateColumnIndex) throws SQLException { + java.sql.Date date = resultSet.getDate(dateColumnIndex); + return createPoint(type, date, resultSet, dateColumnIndex + 1); + } } ===================================== persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java ===================================== @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableMap; import fr.ird.observe.dto.data.TripMapConfigDto; import fr.ird.observe.dto.data.TripMapPoint; import fr.ird.observe.dto.data.TripMapPointType; -import fr.ird.observe.entities.referential.common.Harbour; +import fr.ird.observe.entities.Entities; import org.nuiton.topia.persistence.support.TopiaSqlQuery; import org.nuiton.topia.persistence.support.TopiaSqlSupport; import org.nuiton.util.DateUtil; @@ -42,7 +42,6 @@ import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.stream.Collectors; public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { @@ -57,7 +56,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { LinkedHashSet<TripMapPoint> tripMapPoints = new LinkedHashSet<>(); // add departure harbour - createPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.llTripDepartureHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.llTripDepartureHarbour).map(tripMapPoints::add); if (addObservation) { // Add Activities Observation @@ -73,7 +72,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { } // add landing harbour - createPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.llTripLandingHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.llTripLandingHarbour).map(tripMapPoints::add); return tripMapPoints; } @@ -128,10 +127,10 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { return Collections.emptyList(); } return this. - <Trip>stream("From TripImpl Where vessel.id = :vesselId " + - "And (( :startDate <= endDate And :endDate >= endDate ) " + - " Or ( :endDate <= startDate And :endDate >= startDate )) " + - "Order By startDate, endDate", ImmutableMap.of( + <Trip>stream("From fr.ird.observe.entities.data.ll.common.TripImpl Where vessel.id = :vesselId " + + "And (( :startDate <= endDate And :endDate >= endDate ) " + + " Or ( :endDate <= startDate And :endDate >= startDate )) " + + "Order By startDate, endDate", ImmutableMap.of( "vesselId", vesselId, "startDate", startDate, "endDate", endDate)) @@ -146,6 +145,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { " a.latitude," + " a.longitude," + " a.vesselActivity," + + " s.topiaId," + " s.settingStartTimestamp," + " s.settingStartLatitude," + " s.settingStartLongitude," + @@ -184,26 +184,32 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { if (resultSet.getString(5) == null) { // simple activity - Optional<TripMapPoint> activity = createPoint(resultSet, 1, TripMapPointType.llActivityObs); - activity.ifPresent(result::add); + TripMapPoint activity = Entities.createPoint(TripMapPointType.llActivityObs, resultSet, 1); + result.add(activity); } // settingStart - Optional<TripMapPoint> settingStart = createPoint(resultSet, 5, TripMapPointType.llActivityObsWithSettingStart); - settingStart.ifPresent(result::add); + TripMapPoint settingStart = Entities.createPoint(TripMapPointType.llActivityObsWithSettingStart, resultSet, 6); + result.add(settingStart); // settingEnd - Optional<TripMapPoint> settingEnd = createPoint(resultSet, 8, TripMapPointType.llActivityObsWithSettingEnd); - settingEnd.ifPresent(result::add); + TripMapPoint settingEnd = Entities.createPoint(TripMapPointType.llActivityObsWithSettingEnd, resultSet, 9); + result.add(settingEnd); // haulingStart - Optional<TripMapPoint> haulingStart = createPoint(resultSet, 11, TripMapPointType.llActivityObsWithHaulingStart); - haulingStart.ifPresent(result::add); + TripMapPoint haulingStart = Entities.createPoint(TripMapPointType.llActivityObsWithHaulingStart, resultSet, 12); + result.add(haulingStart); // haulingEnd - Optional<TripMapPoint> haulingEnd = createPoint(resultSet, 14, TripMapPointType.llActivityObsWithHaulingEnd); - haulingEnd.ifPresent(result::add); - + TripMapPoint haulingEnd = Entities.createPoint(TripMapPointType.llActivityObsWithHaulingEnd, resultSet, 15); + result.add(haulingEnd); + + if (!(settingStart.isValid() && settingEnd.isValid() && haulingStart.isValid() && haulingEnd.isValid())) { + settingStart.setValid(false); + settingEnd.setValid(false); + haulingStart.setValid(false); + haulingEnd.setValid(false); + } return result; } } @@ -215,6 +221,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { " a.latitude," + " a.longitude," + " a.vesselActivity," + + " s.topiaId," + " s.settingStartTimestamp," + " s.settingStartLatitude," + " s.settingStartLongitude," + @@ -253,25 +260,32 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { if (resultSet.getString(5) == null) { // simple activity - Optional<TripMapPoint> activity = createPoint(resultSet, 1, TripMapPointType.llActivityLogbook); - activity.ifPresent(result::add); + TripMapPoint activity = Entities.createPoint(TripMapPointType.llActivityLogbook, resultSet, 1); + result.add(activity); } // settingStart - Optional<TripMapPoint> settingStart = createPoint(resultSet, 5, TripMapPointType.llActivityLogbookWithSettingStart); - settingStart.ifPresent(result::add); + TripMapPoint settingStart = Entities.createPoint(TripMapPointType.llActivityLogbookWithSettingStart, resultSet, 6); + result.add(settingStart); // settingEnd - Optional<TripMapPoint> settingEnd = createPoint(resultSet, 8, TripMapPointType.llActivityLogbookWithSettingEnd); - settingEnd.ifPresent(result::add); + TripMapPoint settingEnd = Entities.createPoint(TripMapPointType.llActivityLogbookWithSettingEnd, resultSet, 9); + result.add(settingEnd); // haulingStart - Optional<TripMapPoint> haulingStart = createPoint(resultSet, 11, TripMapPointType.llActivityLogbookWithHaulingStart); - haulingStart.ifPresent(result::add); + TripMapPoint haulingStart = Entities.createPoint(TripMapPointType.llActivityLogbookWithHaulingStart, resultSet, 12); + result.add(haulingStart); // haulingEnd - Optional<TripMapPoint> haulingEnd = createPoint(resultSet, 14, TripMapPointType.llActivityLogbookWithHaulingEnd); - haulingEnd.ifPresent(result::add); + TripMapPoint haulingEnd = Entities.createPoint(TripMapPointType.llActivityLogbookWithHaulingEnd, resultSet, 15); + result.add(haulingEnd); + + if (!(settingStart.isValid() && settingEnd.isValid() && haulingStart.isValid() && haulingEnd.isValid())) { + settingStart.setValid(false); + settingEnd.setValid(false); + haulingStart.setValid(false); + haulingEnd.setValid(false); + } return result; } @@ -315,29 +329,4 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { } - private static Optional<TripMapPoint> createPoint(Harbour harbour, Date date, TripMapPointType tripMapPointType) { - TripMapPoint result = null; - if (harbour != null && harbour.getLatitude() != null && harbour.getLongitude() != null) { - result = new TripMapPoint(); - result.setTime(date); - result.setLatitude(harbour.getLatitude()); - result.setLongitude(harbour.getLongitude()); - result.setType(tripMapPointType); - } - return Optional.ofNullable(result); - } - - private static Optional<TripMapPoint> createPoint(ResultSet resultSet, int dateColumnIndex, TripMapPointType tripMapPointType) throws SQLException { - - TripMapPoint result = null; - if (resultSet.getString(dateColumnIndex) != null) { - result = new TripMapPoint(); - result.setTime(resultSet.getDate(dateColumnIndex)); - result.setLatitude(resultSet.getFloat(dateColumnIndex + 1)); - result.setLongitude(resultSet.getFloat(dateColumnIndex + 2)); - result.setType(tripMapPointType); - } - return Optional.ofNullable(result); - } - } ===================================== persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java ===================================== @@ -26,7 +26,7 @@ import fr.ird.observe.dto.ProtectedIds; import fr.ird.observe.dto.data.TripMapConfigDto; import fr.ird.observe.dto.data.TripMapPoint; import fr.ird.observe.dto.data.TripMapPointType; -import fr.ird.observe.entities.referential.common.Harbour; +import fr.ird.observe.entities.Entities; import org.nuiton.topia.persistence.support.TopiaSqlQuery; import org.nuiton.topia.persistence.support.TopiaSqlSupport; import org.nuiton.util.DateUtil; @@ -40,7 +40,6 @@ import java.util.Date; import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.stream.Collectors; /** @@ -58,14 +57,14 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { LinkedHashSet<TripMapPoint> tripMapPoints = new LinkedHashSet<>(); // add departure harbour - createPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.psTripDepartureHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getDepartureHarbour(), trip.getStartDate(), TripMapPointType.psTripDepartureHarbour).map(tripMapPoints::add); // Add Activities TripMapActivityPointQuery tripMapActivityPointQuery = new TripMapActivityPointQuery(tripId); tripMapPoints.addAll(topiaSqlSupport.findMultipleResult(tripMapActivityPointQuery)); // add landing harbour - createPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.psTripLandingHarbour).map(tripMapPoints::add); + Entities.createHarbourPoint(trip.getLandingHarbour(), trip.getEndDate(), TripMapPointType.psTripLandingHarbour).map(tripMapPoints::add); return tripMapPoints; } @@ -75,7 +74,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { return Collections.emptyList(); } return this. - <Trip>stream("From TripImpl Where vessel.id = :vesselId " + + <Trip>stream("From fr.ird.observe.entities.data.ps.common.TripImpl Where vessel.id = :vesselId " + "And (( :startDate <= endDate And :endDate >= endDate ) " + " Or ( :endDate <= startDate And :endDate >= startDate )) " + "Order By startDate, endDate", ImmutableMap.of( @@ -119,32 +118,32 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { @Override public TripMapPoint prepareResult(ResultSet resultSet) throws SQLException { - TripMapPoint point = new TripMapPoint(); - Date time = DateUtil.getDateAndTime(resultSet.getDate(1), resultSet.getTime(2), true, false); - point.setTime(time); - point.setLatitude(resultSet.getFloat(3)); - point.setLongitude(resultSet.getFloat(4)); + TripMapPointType type; + if (ProtectedIds.PS_COMMON_ACTIVITY_HARBOUR_ID.equals(resultSet.getString(5))) { - point.setType(TripMapPointType.psActivityObsInHarbour); + type = TripMapPointType.psActivityObsInHarbour; } else if (resultSet.getString(6) == null) { - point.setType(TripMapPointType.psActivityObs); + type = TripMapPointType.psActivityObs; } else { String schoolType = resultSet.getString(6); switch (schoolType) { case ProtectedIds.PS_COMMON_SCHOOL_TYPE_FREE_ID: - point.setType(TripMapPointType.psActivityObsWithFreeSchoolType); + type = TripMapPointType.psActivityObsWithFreeSchoolType; break; case ProtectedIds.PS_COMMON_SCHOOL_TYPE_OBJECT_ID: - point.setType(TripMapPointType.psActivityObsWithObjectSchoolType); + type = TripMapPointType.psActivityObsWithObjectSchoolType; break; default: - point.setType(TripMapPointType.psActivityObs); + type = TripMapPointType.psActivityObs; } } - return point; + + Date time = DateUtil.getDateAndTime(resultSet.getDate(1), resultSet.getTime(2), true, false); + return Entities.createPoint(type, time, resultSet, 3); } } + public boolean updateEndDate(Trip trip) { boolean wasUpdated = false; @@ -230,16 +229,4 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { } - private static Optional<TripMapPoint> createPoint(Harbour harbour, Date date, TripMapPointType tripMapPointType) { - TripMapPoint result = null; - if (harbour != null && harbour.getLatitude() != null && harbour.getLongitude() != null) { - result = new TripMapPoint(); - result.setTime(date); - result.setLatitude(harbour.getLatitude()); - result.setLongitude(harbour.getLongitude()); - result.setType(tripMapPointType); - } - return Optional.ofNullable(result); - } - } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocal.java ===================================== @@ -31,7 +31,6 @@ import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.referential.common.SpeciesDto; import fr.ird.observe.dto.referential.ps.observation.ObservedSystemReference; -import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.data.TripAware; import fr.ird.observe.entities.referential.ReferentialEntity; import fr.ird.observe.entities.referential.common.Species; @@ -47,6 +46,7 @@ import fr.ird.observe.services.service.actions.validate.ValidateService; import fr.ird.observe.services.service.actions.validate.ValidationRequest; import fr.ird.observe.services.service.referential.ReferentialService; import fr.ird.observe.spi.DbModelHelper; +import fr.ird.observe.spi.DtoModelClasses; import fr.ird.observe.spi.type.TypeTranslators; import fr.ird.observe.validation.ServiceValidationContext; import fr.ird.observe.validation.ValidatorsMap; @@ -156,7 +156,7 @@ public class ValidateServiceLocal extends ObserveServiceLocal implements Validat private void validateData(String dataId, ValidationMessageDetector detector, ServiceValidationContext validationContext, Set<SpeciesDto> species) { TripAware<?, ?> trip; - if (Entities.isSeineId(dataId)) { + if (DtoModelClasses.isSeineId(dataId)) { trip = fr.ird.observe.entities.data.ps.common.Trip.loadEntity(getTopiaPersistenceContext(), dataId); } else { trip = fr.ird.observe.entities.data.ll.common.Trip.loadEntity(getTopiaPersistenceContext(), dataId); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java ===================================== @@ -34,7 +34,6 @@ import fr.ird.observe.dto.referential.ReferenceStatus; 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.Entities; import fr.ird.observe.entities.ObserveEntityEnum; import fr.ird.observe.entities.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.data.ll.common.Trip; @@ -247,11 +246,11 @@ public class ReferentialServiceLocal extends ObserveServiceLocal implements Refe ReferentialShellBuilder referentialShellBuilder = ReferentialShellBuilder.builder(request.getCentralSourceReferential()); for (String tripId : request.getTripIds()) { - if (Entities.isLonglineId(tripId)) { + if (DtoModelClasses.isLonglineId(tripId)) { Trip trip = fr.ird.observe.entities.data.ll.common.Trip.loadEntity(getTopiaPersistenceContext(), tripId); log.info("Compute missing referential for trip: " + tripId); referentialShellBuilder.scan(trip); - } else if (Entities.isSeineId(tripId)) { + } else if (DtoModelClasses.isSeineId(tripId)) { fr.ird.observe.entities.data.ps.common.Trip trip = fr.ird.observe.entities.data.ps.common.Trip.loadEntity(getTopiaPersistenceContext(), tripId); log.info("Compute missing referential for trip: " + tripId); referentialShellBuilder.scan(trip); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java ===================================== @@ -25,7 +25,6 @@ package fr.ird.observe.services.local.service.sql; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ListMultimap; import fr.ird.observe.dto.reference.ReferentialDtoReference; -import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.ObserveEntityEnum; import fr.ird.observe.entities.ObserveTopiaApplicationContext; import fr.ird.observe.services.local.service.ObserveServiceLocal; @@ -33,6 +32,7 @@ import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.DeleteSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.spi.DbModelHelper; +import fr.ird.observe.spi.DtoModelClasses; import org.apache.commons.collections4.CollectionUtils; import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; import org.nuiton.topia.persistence.script.TopiaBlobsContainer; @@ -46,8 +46,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import static fr.ird.observe.entities.Entities.IS_LONGLINE_ID; -import static fr.ird.observe.entities.Entities.IS_SEINE_ID; +import static fr.ird.observe.spi.DtoModelClasses.IS_LONGLINE_ID; +import static fr.ird.observe.spi.DtoModelClasses.IS_SEINE_ID; import static fr.ird.observe.entities.Entities.REFERENCE_ENTITIES_LIST; /** @@ -174,14 +174,14 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement } else { { - Set<String> tripIds1 = tripIds.stream().filter(Entities.IS_SEINE_ID).collect(Collectors.toSet()); + Set<String> tripIds1 = tripIds.stream().filter(DtoModelClasses.IS_SEINE_ID).collect(Collectors.toSet()); if (!tripIds1.isEmpty()) { builder.addDeleteTablesRequest(topiaApplicationContext.getTripSeineTables(), TopiaSqlTableSelectArgument.of(tripIds1)); } } { - Set<String> tripIds1 = tripIds.stream().filter(Entities.IS_LONGLINE_ID).collect(Collectors.toSet()); + Set<String> tripIds1 = tripIds.stream().filter(DtoModelClasses.IS_LONGLINE_ID).collect(Collectors.toSet()); if (!tripIds1.isEmpty()) { builder.addDeleteTablesRequest(topiaApplicationContext.getTripLonglineTables(), TopiaSqlTableSelectArgument.of(tripIds1)); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/fddb45997dd5c9dd2e087ded… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/fddb45997dd5c9dd2e087ded… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] Ajouter une option pour ne pas afficher la légende dans la carte - Closes #1557
by Tony CHEMIT 29 Jun '20

29 Jun '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: fddb4599 by Tony Chemit at 2020-06-29T13:00:49+02:00 Ajouter une option pour ne pas afficher la légende dans la carte - Closes #1557 - - - - - 9 changed files: - client-core/src/main/java/fr/ird/observe/client/util/ObserveKeyStrokesSupport.java - client-datasource-editor-common/src/main/i18n/getters/java.getter - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/ObserveMapPane.java - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUI.jaxx - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUIHandler.java - + client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/actions/ToggleLegend.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/util/ObserveKeyStrokesSupport.java ===================================== @@ -91,6 +91,7 @@ public abstract class ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_SHOW_REFERENTIAL = KeyStroke.getKeyStroke("ctrl pressed F4"); public static final KeyStroke KEY_STROKE_SHOW_EMPTY_PROGRAM = KeyStroke.getKeyStroke("ctrl pressed F5"); public static final KeyStroke KEY_STROKE_SHOW_DISABLED_PROGRAM = KeyStroke.getKeyStroke("ctrl pressed F6"); + public static final KeyStroke KEY_STROKE_TOGGLE_LEGEND = KeyStroke.getKeyStroke("ctrl pressed L"); public static final KeyStroke KEY_STROKE_COPY_VALUES_AND_SAVE = KeyStroke.getKeyStroke("ctrl pressed T"); public static final KeyStroke KEY_STROKE_SAVE_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed S"); @@ -110,7 +111,7 @@ public abstract class ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_MAP_EXPORT = KeyStroke.getKeyStroke("ctrl pressed S"); public static final KeyStroke KEY_STROKE_MAP_ZOOM_IT = KeyStroke.getKeyStroke("ctrl pressed I"); public static final KeyStroke KEY_STROKE_MAP_ZOOM_PLUS = KeyStroke.getKeyStroke("ctrl pressed P"); - public static final KeyStroke KEY_STROKE_MAP_ZOOM_MINUS = KeyStroke.getKeyStroke("ctrl pressed L"); + public static final KeyStroke KEY_STROKE_MAP_ZOOM_MINUS = KeyStroke.getKeyStroke("ctrl pressed R"); public static final KeyStroke KEY_STROKE_SHIFT_ALT_ENTER = KeyStroke.getKeyStroke("alt shift pressed ENTER"); public static final KeyStroke KEY_STROKE_SHOW_TECHNICAL_INFORMATION = KeyStroke.getKeyStroke("shift pressed F1"); ===================================== client-datasource-editor-common/src/main/i18n/getters/java.getter ===================================== @@ -11,6 +11,8 @@ observe.content.map.export.chooseFile.ok observe.content.map.export.chooseFile.png observe.content.map.export.chooseFile.title observe.content.map.export.success +observe.content.map.legend +observe.content.map.legend.tip observe.content.map.miles observe.content.map.north observe.content.map.showLogbook ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/ObserveMapPane.java ===================================== @@ -69,6 +69,7 @@ public class ObserveMapPane extends JMapPane { protected double rotation; private long scaleInMiles; + private boolean showLegend = true; public ObserveMapPane() { labelScaleUp = "0 m"; @@ -95,6 +96,16 @@ public class ObserveMapPane extends JMapPane { firePropertyChange("scaleInMiles", oldValue, scaleInMiles); } + public boolean isShowLegend() { + return showLegend; + } + + public void setShowLegend(boolean showLegend) { + boolean oldValue = isShowLegend(); + this.showLegend = showLegend; + firePropertyChange("showLegend", oldValue, showLegend); + } + protected void updateScale() { ReferencedEnvelope displayArea = getDisplayArea(); double dpi = 2.54 / 100; // pour avoir l'echélle en metre/pixel @@ -226,7 +237,7 @@ public class ObserveMapPane extends JMapPane { protected void paintLegend(Graphics graphics) { - if (legendItems != null) { + if (getLegendItems() != null && isShowLegend()) { int x = 0; int y = getHeight() - ObserveMapPaneLegendItem.LEGEND_ITEM_HEIGHT * legendItems.size() - 2 * LEGEND_MARGIN; ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUI.jaxx ===================================== @@ -33,6 +33,7 @@ <JButton id='zoomPlus'/> <JButton id='zoomMinus'/> <JButton id='exportPng'/> + <JToggleButton id="toggleLegend"/> </JToolBar> <JPanel id="config" constraints="BorderLayout.SOUTH" layout="{new GridLayout(1,0)}" beanScope="tripMapConfig"> <BeanCheckBox id="addObservations"/> ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/TripMapUIHandler.java ===================================== @@ -37,6 +37,7 @@ import org.geotools.swing.event.MapPaneEvent; import org.geotools.swing.event.MapPaneListener; import org.nuiton.jaxx.runtime.spi.UIHandler; +import javax.swing.SwingUtilities; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -178,6 +179,7 @@ public class TripMapUIHandler implements UIHandler<TripMapUI> { public void init() { init(ui.getAddObservations()); init(ui.getAddLogbook()); + ui.getToggleLegend().setSelected(true); } public ReferencedEnvelope getTripArea() { @@ -206,6 +208,11 @@ public class TripMapUIHandler implements UIHandler<TripMapUI> { editor.init(true, false); } + public void updateMap(boolean showLegend) { + getObserveMapPane().setShowLegend(showLegend); + SwingUtilities.invokeLater(getObserveMapPane()::repaint); + } + private class MouseMapListener implements MouseWheelListener, MouseListener, MouseMotionListener { Point2D startPointInWorld; ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/actions/ToggleLegend.java ===================================== @@ -0,0 +1,54 @@ +package fr.ird.observe.client.datasource.editor.content.data.trip.map.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor Common + * %% + * Copyright (C) 2008 - 2020 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% + */ + +import fr.ird.observe.client.datasource.editor.content.data.trip.map.TripMapUI; +import fr.ird.observe.client.util.ObserveKeyStrokesSupport; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.t; + +public class ToggleLegend extends TripMapUIActionSupport { + private static final Logger log = LogManager.getLogger(ToggleLegend.class); + + public ToggleLegend() { + super( + t("observe.content.map.legend"), + t("observe.content.map.legend.tip"), + "show-help", + ObserveKeyStrokesSupport.KEY_STROKE_TOGGLE_LEGEND); + + } + + @Override + protected void doActionPerformed(ActionEvent e, TripMapUI ui) { + boolean selected = ui.getToggleLegend().isSelected(); + log.info(String.format("Was showing legend? %b", selected)); + boolean newValue = !selected; + ui.getToggleLegend().setSelected(newValue); + ui.getHandler().updateMap(newValue); + } +} ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -741,12 +741,14 @@ observe.content.map.export.chooseFile.ok=Exporter observe.content.map.export.chooseFile.png=PNG image observe.content.map.export.chooseFile.title=Export map observe.content.map.export.success=Map exported (%s) +observe.content.map.legend=Legend observe.content.map.legend.hauling=Hauling observe.content.map.legend.logbook.hauling=Logbook - Hauling observe.content.map.legend.logbook.setting=Logbook - setting observe.content.map.legend.obs.hauling=Observation - Hauling observe.content.map.legend.obs.setting=Observation - setting observe.content.map.legend.setting=setting +observe.content.map.legend.tip=To display or hide legend observe.content.map.legend.tripBetweenTwoDays=Night trip observe.content.map.legend.tripDay=Day trip observe.content.map.miles=miles ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -741,12 +741,14 @@ observe.content.map.export.chooseFile.ok=Exportar observe.content.map.export.chooseFile.png=imagen PNG observe.content.map.export.chooseFile.title=Exportar el mapa observe.content.map.export.success=Mapa exportada (%s) +observe.content.map.legend=Legend \#TODO observe.content.map.legend.hauling=Arrastre observe.content.map.legend.logbook.hauling=Logbook - Arrastre observe.content.map.legend.logbook.setting=Logbook - Calada observe.content.map.legend.obs.hauling=Observation - Arrastre observe.content.map.legend.obs.setting=Observation - Calada observe.content.map.legend.setting=Calada +observe.content.map.legend.tip=To display or hide legend \#TODO observe.content.map.legend.tripBetweenTwoDays=Trayecto del noche observe.content.map.legend.tripDay=Trayecto del día observe.content.map.miles=milles ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -741,12 +741,14 @@ observe.content.map.export.chooseFile.ok=Exporter observe.content.map.export.chooseFile.png=image PNG observe.content.map.export.chooseFile.title=Exporter la carte observe.content.map.export.success=Carte exportée (%s) +observe.content.map.legend=Légende observe.content.map.legend.hauling=Virage observe.content.map.legend.logbook.hauling=Livre de bord - Virage observe.content.map.legend.logbook.setting=Livre de bord - Filage observe.content.map.legend.obs.hauling=Observation - Virage observe.content.map.legend.obs.setting=Observation - Filage observe.content.map.legend.setting=Filage +observe.content.map.legend.tip=Pour afficher ou masquer la légende observe.content.map.legend.tripBetweenTwoDays=Trajet de nuit observe.content.map.legend.tripDay=Trajet de jour observe.content.map.miles=milles View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fddb45997dd5c9dd2e087dedb… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fddb45997dd5c9dd2e087dedb… You're receiving this email because of your account on gitlab.com.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • ...
  • 720
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.