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] improve report admin action
by Tony CHEMIT 26 Sep '19

26 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 8b001306 by tchemit at 2019-09-26T12:21:32Z improve report admin action - - - - - 9 changed files: - client-core/src/main/i18n/getters/java.getter - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties Changes: ===================================== client-core/src/main/i18n/getters/java.getter ===================================== @@ -262,6 +262,8 @@ observe.actions.validate.validator.message.header.tip observe.actions.validate.validator.scope.header observe.actions.validate.validator.scope.header.tip observe.admin.report.description +observe.admin.report.no.report.found +observe.admin.report.report.count.found observe.admin.report.title observe.admin.report.title.tip observe.admin.resume.no.operation.done ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx ===================================== @@ -81,4 +81,9 @@ protected void finalize() throws Throwable { <JButton id="chooseFileReport"/> </cell> </row> + <row> + <cell columns="3" anchor="west"> + <JLabel id="reportsCountInformation" styleClass="information"/> + </cell> + </row> </Table> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss ===================================== @@ -48,3 +48,7 @@ text:{getStringValue(stepModel.getReportFile())}; } +#reportsCountInformation { + text:{handler.updateReportsCountInformation(stepModel.getReports())}; +} + ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java ===================================== @@ -6,15 +6,15 @@ * %% * 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, * 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 + * + * 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% @@ -74,7 +74,6 @@ public class ReportModel extends AdminActionModel { public static final String VALID_PROPERTY_NAME = "valid"; - /** Logger. */ private static final Logger log = LogManager.getLogger(ReportModel.class); /** Type de rapport à charger. */ @@ -155,10 +154,7 @@ public class ReportModel extends AdminActionModel { public void setAutoCopyToClipboard(boolean autoCopyToClipboard) { boolean oldValue = this.autoCopyToClipboard; this.autoCopyToClipboard = autoCopyToClipboard; - firePropertyChange(AUTO_COPY_TO_CLIPBOARD_PROPERTY_NAME, - oldValue, - autoCopyToClipboard - ); + firePropertyChange(AUTO_COPY_TO_CLIPBOARD_PROPERTY_NAME, oldValue, autoCopyToClipboard); } public boolean isCopyRowHeaders() { @@ -168,10 +164,7 @@ public class ReportModel extends AdminActionModel { public void setCopyRowHeaders(boolean copyRowHeaders) { boolean oldValue = this.copyRowHeaders; this.copyRowHeaders = copyRowHeaders; - firePropertyChange(COPY_ROW_HEADERS_PROPERTY_NAME, - oldValue, - copyRowHeaders - ); + firePropertyChange(COPY_ROW_HEADERS_PROPERTY_NAME, oldValue, copyRowHeaders); } public boolean isCopyColumnHeaders() { @@ -181,10 +174,7 @@ public class ReportModel extends AdminActionModel { public void setCopyColumnHeaders(boolean copyColumnHeaders) { boolean oldValue = this.copyColumnHeaders; this.copyColumnHeaders = copyColumnHeaders; - firePropertyChange(COPY_COLUMN_HEADERS_PROPERTY_NAME, - oldValue, - copyColumnHeaders - ); + firePropertyChange(COPY_COLUMN_HEADERS_PROPERTY_NAME, oldValue, copyColumnHeaders); } public ResultTableModel getResultModel() { @@ -205,12 +195,9 @@ public class ReportModel extends AdminActionModel { try { URL resource = reportFile.toURI().toURL(); allReports = loadReports(resource); - if (log.isDebugEnabled()) { - log.debug("Add loaded " + allReports.size() + " report(s)."); - } + log.debug(String.format("Add loaded %d report(s).", allReports.size())); } catch (IOException e) { - throw new IllegalStateException( - "Could not load reports definition file (" + reportFile + ").", e); + throw new IllegalStateException(String.format("Could not load reports definition file (%s).", reportFile), e); } } return allReports; @@ -278,14 +265,12 @@ public class ReportModel extends AdminActionModel { public void updateReports() { setSelectedReport(null); - if (reportFile==null) { + if (reportFile == null) { return; } reports = getAllReports().stream().filter(r -> modelType == r.getModelType()).collect(Collectors.toList()); firePropertyChange(REPORTS_PROPERTY_NAME, reports); - if (log.isInfoEnabled()) { - log.info("Detects " + (reports.size() - 1) + " report(s)."); - } + log.info(String.format("Detects %d report(s).", reports.size() - 1)); } public void start(AdminUIModel uiModel) { @@ -295,22 +280,17 @@ public class ReportModel extends AdminActionModel { File reportFile = ObserveResourceManager.Resource.report.getFile(config.getReportDirectory()); if (reportFile.exists()) { - if (log.isInfoEnabled()) { - log.info("Will use report file : " + reportFile); - } + log.info(String.format("Will use report file : %s", reportFile)); setReportFile(reportFile); } else { - if (log.isWarnEnabled()) - log.warn("Default report file " + reportFile + " does not exists."); + log.warn(String.format("Default report file %s does not exists.", reportFile)); } // on ecoute la modification du modèle PropertyChangeListener listenReportModified = evt -> { ReportModel source = (ReportModel) evt.getSource(); - if (log.isDebugEnabled()) { - log.debug("report model [" + source + "] changed on " + evt.getPropertyName() + ", new value = " + evt.getNewValue()); - } + log.debug(String.format("report model [%s] changed on %s, new value = %s", source, evt.getPropertyName(), evt.getNewValue())); uiModel.validate(); }; ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.ObserveSwingTechnicalException; import fr.ird.observe.client.db.ObserveSwingDataSource; import fr.ird.observe.client.ui.admin.AdminStep; import fr.ird.observe.client.ui.admin.AdminTabUIHandler; +import fr.ird.observe.client.ui.admin.AdminUIModel; import fr.ird.observe.client.ui.admin.config.ConfigUI; import fr.ird.observe.client.ui.admin.report.actions.CopyResultToClipboard; import fr.ird.observe.client.ui.util.JaxxObjectInitializer; @@ -107,13 +108,13 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa onReportsChanged(ui, reports); } else if (ReportModel.SELECTED_REPORT_PROPERTY_NAME.equals(propertyName)) { Report report = (Report) newValue; - onSelectedReportChanged(ui, source, report); + onSelectedReportChanged(report); } else if (ReportModel.VARIABLES_PROPERTY_NAME.equals(propertyName)) { Map<String, Object> variables = (Map<String, Object>) newValue; - onVariablesChanges(source, variables); + onVariablesChanges(variables); } else if (ReportModel.VALID_PROPERTY_NAME.equals(propertyName)) { final Boolean valid = (Boolean) newValue; - SwingUtilities.invokeLater(() -> onValidChanged(source, valid != null && valid)); + SwingUtilities.invokeLater(() -> onValidChanged(valid != null && valid)); } }); @@ -204,6 +205,13 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa return t(report.getDescription()); } + String updateReportsCountInformation(List<Report> reports) { + if (reports == null || reports.size() < 2) { + return t("observe.admin.report.no.report.found"); + } + return t("observe.admin.report.report.count.found", reports.size() - 1); + } + private void updateVariable(JComboBox combo, Object value) { String variableName = (String) combo.getClientProperty(VARIABLE_NAME); if (variableName == null) { @@ -214,7 +222,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa } private void onReportsChanged(ReportUI tabUI, List<?> newValue) { - log.debug("New reports : " + newValue); + log.debug(String.format("New reports : %s", newValue)); // on ajoute toujours une premiere valeur null (pour ne rien selectionne) newValue.add(0, null); // on charge le nouveau modèle dans la liste déroulante @@ -222,26 +230,28 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa } @SuppressWarnings({"unchecked"}) - private void onSelectedReportChanged(ReportUI tabUI, ReportModel model, Report report) { - log.info("New selected report [" + report + "]"); - ui.getModel().setBusy(true); + private void onSelectedReportChanged(Report report) { + log.info(String.format("New selected report [%s]", report)); + AdminUIModel model = this.ui.getModel(); + ReportModel stepModel = getStepModel(); + model.setBusy(true); try { // on regénère l'ui de configuration des variables - JPanel variablesPanel = tabUI.getReportVariableSelectorPanel(); + JPanel variablesPanel = ui.getReportVariableSelectorPanel(); variablesPanel.removeAll(); // on utilise les variables uniquement si nécessaire boolean useVariables = report != null && report.isVariableRequired(); - tabUI.getReportVariableSelectorPane().setVisible(useVariables); + ui.getReportVariableSelectorPane().setVisible(useVariables); // calcul des données et contruction du tableau - model.getResultModel().clear(); + stepModel.getResultModel().clear(); if (report != null) { try { - ObserveSwingDataSource dataSource = ui.getModel().getConfigModel().getLocalSourceModel().getSafeSource(true); + ObserveSwingDataSource dataSource = model.getConfigModel().getLocalSourceModel().getSafeSource(true); ReportService reportService = dataSource.getReportService(); - report = reportService.populateVariables(report, ui.getModel().getSelectDataModel().getSelectedTripIds()); + report = reportService.populateVariables(report, model.getSelectDataModel().getSelectedTripIds()); } catch (Exception e) { throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e); } @@ -291,35 +301,37 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa // on revalide la disposition de l'onglet SwingUtilities.invokeLater(revalidateTabUI); - Map<String, Object> variables = model.getVariables(); + Map<String, Object> variables = stepModel.getVariables(); updateValidState(report, variables); } } finally { - ui.getModel().setBusy(false); + model.setBusy(false); } } - private void onVariablesChanges(ReportModel model, Map<String, Object> variables) { - Report report = model.getSelectedReport(); + private void onVariablesChanges(Map<String, Object> variables) { + Report report = getStepModel().getSelectedReport(); if (report != null) { updateValidState(report, variables); } } - private void onValidChanged(ReportModel model, boolean valid) { + private void onValidChanged(boolean valid) { log.info("valid state changed to " + valid); + ReportModel stepModel = getStepModel(); if (!valid) { // calcul des données et contruction du tableau - model.getResultModel().clear(); + stepModel.getResultModel().clear(); return; } - ui.getModel().setBusy(true); + AdminUIModel model = ui.getModel(); + model.setBusy(true); try { - Report report = model.getSelectedReport(); - ImmutableSet<String> tripIds = ui.getModel().getSelectDataModel().getSelectedTripIds(); - DataDtoReference trip = ui.getModel().getSelectDataModel().getSelectedTrip(); + Report report = stepModel.getSelectedReport(); + ImmutableSet<String> tripIds = model.getSelectDataModel().getSelectedTripIds(); + DataDtoReference trip = model.getSelectDataModel().getSelectedTrip(); log.info(String.format("Build result for report [%s] on %s", report.getName(), trip)); - Map<String, Object> variables = model.getVariables(); + Map<String, Object> variables = stepModel.getVariables(); for (ReportVariable variable : report.getVariables()) { Object value = variables.get(variable.getName()); variable.setSelectedValue(value); @@ -327,7 +339,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa long startTime = TimeLog.getTime(); - ObserveSwingDataSource dataSource = ui.getModel().getConfigModel().getLocalSourceModel().getSafeSource(true); + ObserveSwingDataSource dataSource = model.getConfigModel().getLocalSourceModel().getSafeSource(true); if (!dataSource.isOpen()) { dataSource.open(); } @@ -335,23 +347,20 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa ReportService reportService = dataSource.getReportService(); DataMatrix data = reportService.executeReport(report, tripIds); timeLog.log(startTime, "execute", report.getName()); - log.info("Result to display:\n" + data.getClipboardContent(true, true, false, '\t')); + log.info(String.format("Result to display:\n%s", data.getClipboardContent(true, true, false, '\t'))); // calcul des données et contruction du tableau - model.getResultModel().populate(report, data); + stepModel.getResultModel().populate(report, data); // mise a jour du clipboard automatique si requis - if (model.isAutoCopyToClipboard()) { - CopyResultToClipboard.copyReportToClipBoard(report, - model.getResultModel(), - model.isCopyRowHeaders(), - model.isCopyColumnHeaders()); + if (stepModel.isAutoCopyToClipboard()) { + CopyResultToClipboard.copyReportToClipBoard(report, stepModel); } } catch (Exception e) { UIHelper.handlingError("Could not obtain report data", e); - model.getResultModel().clear(); + stepModel.getResultModel().clear(); } finally { - ui.getModel().setBusy(false); + model.setBusy(false); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java ===================================== @@ -47,20 +47,16 @@ public class CopyResultToClipboard extends AdminTabUIActionSupport<ReportUI> { protected void doActionPerformed(ActionEvent e, ReportUI ui) { ReportModel stepModel = ui.getStepModel(); Report report = stepModel.getSelectedReport(); - ResultTableModel model = stepModel.getResultModel(); - copyReportToClipBoard(report, model, stepModel.isCopyRowHeaders(), stepModel.isCopyColumnHeaders()); + copyReportToClipBoard(report, stepModel); } - public static void copyReportToClipBoard(Report report, - ResultTableModel model, - boolean copyRowHeaders, - boolean copyColumnHeaders) { + public static void copyReportToClipBoard(Report report, ReportModel stepModel) { if (report == null) { return; } - + ResultTableModel model = stepModel.getResultModel(); log.info(String.format("Will copy result of report %s - result dimension : [%d,%d]", report.getName(), model.getRowCount(), model.getColumnCount())); - String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders); + String content = model.getClipbordContent(stepModel.isCopyRowHeaders(), stepModel.isCopyColumnHeaders()); UIHelperSupport.copyToClipBoard(content); } } ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -361,6 +361,8 @@ observe.admin.report.copy.row.headers=Copy row header observe.admin.report.copy.row.headers.tip=Add in result row headers observe.admin.report.description=Generate reports observe.admin.report.model.type=Model type to use +observe.admin.report.no.report.found=No report found. +observe.admin.report.report.count.found=Found %s reports. observe.admin.report.report.description=Description of selected report observe.admin.report.result=Results observe.admin.report.select=Select report ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -361,6 +361,8 @@ observe.admin.report.copy.row.headers=Copiar las cabeceras de linea observe.admin.report.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna) observe.admin.report.description=Generar los cuadros de síntesis del informe de fin del embarque observe.admin.report.model.type=Tipo de modelo a utilizar +observe.admin.report.no.report.found=No report found. \#TODO +observe.admin.report.report.count.found=Found %s reports. \#TODO observe.admin.report.report.description=Descripción del informe seleccionado observe.admin.report.result=Resultados del informe observe.admin.report.select=Selección del informe ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -361,6 +361,8 @@ observe.admin.report.copy.row.headers=Copier les entêtes de ligne observe.admin.report.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne) observe.admin.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement observe.admin.report.model.type=Type de modèle à utiliser +observe.admin.report.no.report.found=Aucun rapport trouvé. +observe.admin.report.report.count.found=%s rapports détectés. observe.admin.report.report.description=Description du rapport sélectionné observe.admin.report.result=Résultats du rapport observe.admin.report.select=Sélection du rapport View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/8b001306bcd5bfd2ee4e3da2cf8… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/8b001306bcd5bfd2ee4e3da2cf8… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] 6 commits: Introduce new simple Jaxx Object initializer
by Tony CHEMIT 25 Sep '19

25 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 9523f5d5 by tchemit at 2019-09-25T15:27:57Z Introduce new simple Jaxx Object initializer - - - - - 96301f64 by tchemit at 2019-09-25T15:28:04Z fix a i18n - - - - - 9e601963 by tchemit at 2019-09-25T15:28:39Z reorder enumeration values since we now use it to add a key stroke in validation admin config ui - - - - - 6461eabe by tchemit at 2019-09-25T15:29:09Z let&#39;s listen JaxxObjectActionSupport (to have full trace of accepted/rejected actions) - - - - - 6ef6650d by tchemit at 2019-09-25T15:29:49Z Continue to improve admin actions using new jaxx api. - - - - - 8c192060 by tchemit at 2019-09-25T15:30:18Z use new api - - - - - 30 changed files: - client-configuration/src/main/java/fr/ird/observe/client/constants/ValidationModelMode.java - client-configuration/src/main/resources/observe-log4j2.xml - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUILauncher.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/actions/SelectData.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/admin/config/ConfigUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/longline/pairing/ActivityLonglinePairingUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/ChooseFileReport.java - + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/SelectModelType.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateConfigUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/actions/SelectValidationModelMode.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/validate/actions/SelectValidationScope.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToSubTab1.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToSubTab2.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToSubTab3.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToTab1.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToTab2.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/actions/GoToTab3.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/ebe457ca303b922f53224288b3… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/ebe457ca303b922f53224288b3… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] Review Report action
by Tony CHEMIT 25 Sep '19

25 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: ebe457ca by tchemit at 2019-09-25T09:29:37Z Review Report action - - - - - 18 changed files: - client-core/src/main/i18n/getters/java.getter - client-core/src/main/i18n/getters/jaxx.getter - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminActionModel.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jaxx - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java - + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/ChooseFileReport.java - + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIInitializer.java - client-db/src/main/java/fr/ird/observe/client/ui/util/UIHelperSupport.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties Changes: ===================================== client-core/src/main/i18n/getters/java.getter ===================================== @@ -46,6 +46,7 @@ observe.action.configuration.tip observe.action.connexions observe.action.connexions.tip observe.action.continue +observe.action.copy observe.action.copy.to.clipBoard observe.action.copyFloatingObjectPartToLeft observe.action.copyFloatingObjectPartToLeft.tip @@ -153,12 +154,10 @@ observe.actions.operation.message.needFix observe.actions.operation.message.running observe.actions.operation.message.successed observe.actions.report -observe.actions.report.description -observe.actions.report.title -observe.actions.report.title.tip observe.actions.saveLocal observe.actions.saveLocal.description observe.actions.synchro.cancel.tip +observe.actions.synchro.copy.tip observe.actions.synchro.data observe.actions.synchro.data.copyToLeft.tip observe.actions.synchro.data.copyToRight.tip @@ -262,6 +261,9 @@ observe.actions.validate.validator.message.header observe.actions.validate.validator.message.header.tip observe.actions.validate.validator.scope.header observe.actions.validate.validator.scope.header.tip +observe.admin.report.description +observe.admin.report.title +observe.admin.report.title.tip observe.admin.resume.no.operation.done observe.admin.resume.operation.canceled observe.admin.resume.operation.done ===================================== client-core/src/main/i18n/getters/jaxx.getter ===================================== @@ -9,15 +9,8 @@ observe.Id.species observe.Id.weightMeasureType observe.Id.whenArriving observe.Id.whenLeaving -observe.action.auto.copy.to.clipboard -observe.action.auto.copy.to.clipboard.tip observe.action.configuration observe.action.connexions -observe.action.copy -observe.action.copy.column.headers -observe.action.copy.column.headers.tip -observe.action.copy.row.headers -observe.action.copy.row.headers.tip observe.action.create observe.action.delete observe.action.floatingObjectPresets @@ -27,16 +20,6 @@ observe.action.save.all.tip observe.actions.longline.pairing.config observe.actions.operation.configuration observe.actions.operations -observe.actions.report.config -observe.actions.report.copy.options -observe.actions.report.model.type -observe.actions.report.report.description -observe.actions.report.result -observe.actions.report.select -observe.actions.report.select.file -observe.actions.report.select.file.tip -observe.actions.report.variables -observe.actions.synchro.copy.tip observe.actions.synchro.data.actionsToPerform observe.actions.synchro.referential.config.mode observe.actions.synchro.referential.obsolete.entities.list @@ -51,6 +34,21 @@ observe.actions.validate.select.mode observe.actions.validate.select.mode.tip observe.actions.validate.select.scope observe.actions.validate.select.scope.tip +observe.admin.report.auto.copy.to.clipboard +observe.admin.report.auto.copy.to.clipboard.tip +observe.admin.report.config +observe.admin.report.copy.column.headers +observe.admin.report.copy.column.headers.tip +observe.admin.report.copy.options +observe.admin.report.copy.row.headers +observe.admin.report.copy.row.headers.tip +observe.admin.report.model.type +observe.admin.report.report.description +observe.admin.report.result +observe.admin.report.select +observe.admin.report.select.file +observe.admin.report.select.file.tip +observe.admin.report.variables observe.common.directory observe.common.file observe.common.global.progression.description ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminActionModel.java ===================================== @@ -6,21 +6,24 @@ * %% * 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, * 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 + * + * 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.client.ui.admin; +import io.ultreia.java4all.bean.JavaBean; +import io.ultreia.java4all.bean.definition.JavaBeanDefinition; +import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore; import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardExtStepModel; /** @@ -29,10 +32,23 @@ import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardExtStepModel; * @author Tony Chemit - dev(a)tchemit.fr * @since 1.4 */ -public abstract class AdminActionModel extends WizardExtStepModel<AdminStep> { +public abstract class AdminActionModel extends WizardExtStepModel<AdminStep> implements JavaBean { + /** + * Lazy helper class that manages all java bean operations. + * + * @see #javaBeanDefinition() + */ + private transient JavaBeanDefinition javaBeanDefinition; protected AdminActionModel(AdminStep objectOperation) { super(objectOperation); } + @Override + public final JavaBeanDefinition javaBeanDefinition() { + return javaBeanDefinition == null + ? javaBeanDefinition = JavaBeanDefinitionStore.getDefinition(getClass()).orElseThrow(() -> new NullPointerException("Can't find JavaBeanDefinition for " + getClass())) + : javaBeanDefinition; + } + } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java ===================================== @@ -197,11 +197,11 @@ public enum AdminStep implements WizardExtStep { /** pour lancer la generation des rapports */ REPORT( - n("observe.actions.report.title"), - n("observe.actions.report.title.tip"), + n("observe.admin.report.title"), + n("observe.admin.report.title.tip"), "report", n("observe.actions.report"), - n("observe.actions.report.description"), + n("observe.admin.report.description"), ReportModel.class, ReportUI.class, false, ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIInitializer.java ===================================== @@ -25,7 +25,9 @@ package fr.ird.observe.client.ui.admin; import com.google.common.collect.ImmutableMap; import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.content.api.ContentUIInitializer; +import fr.ird.observe.client.ui.util.BeanCheckBox; import fr.ird.observe.client.ui.util.UIHelper; +import fr.ird.observe.client.ui.util.UIHelperSupport; import fr.ird.observe.dto.I18nEnumHelper; import fr.ird.observe.dto.decoration.DecoratorService; import org.apache.commons.lang3.BooleanUtils; @@ -80,7 +82,6 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> { private static final String CLIENT_PROPERTY_NOT_BLOCKING = "notBlocking"; - /** Logger. */ private static final Logger log = LogManager.getLogger(AdminTabUIInitializer.class); protected final UI ui; @@ -115,6 +116,10 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> { // init((JComponent) o, doNotBlockComponentIds); // } + if (o instanceof BeanCheckBox) { + init((BeanCheckBox) o); + } + if (o instanceof AbstractButton) { init((AbstractButton) o); continue; @@ -191,6 +196,15 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> { } } + protected void init(BeanCheckBox editor) { + log.debug("init simple boolean editor " + editor.getName()); + String propertyName = editor.getProperty(); + if (StringUtils.isEmpty(propertyName)) { + editor.setProperty(editor.getName()); + } + editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor)); + } + @SuppressWarnings("unchecked") protected void init(BeanComboBox beanComboBox) { if (log.isDebugEnabled()) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx ===================================== @@ -59,10 +59,7 @@ protected void finalize() throws Throwable { <JLabel id='modelTypeLabel'/> </cell> <cell weightx='1' fill="horizontal" columns="2"> - <EnumEditor id="modelType" - genericType='ObserveModelType' - constructorParams='ObserveModelType.class' - onItemStateChanged='getHandler().setModelTypeFromEvent(event)'/> + <EnumEditor id="modelType" genericType='ObserveModelType' constructorParams='ObserveModelType.class' onItemStateChanged='getHandler().setModelTypeFromEvent(event)'/> </cell> </row> <row> @@ -70,11 +67,10 @@ protected void finalize() throws Throwable { <JLabel id='reportFileLabel'/> </cell> <cell weightx='1' fill="horizontal"> - <JTextField id="reportFile" - onKeyReleased='stepModel.setReportFile(new File(((JTextField)event.getSource()).getText()))'/> + <JTextField id="reportFile" onKeyReleased='stepModel.setReportFile(new File(((JTextField)event.getSource()).getText()))'/> </cell> <cell anchor="east"> - <JButton id="reportFileChooserAction" onActionPerformed="getHandler().chooseReportFile()"/> + <JButton id="chooseFileReport"/> </cell> </row> </Table> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss ===================================== @@ -21,11 +21,11 @@ */ #reportConfig { - border:{new TitledBorder(t("observe.actions.report.config"))}; + border:{new TitledBorder(t("observe.admin.report.config"))}; } #modelTypeLabel { - text:"observe.actions.report.model.type"; + text:"observe.admin.report.model.type"; } #modelType { @@ -33,15 +33,11 @@ } #reportFileLabel { - text:"observe.actions.report.select.file"; - toolTipText:"observe.actions.report.select.file.tip"; + text:"observe.admin.report.select.file"; + toolTipText:"observe.admin.report.select.file.tip"; } #reportFile { text:{getStringValue(stepModel.getReportFile())}; } -#reportFileChooserAction { - actionIcon:"fileChooser"; -} - ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java ===================================== @@ -32,8 +32,9 @@ import fr.ird.observe.client.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.dto.ObserveModelType; import fr.ird.observe.services.service.actions.report.Report; import fr.ird.observe.services.service.actions.report.ReportBuilder; -import org.apache.logging.log4j.Logger; +import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.beans.PropertyChangeListener; import java.io.File; @@ -50,6 +51,7 @@ import java.util.stream.Collectors; * @author Tony Chemit - dev(a)tchemit.fr * @since 1.3 */ +@GenerateJavaBeanDefinition public class ReportModel extends AdminActionModel { public static final String SELECTED_TRIP_PROPERTY_NAME = "selectedTrip"; ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jaxx ===================================== @@ -28,6 +28,8 @@ fr.ird.observe.client.ui.admin.AdminUI fr.ird.observe.services.service.actions.report.Report + fr.ird.observe.client.ui.util.BeanCheckBox + java.awt.Dimension javax.swing.DefaultComboBoxModel @@ -81,17 +83,15 @@ public void destroy() { </JScrollPane> <JPanel id="copyPane" constraints='BorderLayout.SOUTH'> - <JPanel id='copyOptions' constraints='BorderLayout.NORTH'> - <JCheckBox id='autoCopyToClipboard' - onStateChanged='getStepModel().setAutoCopyToClipboard(((JCheckBox)event.getSource()).isSelected())'/> - <JCheckBox id='copyRowHeaders' - onStateChanged='getStepModel().setCopyRowHeaders(((JCheckBox)event.getSource()).isSelected())'/> - <JCheckBox id='copyColumnHeaders' - onStateChanged='getStepModel().setCopyColumnHeaders(((JCheckBox)event.getSource()).isSelected())'/> + <JPanel id='copyOptions' constraints='BorderLayout.NORTH' beanScope="stepModel"> + <BeanCheckBox id='autoCopyToClipboard'/> +<!-- onStateChanged='getStepModel().setAutoCopyToClipboard(((JCheckBox)event.getSource()).isSelected())'/>--> + <BeanCheckBox id='copyRowHeaders'/> +<!-- onStateChanged='getStepModel().setCopyRowHeaders(((JCheckBox)event.getSource()).isSelected())'/>--> + <BeanCheckBox id='copyColumnHeaders'/> +<!-- onStateChanged='getStepModel().setCopyColumnHeaders(((JCheckBox)event.getSource()).isSelected())'/>--> </JPanel> - <JButton id="copy" constraints='BorderLayout.CENTER' - onActionPerformed='getHandler().copyReportToClipBoard(getStepModel().getSelectedReport(), getResultModel(), getStepModel().isCopyRowHeaders(), - getStepModel().isCopyColumnHeaders())'/> + <JButton id="copyResultToClipboard" constraints='BorderLayout.CENTER'/> </JPanel> ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jcss ===================================== @@ -35,18 +35,17 @@ JToolBar { } #reportVariableSelectorPanel { - border:{new TitledBorder(t("observe.actions.report.variables"))}; + border:{new TitledBorder(t("observe.admin.report.variables"))}; layout:{new GridLayout(0,1)}; } #copyOptions { - border:{new TitledBorder(t("observe.actions.report.copy.options"))}; + border:{new TitledBorder(t("observe.admin.report.copy.options"))}; layout:{new GridLayout(0,1)}; } #resultPane { - border:{new TitledBorder(t("observe.actions.report.result"))}; - /*columnHeaderView:{resultTable.getTableHeader()};*/ + border:{new TitledBorder(t("observe.admin.report.result"))}; verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; } @@ -56,7 +55,7 @@ JToolBar { } #requestSelectorPane { - border:{new TitledBorder(t("observe.actions.report.select"))}; + border:{new TitledBorder(t("observe.admin.report.select"))}; layout:{new BorderLayout()}; } @@ -66,7 +65,7 @@ JToolBar { } #reportDescriptionPane { - columnHeaderView:{UIHelper.newLabel(t("observe.actions.report.report.description") ,"information", 10)}; + columnHeaderView:{UIHelper.newLabel(t("observe.admin.report.report.description") ,"information", 10)}; minimumSize:{new Dimension(0,0)}; } @@ -86,29 +85,25 @@ JToolBar { #copyPane { layout:{new BorderLayout()}; } + #autoCopyToClipboard { - text:"observe.action.auto.copy.to.clipboard"; - toolTipText:"observe.action.auto.copy.to.clipboard.tip"; - selected:{stepModel.isAutoCopyToClipboard()}; + text:"observe.admin.report.auto.copy.to.clipboard"; + toolTipText:"observe.admin.report.auto.copy.to.clipboard.tip"; + /*selected:{stepModel.isAutoCopyToClipboard()};*/ } #copyRowHeaders { - text:"observe.action.copy.row.headers"; - toolTipText:"observe.action.copy.row.headers.tip"; - selected:{stepModel.isCopyRowHeaders()}; + text:"observe.admin.report.copy.row.headers"; + toolTipText:"observe.admin.report.copy.row.headers.tip"; + /*selected:{stepModel.isCopyRowHeaders()};*/ } #copyColumnHeaders { - text:"observe.action.copy.column.headers"; - toolTipText:"observe.action.copy.column.headers.tip"; - selected:{stepModel.isCopyColumnHeaders()}; -} - -#copy { - text:"observe.action.copy"; - toolTipText:"observe.actions.synchro.copy.tip"; - actionIcon:"report-copy"; - /*enabled:{stepModel.getSelectedReport() != null};*/ - enabled:{stepModel.isValid() }; - mnemonic:C; + text:"observe.admin.report.copy.column.headers"; + toolTipText:"observe.admin.report.copy.column.headers.tip"; + /*selected:{stepModel.isCopyColumnHeaders()};*/ +} + +#copyResultToClipboard { + enabled:{stepModel.isValid()}; } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java ===================================== @@ -26,7 +26,9 @@ import fr.ird.observe.client.ObserveSwingTechnicalException; import fr.ird.observe.client.db.ObserveSwingDataSource; import fr.ird.observe.client.ui.admin.AdminStep; import fr.ird.observe.client.ui.admin.AdminTabUIHandler; +import fr.ird.observe.client.ui.admin.AdminTabUIInitializer; import fr.ird.observe.client.ui.admin.config.ConfigUI; +import fr.ird.observe.client.ui.admin.report.actions.CopyResultToClipboard; import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.client.ui.util.UIHelperSupport; import fr.ird.observe.dto.ObserveModelType; @@ -61,7 +63,6 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Font; import java.awt.event.ItemEvent; -import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -87,26 +88,21 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa @Override public void afterInit(ReportUI ui) { + new AdminTabUIInitializer<>(ui).initUI(); super.afterInit(ui); - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + ui.getStep() + "] for main ui " + parentUI.getClass().getName() + "@" + System.identityHashCode(this.ui)); - } + log.debug(String.format(" specialized for [%s] for main ui %s@%d", ui.getStep(), parentUI.getClass().getName(), System.identityHashCode(this.ui))); revalidateTabUI = ui::revalidate; - UIHelper.setLayerUI(ui.getContent(), parentUI.getConfigBlockLayerUI()); + UIHelperSupport.setLayerUI(ui.getContent(), parentUI.getConfigBlockLayerUI()); ReportModel stepModel = getStepModel(); stepModel.addPropertyChangeListener(evt -> { - if (ui.getModel().getModelState() == WizardState.CANCELED) { - // action annulée, on ne declanche plus rien return; } String propertyName = evt.getPropertyName(); Object newValue = evt.getNewValue(); - ReportModel source = (ReportModel) evt.getSource(); - if (ReportModel.REPORTS_PROPERTY_NAME.equals(propertyName)) { List<?> reports = (List<?>) newValue; onReportsChanged(ui, reports); @@ -119,8 +115,6 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa } else if (ReportModel.VALID_PROPERTY_NAME.equals(propertyName)) { final Boolean valid = (Boolean) newValue; SwingUtilities.invokeLater(() -> onValidChanged(source, valid != null && valid)); - - } }); @@ -130,14 +124,12 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if (value == null) { - // on affiche une message de sélection de report value = t("observe.message.select.report"); } return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); } } - ); // ajout du renderer sur le tableau @@ -180,15 +172,11 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa ui.getResultTable().setDefaultRenderer(String.class, renderer); // initialisation de l'ui de configuration - if (log.isInfoEnabled()) { - log.info("Init extra configuration for " + ui.getName()); - } + log.info(String.format("Init extra configuration for %s", ui.getName())); ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); JAXXInitialContext tx = new JAXXInitialContext().add(configUI).add(this); - ReportConfigUI extraConfig = new ReportConfigUI(tx); - configUI.getExtraConfig().add(extraConfig); } @@ -199,11 +187,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa } void updateSelectedReportFromEvent(ItemEvent event) { - if (event.getStateChange() == ItemEvent.SELECTED) { - if (log.isInfoEnabled()) { - log.info("Item selected!"); - } JComboBox source = (JComboBox) event.getSource(); updateSelectedReport((Report) source.getSelectedItem()); } @@ -212,11 +196,8 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa void updateSelectedReport(Report report) { ui.getModel().setBusy(true); try { - if (log.isInfoEnabled()) { - log.info("New selected report : " + report); - } + log.info(String.format("New selected report : %s", report)); getStepModel().setSelectedReport(report); - } finally { ui.getModel().setBusy(false); } @@ -232,64 +213,24 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa private void updateVariable(JComboBox combo, Object value) { String variableName = (String) combo.getClientProperty(VARIABLE_NAME); if (variableName == null) { - throw new IllegalStateException( - "No 'variableName' clientProperty on " + combo); + throw new IllegalStateException("No 'variableName' clientProperty on " + combo); } - log.info("Set variable [" + variableName + "] to value " + value); + log.info(String.format("Set variable [%s] to value %s", variableName, value)); getStepModel().addVariable(variableName, value); } - void chooseReportFile() { - ReportModel model = ui.getModel().getReportModel(); - File f = UIHelper.chooseFile( - ui, - t("observe.title.choose.reportFile"), - t("observe.action.choose.reportFile"), - model.getReportFile(), - "^.+\\.properties$", - t("observe.action.choose.reportFile.description")); - model.setReportFile(f); - } - - void copyReportToClipBoard(Report report, - ResultTableModel model, - boolean copyRowHeaders, - boolean copyColumnHeaders) { - if (report == null) { - - // pas de report sélectionné, rien à faire - return; - } - - if (log.isDebugEnabled()) { - log.debug("Will copy result of report " + report.getName()); - log.debug("Result dimension : [" + model.getRowCount() + "," + - model.getColumnCount() + "]"); - } - String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders); - UIHelper.copyToClipBoard(content); - } - private void onReportsChanged(ReportUI tabUI, List<?> newValue) { - - if (log.isDebugEnabled()) { - log.debug("New reports : " + newValue); - } - + log.debug("New reports : " + newValue); // on ajoute toujours une premiere valeur null (pour ne rien selectionne) newValue.add(0, null); - // on charge le nouveau modèle dans la liste déroulante - UIHelper.fillComboBox(tabUI.getReportSelector(), newValue, null); + UIHelperSupport.fillComboBox(tabUI.getReportSelector(), newValue, null); } @SuppressWarnings({"unchecked"}) private void onSelectedReportChanged(ReportUI tabUI, ReportModel model, Report report) { - log.info("New selected report [" + report + "]"); - ui.getModel().setBusy(true); - try { // on regénère l'ui de configuration des variables JPanel variablesPanel = tabUI.getReportVariableSelectorPanel(); @@ -303,30 +244,22 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa model.getResultModel().clear(); if (report != null) { - try { - ObserveSwingDataSource dataSource = ui.getModel().getConfigModel().getLocalSourceModel().getSafeSource(true); - ReportService reportService = dataSource.getReportService(); - report = reportService.populateVariables(report, ui.getModel().getSelectDataModel().getSelectedTripIds()); - } catch (Exception e) { throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e); } if (useVariables) { - // on construit les ui pour chaqsue variable for (ReportVariable variable : report.getVariables()) { String variableName = variable.getName(); - // String value = variables.get(variableName); Set values = variable.getValues(); List<Object> universe = new ArrayList<>(values); - - Decorator decorator; log.info("Variable type: " + variable.getType()); + Decorator decorator; Class type; if (ReferentialDto.class.isAssignableFrom(variable.getType()) && !universe.isEmpty()) { type = DtoModelHelper.fromReferentialDto(variable.getType()).toReferenceType(); @@ -340,7 +273,6 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa } log.info("Variable real type: " + type); BeanFilterableComboBox combo = UIHelperSupport.newBeanFilterableComboBox(type, (JXPathDecorator) decorator, universe); - combo.setShowReset(true); JPanel p = new JPanel(new BorderLayout()); p.add(new JLabel(t(I18nDecoratorHelper.getTypeI18nKey(variable.getType()))), BorderLayout.WEST); @@ -349,20 +281,14 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa JComboBox jComboBox = combo.getCombobox(); jComboBox.putClientProperty(VARIABLE_NAME, variableName); jComboBox.addItemListener(e -> { - JComboBox comboBox = (JComboBox) e.getSource(); - if (e.getStateChange() == ItemEvent.DESELECTED) { - - // ne rien faire de l'évènement de déselection - // sauf si le modèle devient vide - + // ne rien faire de l'évènement de déselection sauf si le modèle devient vide if (comboBox.getSelectedItem() == null) { updateVariable(comboBox, null); } return; } - Object o = e.getItem(); updateVariable(comboBox, o); }); @@ -371,51 +297,35 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa // on revalide la disposition de l'onglet SwingUtilities.invokeLater(revalidateTabUI); - Map<String, Object> variables = model.getVariables(); updateValidState(report, variables); } } finally { - ui.getModel().setBusy(false); - } } private void onVariablesChanges(ReportModel model, Map<String, Object> variables) { - Report report = model.getSelectedReport(); if (report != null) { - updateValidState(report, variables); } } private void onValidChanged(ReportModel model, boolean valid) { - - if (log.isInfoEnabled()) { - log.info("valid state changed to " + valid); - } - + log.info("valid state changed to " + valid); if (!valid) { // calcul des données et contruction du tableau model.getResultModel().clear(); return; } - ui.getModel().setBusy(true); - try { - Report report = model.getSelectedReport(); - ImmutableSet<String> tripIds = ui.getModel().getSelectDataModel().getSelectedTripIds(); DataDtoReference trip = ui.getModel().getSelectDataModel().getSelectedTrip(); - log.info(String.format("Build result for report [%s] on %s", report.getName(), trip)); - Map<String, Object> variables = model.getVariables(); - for (ReportVariable variable : report.getVariables()) { Object value = variables.get(variable.getName()); variable.setSelectedValue(value); @@ -429,11 +339,8 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa } ReportService reportService = dataSource.getReportService(); - DataMatrix data = reportService.executeReport(report, tripIds); - timeLog.log(startTime, "execute", report.getName()); - log.info("Result to display:\n" + data.getClipboardContent(true, true, false, '\t')); // calcul des données et contruction du tableau @@ -441,10 +348,10 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa // mise a jour du clipboard automatique si requis if (model.isAutoCopyToClipboard()) { - copyReportToClipBoard(report, - model.getResultModel(), - model.isCopyRowHeaders(), - model.isCopyColumnHeaders()); + CopyResultToClipboard.copyReportToClipBoard(report, + model.getResultModel(), + model.isCopyRowHeaders(), + model.isCopyColumnHeaders()); } } catch (Exception e) { UIHelper.handlingError("Could not obtain report data", e); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/ChooseFileReport.java ===================================== @@ -0,0 +1,56 @@ +package fr.ird.observe.client.ui.admin.report.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.ObserveKeyStrokesSupport; +import fr.ird.observe.client.ui.admin.report.ReportConfigUI; +import fr.ird.observe.client.ui.admin.report.ReportModel; +import fr.ird.observe.client.ui.util.UIHelper; +import org.nuiton.jaxx.runtime.swing.action.JComponentActionSupport; + +import java.awt.event.ActionEvent; +import java.io.File; + +import static io.ultreia.java4all.i18n.I18n.t; + +public class ChooseFileReport extends JComponentActionSupport<ReportConfigUI> { + + public ChooseFileReport() { + super("", "", "fileChooser", ObserveKeyStrokesSupport.KEY_STROKE_STORAGE_DO_CHOOSE_FILE); + } + + @Override + protected void doActionPerformed(ActionEvent e, ReportConfigUI ui) { + ReportModel model = ui.getModel().getReportModel(); + File f = UIHelper.chooseFile( + ui, + t("observe.title.choose.reportFile"), + t("observe.action.choose.reportFile"), + model.getReportFile(), + "^.+\\.properties$", + t("observe.action.choose.reportFile.description")); + if (f != null) { + model.setReportFile(f); + } + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java ===================================== @@ -0,0 +1,66 @@ +package fr.ird.observe.client.ui.admin.report.actions; + +/*- + * #%L + * ObServe :: Client core + * %% + * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.ui.admin.actions.AdminTabUIActionSupport; +import fr.ird.observe.client.ui.admin.report.ReportModel; +import fr.ird.observe.client.ui.admin.report.ReportUI; +import fr.ird.observe.client.ui.admin.report.ResultTableModel; +import fr.ird.observe.client.ui.util.UIHelperSupport; +import fr.ird.observe.services.service.actions.report.Report; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.t; + +public class CopyResultToClipboard extends AdminTabUIActionSupport<ReportUI> { + + private static final Logger log = LogManager.getLogger(CopyResultToClipboard.class); + + public CopyResultToClipboard() { + super(t("observe.action.copy"), t("observe.actions.synchro.copy.tip"), "report-copy", 'C'); + } + + @Override + protected void doActionPerformed(ActionEvent e, ReportUI ui) { + ReportModel stepModel = ui.getStepModel(); + Report report = stepModel.getSelectedReport(); + ResultTableModel model = stepModel.getResultModel(); + copyReportToClipBoard(report, model, stepModel.isCopyRowHeaders(), stepModel.isCopyColumnHeaders()); + } + + public static void copyReportToClipBoard(Report report, + ResultTableModel model, + boolean copyRowHeaders, + boolean copyColumnHeaders) { + if (report == null) { + return; + } + + log.info(String.format("Will copy result of report %s - result dimension : [%d,%d]", report.getName(), model.getRowCount(), model.getColumnCount())); + String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders); + UIHelperSupport.copyToClipBoard(content); + } +} ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIInitializer.java ===================================== @@ -33,6 +33,7 @@ import fr.ird.observe.client.ui.util.BeanDatePicker; import fr.ird.observe.client.ui.util.BeanEnumEditor; import fr.ird.observe.client.ui.util.BooleanEditor; import fr.ird.observe.client.ui.util.UIHelper; +import fr.ird.observe.client.ui.util.UIHelperSupport; import fr.ird.observe.client.ui.util.tripMap.ObserveMapPane; import fr.ird.observe.client.validation.ObserveSwingValidator; import fr.ird.observe.dto.I18nEnumHelper; @@ -132,9 +133,6 @@ public class ContentUIInitializer<UI extends ContentUI> { public static final String SUB_TABBED_PANE = "subTabbedPane"; private static final String CLIENT_PROPERTY_NOT_BLOCKING = "notBlocking"; - private static final String CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN = "skipBindingToBean"; - private static final String CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN = "skipBindingFromBean"; - private static final Logger log = LogManager.getLogger(ContentUIInitializer.class); protected final UI ui; @@ -365,7 +363,7 @@ public class ContentUIInitializer<UI extends ContentUI> { editor.getModel().addPropertyChangeListener("format", e -> ((EditableContentUI<?>) ui).getValidator().doValidate()); if (editor.getBean() != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { editor.getModel().addPropertyChangeListener(propertyName, e -> { Float oldValue = editor.getModel().getTemperature(); Float newValue = (Float) e.getNewValue(); @@ -382,7 +380,7 @@ public class ContentUIInitializer<UI extends ContentUI> { editor.setProperty(editor.getName()); } if (editor.getBean() != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> { String oldValue = editor.getText(); String newValue = (String) e.getNewValue(); @@ -400,7 +398,7 @@ public class ContentUIInitializer<UI extends ContentUI> { } if (editor.getBean() != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> { String oldValue = editor.getText(); String newValue = (String) e.getNewValue(); @@ -418,7 +416,7 @@ public class ContentUIInitializer<UI extends ContentUI> { } if (editor.getBean() != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> { String oldValue = editor.getText(); String newValue = (String) e.getNewValue(); @@ -495,7 +493,7 @@ public class ContentUIInitializer<UI extends ContentUI> { } editor.init(); if (editor.getBean() != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { ((JavaBean) editor.getBean()).addPropertyChangeListener(config.getProperty(), e -> { Number oldValue = editor.getModel().getNumberValue(); Number newValue = (Number) e.getNewValue(); @@ -523,7 +521,7 @@ public class ContentUIInitializer<UI extends ContentUI> { JavaBean bean = (JavaBean) editor.getBean(); String property = editor.getProperty(); if (bean != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { bean.addPropertyChangeListener(property, e -> { Object oldValue = editor.getSelectedItem(); Object newValue = e.getNewValue(); @@ -573,7 +571,7 @@ public class ContentUIInitializer<UI extends ContentUI> { JavaBean bean = (JavaBean) editor.getModel().getBean(); String property = editor.getModel().getProperty(); if (bean != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { bean.addPropertyChangeListener(property, e -> { Collection oldValue = editor.getModel().getSelected(); Collection newValue = (Collection) e.getNewValue(); @@ -606,7 +604,7 @@ public class ContentUIInitializer<UI extends ContentUI> { JavaBean bean = (JavaBean) editor.getModel().getBean(); String property = editor.getModel().getPropertyTime(); if (bean != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { bean.addPropertyChangeListener(property, e -> { Date oldValue = editor.getModel().getTime(); Date newValue = (Date) e.getNewValue(); @@ -658,7 +656,7 @@ public class ContentUIInitializer<UI extends ContentUI> { JavaBean bean = (JavaBean) editor.getModel().getBean(); String property = editor.getModel().getPropertyDate(); if (bean != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { bean.addPropertyChangeListener(property, e -> { Date oldValue = editor.getModel().getDate(); Date newValue = (Date) e.getNewValue(); @@ -693,7 +691,7 @@ public class ContentUIInitializer<UI extends ContentUI> { JavaBean bean = (JavaBean) editor.getModel().getBean(); if (bean != null) { - if (isBindingFromBean(editor)) { + if (UIHelperSupport.isBindingFromBean(editor)) { bean.addPropertyChangeListener(editor.getModel().getPropertyLatitude(), e -> { Float oldValue = editor.getModel().getLatitude(); Float newValue = (Float) e.getNewValue(); @@ -755,7 +753,7 @@ public class ContentUIInitializer<UI extends ContentUI> { if (StringUtils.isEmpty(propertyName)) { editor.setProperty(editor.getName()); } - editor.init(isBindingFromBean(editor), isBindingToBean(editor)); + editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor)); } protected void init(BeanCheckBox editor) { @@ -764,7 +762,7 @@ public class ContentUIInitializer<UI extends ContentUI> { if (StringUtils.isEmpty(propertyName)) { editor.setProperty(editor.getName()); } - editor.init(isBindingFromBean(editor), isBindingToBean(editor)); + editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor)); } protected <B extends Enum<B>> void init(BeanEnumEditor<B> editor) { @@ -773,7 +771,7 @@ public class ContentUIInitializer<UI extends ContentUI> { if (StringUtils.isEmpty(propertyName)) { editor.setProperty(editor.getName()); } - editor.init(isBindingFromBean(editor), isBindingToBean(editor)); + editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor)); ImmutableMap.Builder<B, String> labelsBuilder = ImmutableMap.builder(); for (B e : EnumSet.allOf(editor.getType())) { @@ -791,7 +789,7 @@ public class ContentUIInitializer<UI extends ContentUI> { if (StringUtils.isEmpty(propertyName)) { editor.setProperty(editor.getName()); } - editor.init(isBindingFromBean(editor), isBindingToBean(editor)); + editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor)); editor.setLocale(ObserveSwingApplicationContextSupport.get().getConfig().getLocale()); JFormattedTextField formattedTextField = editor.getEditor(); formattedTextField.setEditable(true); @@ -840,16 +838,6 @@ public class ContentUIInitializer<UI extends ContentUI> { log.debug("init table editor " + editor.getName()); } - private boolean isBindingToBean(JComponent editor) { - Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN); - return skip == null || !skip; - } - - private boolean isBindingFromBean(JComponent editor) { - Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN); - return skip == null || !skip; - } - private boolean isAutoSelectOnFocus(JComponent comp) { Boolean selectOnFocus = (Boolean) comp.getClientProperty("selectOnFocus"); return BooleanUtils.isTrue(selectOnFocus); ===================================== client-db/src/main/java/fr/ird/observe/client/ui/util/UIHelperSupport.java ===================================== @@ -76,6 +76,8 @@ public class UIHelperSupport extends SwingUtil { public static final PropertyChangeListener LOG_PROPERTY_CHANGE_LISTENER = new LogPropertyChanged(); static private final Logger log = LogManager.getLogger(UIHelperSupport.class); + private static final String CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN = "skipBindingToBean"; + private static final String CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN = "skipBindingFromBean"; /** * Choisir un fichier via un sélecteur graphique de fichiers. @@ -357,6 +359,16 @@ public class UIHelperSupport extends SwingUtil { return new JAXXInitialContext().add(model).add(ui); } + public static boolean isBindingToBean(JComponent editor) { + Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN); + return skip == null || !skip; + } + + public static boolean isBindingFromBean(JComponent editor) { + Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN); + return skip == null || !skip; + } + public static class LogPropertyChanged implements PropertyChangeListener { @Override public void propertyChange(PropertyChangeEvent evt) { ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -33,8 +33,6 @@ observe.action.about.tip=About ObServe... observe.action.admin.cancel=Cancel wizard observe.action.admin.close=Close wizard observe.action.apply=Apply -observe.action.auto.copy.to.clipboard=Automatic copy in clipboard -observe.action.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result observe.action.back.to.list=Back to list observe.action.back.to.list.tip=Go back to the list observe.action.cancel=Cancel @@ -84,10 +82,6 @@ observe.action.connexions=Manage connections observe.action.connexions.tip=Manage connection profiles observe.action.continue=Continue observe.action.copy=Copy -observe.action.copy.column.headers=Copy column headers -observe.action.copy.column.headers.tip=Add in result column headers -observe.action.copy.row.headers=Copy row header -observe.action.copy.row.headers.tip=Add in result row headers observe.action.copy.to.clipBoard=Copy in clipboard observe.action.copyFloatingObjectPartToLeft=Copy values from leaving to arriving observe.action.copyFloatingObjectPartToLeft.tip=Copy values from leaving to arriving @@ -236,18 +230,6 @@ observe.actions.operation.message.running=Operation <%1$s> is running... observe.actions.operation.message.successed=operation <%1$> is done. observe.actions.operations=operations observe.actions.report=Report -observe.actions.report.config=Report configuration -observe.actions.report.copy.options=Copy into clipboard options -observe.actions.report.description=Generate reports -observe.actions.report.model.type=Model type to use -observe.actions.report.report.description=Description of selected report -observe.actions.report.result=Results -observe.actions.report.select=Select report -observe.actions.report.select.file=File of reports definitions -observe.actions.report.select.file.tip=Choose file of reports definitions -observe.actions.report.title=Help to generat reports -observe.actions.report.title.tip=Help to generate reports -observe.actions.report.variables=Variables configuration observe.actions.saveLocal=Save local database observe.actions.saveLocal.description=Save modifcations on local database observe.actions.synchro.cancel.tip=Cancel @@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Message observe.actions.validate.validator.message.header.tip=Message observe.actions.validate.validator.scope.header=... observe.actions.validate.validator.scope.header.tip=Type of message +observe.admin.report.auto.copy.to.clipboard=Automatic copy in clipboard +observe.admin.report.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result +observe.admin.report.config=Report configuration +observe.admin.report.copy.column.headers=Copy column headers +observe.admin.report.copy.column.headers.tip=Add in result column headers +observe.admin.report.copy.options=Copy into clipboard options +observe.admin.report.copy.row.headers=Copy row header +observe.admin.report.copy.row.headers.tip=Add in result row headers +observe.admin.report.description=Generate reports +observe.admin.report.model.type=Model type to use +observe.admin.report.report.description=Description of selected report +observe.admin.report.result=Results +observe.admin.report.select=Select report +observe.admin.report.select.file=File of reports definitions +observe.admin.report.select.file.tip=Choose file of reports definitions +observe.admin.report.title=Help to generat reports +observe.admin.report.title.tip=Help to generate reports +observe.admin.report.variables=Variables configuration observe.admin.resume.no.operation.done=No operation done. observe.admin.resume.operation.canceled=operation canceled observe.admin.resume.operation.done=operation done ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -33,8 +33,6 @@ observe.action.about.tip=A cerca de ObServe... observe.action.admin.cancel=Anular el asintente observe.action.admin.close=Cerrar el asistente observe.action.apply=Aplicar -observe.action.auto.copy.to.clipboard=Copia automatica al portapapeles -observe.action.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados observe.action.back.to.list=Volver a la lista observe.action.back.to.list.tip=Volver a la lista de datos observe.action.cancel=Cancelar @@ -84,10 +82,6 @@ observe.action.connexions=Gérer les connexions \#TODO observe.action.connexions.tip=Gérer les profiles de connexion \#TODO observe.action.continue=Continuar observe.action.copy=Copiar en el portapeles -observe.action.copy.column.headers=Copiar los encabezados de columnas -observe.action.copy.column.headers.tip=Añadir al resultado las cabeceras de columna -observe.action.copy.row.headers=Copiar las cabeceras de linea -observe.action.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna) observe.action.copy.to.clipBoard=Copiar el contenido en el portapapeles observe.action.copyFloatingObjectPartToLeft=Copy values from leaving to arriving \#TODO observe.action.copyFloatingObjectPartToLeft.tip=Copy values from leaving to arriving \#TODO @@ -236,18 +230,6 @@ observe.actions.operation.message.running=La operación < %1$s > se está ejecut observe.actions.operation.message.successed=La operación < %1$s > se terminó. observe.actions.operations=Operaciones a realizar observe.actions.report=Cuadros de síntesis -observe.actions.report.config=Configuración de los informes -observe.actions.report.copy.options=Opciones de copia en el portapapeles -observe.actions.report.description=Generar los cuadros de síntesis del informe de fin del embarque -observe.actions.report.model.type=Tipo de modelo a utilizar -observe.actions.report.report.description=Descripción del informe seleccionado -observe.actions.report.result=Resultados del informe -observe.actions.report.select=Selección del informe -observe.actions.report.select.file=Archivo de definición de informes -observe.actions.report.select.file.tip=Elegir el archivo de definición de informes -observe.actions.report.title=Ayuda a la generación de informes -observe.actions.report.title.tip=Ayuda a la generación del informe de fin del embarque -observe.actions.report.variables=Configuración de variables observe.actions.saveLocal=Copia de seguridad de la base local observe.actions.saveLocal.description=Guardar las modificationes realizadas en la base locale observe.actions.synchro.cancel.tip=Cancelar @@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Mensaje observe.actions.validate.validator.message.header.tip=El texto del mensaje observe.actions.validate.validator.scope.header=... observe.actions.validate.validator.scope.header.tip=El tipo del mensaje +observe.admin.report.auto.copy.to.clipboard=Copia automatica al portapapeles +observe.admin.report.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados +observe.admin.report.config=Configuración de los informes +observe.admin.report.copy.column.headers=Copiar los encabezados de columnas +observe.admin.report.copy.column.headers.tip=Añadir al resultado las cabeceras de columna +observe.admin.report.copy.options=Opciones de copia en el portapapeles +observe.admin.report.copy.row.headers=Copiar las cabeceras de linea +observe.admin.report.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna) +observe.admin.report.description=Generar los cuadros de síntesis del informe de fin del embarque +observe.admin.report.model.type=Tipo de modelo a utilizar +observe.admin.report.report.description=Descripción del informe seleccionado +observe.admin.report.result=Resultados del informe +observe.admin.report.select=Selección del informe +observe.admin.report.select.file=Archivo de definición de informes +observe.admin.report.select.file.tip=Elegir el archivo de definición de informes +observe.admin.report.title=Ayuda a la generación de informes +observe.admin.report.title.tip=Ayuda a la generación del informe de fin del embarque +observe.admin.report.variables=Configuración de variables observe.admin.resume.no.operation.done=Ninguna operación realizada observe.admin.resume.operation.canceled=operación cancelada observe.admin.resume.operation.done=operacion realizada ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -33,8 +33,6 @@ observe.action.about.tip=À propos d'ObServe... observe.action.admin.cancel=Annulation de l'assistant observe.action.admin.close=Fermeture de l'assistant observe.action.apply=Appliquer -observe.action.auto.copy.to.clipboard=Copie automatique dans le presse-papier -observe.action.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats observe.action.back.to.list=Retour à la liste observe.action.back.to.list.tip=Retour à la liste des données observe.action.cancel=Annuler @@ -84,10 +82,6 @@ observe.action.connexions=Gérer les connexions observe.action.connexions.tip=Gérer les profiles de connexion observe.action.continue=Continuer observe.action.copy=Copier dans le presse-papier -observe.action.copy.column.headers=Copier les entêtes de colonne -observe.action.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne) -observe.action.copy.row.headers=Copier les entêtes de ligne -observe.action.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne) observe.action.copy.to.clipBoard=Copier le contenu dans le presse-papier observe.action.copyFloatingObjectPartToLeft=Recopier les valeurs du départ vers l'arrivée observe.action.copyFloatingObjectPartToLeft.tip=Recopier les valeurs du départ vers l'arrivée @@ -236,18 +230,6 @@ observe.actions.operation.message.running=L'opération < %1$s > est en cours d'e observe.actions.operation.message.successed=L'opération < %1$s > est terminée. observe.actions.operations=Opérations à effectuer observe.actions.report=Tableaux de synthèse -observe.actions.report.config=Configuration des reports -observe.actions.report.copy.options=Options de copie dans le presse-papier -observe.actions.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement -observe.actions.report.model.type=Type de modèle à utiliser -observe.actions.report.report.description=Description du rapport sélectionné -observe.actions.report.result=Résultats du rapport -observe.actions.report.select=Sélection du rapport -observe.actions.report.select.file=Fichier de définition de reports -observe.actions.report.select.file.tip=Choisir le fichier de définition des reports -observe.actions.report.title=Aide à la génération de rapport -observe.actions.report.title.tip=Aide à la génération du rapport de fin d'embarquement -observe.actions.report.variables=Configuration des variables observe.actions.saveLocal=Sauvegarde de la base locale observe.actions.saveLocal.description=Sauvegarder les modifications effectuées vers la base locale observe.actions.synchro.cancel.tip=Annuler @@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Message observe.actions.validate.validator.message.header.tip=Le texte du message observe.actions.validate.validator.scope.header=... observe.actions.validate.validator.scope.header.tip=Le type de message +observe.admin.report.auto.copy.to.clipboard=Copie automatique dans le presse-papier +observe.admin.report.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats +observe.admin.report.config=Configuration des reports +observe.admin.report.copy.column.headers=Copier les entêtes de colonne +observe.admin.report.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne) +observe.admin.report.copy.options=Options de copie dans le presse-papier +observe.admin.report.copy.row.headers=Copier les entêtes de ligne +observe.admin.report.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne) +observe.admin.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement +observe.admin.report.model.type=Type de modèle à utiliser +observe.admin.report.report.description=Description du rapport sélectionné +observe.admin.report.result=Résultats du rapport +observe.admin.report.select=Sélection du rapport +observe.admin.report.select.file=Fichier de définition de reports +observe.admin.report.select.file.tip=Choisir le fichier de définition des reports +observe.admin.report.title=Aide à la génération de rapport +observe.admin.report.title.tip=Aide à la génération du rapport de fin d'embarquement +observe.admin.report.variables=Configuration des variables observe.admin.resume.no.operation.done=Aucune opération réalisée. observe.admin.resume.operation.canceled=opération annulée observe.admin.resume.operation.done=opération réussie View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/ebe457ca303b922f53224288b3a… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/ebe457ca303b922f53224288b3a… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] [V8 ou V9] Passer l'heure de fin de coulissage en optionnel - Closes #1385
by Tony CHEMIT 24 Sep '19

24 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: a2480e4a by tchemit at 2019-09-24T14:13:28Z [V8 ou V9] Passer l&#39;heure de fin de coulissage en optionnel - Closes #1385 - - - - - 7 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/SetUI.jcss - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - validation/src/main/i18n/getters/validation-messages.getter - validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetDto-update-error-validation.xml Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/SetUI.jcss ===================================== @@ -27,6 +27,7 @@ #endPursingTimeStamp { propertyDayDate: {SetDto.PROPERTY_END_PURSING_DATE}; propertyTimeDate: {SetDto.PROPERTY_END_PURSING_TIME}; + showReset:true; } #endSetTimeStamp { ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -3244,6 +3244,7 @@ observe.validation.set.endDate.after.endPursingDate=End date must be fater pursi observe.validation.set.endPursingDate.after.date=End pursing date must be after observation date. observe.validation.set.endPursingTimeStamp.after.startTime=Pursing time must be after starting time. observe.validation.set.endSetTimeStamp.after.endPursingTimeStamp=End time must be after end pursing time. +observe.validation.set.endSetTimeStamp.after.startTime=End time must be after start time. observe.validation.set.null.currentDirection=Current direction is not filled. observe.validation.set.required.comment.for.reasonForNullSet=A comment is required for the selected reason for null set. observe.validation.set.size.supportVesselName=Support vessel name size can't exceed %1 characters. ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -3244,6 +3244,7 @@ observe.validation.set.endDate.after.endPursingDate=El día de fin debe ser supe observe.validation.set.endPursingDate.after.date=El día de final de recogida de la jareta debe ser superior o igual a la día de observación. observe.validation.set.endPursingTimeStamp.after.startTime=La hora final de recogida de la jareta debe ser superior o igual a la hora de comienzo. observe.validation.set.endSetTimeStamp.after.endPursingTimeStamp=La hora de fin debe ser superior o igual a la hora de fin de recogida de la jareta. +observe.validation.set.endSetTimeStamp.after.startTime=End time must be after start time. \#TODO observe.validation.set.null.currentDirection=Dirección actual no introducida. observe.validation.set.required.comment.for.reasonForNullSet=Es necesario un comentario para la causa de lance nulo seleccionado. observe.validation.set.size.supportVesselName=El count del supply debe tener una longitud inferior a %1$s caracteres. ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -3244,6 +3244,7 @@ observe.validation.set.endDate.after.endPursingDate=La date de fin doit être su observe.validation.set.endPursingDate.after.date=La date de fin de coulissage doit être supérieure ou égal à la date du jour d'observation. observe.validation.set.endPursingTimeStamp.after.startTime=L'heure de fin de coulissage doit être supérieure ou égal à l'heure de début. observe.validation.set.endSetTimeStamp.after.endPursingTimeStamp=L'heure de fin doit être supérieure ou égal à l'heure de fin de coulissage. +observe.validation.set.endSetTimeStamp.after.startTime=L'heure de fin doit être supérieure ou égal à l'heure de de début. observe.validation.set.null.currentDirection=Direction courant non saisie. observe.validation.set.required.comment.for.reasonForNullSet=Un commentaire est requis pour la cause coup nul sélectionnée. observe.validation.set.size.supportVesselName=Le nom supply doit avoir une taille inférieure à %1$s caractères. ===================================== validation/src/main/i18n/getters/validation-messages.getter ===================================== @@ -66,6 +66,7 @@ observe.validation.set.endDate.after.endPursingDate observe.validation.set.endPursingDate.after.date observe.validation.set.endPursingTimeStamp.after.startTime observe.validation.set.endSetTimeStamp.after.endPursingTimeStamp +observe.validation.set.endSetTimeStamp.after.startTime observe.validation.set.size.supportVesselName observe.validation.set.startTime.after.time observe.validation.setLongline.baitsComposition.uniqueKey ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetDto-create-error-validation.xml ===================================== @@ -64,6 +64,15 @@ <message>observe.validation.set.size.supportVesselName##${ints.maxLength}</message> </field-validator> </field> + <field name="startTime"> + <!-- startTime <= activity.time --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ startTime == null || ! currentPsObservationActivity.timeSecond.after(startSetTime) ]]> + </param> + <message>observe.validation.set.startTime.after.time</message> + </field-validator> + </field> <field name="endPursingDate"> <!-- routeEntity.date <= endPursingDate --> <field-validator type="fieldexpression" short-circuit="true"> @@ -92,10 +101,16 @@ </field-validator> </field> <field name="endSetTimeStamp"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ endSetTimeStamp == null || ! startTime.after(endSetTimeStamp) ]]> + </param> + <message>observe.validation.set.endSetTimeStamp.after.startTime</message> + </field-validator> <!-- endPursingTimeStamp < = endSetTimeStamp && endSetTimeStamp - endPursingTimeStamp > 45 minutes --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> - <![CDATA[ endSetTimeStamp == null || ! endPursingTimeStamp.after(endSetTimeStamp) ]]> + <![CDATA[ endSetTimeStamp == null || endPursingTimeStamp == null || ! endPursingTimeStamp.after(endSetTimeStamp) ]]> </param> <message>observe.validation.set.endSetTimeStamp.after.endPursingTimeStamp</message> </field-validator> @@ -104,7 +119,7 @@ <field-validator type="fieldexpressionwithparams"> <param name="intParams">maxLength:45</param> <param name="expression"> - <![CDATA[ (endSetTimeStamp.time - endPursingTimeStamp.time) >= (ints.maxLength * 60000) ]]> + <![CDATA[ endSetTimeStamp == null || endPursingTimeStamp == null || (endSetTimeStamp.time - endPursingTimeStamp.time) >= (ints.maxLength * 60000) ]]> </param> <message>observe.validation.set.bound.delay##${ints.maxLength}</message> </field-validator> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/SetDto-update-error-validation.xml ===================================== @@ -53,6 +53,7 @@ <message/> </field-validator> </field> + <field name="supportVesselName"> <!-- supportVesselName de ${maxLength} caractères maximum --> <field-validator type="fieldexpressionwithparams"> @@ -91,7 +92,7 @@ </field-validator> </field> <field name="endSetDate"> - <!-- endDateCoulissage <= endSetDate --> + <!-- endPursingDate <= endSetDate --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> <![CDATA[ endPursingDate == null || ! endPursingDate.after(endSetDate) ]]> @@ -100,19 +101,25 @@ </field-validator> </field> <field name="endSetTimeStamp"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ endSetTimeStamp == null || ! startTime.after(endSetTimeStamp) ]]> + </param> + <message>observe.validation.set.endSetTimeStamp.after.startTime</message> + </field-validator> <!-- endPursingTimeStamp < = endSetTimeStamp && endSetTimeStamp - endPursingTimeStamp > 45 minutes --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> - <![CDATA[ endSetTimeStamp == null || ! endPursingTimeStamp.after(endSetTimeStamp) ]]> + <![CDATA[ endSetTimeStamp == null || endPursingTimeStamp == null || ! endPursingTimeStamp.after(endSetTimeStamp) ]]> </param> <message>observe.validation.set.endSetTimeStamp.after.endPursingTimeStamp</message> </field-validator> - <!--verifier que la duree de la set est d'au moins 45 minutes --> + <!-- verifier que la duree de la set est d'au moins 45 minutes --> <field-validator type="fieldexpressionwithparams"> <param name="intParams">maxLength:45</param> <param name="expression"> - <![CDATA[ (endSetTimeStamp.time - endPursingTimeStamp.time) >= (ints.maxLength * 60000) ]]> + <![CDATA[ endSetTimeStamp == null || endPursingTimeStamp == null || (endSetTimeStamp.time - endPursingTimeStamp.time) >= (ints.maxLength * 60000) ]]> </param> <message>observe.validation.set.bound.delay##${ints.maxLength}</message> </field-validator> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/a2480e4a5376d987e306af26bf3… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/a2480e4a5376d987e306af26bf3… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344
by Tony CHEMIT 24 Sep '19

24 Sep '19
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 346e933e by tchemit at 2019-09-24T13:53:59Z [REFERENTIEL][FOB] Présentation référentiel matériaux - Closes #1344 - - - - - 3 changed files: - dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java - + dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java - dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ReferentialReferenceDecorator.java Changes: ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java ===================================== @@ -8,12 +8,12 @@ * 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>. @@ -97,6 +97,7 @@ import fr.ird.observe.dto.decoration.decorators.LengthWeightParameterDecorator; import fr.ird.observe.dto.decoration.decorators.NonTargetCatchDecorator; import fr.ird.observe.dto.decoration.decorators.NonTargetCatchReleaseDecorator; import fr.ird.observe.dto.decoration.decorators.NonTargetLengthDecorator; +import fr.ird.observe.dto.decoration.decorators.ObjectMaterialReferenceDecorator; import fr.ird.observe.dto.decoration.decorators.ObjectObservedSpeciesDecorator; import fr.ird.observe.dto.decoration.decorators.ObserveDecorator; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; @@ -209,7 +210,6 @@ import fr.ird.observe.dto.referential.seine.NonTargetCatchReleaseStatusReference import fr.ird.observe.dto.referential.seine.NonTargetCatchReleasingTimeDto; import fr.ird.observe.dto.referential.seine.NonTargetCatchReleasingTimeReference; import fr.ird.observe.dto.referential.seine.ObjectMaterialDto; -import fr.ird.observe.dto.referential.seine.ObjectMaterialReference; import fr.ird.observe.dto.referential.seine.ObjectMaterialTypeDto; import fr.ird.observe.dto.referential.seine.ObjectMaterialTypeReference; import fr.ird.observe.dto.referential.seine.ObjectOperationDto; @@ -791,7 +791,9 @@ public class DecoratorService extends DecoratorProvider { @Override public void initObjectMaterialDto() { - registerDefaultReferentialAndReferentialReferenceDecorator(ObjectMaterialDto.class, ObjectMaterialReference.class, libelle); + registerDecorator(new ObjectMaterialReferenceDecorator()); + registerObserveDecorator(ObjectMaterialDto.class, "${code}$s##${" + libelle + "}$s", " "); +// registerDefaultReferentialAndReferentialReferenceDecorator(ObjectMaterialDto.class, ObjectMaterialReference.class, libelle); } @Override ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ObjectMaterialReferenceDecorator.java ===================================== @@ -0,0 +1,45 @@ +package fr.ird.observe.dto.decoration.decorators; + +/*- + * #%L + * ObServe :: Dto + * %% + * Copyright (C) 2008 - 2019 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.dto.referential.ReferentialDto; +import fr.ird.observe.dto.referential.seine.ObjectMaterialReference; +import org.apache.commons.jxpath.JXPathContext; + +import static io.ultreia.java4all.i18n.I18n.t; + +public class ObjectMaterialReferenceDecorator extends ReferentialReferenceDecorator<ObjectMaterialReference> { + + public ObjectMaterialReferenceDecorator() { + super(ObjectMaterialReference.class, "${code}$s##${label}$s"); + } + + @Override + protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { + Comparable<Comparable<?>> result = super.getTokenValue(jxcontext, token); + if (ReferentialDto.PROPERTY_CODE.equals(token) && (result == null || (result + "").isEmpty())) { + result = (Comparable) t("observe.common.nocode"); + } + return result; + } +} ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/decorators/ReferentialReferenceDecorator.java ===================================== @@ -55,7 +55,7 @@ public class ReferentialReferenceDecorator<R extends ReferentialDtoReference> ex JXPathContext jxcontext = JXPathContext.newContext(data); Comparable<Comparable<?>> key = getTokenValue(jxcontext, ReferentialDto.PROPERTY_CODE); // on passe en 000000x comme ça si on a des nombres, ils seront bien triés - String value = key == null ? "" : StringUtils.leftPad(key.toString(), 6, "0"); + String value = key == null || key.equals(t("observe.common.nocode")) ? "" : StringUtils.leftPad(key.toString(), 6, "0"); valueCache.put(data, (Comparable) value); } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/346e933e7d8ae85d46b37601665… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/346e933e7d8ae85d46b37601665… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] [PS][V7] Contrôle sur champ cuve - Closes #1390
by Tony CHEMIT 24 Sep '19

24 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: f0cb7151 by tchemit at 2019-09-24T13:22:20Z [PS][V7] Contrôle sur champ cuve - Closes #1390 - - - - - 1 changed file: - validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TargetCatchDto-update-targetCatch-error-validation.xml Changes: ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TargetCatchDto-update-targetCatch-error-validation.xml ===================================== @@ -42,7 +42,7 @@ </field-validator> </field> <field name="well"> - <field-validator type="mandatory" short-circuit="true"> + <field-validator type="mandatoryString" short-circuit="true"> <message/> </field-validator> </field> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/f0cb71517504e49aa3fdd146eca… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/f0cb71517504e49aa3fdd146eca… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [PS][V7] Contrôle sur champ cuve - Closes #1390
by Tony CHEMIT 24 Sep '19

24 Sep '19
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 5d715a6d by tchemit at 2019-09-24T13:19:34Z [PS][V7] Contrôle sur champ cuve - Closes #1390 - - - - - 1 changed file: - validation/src/main/resources/fr/ird/observe/dto/data/seine/TargetCatchDto-update-targetCatch-error-validation.xml Changes: ===================================== validation/src/main/resources/fr/ird/observe/dto/data/seine/TargetCatchDto-update-targetCatch-error-validation.xml ===================================== @@ -42,7 +42,7 @@ </field-validator> </field> <field name="well"> - <field-validator type="mandatory" short-circuit="true"> + <field-validator type="mandatoryString" short-circuit="true"> <message/> </field-validator> </field> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/5d715a6d95f4ce14bc6d2be1f64… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/5d715a6d95f4ce14bc6d2be1f64… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] 9 commits: update changelog [skip ci]
by Tony CHEMIT 24 Sep '19

24 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 0463703d by tchemit at 2019-09-24T08:55:26Z update changelog [skip ci] - - - - - bbd691c0 by tchemit at 2019-09-24T09:52:30Z Impossible de lancer l&#39;opération d&#39;apparairment d&#39;activités LL - Closes #1391 - - - - - 1b7aee96 by tchemit at 2019-09-24T10:34:49Z Labels non traduits sur l&#39;écran de validation - Closes #1393 - - - - - bc8aec63 by tchemit at 2019-09-24T10:51:30Z Répertoire des rapports à générer disparait si on annule le changement du répertoire - Closes #1392 - - - - - 4ddf1c3c by tchemit at 2019-09-24T11:02:12Z Erreur lors de la sélection des référentiels dans l&#39;écran de validation - Closes #1394 - - - - - 81aaee4e by tchemit at 2019-09-24T11:18:14Z Rapport LL ne fonctionne pas - Closes #1396 - - - - - c0053bf5 by tchemit at 2019-09-24T12:08:54Z Make validate action works again - - - - - d719c1c7 by tchemit at 2019-09-24T12:42:57Z on ne voit pas le nom des variables dans l&#39;écran de tableaux de synthèses -Closes #1395 - - - - - eee79993 by tchemit at 2019-09-24T12:43:37Z Stash again in progress client - - - - - 12 changed files: - + .mvn/gitlab-cache/milestones/1005038-artifacts.json - .mvn/gitlab-cache/milestones/532657-issues.json → .mvn/gitlab-cache/milestones/1005038-issues.json - .mvn/gitlab-cache/milestones/893806.json → .mvn/gitlab-cache/milestones/1005038.json - + .mvn/gitlab-cache/milestones/1005048-artifacts.json - .mvn/gitlab-cache/milestones/761666-issues.json → .mvn/gitlab-cache/milestones/1005048-issues.json - .mvn/gitlab-cache/milestones/898778.json → .mvn/gitlab-cache/milestones/1005048.json - − .mvn/gitlab-cache/milestones/364752-issues.json - − .mvn/gitlab-cache/milestones/364752.json - − .mvn/gitlab-cache/milestones/364753-issues.json - − .mvn/gitlab-cache/milestones/364753.json - .mvn/gitlab-cache/milestones/370039-issues.json - − .mvn/gitlab-cache/milestones/528849-artifacts.json The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/79264f9dc6a9b6cd24c9dd1e3d… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/79264f9dc6a9b6cd24c9dd1e3d… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] update changelog [skip ci]
by Tony CHEMIT 17 Sep '19

17 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 79264f9d by tchemit at 2019-09-17T12:17:15Z update changelog [skip ci] - - - - - 12 changed files: - + .mvn/gitlab-cache/milestones/1005038-artifacts.json - .mvn/gitlab-cache/milestones/532657-issues.json → .mvn/gitlab-cache/milestones/1005038-issues.json - .mvn/gitlab-cache/milestones/893806.json → .mvn/gitlab-cache/milestones/1005038.json - + .mvn/gitlab-cache/milestones/1005048-artifacts.json - .mvn/gitlab-cache/milestones/761666-issues.json → .mvn/gitlab-cache/milestones/1005048-issues.json - .mvn/gitlab-cache/milestones/898778.json → .mvn/gitlab-cache/milestones/1005048.json - − .mvn/gitlab-cache/milestones/364752-issues.json - − .mvn/gitlab-cache/milestones/364752.json - − .mvn/gitlab-cache/milestones/364753-issues.json - − .mvn/gitlab-cache/milestones/364753.json - .mvn/gitlab-cache/milestones/370039-issues.json - − .mvn/gitlab-cache/milestones/528849-artifacts.json The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/79264f9dc6a9b6cd24c9dd1e3d1… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/79264f9dc6a9b6cd24c9dd1e3d1… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] update changelog [skip ci]
by Tony CHEMIT 16 Sep '19

16 Sep '19
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 9dff93cf by tchemit at 2019-09-16T17:09:16Z update changelog [skip ci] - - - - - 3 changed files: - .mvn/gitlab-cache/milestones/958566-artifacts.json - .mvn/gitlab-cache/milestones/958566.json - CHANGELOG.md Changes: ===================================== .mvn/gitlab-cache/milestones/958566-artifacts.json ===================================== @@ -1,12 +1,12 @@ [ { "name": "Application", - "filename": "observe-7.1.1.zip", - "url": "http://repo1.maven.org/maven2/fr/ird/observe/observe/7.1.1/observe-7.1.1.zip" + "filename": "observe-7.2.0.zip", + "url": "http://repo1.maven.org/maven2/fr/ird/observe/observe/7.2.0/observe-7.2.0.zip" }, { "name": "Serveur", - "filename": "observe-7.1.1.war", - "url": "http://repo1.maven.org/maven2/fr/ird/observe/observe/7.1.1/observe-7.1.1.war" + "filename": "observe-7.2.0.war", + "url": "http://repo1.maven.org/maven2/fr/ird/observe/observe/7.2.0/observe-7.2.0.war" } ] \ No newline at end of file ===================================== .mvn/gitlab-cache/milestones/958566.json ===================================== @@ -3,7 +3,7 @@ "iid": 148, "projectId": 2722779, "groupId": 0, - "title": "7.1.1", + "title": "7.2.0", "dueDate": "Sep 12, 2019 2:00:00 AM", "startDate": "Aug 2, 2019 2:00:00 AM", "state": "closed" ===================================== CHANGELOG.md ===================================== @@ -1,7 +1,7 @@ # ObServe changelog * Author [Tony Chemit](mailto:dev@tchemit.fr) - * Last generated at 2019-09-12 12:50. + * Last generated at 2019-09-16 19:04. ## Version [8.0-RC-4](https://gitlab.com/ultreiaio/ird-observe/milestones/146) @@ -222,13 +222,13 @@ Premier lot du contrat IRD-2018-01-V8 * [[Evolution 922]](https://gitlab.com/ultreiaio/ird-observe/issues/922) **Ajoute le référentiel observe_common.DataQuality sur les données existantes** (Thanks to Tony CHEMIT) (Reported by Tony CHEMIT) * [[Evolution 950]](https://gitlab.com/ultreiaio/ird-observe/issues/950) **Renommage de la classe seine.WeightCategory en seine.WeightCategorySeine** (Thanks to Tony CHEMIT) (Reported by Tony CHEMIT) -## Version [7.1.1](https://gitlab.com/ultreiaio/ird-observe/milestones/148) +## Version [7.2.0](https://gitlab.com/ultreiaio/ird-observe/milestones/148) **Closed at 2019-09-12.** ### Download -* [Application (observe-7.1.1.zip)](http://repo1.maven.org/maven2/fr/ird/observe/observe/7.…) -* [Serveur (observe-7.1.1.war)](http://repo1.maven.org/maven2/fr/ird/observe/observe/7.…) +* [Application (observe-7.2.0.zip)](http://repo1.maven.org/maven2/fr/ird/observe/observe/7.…) +* [Serveur (observe-7.2.0.war)](http://repo1.maven.org/maven2/fr/ird/observe/observe/7.…) ### Issues * [[Anomalie 1373]](https://gitlab.com/ultreiaio/ird-observe/issues/1373) **[LL] Une marée provoque un dépassement mémoire et/ou a un souci de commentaires trop longs** (Thanks to Tony CHEMIT) (Reported by Pascal Cauquil) View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/9dff93cfd8d95321b2680c93f62… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/9dff93cfd8d95321b2680c93f62… You're receiving this email because of your account on gitlab.com.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • ...
  • 720
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.