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/8b001306bcd5bfd2ee4e3da2cf87... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/8b001306bcd5bfd2ee4e3da2cf87... You're receiving this email because of your account on gitlab.com.