Tony CHEMIT pushed to branch develop-9.0.x at ultreiaio / ird-observe Commits: 6c949030 by Tony Chemit at 2022-12-12T18:48:14+01:00 Report - review ComputeDynamicHeader code (if incoming matrix is empty, was not working) - - - - - 3be5c67c by Tony Chemit at 2022-12-12T18:58:23+01:00 Lorsque que l'on utilise la fonction Précédent de l'assistants rapports, il est possible de lancer les rapports sur des marées non calculées - Closes #2550 - - - - - 9 changed files: - client/datasource/actions/src/main/i18n/getters/java.getter - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/SelectDataUIHandler.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/consolidate/ConsolidateModel.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/consolidate/actions/Start.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java - client/runner/src/main/i18n/translations/client-runner_en_GB.properties - client/runner/src/main/i18n/translations/client-runner_es_ES.properties - client/runner/src/main/i18n/translations/client-runner_fr_FR.properties - toolkit/api/src/main/java/fr/ird/observe/dto/report/operations/ComputeDynamicHeader.java Changes: ===================================== client/datasource/actions/src/main/i18n/getters/java.getter ===================================== @@ -38,6 +38,7 @@ observe.ui.datasource.editor.actions.consolidate.message.noChanges observe.ui.datasource.editor.actions.consolidate.message.operation.done observe.ui.datasource.editor.actions.consolidate.message.save.changes observe.ui.datasource.editor.actions.consolidate.message.trip +observe.ui.datasource.editor.actions.consolidate.skip.trip observe.ui.datasource.editor.actions.consolidate.start.trip observe.ui.datasource.editor.actions.consolidate.title observe.ui.datasource.editor.actions.consolidate.title.tip ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/SelectDataUIHandler.java ===================================== @@ -22,6 +22,7 @@ package fr.ird.observe.client.datasource.actions.config; * #L% */ +import fr.ird.observe.client.datasource.actions.AdminStep; import fr.ird.observe.client.datasource.actions.AdminTabUIHandler; import fr.ird.observe.client.datasource.actions.AdminUIModel; import fr.ird.observe.client.datasource.editor.api.config.TreeConfigUI; @@ -33,6 +34,7 @@ import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.navigation.tree.selection.SelectionTree; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.jaxx.runtime.swing.SwingUtil; +import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState; import javax.swing.SwingUtilities; import java.awt.GridBagConstraints; @@ -104,4 +106,16 @@ public class SelectDataUIHandler extends AdminTabUIHandler<SelectDataUI> impleme ui.getSUCCESSED_panel().removeAll(); ui.getSUCCESSED_panel().add(SwingUtil.boxComponentWithJxLayer(ui.getSelectTreePane()), new GridBagConstraints(0, 0, 1, 1, 1.0, 1, 10, 1, new Insets(3, 3, 3, 3), 0, 0)); } + + @Override + protected void onComingFromNextStep(AdminStep oldStep) { + AdminUIModel model = ui.getModel(); + if (model.containsOperation(AdminStep.CONSOLIDATE) && !model.containsOperation(AdminStep.EXPORT_DATA)) { + if (model.getStepState(AdminStep.CONSOLIDATE) == WizardState.SUCCESSED) { + // set back to pending consolidate step + model.setStepState(AdminStep.CONSOLIDATE, WizardState.PENDING); + } + } + super.onComingFromNextStep(oldStep); + } } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/consolidate/ConsolidateModel.java ===================================== @@ -30,6 +30,9 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState; +import java.util.Set; +import java.util.TreeSet; + /** * Modele pour preparer une validation de donnees d'une base. * @@ -43,9 +46,14 @@ public class ConsolidateModel extends AdminActionModel { * Data source to use for operation. */ private ObserveSwingDataSource source; + /** + * To track trip that has already been consolidated (they won't be again processed). + */ + private final Set<String> alreadyDoneTripIds; public ConsolidateModel() { super(AdminStep.CONSOLIDATE); + this.alreadyDoneTripIds = new TreeSet<>(); } public ObserveSwingDataSource getSource() { @@ -80,4 +88,11 @@ public class ConsolidateModel extends AdminActionModel { return uiModel.validate(AdminStep.SELECT_DATA) && uiModel.getStepState(step) == WizardState.SUCCESSED; } + public boolean checkIfTripAlreadyProcessed(String tripId) { + return alreadyDoneTripIds.contains(tripId); + } + + public void setTripProcessed(String tripId) { + alreadyDoneTripIds.add(tripId); + } } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/consolidate/actions/Start.java ===================================== @@ -96,10 +96,21 @@ public class Start extends AdminTabUIActionSupport<ConsolidateUI> { for (String tripId : tripIds) { progressModel.increments(); + + if (stepModel.checkIfTripAlreadyProcessed(tripId)) { + // this one has already been processed + sendMessage(t("observe.ui.datasource.editor.actions.consolidate.skip.trip", ++index, nbTrips, tripId)); + progressModel.increments(); + continue; + } sendMessage(t("observe.ui.datasource.editor.actions.consolidate.start.trip", ++index, nbTrips, tripId)); + // mark trip processed + stepModel.setTripProcessed(tripId); + if (TripAware.isLonglineId(tripId)) { // can't consolidate LL trips... + progressModel.increments(); continue; } TripConsolidateRequest request = new TripConsolidateRequest(); ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportModel.java ===================================== @@ -191,7 +191,7 @@ public class ReportModel extends AdminActionModel { // l'onglet de sélection des données soit ok ReportModel reportModel = uiModel.getReportModel(); List<Report> reports = reportModel.getReports(); - return uiModel.validate(AdminStep.SELECT_DATA) && reports != null && !reports.isEmpty(); + return uiModel.validate(AdminStep.CONSOLIDATE) && reports != null && !reports.isEmpty(); } @Override ===================================== client/runner/src/main/i18n/translations/client-runner_en_GB.properties ===================================== @@ -477,6 +477,7 @@ observe.ui.datasource.editor.actions.consolidate.message.noChanges=No data modif observe.ui.datasource.editor.actions.consolidate.message.operation.done=Consolidate operation done in %1$s. observe.ui.datasource.editor.actions.consolidate.message.save.changes=Save modified %1$s trip(s). observe.ui.datasource.editor.actions.consolidate.message.trip=Data consolidate for trip [%s] %s +observe.ui.datasource.editor.actions.consolidate.skip.trip=Skip already consolidated data on trip %s / %s (%s) observe.ui.datasource.editor.actions.consolidate.start.trip=Start consolidate data on trip %s / %s (%s) observe.ui.datasource.editor.actions.consolidate.title=Consolidate data observe.ui.datasource.editor.actions.consolidate.title.tip=Consolidate observed data ===================================== client/runner/src/main/i18n/translations/client-runner_es_ES.properties ===================================== @@ -477,6 +477,7 @@ observe.ui.datasource.editor.actions.consolidate.message.noChanges=No modificaci observe.ui.datasource.editor.actions.consolidate.message.operation.done=Operación de calculo de datos terminada en %1$s. observe.ui.datasource.editor.actions.consolidate.message.save.changes=Guardar las modificaciones de la(s) %1$s marea(s) modificada(s). observe.ui.datasource.editor.actions.consolidate.message.trip=Datos calculados para la marea [%s] %s +observe.ui.datasource.editor.actions.consolidate.skip.trip=Skip already consolidated data on trip %s / %s (%s) observe.ui.datasource.editor.actions.consolidate.start.trip=Démarrage de la consolidation pour la marée %s / %s (%s) \#TODO observe.ui.datasource.editor.actions.consolidate.title=Consolidar los datos observe.ui.datasource.editor.actions.consolidate.title.tip=Consolidar los datos ===================================== client/runner/src/main/i18n/translations/client-runner_fr_FR.properties ===================================== @@ -477,6 +477,7 @@ observe.ui.datasource.editor.actions.consolidate.message.noChanges=Aucune donné observe.ui.datasource.editor.actions.consolidate.message.operation.done=Opération de calcul des données terminée à %1$s. observe.ui.datasource.editor.actions.consolidate.message.save.changes=Sauvegarde des modifications sur la(es) %1$s marée(s) modifiée(s). observe.ui.datasource.editor.actions.consolidate.message.trip=Données calculées pour la marée [%s] %s. +observe.ui.datasource.editor.actions.consolidate.skip.trip=Marée déjà consolidée %s / %s (%s) observe.ui.datasource.editor.actions.consolidate.start.trip=Démarrage de la consolidation pour la marée %s / %s (%s) observe.ui.datasource.editor.actions.consolidate.title=Consolider les données observateur observe.ui.datasource.editor.actions.consolidate.title.tip=Consolider les données observateur ===================================== toolkit/api/src/main/java/fr/ird/observe/dto/report/operations/ComputeDynamicHeader.java ===================================== @@ -30,6 +30,9 @@ import fr.ird.observe.dto.report.ReportOperationConsumer; import fr.ird.observe.dto.report.ReportRequestExecutor; import fr.ird.observe.dto.report.ReportVariable; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; import java.util.Set; /** @@ -62,25 +65,26 @@ public class ComputeDynamicHeader implements ReportOperationConsumer { String repeatVariableName = split[1].trim(); ReportVariable<Object> repeatVariable1 = report.getRepeatVariable(repeatVariableName); Set<?> repeatVariableValues = repeatVariable1.getValues(); - int columnIndex = 0; - DataMatrix tmpMatrix = createTmpMatrix(0, 0, incoming.getWidth(), 1); + List<String> columnNames = new LinkedList<>(Arrays.asList(fixedColumnNames)); boolean useNullRepeatVariableValue = false; - for (String beginHeader : fixedColumnNames) { - tmpMatrix.setValue(columnIndex++, 0, beginHeader); - } for (Object repeatVariable : repeatVariableValues) { if (repeatVariable == null) { useNullRepeatVariableValue = true; } else { if (repeatVariable instanceof WithI18n) { - tmpMatrix.setValue(columnIndex++, 0, ((WithI18n) repeatVariable).getLabel2()); + columnNames.add(((WithI18n) repeatVariable).getLabel2()); } else { - tmpMatrix.setValue(columnIndex++, 0, repeatVariable.toString()); + columnNames.add(repeatVariable.toString()); } } } if (useNullRepeatVariableValue || repeatVariable1.isAddNullValue()) { - tmpMatrix.setValue(columnIndex, 0, "Aucun"); + columnNames.add("Aucun"); + } + int columnIndex = 0; + DataMatrix tmpMatrix = createTmpMatrix(0, 0, columnNames.size(), 1); + for (String columnName : columnNames) { + tmpMatrix.setValue(columnIndex++, 0, columnName); } incoming.setY(1); return DataMatrix.merge(incoming, tmpMatrix); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/d177f9ff66ae7d98f4d098e65... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/d177f9ff66ae7d98f4d098e65... You're receiving this email because of your account on gitlab.com.