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-5.x] 2 commits: Revert "Essaie de correction des problèmes de timezone (see #769)"
by Tony CHEMIT 13 Jun '17

13 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: c13966b9 by Tony CHEMIT at 2017-06-13T19:24:20+02:00 Revert "Essaie de correction des problèmes de timezone (see #769)" This reverts commit 68463971a5e4ed99e617c7a6223c6b5761b36c0a. - - - - - 9e560d0d by Tony CHEMIT at 2017-06-13T19:24:20+02:00 Revert "Problème potentiel dans la gestion du fuseau horaire, pour l'affichage des dates selon le calendrier grégorien (See #769)" This reverts commit ecc6002a1f44db6082a4421d2b8e5a18adb083d4. - - - - - 2 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java - entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java @@ -21,12 +21,12 @@ */ package fr.ird.observe.application.swing; -import java.util.Arrays; -import java.util.Date; -import java.util.TimeZone; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.Arrays; +import java.util.Date; + import static org.nuiton.i18n.I18n.n; @@ -52,22 +52,6 @@ public class RunObserve extends ObserveRunner { public static void main(String... args) { - String property = System.getProperty("user.timezone"); - System.setProperty("user.timezone", "UTC"); - TimeZone timeZone = TimeZone.getDefault(); - TimeZone.setDefault(null); - - try { - Class.forName("org.h2.Driver"); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } finally { - - if (property != null) { - System.setProperty("user.timezone", property); - } - TimeZone.setDefault(timeZone); - } log.info("ObServe client launch at " + new Date() + " args: " + Arrays.toString(args)); new RunObserve(args).launch(); ===================================== entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java ===================================== --- a/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java +++ b/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java @@ -47,7 +47,6 @@ public class ObserveTopiaConfiguration extends BeanTopiaConfiguration { hibernateExtraConfiguration.put("hibernate.hikari.maximumPoolSize", "10"); hibernateExtraConfiguration.put("hibernate.hikari.autoCommit", "false"); hibernateExtraConfiguration.put("hibernate.hikari.registerMbeans", "true"); -// hibernateExtraConfiguration.put("hibernate.jdbc.time_zone", "UTC"); // hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, "org.hibernate.c3p0.internal.C3P0ConnectionProvider"); // hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_SIZE, "500"); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/405cdf49582f5c7fbacc962075… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/405cdf49582f5c7fbacc962075… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] Correction d'un libellé
by Pascal Cauquil 13 Jun '17

13 Jun '17
Pascal Cauquil pushed to branch develop-5.x at ultreiaio / ird-observe Commits: 405cdf49 by Pascal CAUQUIL at 2017-06-13T19:14:58+02:00 Correction d'un libellé - - - - - 1 changed file: - application-swing/src/main/resources/i18n/application-swing_fr_FR.properties Changes: ===================================== application-swing/src/main/resources/i18n/application-swing_fr_FR.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -1295,7 +1295,7 @@ observe.enum.fr.ird.observe.application.swing.configuration.constants.CreationMo observe.enum.fr.ird.observe.application.swing.configuration.constants.CreationMode.IMPORT_LOCAL_STORAGE.description=Générer une nouvelle base locale et y importer le référentiel d'une autre base locale. observe.enum.fr.ird.observe.application.swing.configuration.constants.CreationMode.IMPORT_REMOTE_STORAGE=Importer le référentiel d'une base distante observe.enum.fr.ird.observe.application.swing.configuration.constants.CreationMode.IMPORT_REMOTE_STORAGE.description=Générer une nouvelle base locale et y importer le référentiel d'une autre base distante. -observe.enum.fr.ird.observe.application.swing.configuration.constants.CreationMode.IMPORT_SERVER_STORAGE=Importer le référentiel dun serveur distant +observe.enum.fr.ird.observe.application.swing.configuration.constants.CreationMode.IMPORT_SERVER_STORAGE=Importer le référentiel d'un serveur distant observe.enum.fr.ird.observe.application.swing.configuration.constants.CreationMode.IMPORT_SERVER_STORAGE.description=Générer une nouvelle base locale et y importer le référentiel d'un serveur distant. observe.enum.fr.ird.observe.application.swing.configuration.constants.DbMode.CREATE_LOCAL=Créer une base locale observe.enum.fr.ird.observe.application.swing.configuration.constants.DbMode.CREATE_LOCAL.description=Créer une base locale de type H2 View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/405cdf49582f5c7fbacc962075f… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/405cdf49582f5c7fbacc962075f… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] correction pb timeZone sur couche http
by Tony CHEMIT 13 Jun '17

13 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: 67116021 by Tony CHEMIT at 2017-06-13T19:00:31+02:00 correction pb timeZone sur couche http - - - - - 1 changed file: - services-dto/src/main/java/fr/ird/observe/services/dto/gson/DateAdapter.java Changes: ===================================== services-dto/src/main/java/fr/ird/observe/services/dto/gson/DateAdapter.java ===================================== --- a/services-dto/src/main/java/fr/ird/observe/services/dto/gson/DateAdapter.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/gson/DateAdapter.java @@ -69,7 +69,7 @@ public class DateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> public DateAdapter() { this.iso8601Format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - this.iso8601Format.setTimeZone(TimeZone.getTimeZone("UTC")); +// this.iso8601Format.setTimeZone(TimeZone.getTimeZone("UTC")); } // These methods need to be synchronized since JDK DateFormat classes are not thread-safe View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/67116021d853fe1c99df31a5cff… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/67116021d853fe1c99df31a5cff… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] Essaie de correction des problèmes de timezone (see #769)
by Tony CHEMIT 13 Jun '17

13 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: 68463971 by Tony CHEMIT at 2017-06-13T11:17:01-04:00 Essaie de correction des problèmes de timezone (see #769) - - - - - 2 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java - entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java @@ -21,11 +21,11 @@ */ package fr.ird.observe.application.swing; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - import java.util.Arrays; import java.util.Date; +import java.util.TimeZone; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import static org.nuiton.i18n.I18n.n; @@ -52,6 +52,22 @@ public class RunObserve extends ObserveRunner { public static void main(String... args) { + String property = System.getProperty("user.timezone"); + System.setProperty("user.timezone", "UTC"); + TimeZone timeZone = TimeZone.getDefault(); + TimeZone.setDefault(null); + + try { + Class.forName("org.h2.Driver"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } finally { + + if (property != null) { + System.setProperty("user.timezone", property); + } + TimeZone.setDefault(timeZone); + } log.info("ObServe client launch at " + new Date() + " args: " + Arrays.toString(args)); new RunObserve(args).launch(); ===================================== entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java ===================================== --- a/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java +++ b/entities/src/main/java/fr/ird/observe/ObserveTopiaConfiguration.java @@ -47,7 +47,7 @@ public class ObserveTopiaConfiguration extends BeanTopiaConfiguration { hibernateExtraConfiguration.put("hibernate.hikari.maximumPoolSize", "10"); hibernateExtraConfiguration.put("hibernate.hikari.autoCommit", "false"); hibernateExtraConfiguration.put("hibernate.hikari.registerMbeans", "true"); - hibernateExtraConfiguration.put("hibernate.jdbc.time_zone", "UTC"); +// hibernateExtraConfiguration.put("hibernate.jdbc.time_zone", "UTC"); // hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, "org.hibernate.c3p0.internal.C3P0ConnectionProvider"); // hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_SIZE, "500"); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/68463971a5e4ed99e617c7a6223… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/68463971a5e4ed99e617c7a6223… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] 2 commits: Set charset when possible (See #729)
by Tony CHEMIT 13 Jun '17

13 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: c6fc9e22 by Tony CHEMIT at 2017-06-13T12:36:45+02:00 Set charset when possible (See #729) - - - - - 782aabb9 by Tony CHEMIT at 2017-06-13T13:06:49+02:00 Amélioration des libellés espagnols (See #775) - - - - - 10 changed files: - application-swing-decoration/src/main/resources/i18n/application-swing-decoration_es_ES.properties - application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties - application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java - application-swing/src/main/java/fr/ird/observe/application/swing/backup/BackupsManager.java - application-swing/src/main/resources/i18n/application-swing_en_GB.properties - application-swing/src/main/resources/i18n/application-swing_es_ES.properties - application-swing/src/main/resources/i18n/application-swing_fr_FR.properties - application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/db/ObserveWebDatabasesHelper.java - application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/user/ObserveWebUsersHelper.java - services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties Changes: ===================================== application-swing-decoration/src/main/resources/i18n/application-swing-decoration_es_ES.properties ===================================== --- a/application-swing-decoration/src/main/resources/i18n/application-swing-decoration_es_ES.properties +++ b/application-swing-decoration/src/main/resources/i18n/application-swing-decoration_es_ES.properties @@ -109,7 +109,7 @@ observe.type.maturityStatuses=Maturidades observe.type.mitigationType=Tipo de medida de atenuación observe.type.mitigationTypes=Tipos de medida de atenuación observe.type.nonTargetCatch=Fauna accesoria conservada o descartada -observe.type.nonTargetCatches=Faunas accesorias conservadas o descartadas +observe.type.nonTargetCatches=Fauna accesoria conservada o descartada observe.type.nonTargetLength=Longitud (cm inf.) observe.type.nonTargetLengths=Longitudes (cm inf.) observe.type.nonTargetSample=Muestreo de fauna accesoria @@ -119,8 +119,8 @@ observe.type.objectFates=Futuros del objeto observe.type.objectObservedSpecies=Fauna observada observe.type.objectOperation=Operación sobre el objeto observe.type.objectOperations=Operaciones sobre el objeto -observe.type.objectSchoolEstimate=Estimación banco de objetos -observe.type.objectSchoolEstimates=Estimaciones banco de objetos +observe.type.objectSchoolEstimate=Estimación del banco +observe.type.objectSchoolEstimates=Estimaciones del banco observe.type.objectType=Tipo de objeto observe.type.objectTypes=Tipos de objeto observe.type.observedSystem=Sistema observado ===================================== application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties ===================================== --- a/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties +++ b/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties @@ -66,11 +66,11 @@ observe.common.gearUseFeaturesSeine=Equipamiento observe.common.gonadeWeight=Peso de las gonadas (g) observe.common.haulingBreaks=Número de cortes observe.common.haulingDirectionSameAsSetting=Sentido del arrastre idéntico a lo de la calada -observe.common.haulingEndLatitude=Arrastre Latitude +observe.common.haulingEndLatitude=Arrastre Latitud observe.common.haulingEndLongitude=Arrastre Longitud observe.common.haulingEndQuadrant=Arrastre quadrant observe.common.haulingEndTimeStamp=Timestamp de fin -observe.common.haulingStartLatitude=Arrastre Latitude +observe.common.haulingStartLatitude=Arrastre Latitud observe.common.haulingStartLongitude=Arrastre Longitud observe.common.haulingStartQuadrant=Arrastre quadrant observe.common.haulingStartTimeStamp=Timestamp del inicio @@ -141,13 +141,13 @@ observe.common.sensorBrand=Marca de sensor observe.common.sensorDataFormat=Formato de los datos del sensor observe.common.sensorSerialNo=Número de serie observe.common.sensorType=Tipo de sensor -observe.common.settingEndLatitude=Calada latitude +observe.common.settingEndLatitude=Calada latitud observe.common.settingEndLongitude=Calada longitud observe.common.settingEndQuadrant=Calada quadrant observe.common.settingEndTimeStamp=Timestamp de fin observe.common.settingIdentifier=Calada observe.common.settingShape=Forma de la calada -observe.common.settingStartLatitude=Calada latitude +observe.common.settingStartLatitude=Calada latitud observe.common.settingStartLongitude=Calada longitud observe.common.settingStartQuadrant=Calada quadrant observe.common.settingStartTimeStamp=Timestamp de inicio @@ -166,7 +166,7 @@ observe.common.startLogValue=Corredera de mañana (millas) observe.common.startTime=Fecha - Heuro de inicio de validez observe.common.status=Estado observe.common.stomacFullness=Nivel de llenado del estomago -observe.common.supportVesselName=Nombre del supply +observe.common.supportVesselName=Nombre del Macicero observe.common.surroundingActivity=Actividad circundante observe.common.swivelWeight=Peso de el destorcedor (kg) observe.common.targetCatch=Captura de atún ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/RunObserve.java @@ -27,6 +27,9 @@ import org.apache.commons.logging.LogFactory; import java.util.Arrays; import java.util.Date; + +import static org.nuiton.i18n.I18n.n; + /** * Pour lancer le client swing {@code ObServe} en mode administrateur. * @@ -54,4 +57,9 @@ public class RunObserve extends ObserveRunner { new RunObserve(args).launch(); } + static { + //TODO Apply this modification in jaxx project + n("jaxx.common.latitude"); + } + } ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/backup/BackupsManager.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/backup/BackupsManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/backup/BackupsManager.java @@ -29,6 +29,7 @@ import fr.ird.observe.application.swing.ObserveSwingApplicationDataSourcesManage import fr.ird.observe.application.swing.ObserveSwingTechnicalException; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import java.nio.charset.StandardCharsets; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -231,7 +232,7 @@ public class BackupsManager implements Closeable { private void storeBackups() throws IOException { log.info(String.format("Store %d backups to %s", backups.size(), storePath)); - try (BufferedWriter writer = Files.newBufferedWriter(storePath)) { + try (BufferedWriter writer = Files.newBufferedWriter(storePath, StandardCharsets.UTF_8)) { new Gson().toJson(backups, writer); } } ===================================== application-swing/src/main/resources/i18n/application-swing_en_GB.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -1,4 +1,5 @@ aboutframe.changelog=Changelog +jaxx.common.latitude=Latitude observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Application de saisie des données observateurs et de consultation de telles données depuis une base <i>Obstuna</i>.</p> <p>Ce projet a été initiée en 2008 par l'unité US 007-OSIRIS de <a href\="http\://www.ird.fr">l'IRD</a> dans le cadre d'un <a href\="http\://www.ird.fr/informatique-scientifique/soutien/spirales/anciens_projets/affiche_projet.php?code\=2008.11">project spirale</a>.</p><p>Il a été réalisé par la société <a href\="http\://codelutin.com">Code Lutin</a> en 2009.</p><br/><hr/>Pour plus d'informations, vous pouvez visiter le <a href\="http\://observe.codelutin.com">site du projet</a>. observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliorer, ...</li><li>Enfin renvoyez-le nous</li></ul><br/>Vos modifications seront prises en compte avant la prochaine version. observe.about.translate.title=translate ObServe ===================================== application-swing/src/main/resources/i18n/application-swing_es_ES.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -1,4 +1,5 @@ aboutframe.changelog=Changelog +jaxx.common.latitude=Latitud observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Aplicación de adquisición Application de datos de observadores y de consulta de estos datos desde una base <i>Obstuna</i>.</p> <p>Este projecto se ha iniciado en 2009 por la unidad US 007-OSIRIS del <a href\="http\://www.ird.fr">IRD</a> dentro del marco de <a href\="http\://www.ird.fr/informatique-scientifique/soutien/spirales/anciens_projets/affiche_projet.php?code\=2008.11">project spirale</a>.</p><p>Realizado por la sociedad <a href\="http\://codelutin.com">Code Lutin</a> en 2009.</p><br/><hr/>Para mas información puede visitar el <a href\="http\://observe.codelutin.com">sitio web del proyecto</a>. observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliorer, ...</li><li>Enfin renvoyez-le nous</li></ul><br/>Vos modifications seront prises en compte avant la prochaine version. observe.about.translate.title=Traducir ObServe @@ -490,7 +491,7 @@ observe.common.startLogValue=Corredera de mañana (millas) observe.common.status=Estado observe.common.step.description=Descripción de la etapa observe.common.storage.not.valid=Fuente de datos no configurada -observe.common.supportVesselName=Nombre del supply +observe.common.supportVesselName=Nombre del Macicero observe.common.surroundingActivity=Actividad circundante observe.common.taille=Talla (cm) observe.common.taillePoids.caracteristics=Características Talla-Peso @@ -1139,7 +1140,7 @@ observe.content.setSeine.schoolType.not.fill=vacío observe.content.setSeine.sonarUsed=Utilización del sonar durante el lance observe.content.setSeine.sonarUsedAvantSet=Utilización del sonar antes del lance observe.content.setSeine.startTime=Fecha - Hora comienzo lance -observe.content.setSeine.supportVesselName=Nombre Macicero +observe.content.setSeine.supportVesselName=Nombre de Macicero observe.content.setSeine.tab.general=Características generales observe.content.setSeine.tab.measurements=Parámetros observe.content.setSeine.targetDiscarded=Descarte de atún @@ -1523,7 +1524,7 @@ observe.storage.action.apply.tip=Utilizar la fuente de datos configuarada observe.storage.action.canMigrate=Actualización de la base (versión actual %1$s) observe.storage.action.cancel=Cancelar el cambio de la fuente de datos observe.storage.action.cancel.tip=Cancelar el cambio de la fuente de datos -observe.storage.activityLongline.coordinate=Coordenadas +observe.storage.activityLongline.coordinate=Coordenada observe.storage.activityLongline.fpaZone=Zona FPA observe.storage.activityLongline.message.active.found=Actividad abierta observe.storage.activityLongline.message.active.found.for.other.trip=Existe una actividad abierta en otra ruta. ===================================== application-swing/src/main/resources/i18n/application-swing_fr_FR.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -1,4 +1,5 @@ aboutframe.changelog=Historique +jaxx.common.latitude=Latitude observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Application de saisie des données observateurs et de consultation de telles données depuis une base <i>Obstuna</i>.</p> <p>Ce projet a été initiée en 2008 par l'unité US 007-OSIRIS de <a href\="http\://www.ird.fr">l'IRD</a> dans le cadre d'un <a href\="http\://www.ird.fr/informatique-scientifique/soutien/spirales/anciens_projets/affiche_projet.php?code\=2008.11">project spirale</a>.</p><p>Il a été réalisé par la société <a href\="http\://codelutin.com">Code Lutin</a> en 2009.</p><br/><hr/>Pour plus d'informations, vous pouvez visiter le <a href\="http\://observe.codelutin.com">site du projet</a>. observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliorer, ...</li><li>Enfin renvoyez-le nous</li></ul><br/>Vos modifications seront prises en compte avant la prochaine version. observe.about.translate.title=Traduire ObServe ===================================== application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/db/ObserveWebDatabasesHelper.java ===================================== --- a/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/db/ObserveWebDatabasesHelper.java +++ b/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/db/ObserveWebDatabasesHelper.java @@ -32,17 +32,17 @@ import fr.ird.observe.application.web.configuration.db.impl.ObserveWebDatabaseBe import fr.ird.observe.application.web.configuration.db.impl.ObserveWebDatabaseRoleBean; import fr.ird.observe.application.web.configuration.db.impl.ObserveWebDatabasesBean; import fr.ird.observe.application.web.configuration.db.impl.ObserveWebDatabasesImmutable; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - import java.io.BufferedWriter; import java.io.File; import java.io.Reader; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.LinkedHashSet; import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * Created on 30/08/15. @@ -164,7 +164,7 @@ public class ObserveWebDatabasesHelper { log.info("Store databases to " + file); } - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + try (BufferedWriter writer = Files.newWriter(file, StandardCharsets.UTF_8)) { store(databases, writer); ===================================== application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/user/ObserveWebUsersHelper.java ===================================== --- a/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/user/ObserveWebUsersHelper.java +++ b/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/user/ObserveWebUsersHelper.java @@ -35,18 +35,18 @@ import fr.ird.observe.application.web.configuration.user.impl.ObserveWebUserBean import fr.ird.observe.application.web.configuration.user.impl.ObserveWebUserPermissionBean; import fr.ird.observe.application.web.configuration.user.impl.ObserveWebUsersBean; import fr.ird.observe.application.web.configuration.user.impl.ObserveWebUsersImmutable; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - import java.io.BufferedWriter; import java.io.File; import java.io.Reader; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.LinkedHashSet; import java.util.Optional; import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * Created on 30/08/15. @@ -158,7 +158,7 @@ public class ObserveWebUsersHelper { log.info("Store users to " + file); } - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + try (BufferedWriter writer = Files.newWriter(file, StandardCharsets.UTF_8)) { store(users, writer); @@ -170,7 +170,6 @@ public class ObserveWebUsersHelper { public void store(ObserveWebUsers users, Writer writer) throws YamlException { - YamlWriter yamlWriter = new YamlWriter(writer, createConfig()); if (users instanceof ObserveWebUsersImmutable) { ===================================== services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties ===================================== --- a/services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties +++ b/services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties @@ -159,7 +159,7 @@ observe.common.startLogValue=Corredera de mañana (millas) observe.common.startTime=Fecha - Heuro de inicio de validez observe.common.status=Estado observe.common.stomacFullness=Nivel de llenado del estomago -observe.common.supportVesselName=Nombre del supply +observe.common.supportVesselName=Nombre del Macicero observe.common.surroundingActivity=Actividad circundante observe.common.swivelWeight=Peso de el destorcedor (kg) observe.common.targetCatch=Captura de atún View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/857afc9ad536f878b98fff2f71… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/857afc9ad536f878b98fff2f71… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] Set charset when creating a delete script (See #729)
by Tony CHEMIT 13 Jun '17

13 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: 857afc9a by Tony CHEMIT at 2017-06-13T12:10:46+02:00 Set charset when creating a delete script (See #729) - - - - - 1 changed file: - services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java Changes: ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java @@ -31,7 +31,14 @@ import fr.ird.observe.services.service.AddSqlScriptProducerResult; import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.topia.ObserveServiceTopia; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.nio.charset.StandardCharsets; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.zip.GZIPOutputStream; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.service.sql.batch.SqlRequests; @@ -40,13 +47,6 @@ import org.nuiton.topia.service.sql.batch.TopiaSqlBatchService; import org.nuiton.topia.service.sql.batch.actions.BlobsContainer; import org.nuiton.topia.service.sql.batch.actions.TopiaSqlTableSelectArgument; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.zip.GZIPOutputStream; import static fr.ird.observe.entities.Entities.IS_LONGLINE_ID; import static fr.ird.observe.entities.Entities.IS_SEINE_ID; @@ -98,7 +98,7 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement } try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out))) { + try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out), StandardCharsets.UTF_8)) { TopiaSqlBatchService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlBatchService(); SqlRequests.Builder builder = sqlBatchService.requestBuilder().to(writer); @@ -115,7 +115,7 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement } } - protected SqlRequests sqlRequests(AddSqlScriptProducerRequest request, SqlRequests.Builder builder) { + private SqlRequests sqlRequests(AddSqlScriptProducerRequest request, SqlRequests.Builder builder) { boolean h2 = request.isH2(); @@ -193,7 +193,7 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement return builder.build(); } - protected SqlRequests sqlRequests(DeleteSqlScriptProducerRequest request, SqlRequests.Builder builder) { + private SqlRequests sqlRequests(DeleteSqlScriptProducerRequest request, SqlRequests.Builder builder) { ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext(); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/857afc9ad536f878b98fff2f713… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/857afc9ad536f878b98fff2f713… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] Set charset when creating a dump (See #729)
by Tony CHEMIT 13 Jun '17

13 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: 62644877 by Tony CHEMIT at 2017-06-13T12:05:26+02:00 Set charset when creating a dump (See #729) - - - - - 1 changed file: - services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java Changes: ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java @@ -31,6 +31,7 @@ import fr.ird.observe.services.service.AddSqlScriptProducerResult; import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.topia.ObserveServiceTopia; +import java.nio.charset.StandardCharsets; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.service.sql.batch.SqlRequests; @@ -67,7 +68,7 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { ImmutableSet.Builder<ObserveBlobsContainer> observeBlobContainers = ImmutableSet.builder(); - try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out))) { + try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out), StandardCharsets.UTF_8)) { TopiaSqlBatchService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlBatchService(); SqlRequests.Builder builder = sqlBatchService.requestBuilder().to(writer); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6264487766df9e2a84821b25ef2… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6264487766df9e2a84821b25ef2… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] Add charset option to h2 restore sql command (See #729)
by Tony CHEMIT 13 Jun '17

13 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: 005c946b by Tony CHEMIT at 2017-06-13T11:24:54+02:00 Add charset option to h2 restore sql command (See #729) - - - - - 1 changed file: - entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java Changes: ===================================== entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java ===================================== --- a/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -24,8 +24,24 @@ package fr.ird.observe; import com.google.common.collect.ImmutableSet; import fr.ird.observe.entities.Entities; -import fr.ird.observe.entities.migration.ObserveMigrationConfigurationProvider; import fr.ird.observe.entities.migration.ObserveMigrationEngine; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.EnumSet; +import java.util.LinkedHashSet; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.zip.GZIPInputStream; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; @@ -43,17 +59,6 @@ import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTablesFactory; import org.nuiton.util.StringUtil; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.EnumSet; -import java.util.LinkedHashSet; -import java.util.Objects; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.Stream; - public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicationContext implements TopiaMetadataModelSupport { /** @@ -61,9 +66,9 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat */ private static final Log log = LogFactory.getLog(ObserveTopiaApplicationContext.class); - public static final String MIGRATION_SERVICE_NAME = "migration"; + static final String MIGRATION_SERVICE_NAME = "migration"; - public static final String SQL_BATCH_SERVICE_NAME = "sqlBatch"; + static final String SQL_BATCH_SERVICE_NAME = "sqlBatch"; private static final String CREATE_SCHEMA_SCRIPT = "CREATE SCHEMA OBSERVE_COMMON;\n" @@ -78,19 +83,17 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat protected boolean open; protected final String authenticationToken; - protected final TopiaMetadataModelSupport topiaMetadataModelSupport; - protected final TopiaSqlTablesFactory topiaSqlTablesFactory; - protected final ObserveMigrationConfigurationProvider observeMigrationConfigurationProvider; - protected TopiaSqlTables tripSeineTables; - protected TopiaSqlTables tripLonglineTables; - protected TopiaSqlTables referentialTables; + private final TopiaMetadataModelSupport topiaMetadataModelSupport; + private final TopiaSqlTablesFactory topiaSqlTablesFactory; + private TopiaSqlTables tripSeineTables; + private TopiaSqlTables tripLonglineTables; + private TopiaSqlTables referentialTables; public ObserveTopiaApplicationContext(ObserveTopiaConfiguration topiaConfiguration) { super(topiaConfiguration); this.authenticationToken = UUID.randomUUID().toString(); this.topiaMetadataModelSupport = new TopiaMetadataModelSupportImpl("fr.ird.observe", "Observe"); this.topiaSqlTablesFactory = new TopiaSqlTablesFactory(getMetadataModel(), this); - this.observeMigrationConfigurationProvider = ObserveMigrationConfigurationProvider.get(); } @Override @@ -146,8 +149,8 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat try (ObserveTopiaPersistenceContext topiaPersistenceContext = newPersistenceContext()) { String sql = Stream.concat(Entities.REFERENCE_ENTITIES_LIST.stream(), Entities.DATA_ENTITIES_LIST.stream()) - .map(entity -> String.format(INSERT_LAST_UPDATE_PATTERN, entity.ordinal(), entity.getContract().getCanonicalName())) - .collect(Collectors.joining("\n")); + .map(entity -> String.format(INSERT_LAST_UPDATE_PATTERN, entity.ordinal(), entity.getContract().getCanonicalName())) + .collect(Collectors.joining("\n")); topiaPersistenceContext.getSqlSupport().executeSql(sql); topiaPersistenceContext.commit(); @@ -170,7 +173,7 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat } - protected void executeSqlStatements0(byte... content) throws IOException { + private void executeSqlStatements0(byte... content) throws IOException { if (getConfiguration().isH2Configuration()) { @@ -178,7 +181,32 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat log.info(String.format("Restore script size: %s to h2 from file : %s", StringUtil.convertMemory(content.length), tempFile.toString())); try { Files.write(tempFile, content); - JdbcH2Helper jdbcH2Helper = new JdbcH2Helper(configuration); + JdbcH2Helper jdbcH2Helper = new JdbcH2Helper(configuration) { + @Override + public void restore(File file) throws FileNotFoundException { + String options = ""; + InputStream in = null; + try { + in = new BufferedInputStream(new FileInputStream(file)); + in.mark(2); + // read header to see if is compressed file + int b = in.read(); + // redundant cast : int magic = ((int) in.read() << 8) | b; + int magic = in.read() << 8 | b; + in.reset(); + if (magic == GZIPInputStream.GZIP_MAGIC) { + options += " COMPRESSION GZIP"; + } + in.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + IOUtils.closeQuietly(in); + } + options += " CHARSET 'UTF8'"; + runUpdate("RUNSCRIPT FROM '" + file.getAbsolutePath() + "'" + options); + } + }; jdbcH2Helper.restore(tempFile.toFile()); } finally { Files.delete(tempFile); @@ -462,8 +490,8 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat private static class TripReplicateTablesPredicate implements TopiaSqlTablesFactory.TopiaSqlTablesPredicate { - protected final Set<TopiaMetadataEntity> dones = new LinkedHashSet<>(); - protected final Set<String> sectionsHolders = ImmutableSet.of( + final Set<TopiaMetadataEntity> dones = new LinkedHashSet<>(); + final Set<String> sectionsHolders = ImmutableSet.of( ObserveEntityEnum.CatchLongline.name(), ObserveEntityEnum.Tdr.name() ); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/005c946b96e9373eece221e2ed5… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/005c946b96e9373eece221e2ed5… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] libellés dans Exporter les données (See #730)
by Tony CHEMIT 12 Jun '17

12 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: c307bf30 by Tony CHEMIT at 2017-06-12T18:02:25+02:00 libellés dans Exporter les données (See #730) - - - - - 4 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java - application-swing/src/main/resources/i18n/application-swing_en_GB.properties - application-swing/src/main/resources/i18n/application-swing_es_ES.properties - application-swing/src/main/resources/i18n/application-swing_fr_FR.properties Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java @@ -200,8 +200,10 @@ public class AdminUIHandler { ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); - model.setCentralSourceLabel(t("observe.storage.config.target.storage")); + model.setLocalSourceLabel(t("observe.storage.config.exportSource.storage")); + model.setCentralSourceLabel(t("observe.storage.config.exportTarget.storage")); + configUI.getLocalSourceConfig().setBorder(new TitledBorder(model.getLocalSourceLabel())); configUI.getCentralSourceConfig().setBorder(new TitledBorder(model.getCentralSourceLabel())); } ===================================== application-swing/src/main/resources/i18n/application-swing_en_GB.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -1555,6 +1555,8 @@ observe.storage.config.data.mode=Data import mode observe.storage.config.data.storage=Data source cConfiguration observe.storage.config.export.required.read.data=You need to have read/write permissions on remove data source data observe.storage.config.export.required.read.referentiel=You need to have read/write permissions on remove referential source data +observe.storage.config.exportSource.storage=Configuration of data source to export +observe.storage.config.exportTarget.storage=Configuration of target data source observe.storage.config.left.storage=Left data source configuration observe.storage.config.referentiel.mode=Referential import mode observe.storage.config.referentiel.storage=Central data source configuration ===================================== application-swing/src/main/resources/i18n/application-swing_es_ES.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -1555,11 +1555,13 @@ observe.storage.config.data.mode=Modo de importación de los datos observe.storage.config.data.storage=Configuración de la base de datos observe.storage.config.export.required.read.data=Debe tener derechos de lectura sobre los datos de la base remota observe.storage.config.export.required.read.referentiel=Debe tener derechos de lectura sobre el referencial de la base remota +observe.storage.config.exportSource.storage=Configuration de la base à exporter +observe.storage.config.exportTarget.storage=Configuración de la base de datos de destino observe.storage.config.left.storage=Configuración de la base de la izquierda observe.storage.config.referentiel.mode=Modo de importación del referencial observe.storage.config.referentiel.storage=Configuración de la base de referencia observe.storage.config.right.storage=Configuration de la base de la derecha -observe.storage.config.source.storage=Configuración de la base para actualizar +observe.storage.config.source.storage=Configuración de la base de la izquierda observe.storage.config.target.storage=Configuración de la base de datos de destino observe.storage.error.badUrl=Error en el formato de la dirección (URL) %s observe.storage.error.dbVersionMismatch=La versión de la base remota (%s) no es compatible con la versión del modelo (%s). ===================================== application-swing/src/main/resources/i18n/application-swing_fr_FR.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -1555,6 +1555,8 @@ observe.storage.config.data.mode=Mode d'import des données observe.storage.config.data.storage=Configuration de la base de données observe.storage.config.export.required.read.data=Vous devez posséder les droits de lecture sur les données de la base distante observe.storage.config.export.required.read.referentiel=Vous devez posséder les droits de lecture sur le référentiel de la base distante +observe.storage.config.exportSource.storage=Configuration de la base à exporter +observe.storage.config.exportTarget.storage=Configuration de la base destination observe.storage.config.left.storage=Configuration de la base de gauche observe.storage.config.referentiel.mode=Mode d'import du référentiel observe.storage.config.referentiel.storage=Configuration de la base de référence View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/c307bf303de28e06a291592fb36… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/c307bf303de28e06a291592fb36… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-5.x] Problème d'UI/menu contextuel lors du déplacement d'items (routes, activités) (See #768)
by Tony CHEMIT 12 Jun '17

12 Jun '17
Tony CHEMIT pushed to branch develop-5.x at ultreiaio / ird-observe Commits: 1c750803 by Tony CHEMIT at 2017-06-12T17:37:32+02:00 Problème d&#39;UI/menu contextuel lors du déplacement d&#39;items (routes, activités) (See #768) - - - - - 26 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx - + application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivityLonglineUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivityLonglinesUIAction.java - + application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivitySeineUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivitySeinesUIAction.java - + application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveMultipleDataUIActionSupport.java - + application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveRouteUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveRoutesUIAction.java - + application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveSingleDataUIActionSupport.java - + application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripLonglineUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripLonglinesUIAction.java - + application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripSeineUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripSeinesUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveTripNodeMenuPopulator.java → application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripsUIAction.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveNavigationTreeShowPopupAction.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeActivityRouteActionListener.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeActivityTripActionListener.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeRouteTripActionListener.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeTripProgramActionListener.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/NodeChangeActionListener.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveActivityLonglineNodeMenuPopulator.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveActivitySeineNodeMenuPopulator.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveNodeMenuPopulator.java - − application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveRouteNodeMenuPopulator.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ObserveNode.java Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx @@ -86,7 +86,7 @@ <JPopupMenu id='scopeDownPopup'/> <JPopupMenu id='navigationPopup'> <JMenuItem id="navigationNoAction"/> - <JMenu id="navigationMoveAction"/> + <JMenuItem id="navigationMoveAction"/> <JMenuItem id="navigationOpenAction"/> <JMenuItem id="navigationCloseAction"/> <JMenuItem id="navigationDeleteAction"/> ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivityLonglineUIAction.java ===================================== --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivityLonglineUIAction.java @@ -0,0 +1,123 @@ +/* + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ird.observe.application.swing.ui.actions.shared; + +import fr.ird.observe.application.swing.ObserveOpenDataManager; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; +import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.application.swing.ui.tree.node.TripLonglineNode; +import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import java.util.Optional; +import javax.swing.JOptionPane; + + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * Action pour changer le programme d'une ou plusieurs marée dans la liste. + * + * @author Tony Chemit - dev(a)ultreia.io + * @since 5.0 + */ +public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport { + + private static final long serialVersionUID = 1L; + + public static final String ACTION_NAME = "moveActivityLongline"; + + public MoveActivityLonglineUIAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + n("observe.navigationMenu.move.activityLongline"), + n("observe.navigationMenu.move.activityLongline"), + "move-activities" + ); + } + + @Override + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return chooseNewTripLongline(mainUI, oldParentNode); + } + + @Override + int moveData(ObserveServicesProvider servicesProvider, ObserveOpenDataManager openDataManager, String oldParentId, String newParentId, String dataId) { + + return servicesProvider.newActivityLonglineService().moveActivityLonglineToTripLongline(dataId, newParentId); + } + + @Override + void closeNode(ObserveOpenDataManager openDataManager, String dataId) { + if (openDataManager.isOpenActivityLongline(dataId)) { + openDataManager.closeActivityLongline(dataId); + } + } + + @Override + ObserveNode getNewParentNode(ObserveTreeHelper treeHelper, ObserveNode grandParentNode, String newParentId) { + ObserveNode tripLonglineNode = treeHelper.getChild(grandParentNode, newParentId); + String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); + return treeHelper.getChild(tripLonglineNode, activitiesNodeId); + } + + static Optional<String> chooseNewTripLongline(ObserveMainUI ui, ObserveNode oldParentNode) { + + ObserveNode programNode = oldParentNode.getParent(); + String oldTripLonglineId = oldParentNode.getId(); + int tripLonglineNb = programNode.getChildCount(); + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + DataReferenceDecorator<TripLonglineDto> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripLonglineDto.class); + + //on crée un tableau avec une marée en moins car on ne propose pas la marée actuelle + DecoratedNodeEntity[] decoratedTripLonglines = new DecoratedNodeEntity[tripLonglineNb - 1]; + + int j = 0; + for (int i = 0; i < tripLonglineNb; i++) { + + TripLonglineNode tripLonglineNode = (TripLonglineNode) programNode.getChildAt(i); + + String tripLonglineId = tripLonglineNode.getId(); + + if (!oldTripLonglineId.equals(tripLonglineId)) { + decoratedTripLonglines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripLonglineNode, decorator); + } + } + + Object decoratedTripLongline = JOptionPane.showInputDialog(ui, + t("observe.action.choose.tripLongline.message"), + t("observe.action.choose.tripLongline.title"), + JOptionPane.QUESTION_MESSAGE, + null, + decoratedTripLonglines, + null); + return Optional.ofNullable(decoratedTripLongline != null ? ((DecoratedNodeEntity) decoratedTripLongline).getId() : null); + } + +} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivityLonglinesUIAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivityLonglinesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivityLonglinesUIAction.java @@ -24,31 +24,17 @@ package fr.ird.observe.application.swing.ui.actions.shared; import fr.ird.observe.application.swing.ObserveOpenDataManager; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.list.impl.longline.ActivityLonglinesUI; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.node.TripLonglineNode; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; -import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.services.service.longline.ActivityLonglineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; -import java.awt.event.ActionEvent; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; + import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Action pour changer le programme d'une ou plusieurs marée dans la liste. @@ -56,15 +42,10 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin (Code Lutin) * @since 5.0 */ -public class MoveActivityLonglinesUIAction extends AbstractUIAction { +public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSupport<ActivityLonglinesUI> { private static final long serialVersionUID = 1L; - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(MoveActivityLonglinesUIAction.class); - public static final String ACTION_NAME = "moveActivityLonglines"; public MoveActivityLonglinesUIAction(ObserveMainUI mainUI) { @@ -72,95 +53,23 @@ public class MoveActivityLonglinesUIAction extends AbstractUIAction { ACTION_NAME, n("observe.content.action.move.activities.longline"), n("observe.content.action.move.activities.longline.tip"), - "move-activities" + "move-activities", + ActivityLonglinesUI.class ); } @Override - public void actionPerformed(final ActionEvent e) { - - SwingUtilities.invokeLater(() -> { - JComponent c = (JComponent) e.getSource(); - ContentUI<?> ui = (ContentUI<?>) - c.getClientProperty("ui"); - if (ui == null) { - throw new IllegalStateException( - "could not find client property " + - "ui on component" + c); - } - - if (!(ui instanceof ActivityLonglinesUI)) { - throw new IllegalStateException("Can not come here!"); - } - ActivityLonglinesUI activityLonglinesUI = (ActivityLonglinesUI) ui; - - - // get current triplongline id - ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); - ObserveNode oldActivitiesNode = treeHelper.getSelectedNode(); - ObserveNode oldTripLonglineNode = oldActivitiesNode.getParent(); - - // choose the new tripLongline - String tripLonglineId = chooseNewTripLongline(ui, oldTripLonglineNode); - - if (tripLonglineId != null) { - - if (log.isInfoEnabled()) { - log.info("Will move activities to trip: " + tripLonglineId); - } - // change the tripLongline of the selected activities - List<DataReference<ActivityLonglineDto>> selectedDatas = activityLonglinesUI.getModel().getSelectedDatas(); - List<String> activityIds = selectedDatas.stream() - .map(DataReference.ID_FUNCTION) - .collect(Collectors.toList()); - ActivityLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLonglineService(); -// List<Integer> positions = - service.moveActivityLonglinesToTripLongline(activityIds, tripLonglineId); - - // update the tree - updateTree(oldActivitiesNode, tripLonglineId, activityIds); - } - - }); - + List<Integer> moveData(List<String> dataIds, String newParentId, ObserveServicesProvider servicesProvider) { + return servicesProvider.newActivityLonglineService().moveActivityLonglinesToTripLongline(dataIds, newParentId); } - protected String chooseNewTripLongline(ContentUI<?> ui, ObserveNode oldTripLonglineNode) { - ObserveNode programNode = oldTripLonglineNode.getParent(); - String oldTripLonglineId = oldTripLonglineNode.getId(); - int tripLonglineNb = programNode.getChildCount(); - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - DataReferenceDecorator<TripLonglineDto> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripLonglineDto.class); - - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuelle - DecoratedNodeEntity[] decoratedTripLonglines = new DecoratedNodeEntity[tripLonglineNb - 1]; - - int j = 0; - for (int i = 0; i < tripLonglineNb; i++) { - - TripLonglineNode tripLonglineNode = (TripLonglineNode) programNode.getChildAt(i); - - String tripLonglineId = tripLonglineNode.getId(); - - if (!oldTripLonglineId.equals(tripLonglineId)) { - decoratedTripLonglines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripLonglineNode, decorator); - } - } - - Object decoratedTripLongline = JOptionPane.showInputDialog(ui, - t("observe.action.choose.tripLongline.message"), - t("observe.action.choose.tripLongline.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripLonglines, - null); - return decoratedTripLongline != null ? ((DecoratedNodeEntity) decoratedTripLongline).getId() : null; + @Override + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return MoveActivityLonglineUIAction.chooseNewTripLongline(getMainUI(), oldParentNode); } - protected void updateTree(ObserveNode oldActivitiesNode, - String tripLonglineId, - List<String> activityIds) { + @Override + void updateUI(ActivityLonglinesUI ui, ObserveNode oldActivitiesNode, String tripLonglineId, List<String> activityIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); @@ -179,9 +88,7 @@ public class MoveActivityLonglinesUIAction extends AbstractUIAction { .findFirst(); // If so, we close it to avoid ending up with an open activity into a closed trip. - if (openActivity.isPresent()) { - openDataManager.closeActivityLongline(openActivity.get()); - } + openActivity.ifPresent(openDataManager::closeActivityLongline); // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivitySeineUIAction.java ===================================== --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivitySeineUIAction.java @@ -0,0 +1,123 @@ +/* + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ird.observe.application.swing.ui.actions.shared; + +import fr.ird.observe.application.swing.ObserveOpenDataManager; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; +import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.application.swing.ui.tree.node.RouteSeineNode; +import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.seine.ActivitySeineDto; +import fr.ird.observe.services.dto.seine.RouteDto; +import java.util.Optional; +import javax.swing.JOptionPane; + + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * Action pour changer le programme d'une ou plusieurs marée dans la liste. + * + * @author Tony Chemit - dev(a)ultreia.io + * @since 5.0 + */ +public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { + + private static final long serialVersionUID = 1L; + + public static final String ACTION_NAME = "moveActivitySeine"; + + public MoveActivitySeineUIAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + n("observe.navigationMenu.move.activitySeine"), + n("observe.navigationMenu.move.activitySeine"), + "move-activities" + ); + } + + @Override + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return chooseNewRoute(mainUI, oldParentNode); + } + + @Override + int moveData(ObserveServicesProvider servicesProvider, ObserveOpenDataManager openDataManager, String oldParentId, String newParentId, String dataId) { + return servicesProvider.newActivitySeineService().moveActivitySeineToRoute(dataId, newParentId); + } + + @Override + void closeNode(ObserveOpenDataManager openDataManager, String dataId) { + if (openDataManager.isOpenActivitySeine(dataId)) { + openDataManager.closeActivitySeine(dataId); + } + } + + @Override + ObserveNode getNewParentNode(ObserveTreeHelper treeHelper, ObserveNode grandParentNode, String newParentId) { + ObserveNode routeNode = treeHelper.getChild(grandParentNode, newParentId); + String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); + return treeHelper.getChild(routeNode, activitiesNodeId); + } + + static Optional<String> chooseNewRoute(ObserveMainUI mainUI, ObserveNode oldParentNode) { + + ObserveNode routesNode = oldParentNode.getParent(); + String oldRouteId = oldParentNode.getId(); + int routeNb = routesNode.getChildCount(); + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + DataReferenceDecorator<RouteDto> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(RouteDto.class); + + //on crée un tableau avec une route en moins car on ne propose pas la route actuel + DecoratedNodeEntity[] decoratedRoutes = new DecoratedNodeEntity[routeNb - 1]; + + int j = 0; + for (int i = 0; i < routeNb; i++) { + + RouteSeineNode routeNode = (RouteSeineNode) routesNode.getChildAt(i); + + String routeId = routeNode.getId(); + + if (!oldRouteId.equals(routeId)) { + decoratedRoutes[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, decorator); + } + } + + Object decoratedRoute = JOptionPane.showInputDialog(mainUI, + t("observe.action.choose.route.message"), + t("observe.action.choose.route.title"), + JOptionPane.QUESTION_MESSAGE, + null, + decoratedRoutes, + null); + + return Optional.ofNullable(decoratedRoute != null ? ((DecoratedNodeEntity) decoratedRoute).getId() : null); + } + +} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivitySeinesUIAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivitySeinesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveActivitySeinesUIAction.java @@ -24,32 +24,17 @@ package fr.ird.observe.application.swing.ui.actions.shared; import fr.ird.observe.application.swing.ObserveOpenDataManager; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.list.impl.seine.ActivitySeinesUI; -import fr.ird.observe.application.swing.ui.content.list.impl.seine.ActivitySeinesUIModel; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.node.RouteSeineNode; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.dto.seine.ActivitySeineDto; -import fr.ird.observe.services.dto.seine.RouteDto; -import fr.ird.observe.services.service.seine.ActivitySeineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; -import java.awt.event.ActionEvent; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; + import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Action pour changer le programme d'une ou plusieurs marée dans la liste. @@ -57,15 +42,10 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin (Code Lutin) * @since 5.0 */ -public class MoveActivitySeinesUIAction extends AbstractUIAction { +public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport<ActivitySeinesUI> { private static final long serialVersionUID = 1L; - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(MoveActivitySeinesUIAction.class); - public static final String ACTION_NAME = "moveActivitySeines"; public MoveActivitySeinesUIAction(ObserveMainUI mainUI) { @@ -73,115 +53,46 @@ public class MoveActivitySeinesUIAction extends AbstractUIAction { ACTION_NAME, n("observe.content.action.move.activities.seine"), n("observe.content.action.move.activities.seine.tip"), - "move-activities" + "move-activities", + ActivitySeinesUI.class ); } @Override - public void actionPerformed(final ActionEvent e) { - - SwingUtilities.invokeLater(() -> { - JComponent c = (JComponent) e.getSource(); - ContentUI<?> ui = (ContentUI<?>) - c.getClientProperty("ui"); - if (ui == null) { - throw new IllegalStateException( - "could not find client property " + - "ui on component" + c); - } - - if (!(ui instanceof ActivitySeinesUI)) { - throw new IllegalStateException("Can not come here!"); - } - - // get current route id - ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); - ObserveNode oldActivitiesNode = treeHelper.getSelectedNode(); - ObserveNode oldRouteNode = oldActivitiesNode.getParent(); - - // choose the new route - String routeId = chooseNewRoute(ui, oldRouteNode); - - if (routeId != null) { - // change the route of the selected activities - List<DataReference<ActivitySeineDto>> selectedDatas = ((ActivitySeinesUIModel) ui.getModel()).getSelectedDatas(); - List<String> activityIds = selectedDatas.stream() - .map(DataReference.ID_FUNCTION) - .collect(Collectors.toList()) ; - ActivitySeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); - List<Integer> positions = service.moveActivitySeinesToRoute(activityIds, routeId); - - // update the tree - updateTree(oldActivitiesNode, routeId, activityIds); - } - - }); - + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return MoveActivitySeineUIAction.chooseNewRoute(getMainUI(), oldParentNode); } - protected String chooseNewRoute(ContentUI<?> ui, ObserveNode oldRouteNode) { - ObserveNode routesNode = oldRouteNode.getParent(); - String oldRouteId = oldRouteNode.getId(); - int routeNb = routesNode.getChildCount(); - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - DataReferenceDecorator<RouteDto> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(RouteDto.class); - - //on crée un tableau avec une route en moins car on ne propose pas la route actuel - DecoratedNodeEntity[] decoratedRoutes = new DecoratedNodeEntity[routeNb - 1]; - - int j = 0; - for (int i = 0; i < routeNb; i++) { - - RouteSeineNode routeNode = (RouteSeineNode) routesNode.getChildAt(i); - - String routeId = routeNode.getId(); - - if (!oldRouteId.equals(routeId)) { - decoratedRoutes[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, decorator); - } - } - - Object decoratedRoute = JOptionPane.showInputDialog(ui, - t("observe.action.choose.route.message"), - t("observe.action.choose.route.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedRoutes, - null); - - return decoratedRoute != null ? ((DecoratedNodeEntity) decoratedRoute).getId() : null; + @Override + List<Integer> moveData(List<String> dataIds, String newParentId, ObserveServicesProvider servicesProvider) { + return servicesProvider.newActivitySeineService().moveActivitySeinesToRoute(dataIds, newParentId); } - protected void updateTree(ObserveNode oldActivitiesNode, - String routeId, - List<String> activityIds) { + @Override + void updateUI(ActivitySeinesUI ui, ObserveNode oldParentNode, String newParentId, List<String> dataIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); - ObserveNode oldRouteNode = oldActivitiesNode.getParent(); + ObserveNode oldRouteNode = oldParentNode.getParent(); ObserveNode routesNode = oldRouteNode.getParent(); - ObserveNode tripNode = routesNode.getParent(); - ObserveNode newRouteNode = treeHelper.getChild(routesNode, routeId); + ObserveNode newRouteNode = treeHelper.getChild(routesNode, newParentId); String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); ObserveNode newActivitiesNode = treeHelper.getChild(newRouteNode, activitiesNodeId); // Let's check if we're moving an open activity - Optional<String> openActivity = activityIds + Optional<String> openActivity = dataIds .stream() .filter(openDataManager::isOpenActivitySeine) .findFirst(); // If so, we close it to avoid ending up with an open activity into a closed route. - if (openActivity.isPresent()) { - openDataManager.closeActivitySeine(openActivity.get()); - } + openActivity.ifPresent(openDataManager::closeActivitySeine); // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees - treeHelper.reloadNodeSubTree(oldActivitiesNode, true); + treeHelper.reloadNodeSubTree(oldParentNode, true); treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveMultipleDataUIActionSupport.java ===================================== --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveMultipleDataUIActionSupport.java @@ -0,0 +1,69 @@ +package fr.ird.observe.application.swing.ui.actions.shared; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.content.ContentUI; +import fr.ird.observe.application.swing.ui.content.list.ContentListUI; +import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.DataReference; +import java.awt.event.ActionEvent; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import javax.swing.JComponent; + +/** + * Created by tchemit on 12/06/17. + * + * @author Tony Chemit - dev(a)tchemit.fr + */ +public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, ?>> extends AbstractUIAction { + + private final Class<U> uiType; + + MoveMultipleDataUIActionSupport(ObserveMainUI mainUI, String actionId, String label, String shortDescription, String actionIcon, Class<U> uiType) { + super(mainUI, actionId, label, shortDescription, actionIcon); + this.uiType = uiType; + } + + @Override + public final void actionPerformed(ActionEvent e) { + + JComponent c = (JComponent) e.getSource(); + ContentUI<?> ui1 = (ContentUI<?>) c.getClientProperty("ui"); + if (ui1 == null) { + throw new IllegalStateException("could not find client property ui on component" + c); + } + if (!uiType.isAssignableFrom(ui1.getClass())) { + throw new IllegalStateException("Can not come here!"); + } + + @SuppressWarnings("unchecked") U ui = (U) ui1; + + ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + ObserveNode node = treeHelper.getSelectedNode(); + + ObserveNode oldParentNode = node.getParent().isRoot() ? node : node.getParent(); + + Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); + + if (optionalNewParentId.isPresent()) { + + List<String> dataIds = ui.getModel().getSelectedDatas().stream().map(DataReference.ID_FUNCTION).collect(Collectors.toList()); + + List<Integer> positions = moveData(dataIds, optionalNewParentId.get(), ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider()); + + updateUI(ui, node, optionalNewParentId.get(), dataIds, positions); + } + + } + + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode); + + abstract List<Integer> moveData(List<String> dataIds, String newParentId, ObserveServicesProvider servicesProvider); + + abstract void updateUI(U ui, ObserveNode oldParentNode, String newParentId, List<String> dataIds, List<Integer> positions); + +} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveRouteUIAction.java ===================================== --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveRouteUIAction.java @@ -0,0 +1,121 @@ +/* + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ird.observe.application.swing.ui.actions.shared; + +import fr.ird.observe.application.swing.ObserveOpenDataManager; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; +import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.application.swing.ui.tree.node.TripSeineNode; +import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.seine.RouteDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import java.util.Optional; +import javax.swing.JOptionPane; + + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * Action pour changer le programme d'une ou plusieurs marée dans la liste. + * + * @author Tony Chemit - dev(a)ultreia.io + * @since 5.0 + */ +public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { + + private static final long serialVersionUID = 1L; + + public static final String ACTION_NAME = "moveRoute"; + + public MoveRouteUIAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + n("observe.navigationMenu.move.route"), + n("observe.navigationMenu.move.route"), + "move-routes" + ); + } + + @Override + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return chooseNewTripSeine(mainUI, oldParentNode); + } + + @Override + int moveData(ObserveServicesProvider servicesProvider, ObserveOpenDataManager openDataManager, String oldParentId, String newParentId, String dataId) { + return servicesProvider.newRouteService().moveRouteToTripSeine(dataId, newParentId); + } + + @Override + void closeNode(ObserveOpenDataManager openDataManager, String dataId) { + if (openDataManager.isOpenRoute(dataId)) { + openDataManager.closeRoute(dataId); + } + } + + @Override + ObserveNode getNewParentNode(ObserveTreeHelper treeHelper, ObserveNode grandParentNode, String newParentId) { + ObserveNode tripNode = treeHelper.getChild(grandParentNode, newParentId); + String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); + return treeHelper.getChild(tripNode, routesNodeId); + } + + static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, ObserveNode oldTripSeineNode) { + ObserveNode programNode = oldTripSeineNode.getParent(); + String oldTripSeineId = oldTripSeineNode.getId(); + int tripSeineNb = programNode.getChildCount(); + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + DataReferenceDecorator<TripSeineDto> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripSeineDto.class); + + //on crée un tableau avec une marée en moins car on ne propose pas la marée actuel + DecoratedNodeEntity[] decoratedTripSeines = new DecoratedNodeEntity[tripSeineNb - 1]; + + int j = 0; + for (int i = 0; i < tripSeineNb; i++) { + + TripSeineNode tripSeineNode = (TripSeineNode) programNode.getChildAt(i); + + String tripSeineId = tripSeineNode.getId(); + + if (!oldTripSeineId.equals(tripSeineId)) { + decoratedTripSeines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripSeineNode, decorator); + } + } + + Object decoratedTripSeine = JOptionPane.showInputDialog(mainUI, + t("observe.action.choose.tripSeine.message"), + t("observe.action.choose.tripSeine.title"), + JOptionPane.QUESTION_MESSAGE, + null, + decoratedTripSeines, + null); + return Optional.ofNullable(decoratedTripSeine != null ? ((DecoratedNodeEntity) decoratedTripSeine).getId() : null); + } + +} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveRoutesUIAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveRoutesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveRoutesUIAction.java @@ -24,31 +24,17 @@ package fr.ird.observe.application.swing.ui.actions.shared; import fr.ird.observe.application.swing.ObserveOpenDataManager; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.list.impl.seine.RoutesUI; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.node.TripSeineNode; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.dto.seine.RouteDto; -import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.seine.RouteService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; -import java.awt.event.ActionEvent; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; + import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Action pour changer le programme d'une ou plusieurs marée dans la liste. @@ -56,15 +42,10 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin (Code Lutin) * @since 5.0 */ -public class MoveRoutesUIAction extends AbstractUIAction { +public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI> { private static final long serialVersionUID = 1L; - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(MoveRoutesUIAction.class); - public static final String ACTION_NAME = "moveRoutes"; public MoveRoutesUIAction(ObserveMainUI mainUI) { @@ -72,88 +53,23 @@ public class MoveRoutesUIAction extends AbstractUIAction { ACTION_NAME, n("observe.content.action.move.routes"), n("observe.content.action.move.routes.tip"), - "move-routes" + "move-routes", + RoutesUI.class ); } @Override - public void actionPerformed(final ActionEvent e) { - - SwingUtilities.invokeLater(() -> { - JComponent c = (JComponent) e.getSource(); - ContentUI<?> ui = (ContentUI<?>) - c.getClientProperty("ui"); - if (ui == null) { - throw new IllegalStateException( - "could not find client property " + - "ui on component" + c); - } - - if (!(ui instanceof RoutesUI)) { - throw new IllegalStateException("Can not come here!"); - } - - RoutesUI theUi = (RoutesUI) ui; - - // get current tripseine id - ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); - ObserveNode oldRoutesNode = treeHelper.getSelectedNode(); - ObserveNode oldTripSeineNode = oldRoutesNode.getParent(); - - // choose the new tripseine - String tripSeineId = chooseNewTripSeine(theUi, oldTripSeineNode); - - if (tripSeineId != null) { - // change the tripseine of the selected routes - List<DataReference<RouteDto>> selectedDatas = theUi.getModel().getSelectedDatas(); - List<String> routeIds = selectedDatas.stream().map(DataReference.ID_FUNCTION).collect(Collectors.toList()); - RouteService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); - List<Integer> positions = service.moveRoutesToTripSeine(routeIds, tripSeineId); - - // update the tree - updateTree(oldRoutesNode, tripSeineId, routeIds); - } - - }); - + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return MoveRouteUIAction.chooseNewTripSeine(getMainUI(), oldParentNode); } - protected String chooseNewTripSeine(ContentUI<?> ui, ObserveNode oldTripSeineNode) { - ObserveNode programNode = oldTripSeineNode.getParent(); - String oldTripSeineId = oldTripSeineNode.getId(); - int tripSeineNb = programNode.getChildCount(); - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - DataReferenceDecorator<TripSeineDto> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripSeineDto.class); - - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuel - DecoratedNodeEntity[] decoratedTripSeines = new DecoratedNodeEntity[tripSeineNb - 1]; - - int j = 0; - for (int i = 0; i < tripSeineNb; i++) { - - TripSeineNode tripSeineNode = (TripSeineNode) programNode.getChildAt(i); - - String tripSeineId = tripSeineNode.getId(); - - if (!oldTripSeineId.equals(tripSeineId)) { - decoratedTripSeines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripSeineNode, decorator); - } - } - - Object decoratedTripSeine = JOptionPane.showInputDialog(ui, - t("observe.action.choose.tripSeine.message"), - t("observe.action.choose.tripSeine.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripSeines, - null); - return decoratedTripSeine != null ? ((DecoratedNodeEntity) decoratedTripSeine).getId() : null; + @Override + List<Integer> moveData(List<String> dataIds, String newParentId, ObserveServicesProvider servicesProvider) { + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService().moveRoutesToTripSeine(dataIds, newParentId); } - protected void updateTree(ObserveNode oldRoutesNode, - String tripSeineId, - List<String> routeIds) { + @Override + void updateUI(RoutesUI ui, ObserveNode oldRoutesNode, String tripSeineId, List<String> routeIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); @@ -172,9 +88,7 @@ public class MoveRoutesUIAction extends AbstractUIAction { .findFirst(); // If so, we close it to avoid ending up with an open route into a closed trip. - if (openRoute.isPresent()) { - openDataManager.closeRoute(openRoute.get()); - } + openRoute.ifPresent(openDataManager::closeRoute); // Let's reload the sub tree of each routes node. // As the change have already be done in database, we just call the child loaders to regenerate the routes nodes sub trees ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveSingleDataUIActionSupport.java ===================================== --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveSingleDataUIActionSupport.java @@ -0,0 +1,71 @@ +package fr.ird.observe.application.swing.ui.actions.shared; + +import fr.ird.observe.application.swing.ObserveOpenDataManager; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.services.ObserveServicesProvider; +import java.awt.event.ActionEvent; +import java.util.Optional; + +/** + * Created by tchemit on 12/06/17. + * + * @author Tony Chemit - dev(a)tchemit.fr + */ +public abstract class MoveSingleDataUIActionSupport extends AbstractUIAction { + + MoveSingleDataUIActionSupport(ObserveMainUI mainUI, String actionId, String label, String shortDescription, String actionIcon) { + super(mainUI, actionId, label, shortDescription, actionIcon); + } + + @Override + public final void actionPerformed(ActionEvent e) { + + ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + ObserveNode node = treeHelper.getSelectedNode(); + ObserveNode oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); + Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); + + optionalNewParentId.ifPresent(newParentId -> apply(oldParentNode, node.getId(), newParentId)); + } + + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode); + + private void apply(ObserveNode oldParentNode, String dataId, String newParentId) { + + ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + + ObserveNode node = treeHelper.getSelectedNode(); + ObserveNode grandParentNode = oldParentNode.getParent(); + ObserveNode newParentNode = getNewParentNode(getMainUI().getTreeHelper(), grandParentNode, newParentId); + + closeNode(ObserveSwingApplicationContext.get().getOpenDataManager(), node.getId()); + + int position = moveData(ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider(), ObserveSwingApplicationContext.get().getOpenDataManager(), oldParentNode.getId(), newParentId, dataId); + + treeHelper.selectNode(newParentNode); + + treeHelper.removeNode(node); + + ObserveNode newNode = treeHelper.getChild(newParentNode, dataId); + + if (newNode == null) { + + treeHelper.insertNode(newParentNode, node, position); + newNode = node; + } + + treeHelper.refreshNode(oldParentNode, false); + treeHelper.refreshNode(newParentNode, false); + treeHelper.selectNode(newNode); + + } + + abstract int moveData(ObserveServicesProvider servicesProvider, ObserveOpenDataManager openDataManager, String oldParentId, String newParentId, String dataId); + + abstract void closeNode(ObserveOpenDataManager openDataManager, String dataId); + + abstract ObserveNode getNewParentNode(ObserveTreeHelper treeHelper, ObserveNode grandParentNode, String newParentId); +} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripLonglineUIAction.java ===================================== --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripLonglineUIAction.java @@ -0,0 +1,50 @@ +package fr.ird.observe.application.swing.ui.actions.shared; + +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.application.swing.ObserveOpenDataManager; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.constants.GearType; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 5.0 + */ +public class MoveTripLonglineUIAction extends MoveTripUIAction { + + private static final long serialVersionUID = 1L; + + public static final String ACTION_NAME = "moveTripLongline"; + + public MoveTripLonglineUIAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME, GearType.longline); + } + + @Override + int moveData(ObserveServicesProvider servicesProvider, ObserveOpenDataManager openDataManager, String oldParentId, String newParentId, String dataId) { + int position = servicesProvider.newTripLonglineService().moveTripLonglineToProgram(dataId, newParentId); + super.moveData(servicesProvider, openDataManager, oldParentId, newParentId, dataId); + return position; + } +} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripLonglinesUIAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripLonglinesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripLonglinesUIAction.java @@ -22,18 +22,13 @@ package fr.ird.observe.application.swing.ui.actions.shared; * #L% */ -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.constants.GearType; -import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.list.impl.longline.TripLonglinesUI; import fr.ird.observe.application.swing.ui.content.list.impl.longline.TripLonglinesUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.constants.GearType; +import fr.ird.observe.services.dto.longline.TripLonglineDto; import java.util.ArrayList; import java.util.List; @@ -41,43 +36,24 @@ import java.util.List; * @author Kevin Morin (Code Lutin) * @since 5.0 */ -public class MoveTripLonglinesUIAction extends MoveTripsUIAction<TripLonglineDto> { +public class MoveTripLonglinesUIAction extends MoveTripsUIAction<TripLonglinesUI> { private static final long serialVersionUID = 1L; - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(MoveTripLonglinesUIAction.class); - public static final String ACTION_NAME = "moveTripLonglines"; public MoveTripLonglinesUIAction(ObserveMainUI mainUI) { - super(mainUI, ACTION_NAME); - } - - @Override - protected void checkUIClass(ContentUI<?> ui) throws IllegalStateException { - if (!(ui instanceof TripLonglinesUI)) { - throw new IllegalStateException("Can not come here!"); - } - } - - @Override - protected GearType getGearType(ContentUI<?> ui) { - return GearType.longline; + super(mainUI, ACTION_NAME, GearType.longline, TripLonglinesUI.class); } @Override - protected List<Integer> getPositions(List<String> tripIds, String programId) { - TripLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); - return service.moveTripLonglinesToProgram(tripIds, programId); + List<Integer> moveData(List<String> dataIds, String newParentId, ObserveServicesProvider servicesProvider) { + return servicesProvider.newTripLonglineService().moveTripLonglinesToProgram(dataIds, newParentId); } @Override - protected void updateModelData(ContentUI<?> ui) { - TripLonglinesUI tripLonglinesUI = (TripLonglinesUI) ui; - TripLonglinesUIModel model = tripLonglinesUI.getModel(); + protected void updateModelData(TripLonglinesUI ui) { + TripLonglinesUIModel model = ui.getModel(); List<DataReference<TripLonglineDto>> data = new ArrayList<>(model.getData()); data.removeAll(model.getSelectedDatas()); model.setData(data); ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripSeineUIAction.java ===================================== --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripSeineUIAction.java @@ -0,0 +1,50 @@ +package fr.ird.observe.application.swing.ui.actions.shared; + +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.application.swing.ObserveOpenDataManager; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.constants.GearType; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 5.0 + */ +public class MoveTripSeineUIAction extends MoveTripUIAction { + + private static final long serialVersionUID = 1L; + + public static final String ACTION_NAME = "moveTripSeine"; + + public MoveTripSeineUIAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME, GearType.seine); + } + + @Override + int moveData(ObserveServicesProvider servicesProvider, ObserveOpenDataManager openDataManager, String oldParentId, String newParentId, String dataId) { + int position = servicesProvider.newTripSeineService().moveTripSeineToProgram(dataId, newParentId); + super.moveData(servicesProvider, openDataManager, oldParentId, newParentId, dataId); + return position; + } +} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripSeinesUIAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripSeinesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripSeinesUIAction.java @@ -23,17 +23,14 @@ package fr.ird.observe.application.swing.ui.actions.shared; */ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.content.list.impl.seine.TripSeinesUI; +import fr.ird.observe.application.swing.ui.content.list.impl.seine.TripSeinesUIModel; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.services.service.seine.TripSeineService; -import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.content.ContentUI; -import fr.ird.observe.application.swing.ui.content.list.impl.seine.TripSeinesUI; -import fr.ird.observe.application.swing.ui.content.list.impl.seine.TripSeinesUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - import java.util.ArrayList; import java.util.List; @@ -41,43 +38,24 @@ import java.util.List; * @author Kevin Morin (Code Lutin) * @since 5.0 */ -public class MoveTripSeinesUIAction extends MoveTripsUIAction<TripSeineDto> { +public class MoveTripSeinesUIAction extends MoveTripsUIAction<TripSeinesUI> { private static final long serialVersionUID = 1L; - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(MoveTripSeinesUIAction.class); - public static final String ACTION_NAME = "moveTripSeines"; public MoveTripSeinesUIAction(ObserveMainUI mainUI) { - super(mainUI, ACTION_NAME); - } - - @Override - protected void checkUIClass(ContentUI<?> ui) throws IllegalStateException { - if (!(ui instanceof TripSeinesUI)) { - throw new IllegalStateException("Can not come here!"); - } - } - - @Override - protected GearType getGearType(ContentUI<?> ui) { - return GearType.seine; + super(mainUI, ACTION_NAME, GearType.seine, TripSeinesUI.class); } @Override - protected List<Integer> getPositions(List<String> tripIds, String programId) { - TripSeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); - return service.moveTripSeinesToProgram(tripIds, programId); + List<Integer> moveData(List<String> dataIds, String newParentId, ObserveServicesProvider servicesProvider) { + return servicesProvider.newTripSeineService().moveTripSeinesToProgram(dataIds, newParentId); } @Override - protected void updateModelData(ContentUI<?> ui) { - TripSeinesUI tripSeinesUI = (TripSeinesUI) ui; - TripSeinesUIModel model = tripSeinesUI.getModel(); + protected void updateModelData(TripSeinesUI ui) { + TripSeinesUIModel model = ui.getModel(); List<DataReference<TripSeineDto>> data = new ArrayList<>(model.getData()); data.removeAll(model.getSelectedDatas()); model.setData(data); ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveTripNodeMenuPopulator.java → application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripUIAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveTripNodeMenuPopulator.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripUIAction.java @@ -1,6 +1,4 @@ -package fr.ird.observe.application.swing.ui.tree.menu; - -/*- +/* * #%L * ObServe :: Application Swing * %% @@ -8,7 +6,7 @@ package fr.ird.observe.application.swing.ui.tree.menu; * %% * 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 + * 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, @@ -16,64 +14,96 @@ package fr.ird.observe.application.swing.ui.tree.menu; * 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 + * 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% */ +package fr.ird.observe.application.swing.ui.actions.shared; +import fr.ird.observe.application.swing.ObserveOpenDataManager; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.IdHelper; -import fr.ird.observe.services.dto.constants.GearType; -import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; +import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; import fr.ird.observe.application.swing.ui.tree.node.ProgramLonglineNode; import fr.ird.observe.application.swing.ui.tree.node.ProgramSeineNode; -import fr.ird.observe.application.swing.ui.tree.actions.ChangeTripProgramActionListener; -import fr.ird.observe.application.swing.ui.tree.actions.NodeChangeActionListener; import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; - +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.IdHelper; +import fr.ird.observe.services.dto.constants.GearType; +import fr.ird.observe.services.dto.referential.ProgramDto; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import javax.swing.JOptionPane; + + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** - * @author Kevin Morin (Code Lutin) + * Action pour changer le programme d'une ou plusieurs marée dans la liste. + * + * @author Tony Chemit - dev(a)tchemit.fr * @since 5.0 */ -public class MoveTripNodeMenuPopulator extends MoveNodeMenuPopulator { +public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { + + private static final long serialVersionUID = 1L; + + public static final String ACTION_NAME = "moveTrip"; + + private final GearType gearType; + + MoveTripUIAction(ObserveMainUI mainUI, String actionName, GearType gearType) { + super(mainUI, + actionName, + n("observe.navigationMenu.move.trip"), + n("observe.navigationMenu.move.trip"), + "move-trips" + ); + this.gearType = gearType; + } @Override - public NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String id, - String parentId) { - return new ChangeTripProgramActionListener(treeHelper, dataSource, id, parentId); + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return chooseNewProgram(mainUI, gearType, oldParentNode.getId()); } @Override - public List<DecoratedNodeEntity> getPossibleParentNodes(ObserveNode tripNode, ObserveTreeHelper treeHelper) { + int moveData(ObserveServicesProvider servicesProvider, ObserveOpenDataManager openDataManager, String oldParentId, String newParentId, String dataId) { - // noeud du programme parent - ObserveNode parentNode = tripNode.getParent(); + // Close old program and open new program + if (openDataManager.isOpen(dataId)) { + openDataManager.closeProgram(oldParentId); + openDataManager.openProgram(newParentId); + } - // programmes du même type que le noeud de marée, sans le parent actuel - List<DecoratedNodeEntity> possibleParents = new ArrayList<>(); + // hum, we do NOT use this value (concrete classes define it) + return 0; + } - // noeud longline ? - GearType gearType = IdHelper.isLonglineId(tripNode.getId()) ? GearType.longline : GearType.seine; + @Override + void closeNode(ObserveOpenDataManager openDataManager, String dataId) { + // Don't do anything : trip should stay open when being transferred + } - // racine - ObserveNode rootNode = treeHelper.getRootNode(); + @Override + ObserveNode getNewParentNode(ObserveTreeHelper treeHelper, ObserveNode grandParentNode, String newParentId) { + return treeHelper.getChild(grandParentNode, newParentId); + } - createPossibleParents(parentNode.getId(), possibleParents, gearType, rootNode); + static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldProgramId) { - return possibleParents; - } + ObserveTreeHelper treeHelper = mainUI.getTreeHelper(); + + // racine + ObserveNode rootNode = treeHelper.getRootNode(); - public static void createPossibleParents(String oldProgramId, List<DecoratedNodeEntity> possibleParents, GearType gearType, ObserveNode rootNode) { + //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel + List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); ReferentialReferenceDecorator<ProgramDto> programDecorator = ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(ProgramDto.class); @@ -89,17 +119,30 @@ public class MoveTripNodeMenuPopulator extends MoveNodeMenuPopulator { if (programNode instanceof ProgramSeineNode && GearType.seine == gearType) { ProgramSeineNode node = (ProgramSeineNode) programNode; - possibleParents.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); + decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); } else if (programNode instanceof ProgramLonglineNode && GearType.longline == gearType) { ProgramLonglineNode node = (ProgramLonglineNode) programNode; - possibleParents.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); + decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); } } } + + DecoratedNodeEntity[] decoratedPrograms = + decoratedProgramList.toArray(new DecoratedNodeEntity[decoratedProgramList.size()]); + + DecoratedNodeEntity decoratedProgram = (DecoratedNodeEntity) JOptionPane.showInputDialog(mainUI, + t("observe.action.choose.program.message"), + t("observe.action.choose.program.title"), + JOptionPane.QUESTION_MESSAGE, + null, + decoratedPrograms, + null); + + return Optional.ofNullable(decoratedProgram == null ? null : decoratedProgram.getId()); } } ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripsUIAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripsUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/MoveTripsUIAction.java @@ -23,29 +23,18 @@ package fr.ird.observe.application.swing.ui.actions.shared; import fr.ird.observe.application.swing.ObserveOpenDataManager; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.services.dto.DataDto; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.content.ContentUI; -import fr.ird.observe.application.swing.ui.content.list.ContentListUIModel; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.application.swing.ui.content.list.ContentListUI; import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.menu.MoveTripNodeMenuPopulator; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; +import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.services.dto.constants.GearType; +import java.util.List; +import java.util.Optional; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; -import java.awt.event.ActionEvent; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Action pour changer le programme d'une ou plusieurs marée dans la liste. @@ -53,118 +42,55 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin (Code Lutin) * @since 5.0 */ -public abstract class MoveTripsUIAction<T extends DataDto> extends AbstractUIAction { +public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?>> extends MoveMultipleDataUIActionSupport<U> { private static final long serialVersionUID = 1L; - /** - * Logger. - */ private static final Log log = LogFactory.getLog(MoveTripsUIAction.class); public static final String ACTION_NAME = "moveTrips"; + private final GearType gearType; + + protected abstract void updateModelData(U ui); - public MoveTripsUIAction(ObserveMainUI mainUI, String actionName) { + MoveTripsUIAction(ObserveMainUI mainUI, String actionName, GearType gearType, Class<U> uiType) { super(mainUI, actionName, n("observe.content.action.move.trips"), n("observe.content.action.move.trips.tip"), - "move-trips" + "move-trips", + uiType ); + this.gearType = gearType; } @Override - public void actionPerformed(final ActionEvent e) { - - SwingUtilities.invokeLater(() -> { - JComponent c = (JComponent) e.getSource(); - ContentUI<?> ui = (ContentUI<?>) - c.getClientProperty("ui"); - if (ui == null) { - throw new IllegalStateException( - "could not find client property " + - "ui on component" + c); - } - - checkUIClass(ui); - - // get current program id - ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); - ObserveNode oldProgramNode = treeHelper.getSelectedNode(); - String oldProgramId = oldProgramNode.getId(); - - // choose the new program - String programId = chooseNewProgram(ui, oldProgramId); - - if (programId != null) { - - // change the program of the selected trips - List<DataReference<T>> selectedDatas = ((ContentListUIModel) ui.getModel()).getSelectedDatas(); - List<String> tripIds = selectedDatas.stream().map(DataReference.ID_FUNCTION).collect(Collectors.toList()); - List<Integer> positions = getPositions(tripIds, programId); - - // update the tree - updateTree(ui, oldProgramNode, oldProgramId, programId, tripIds, positions); - } - - }); - + Optional<String> getNewParentId(ObserveMainUI mainUI, ObserveNode oldParentNode) { + return MoveTripUIAction.chooseNewProgram(getMainUI(), gearType, oldParentNode.getId()); } - protected String chooseNewProgram(ContentUI<?> ui, String oldProgramId) { - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); - - GearType geartype = getGearType(ui); - - // racine - ObserveNode rootNode = treeHelper.getRootNode(); - - //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel - List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); - - MoveTripNodeMenuPopulator.createPossibleParents(oldProgramId, decoratedProgramList, geartype, rootNode); - - DecoratedNodeEntity[] decoratedPrograms = - decoratedProgramList.toArray(new DecoratedNodeEntity[decoratedProgramList.size()]); - - DecoratedNodeEntity decoratedProgram = (DecoratedNodeEntity) JOptionPane.showInputDialog(ui, - t("observe.action.choose.program.message"), - t("observe.action.choose.program.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedPrograms, - null); - - return decoratedProgram == null ? null : decoratedProgram.getId(); - } + @Override + void updateUI(U ui, ObserveNode oldParentNode, String newParentId, List<String> dataIds, List<Integer> positions) { - protected void updateTree(ContentUI<?> ui, - ObserveNode oldProgramNode, - String oldProgramId, - String programId, - List<String> tripIds, - List<Integer> positions) { + String oldProgramId = oldParentNode.getId(); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); ObserveNode rootNode = treeHelper.getRootNode(); - ObserveNode newProgramNode = treeHelper.getChild(rootNode, programId); + ObserveNode newProgramNode = treeHelper.getChild(rootNode, newParentId); for (int i = 0, s = positions.size(); i < s; i++) { - String tripId = tripIds.get(i); - ObserveNode tripNode = treeHelper.getChild(oldProgramNode, tripId); + String tripId = dataIds.get(i); + ObserveNode tripNode = treeHelper.getChild(oldParentNode, tripId); boolean wasOpen = tripNode.isOpen(); treeHelper.removeNode(tripNode); if (wasOpen) { openDataManager.closeProgram(oldProgramId); - openDataManager.openProgram(programId); + openDataManager.openProgram(newParentId); } ObserveNode newTripNode = treeHelper.getChild(newProgramNode, tripId); @@ -181,17 +107,9 @@ public abstract class MoveTripsUIAction<T extends DataDto> extends AbstractUIAct updateModelData(ui); - treeHelper.reloadNode(oldProgramNode, true); + treeHelper.reloadNode(oldParentNode, true); treeHelper.reloadNode(newProgramNode, true); treeHelper.selectNode(newProgramNode); } - protected abstract void checkUIClass(ContentUI<?> ui) throws IllegalStateException; - - protected abstract GearType getGearType(ContentUI<?> ui); - - protected abstract List<Integer> getPositions(List<String> tripIds, String programId); - - protected abstract void updateModelData(ContentUI<?> ui); - } ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveNavigationTreeShowPopupAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveNavigationTreeShowPopupAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveNavigationTreeShowPopupAction.java @@ -23,24 +23,23 @@ package fr.ird.observe.application.swing.ui.tree; */ import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; import fr.ird.observe.application.swing.ObserveOpenDataManager; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; +import fr.ird.observe.application.swing.ui.actions.shared.MoveActivityLonglineUIAction; +import fr.ird.observe.application.swing.ui.actions.shared.MoveActivitySeineUIAction; +import fr.ird.observe.application.swing.ui.actions.shared.MoveRouteUIAction; +import fr.ird.observe.application.swing.ui.actions.shared.MoveTripLonglineUIAction; +import fr.ird.observe.application.swing.ui.actions.shared.MoveTripSeineUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.open.ContentOpenableUI; -import fr.ird.observe.application.swing.ui.tree.menu.MoveActivityLonglineNodeMenuPopulator; -import fr.ird.observe.application.swing.ui.tree.menu.MoveActivitySeineNodeMenuPopulator; -import fr.ird.observe.application.swing.ui.tree.menu.MoveNodeMenuPopulator; -import fr.ird.observe.application.swing.ui.tree.menu.MoveRouteNodeMenuPopulator; -import fr.ird.observe.application.swing.ui.tree.menu.MoveTripNodeMenuPopulator; import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import jaxx.runtime.SwingUtil; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; @@ -49,16 +48,8 @@ import javax.swing.JTree; import javax.swing.MenuElement; import javax.swing.SwingUtilities; import javax.swing.tree.TreePath; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.List; - -import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * Created on 1/8/15. @@ -76,15 +67,6 @@ public class ObserveNavigationTreeShowPopupAction { private static final String ACTIVITY_SEINE_MENU_ITEMS = "activitySeine"; private static final String ACTIVITY_LONGLINE_MENU_ITEMS = "activityLongline"; - static { - n("observe.navigationMenu.move.trip"); - n("observe.navigationMenu.move.route"); - n("observe.navigationMenu.move.activitySeine"); - n("observe.navigationMenu.move.activityLongline"); - } - - private final ObserveTreeHelper treeHelper; - private final JPopupMenu popup; private final JTree tree; @@ -95,11 +77,8 @@ public class ObserveNavigationTreeShowPopupAction { private final JMenuItem moveAction; private final JMenuItem deleteAction; - private final ImmutableMap<String, MoveNodeMenuPopulator> moveNodeDataByNodeType; - public ObserveNavigationTreeShowPopupAction(ObserveTreeHelper treeHelper, JScrollPane pane, JPopupMenu popup) { - this.treeHelper = treeHelper; this.popup = popup; this.tree = treeHelper.getUI(); @@ -135,11 +114,6 @@ public class ObserveNavigationTreeShowPopupAction { this.moveAction = moveComponent; this.deleteAction = deleteActionComponent; - moveNodeDataByNodeType = ImmutableMap.of(TRIP_MENU_ITEMS, new MoveTripNodeMenuPopulator(), - ROUTE_MENU_ITEMS, new MoveRouteNodeMenuPopulator(), - ACTIVITY_SEINE_MENU_ITEMS, new MoveActivitySeineNodeMenuPopulator(), - ACTIVITY_LONGLINE_MENU_ITEMS, new MoveActivityLonglineNodeMenuPopulator()); - KeyAdapter keyAdapter = new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { @@ -163,7 +137,7 @@ public class ObserveNavigationTreeShowPopupAction { pane.addMouseListener(mouseAdapter); } - protected void autoSelectNodeInTree(MouseEvent e) { + private void autoSelectNodeInTree(MouseEvent e) { boolean rightClick = SwingUtilities.isRightMouseButton(e); @@ -204,7 +178,7 @@ public class ObserveNavigationTreeShowPopupAction { } } - public void openNodeMenu(KeyEvent e) { + private void openNodeMenu(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_CONTEXT_MENU && !tree.isSelectionEmpty()) { @@ -226,7 +200,7 @@ public class ObserveNavigationTreeShowPopupAction { } } - protected void showPopup(int row, Point p) { + private void showPopup(int row, Point p) { if (log.isInfoEnabled()) { log.info("Will show popup from row: " + row); @@ -244,7 +218,7 @@ public class ObserveNavigationTreeShowPopupAction { } - protected void beforeOpenPopup(ObserveNode selectedNode) { + private void beforeOpenPopup(ObserveNode selectedNode) { // clean popup popup.removeAll(); @@ -295,64 +269,47 @@ public class ObserveNavigationTreeShowPopupAction { } } - protected void beforeOpenMenu(ObserveNode selectedNode, String nodeType) { + private void beforeOpenMenu(ObserveNode selectedNode, String nodeType) { if (log.isInfoEnabled()) { log.info("Will load popup for " + nodeType + " node."); } - MoveNodeMenuPopulator moveNodeData = moveNodeDataByNodeType.get(nodeType); - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ContentUI<?> selectedContentUI = applicationContext.getContentUIManager().getSelectedContentUI(); if (selectedNode.isOpen()) { - closeAction.putClientProperty("ui", applicationContext.getContentUIManager().getSelectedContentUI()); + closeAction.putClientProperty("ui", selectedContentUI); popup.add(closeAction); } else { - openAction.putClientProperty("ui", applicationContext.getContentUIManager().getSelectedContentUI()); + openAction.putClientProperty("ui", selectedContentUI); popup.add(openAction); } - moveAction.setText(t("observe.navigationMenu.move." + nodeType)); - moveAction.setToolTipText(t("observe.navigationMenu.move." + nodeType)); - moveAction.setIcon(SwingUtil.getUIManagerActionIcon("move-" + nodeType)); - popup.add(moveAction); - - moveAction.removeAll(); - - // get the available program for the trip - - String id = selectedNode.getId(); - - ObserveSwingDataSource dataSource = treeHelper.getDataProvider().getDataSource(); - - List<DecoratedNodeEntity> possibleParentNodes = moveNodeData.getPossibleParentNodes(selectedNode, treeHelper); - - for (DecoratedNodeEntity possibleParent : possibleParentNodes) { - - String possibleParentId = possibleParent.getId(); - JMenuItem item = new JMenuItem(possibleParent.toString()); - item.setName(possibleParentId); - - - item.addActionListener(moveNodeData.createChangeActionListener(treeHelper, - dataSource, - id, - possibleParentId)); - - moveAction.add(item); + if (selectedNode.isTripSeineNode()) { + moveAction.setAction(new MoveTripSeineUIAction(applicationContext.getMainUI())); + } else if (selectedNode.isTripLonglineNode()) { + moveAction.setAction(new MoveTripLonglineUIAction(applicationContext.getMainUI())); + } else if (selectedNode.isRouteNode()) { + moveAction.setAction(new MoveRouteUIAction(applicationContext.getMainUI())); + } else if (selectedNode.isActivitySeineNode()) { + moveAction.setAction(new MoveActivitySeineUIAction(applicationContext.getMainUI())); + } else if (selectedNode.isActivityLonglineNode()) { + moveAction.setAction(new MoveActivityLonglineUIAction(applicationContext.getMainUI())); } - deleteAction.putClientProperty("ui", applicationContext.getContentUIManager().getSelectedContentUI()); + popup.add(moveAction); + + deleteAction.putClientProperty("ui", selectedContentUI); deleteAction.setEnabled(selectedNode.isOpen()); popup.add(deleteAction); } - protected boolean isRowSelected(int requiredRow) { + private boolean isRowSelected(int requiredRow) { boolean result = false; @@ -372,7 +329,7 @@ public class ObserveNavigationTreeShowPopupAction { } - protected int getLowestSelectedRowCount() { + private int getLowestSelectedRowCount() { Preconditions.checkState(!tree.isSelectionEmpty()); ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeActivityRouteActionListener.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeActivityRouteActionListener.java +++ /dev/null @@ -1,87 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.actions; - -/* - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - - -import fr.ird.observe.application.swing.ObserveOpenDataManager; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.services.dto.seine.ActivitySeineDto; -import fr.ird.observe.services.service.seine.ActivitySeineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 1/9/15. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 3.11 - */ -public class ChangeActivityRouteActionListener extends NodeChangeActionListener { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ChangeActivityRouteActionListener.class); - - public ChangeActivityRouteActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String activityId, - String routeId) { - super(treeHelper, activityId, routeId); - } - - @Override - protected void closeNode(String activityId) { - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); - - if (openDataManager.isOpenActivitySeine(activityId)) { - openDataManager.closeActivitySeine(activityId); - } - } - - @Override - protected ObserveNode getParentNode(ObserveNode node) { - return node.getParent().getParent(); - } - - @Override - protected ObserveNode getNewParentNode(ObserveNode grandParentNode, String parentNodeId) { - ObserveNode routeNode = getTreeHelper().getChild(grandParentNode, parentNodeId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - return getTreeHelper().getChild(routeNode, activitiesNodeId); - } - - @Override - protected int moveNodeToParent(String nodeId, String parentNodeId, String oldParentNodeId) { - int position; - - ActivitySeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); - position = service.moveActivitySeineToRoute(nodeId, parentNodeId); - - return position; - } - -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeActivityTripActionListener.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeActivityTripActionListener.java +++ /dev/null @@ -1,89 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.actions; - -/* - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - - -import fr.ird.observe.application.swing.ObserveOpenDataManager; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.services.dto.longline.ActivityLonglineDto; -import fr.ird.observe.services.service.longline.ActivityLonglineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 1/9/15. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 3.11 - */ -public class ChangeActivityTripActionListener extends NodeChangeActionListener { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ChangeActivityTripActionListener.class); - - public ChangeActivityTripActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String activityId, - String tripLonglineId) { - super(treeHelper, activityId, tripLonglineId); - } - - @Override - protected void closeNode(String activityId) { - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); - - if (openDataManager.isOpenActivityLongline(activityId)) { - openDataManager.closeActivityLongline(activityId); - } - } - - @Override - protected ObserveNode getParentNode(ObserveNode node) { - return node.getParent().getParent(); - } - - @Override - protected ObserveNode getNewParentNode(ObserveNode grandParentNode, String parentNodeId) { - ObserveNode tripLonglineNode = getTreeHelper().getChild(grandParentNode, parentNodeId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - return getTreeHelper().getChild(tripLonglineNode, activitiesNodeId); - } - - @Override - protected int moveNodeToParent(String nodeId, String parentNodeId, String oldParentNodeId) { - int position; - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - ActivityLonglineService service = applicationContext.getMainDataSourceServicesProvider().newActivityLonglineService(); - position = service.moveActivityLonglineToTripLongline(nodeId, parentNodeId); - - return position; - } - -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeRouteTripActionListener.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeRouteTripActionListener.java +++ /dev/null @@ -1,86 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.actions; - -/* - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - - -import fr.ird.observe.application.swing.ObserveOpenDataManager; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.services.dto.seine.RouteDto; -import fr.ird.observe.services.service.seine.RouteService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 1/9/15. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 3.11 - */ -public class ChangeRouteTripActionListener extends NodeChangeActionListener { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ChangeRouteTripActionListener.class); - - public ChangeRouteTripActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String routeId, - String tripId) { - super(treeHelper, routeId, tripId); - } - - @Override - protected void closeNode(String routeId) { - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); - - if (openDataManager.isOpenRoute(routeId)) { - openDataManager.closeRoute(routeId); - } - } - - @Override - protected ObserveNode getParentNode(ObserveNode node) { - return node.getParent().getParent(); - } - - @Override - protected ObserveNode getNewParentNode(ObserveNode grandParentNode, String parentNodeId) { - ObserveNode tripNode = getTreeHelper().getChild(grandParentNode, parentNodeId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - return getTreeHelper().getChild(tripNode, routesNodeId); - } - - @Override - protected int moveNodeToParent(String nodeId, String parentNodeId, String oldParentNodeId) { - int position; - - RouteService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); - position = service.moveRouteToTripSeine(nodeId, parentNodeId); - - return position; - } -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeTripProgramActionListener.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/ChangeTripProgramActionListener.java +++ /dev/null @@ -1,95 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.actions; - -/* - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - - -import fr.ird.observe.application.swing.ObserveOpenDataManager; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.services.ObserveServicesProvider; -import fr.ird.observe.services.dto.IdHelper; -import fr.ird.observe.services.service.longline.TripLonglineService; -import fr.ird.observe.services.service.seine.TripSeineService; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 1/9/15. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 3.11 - */ -public class ChangeTripProgramActionListener extends NodeChangeActionListener { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ChangeTripProgramActionListener.class); - - public ChangeTripProgramActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String tripId, - String programId) { - super(treeHelper, tripId, programId); - } - - @Override - protected void closeNode(String tripId) { - // Don't do anything : trip should stay open when being transferred - } - - @Override - protected ObserveNode getParentNode(ObserveNode node) { - return node.getParent(); - } - - @Override - protected ObserveNode getNewParentNode(ObserveNode grandParentNode, String parentNodeId) { - return getTreeHelper().getChild(grandParentNode, parentNodeId); - } - - @Override - protected int moveNodeToParent(String nodeId, String parentNodeId, String oldParentNodeId) { - int position; - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveServicesProvider servicesProvider = applicationContext.getMainDataSourceServicesProvider(); - if (IdHelper.isTripLonglineId(nodeId)) { - TripLonglineService service = servicesProvider.newTripLonglineService(); - position = service.moveTripLonglineToProgram(nodeId, parentNodeId); - - } else { - TripSeineService service = servicesProvider.newTripSeineService(); - position = service.moveTripSeineToProgram(nodeId, parentNodeId); - } - - // Close old program and open new program - ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); - if (openDataManager.isOpen(nodeId)) { - openDataManager.closeProgram(oldParentNodeId); - openDataManager.openProgram(parentNodeId); - } - - return position; - } -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/NodeChangeActionListener.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/actions/NodeChangeActionListener.java +++ /dev/null @@ -1,102 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.actions; - -/* - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - - -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -/** - * Created on 1/9/15. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 3.11 - */ -public abstract class NodeChangeActionListener implements ActionListener { - - /** Logger. */ - private static final Log log = LogFactory.getLog(NodeChangeActionListener.class); - - private final String nodeId; - - private final String parentNodeId; - - private final ObserveTreeHelper treeHelper; - - public NodeChangeActionListener(ObserveTreeHelper treeHelper, - String nodeId, - String parentNodeId) { - this.nodeId = nodeId; - this.parentNodeId = parentNodeId; - this.treeHelper = treeHelper; - } - - @Override - public void actionPerformed(ActionEvent event) { - - ObserveNode node = treeHelper.getSelectedNode(); - ObserveNode oldParentNode = getParentNode(node); - ObserveNode grandParentNode = oldParentNode.getParent(); - ObserveNode newParentNode = getNewParentNode(grandParentNode, parentNodeId); - - closeNode(node.getId()); - - int position = moveNodeToParent(nodeId, parentNodeId, oldParentNode.getId()); - - treeHelper.selectNode(newParentNode); - - treeHelper.removeNode(node); - - ObserveNode newNode = treeHelper.getChild(newParentNode, nodeId); - - if (newNode == null) { - - // create it - if (log.isInfoEnabled()) { - log.info("Insert node: "); - } - treeHelper.insertNode(newParentNode, node, position); - newNode = node; - } - - treeHelper.selectNode(newNode); - - } - - protected ObserveTreeHelper getTreeHelper() { - return treeHelper; - } - - protected abstract void closeNode(String nodeId); - - protected abstract ObserveNode getParentNode(ObserveNode node); - - protected abstract ObserveNode getNewParentNode(ObserveNode grandParentNode, String parentNodeId); - - protected abstract int moveNodeToParent(String nodeId, String parentNodeId, String oldParentNodeId); -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveActivityLonglineNodeMenuPopulator.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveActivityLonglineNodeMenuPopulator.java +++ /dev/null @@ -1,85 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.menu; - -/*- - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.IdHelper; -import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.application.swing.decoration.DecoratorService; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.node.TripLonglineNode; -import fr.ird.observe.application.swing.ui.tree.actions.ChangeActivityTripActionListener; -import fr.ird.observe.application.swing.ui.tree.actions.NodeChangeActionListener; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class MoveActivityLonglineNodeMenuPopulator extends MoveNodeMenuPopulator { - - @Override - public NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String id, - String parentId) { - return new ChangeActivityTripActionListener(treeHelper, dataSource, id, parentId); - } - - @Override - public List<DecoratedNodeEntity> getPossibleParentNodes(ObserveNode activityLonglineNode, ObserveTreeHelper treeHelper) { - - // noeud de marée parent - ObserveNode parentNode = activityLonglineNode.getParent().getParent(); - - // noeud de route de la marée sans le parent actuel - List<DecoratedNodeEntity> possibleParents = new ArrayList<>(); - - // noeud du programme - ObserveNode programNode = parentNode.getParent(); - - DecoratorService decoratorService = treeHelper.getTreeCellRenderer().getDecoratorService(); - DataReferenceDecorator<TripLonglineDto> tripDecorator = decoratorService.getDataReferenceDecorator(TripLonglineDto.class); - - for (int i = 0, n = programNode.getChildCount(); i < n; i++) { - - TripLonglineNode tripNode = (TripLonglineNode) programNode.getChildAt(i); - String tripId = tripNode.getId(); - - // si le noeud de marée n'est pas le même que le parent actuel - // si le noeud est bien un noeud de marée longline - if (!parentNode.equals(tripNode) && IdHelper.isTripLonglineId(tripId)) { - - possibleParents.add(DecoratedNodeEntity.newDecoratedNodeEntity(tripNode, tripDecorator)); - - } - } - - return possibleParents; - } -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveActivitySeineNodeMenuPopulator.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveActivitySeineNodeMenuPopulator.java +++ /dev/null @@ -1,85 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.menu; - -/*- - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.IdHelper; -import fr.ird.observe.services.dto.seine.RouteDto; -import fr.ird.observe.application.swing.decoration.DecoratorService; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.node.RouteSeineNode; -import fr.ird.observe.application.swing.ui.tree.actions.ChangeActivityRouteActionListener; -import fr.ird.observe.application.swing.ui.tree.actions.NodeChangeActionListener; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class MoveActivitySeineNodeMenuPopulator extends MoveNodeMenuPopulator { - - @Override - public NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String id, - String parentId) { - return new ChangeActivityRouteActionListener(treeHelper, dataSource, id, parentId); - } - - @Override - public List<DecoratedNodeEntity> getPossibleParentNodes(ObserveNode activitySeineNode, ObserveTreeHelper treeHelper) { - - // noeud de route parent - ObserveNode parentNode = activitySeineNode.getParent().getParent(); - - // noeud de route de la marée sans le parent actuel - List<DecoratedNodeEntity> possibleParents = new ArrayList<>(); - - // noeud des routes de la marée - ObserveNode routesNode = parentNode.getParent(); - - DecoratorService decoratorService = treeHelper.getTreeCellRenderer().getDecoratorService(); - DataReferenceDecorator<RouteDto> routeDecorator = decoratorService.getDataReferenceDecorator(RouteDto.class); - - for (int i = 0, n = routesNode.getChildCount(); i < n; i++) { - - RouteSeineNode routeNode = (RouteSeineNode) routesNode.getChildAt(i); - String routeId = routeNode.getId(); - - // si le noeud de marée n'est pas le même que le parent actuel - // si le noeud est bien un noeud de marée seine - if (!parentNode.equals(routeNode) && IdHelper.isRouteId(routeId)) { - - possibleParents.add(DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, routeDecorator)); - - } - } - - return possibleParents; - } -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveNodeMenuPopulator.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveNodeMenuPopulator.java +++ /dev/null @@ -1,62 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.menu; - -/*- - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.actions.NodeChangeActionListener; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; - -import java.util.List; - -/** - * Objets pour créer les items du menu déplacer dans le menu contextuel de l'arbre - * - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public abstract class MoveNodeMenuPopulator { - - /** - * Crée une action pour déplacer le noeud quand on sélectionne le menu du nouveau parent - * @param treeHelper - * @param dataSource - * @param id - * @param parentId - * @return - */ - public abstract NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String id, - String parentId); - - /** - * Récupère les parents dans lesquels on peut déplacer le noeud sélectionné - * @param node le noeud sélectionné - * @param treeHelper le treehelper - * @return une liste contenant les ids et les libellés des noeuds - */ - public abstract List<DecoratedNodeEntity> getPossibleParentNodes(ObserveNode node, ObserveTreeHelper treeHelper); - -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveRouteNodeMenuPopulator.java deleted ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/menu/MoveRouteNodeMenuPopulator.java +++ /dev/null @@ -1,85 +0,0 @@ -package fr.ird.observe.application.swing.ui.tree.menu; - -/*- - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.IdHelper; -import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.application.swing.decoration.DecoratorService; -import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; -import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; -import fr.ird.observe.application.swing.ui.tree.node.TripSeineNode; -import fr.ird.observe.application.swing.ui.tree.actions.ChangeRouteTripActionListener; -import fr.ird.observe.application.swing.ui.tree.actions.NodeChangeActionListener; -import fr.ird.observe.application.swing.ui.util.DecoratedNodeEntity; -import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class MoveRouteNodeMenuPopulator extends MoveNodeMenuPopulator { - - @Override - public NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, - ObserveSwingDataSource dataSource, - String id, - String parentId) { - return new ChangeRouteTripActionListener(treeHelper, dataSource, id, parentId); - } - - @Override - public List<DecoratedNodeEntity> getPossibleParentNodes(ObserveNode routeNode, ObserveTreeHelper treeHelper) { - - // noeud de marée parent - ObserveNode parentNode = routeNode.getParent().getParent(); - - // noeud de marée du programme sans le parent actuel - List<DecoratedNodeEntity> possibleParents = new ArrayList<>(); - - // noeud du programme - ObserveNode programNode = parentNode.getParent(); - - DecoratorService decoratorService = treeHelper.getTreeCellRenderer().getDecoratorService(); - DataReferenceDecorator<TripSeineDto> tripDecorator = decoratorService.getDataReferenceDecorator(TripSeineDto.class); - - for (int i = 0, n = programNode.getChildCount(); i < n; i++) { - - TripSeineNode tripNode = (TripSeineNode) programNode.getChildAt(i); - String tripId = tripNode.getId(); - - // si le noeud de marée n'est pas le même que le parent actuel - // si le noeud est bien un noeud de marée seine - if (!parentNode.equals(tripNode) && IdHelper.isTripSeineId(tripId)) { - - possibleParents.add(DecoratedNodeEntity.newDecoratedNodeEntity(tripNode, tripDecorator)); - - } - } - - return possibleParents; - } -} ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ObserveNode.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ObserveNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ObserveNode.java @@ -105,6 +105,14 @@ public class ObserveNode extends NavTreeNode<ObserveNode> { || TripLonglineDto.class.isAssignableFrom(internalClass)); } + public boolean isTripSeineNode() { + return isDataNode() && TripSeineDto.class.isAssignableFrom(internalClass); + } + + public boolean isTripLonglineNode() { + return isDataNode() && TripLonglineDto.class.isAssignableFrom(internalClass); + } + public boolean isRouteNode() { return isDataNode() && RouteDto.class.isAssignableFrom(internalClass); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/1c750803709da1fd7e55717d772… --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/1c750803709da1fd7e55717d772… You're receiving this email because of your account on gitlab.com.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • ...
  • 720
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.