Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 137b6b48 by tchemit at 2020-02-13T12:55:38+01:00 [EXPORT CARTE] Le nom de fichier est généré sans l'extension PNG - Closes #1434 - - - - - 3d6870bc by tchemit at 2020-02-13T12:59:17+01:00 [LL] Contrôle sur nombre de baskets trop limité - Closes #1433 - - - - - 26 changed files: - client-core/src/main/java/fr/ird/observe/client/util/UIHelper.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/ChooseFileReport.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigDataUIChooseDumpFileAction.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigReferentialUIChooseDumpFileAction.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigUIChooseDumpFileAction.java - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/actions/ExportPng.java - client-datasource-editor-ll/pom.xml - client-datasource-editor-ll/src/main/i18n/getters/java.getter - client-datasource-editor-ll/src/main/i18n/getters/jaxx.getter - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/ObserveLLKeyStrokes.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jaxx - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jcss - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUIHandler.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jaxx - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jcss - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUIHandler.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIActionSupport.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIDeleteData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIExportData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIImportData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIActionSupport.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIDeleteData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIExportData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIImportData.java - validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-update-error-validation.xml Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/util/UIHelper.java ===================================== @@ -173,16 +173,16 @@ public class UIHelper extends SwingUtil { /** * Choisir un fichier via un sélecteur graphique de fichiers. * - * @param parent le component swing appelant le controle - * @param title le titre du dialogue de sélection - * @param buttonLabel le label du boutton d'acceptation - * @param incoming le fichier de base à utilier - * @param filters les filtres + descriptions sur le sélecteur de - * fichiers + * @param parent le component swing appelant le controle + * @param title le titre du dialogue de sélection + * @param buttonLabel le label du boutton d'acceptation + * @param incoming le fichier de base à utilier + * @param mainExtension l'extension principale (à rajouter sur le nom du fichier si besoin) + * @param filters les filtres + descriptions sur le sélecteur de fichiers * @return le fichier choisi ou le fichier incoming si l'opération a été * annulée */ - public static File chooseFile(Component parent, String title, String buttonLabel, File incoming, String... filters) { + public static File chooseFile(Component parent, String title, String buttonLabel, File incoming, String mainExtension, String... filters) { JaxxFileChooser.ToLoadFile toLoadFile = JaxxFileChooser.forLoadingFile() .setParent(parent) @@ -199,7 +199,7 @@ public class UIHelper extends SwingUtil { if (log.isDebugEnabled()) { log.debug(title + " : " + file); } - return file == null ? incoming : file; + return file == null ? incoming : ensureFileExtension(file, mainExtension); } /** @@ -229,6 +229,13 @@ public class UIHelper extends SwingUtil { return file; } + public static File ensureFileExtension(File file, String extension) { + if (extension != null && !file.getName().toLowerCase().endsWith(extension)) { + file = file.toPath().getParent().resolve(file.getName() + extension).toFile(); + } + return file; + } + private static File getParentDirectoryIfExist(File incoming) { if (incoming != null) { File basedir; ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/ChooseFileReport.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.datasource.actions.report.ReportConfigUI; import fr.ird.observe.client.datasource.actions.report.ReportModel; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.ObserveUtil; import org.nuiton.jaxx.runtime.swing.action.JComponentActionSupport; import java.awt.event.ActionEvent; @@ -42,13 +43,13 @@ public class ChooseFileReport extends JComponentActionSupport<ReportConfigUI> { @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")); + File f = UIHelper.chooseFile(ui, + t("observe.title.choose.reportFile"), + t("observe.action.choose.reportFile"), + model.getReportFile(), + ObserveUtil.PROPERTIES_EXTENSION, + ObserveUtil.PROPERTIES_EXTENSION_PATTERN, + t("observe.action.choose.reportFile.description")); if (f != null) { model.setReportFile(f); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigDataUIChooseDumpFileAction.java ===================================== @@ -41,11 +41,12 @@ public class ConfigDataUIChooseDumpFileAction extends StorageTabUIActionSupport< @Override protected void doActionPerformed(ActionEvent e, ConfigDataUI ui) { File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - ObserveUtil.SQL_GZ_EXTENSION_PATTERN, - t("observe.action.choose.db.dump.description")); + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + ObserveUtil.SQL_GZ_EXTENSION, + ObserveUtil.SQL_GZ_EXTENSION_PATTERN, + t("observe.action.choose.db.dump.description")); if (f != null) { ui.getHandler().setDumpFile(f.getAbsolutePath()); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigReferentialUIChooseDumpFileAction.java ===================================== @@ -41,11 +41,12 @@ public class ConfigReferentialUIChooseDumpFileAction extends StorageTabUIActionS @Override protected void doActionPerformed(ActionEvent e, ConfigReferentialUI ui) { File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - ObserveUtil.SQL_GZ_EXTENSION_PATTERN, - t("observe.action.choose.db.dump.description")); + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + ObserveUtil.SQL_GZ_EXTENSION, + ObserveUtil.SQL_GZ_EXTENSION_PATTERN, + t("observe.action.choose.db.dump.description")); if (f != null) { ui.getHandler().setDumpFile(f.getAbsolutePath()); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigUIChooseDumpFileAction.java ===================================== @@ -41,11 +41,12 @@ public class ConfigUIChooseDumpFileAction extends StorageTabUIActionSupport<Conf @Override protected void doActionPerformed(ActionEvent event, ConfigUI ui) { File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - ObserveUtil.SQL_GZ_EXTENSION_PATTERN, - t("observe.action.choose.db.dump.description")); + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + ObserveUtil.SQL_GZ_EXTENSION, + ObserveUtil.SQL_GZ_EXTENSION_PATTERN, + t("observe.action.choose.db.dump.description")); if (f != null) { ui.getHandler().setDumpFile(f.getAbsolutePath()); } ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/actions/ExportPng.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.datasource.editor.content.data.trip.map.TripMapUI; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.client.util.ObserveSwingTechnicalException; import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.ObserveUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -57,13 +58,13 @@ public class ExportPng extends TripMapUIActionSupport { @Override protected void doActionPerformed(ActionEvent event, TripMapUI ui) { - File file = UIHelper.chooseFile( - ui, - t("observe.content.map.export.chooseFile.title"), - t("observe.content.map.export.chooseFile.ok"), - null, - "^.+\\.png|.+\\.PNG$", - t("observe.content.map.export.chooseFile.png")); + File file = UIHelper.chooseFile(ui, + t("observe.content.map.export.chooseFile.title"), + t("observe.content.map.export.chooseFile.ok"), + null, + ObserveUtil.PNG_EXTENSION, + ObserveUtil.PNG_EXTENSION_PATTERN, + t("observe.content.map.export.chooseFile.png")); if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { ===================================== client-datasource-editor-ll/pom.xml ===================================== @@ -137,10 +137,6 @@ <groupId>io.ultreia.java4all.jaxx</groupId> <artifactId>jaxx-widgets-datetime</artifactId> </dependency> - <dependency> - <groupId>io.ultreia.java4all.jaxx</groupId> - <artifactId>jaxx-widgets-status</artifactId> - </dependency> <dependency> <groupId>io.ultreia.java4all.jaxx</groupId> <artifactId>jaxx-widgets-select</artifactId> ===================================== client-datasource-editor-ll/src/main/i18n/getters/java.getter ===================================== @@ -225,7 +225,12 @@ observe.data.ll.observation.SensorUsed.action.importData observe.data.ll.observation.SensorUsed.choose.title.exportData observe.data.ll.observation.SensorUsed.choose.title.importData observe.data.ll.observation.SensorUsed.delete.data.message -observe.data.ll.observation.SensorUsed.message.data.exported +observe.data.ll.observation.SensorUsed.deleteData +observe.data.ll.observation.SensorUsed.deleteData.tip +observe.data.ll.observation.SensorUsed.exportData +observe.data.ll.observation.SensorUsed.exportData.tip +observe.data.ll.observation.SensorUsed.importData +observe.data.ll.observation.SensorUsed.importData.tip observe.data.ll.observation.SensorUsed.replace.data.message observe.data.ll.observation.SensorUsed.table.data observe.data.ll.observation.SensorUsed.table.data.tip @@ -289,7 +294,12 @@ observe.data.ll.observation.Tdr.action.exportData observe.data.ll.observation.Tdr.action.importData observe.data.ll.observation.Tdr.choose.title.exportData observe.data.ll.observation.Tdr.choose.title.importData -observe.data.ll.observation.Tdr.delete.data.message +observe.data.ll.observation.Tdr.deleteData +observe.data.ll.observation.Tdr.deleteData.tip +observe.data.ll.observation.Tdr.exportData +observe.data.ll.observation.Tdr.exportData.tip +observe.data.ll.observation.Tdr.importData +observe.data.ll.observation.Tdr.importData.tip observe.data.ll.observation.Tdr.replace.data.message observe.data.ll.observation.Tdr.table.data observe.data.ll.observation.Tdr.table.data.tip ===================================== client-datasource-editor-ll/src/main/i18n/getters/jaxx.getter ===================================== @@ -319,12 +319,6 @@ observe.data.ll.observation.SensorUsed.action.create.tip observe.data.ll.observation.SensorUsed.data observe.data.ll.observation.SensorUsed.dataLocation observe.data.ll.observation.SensorUsed.dataLocation.tip -observe.data.ll.observation.SensorUsed.deleteData -observe.data.ll.observation.SensorUsed.deleteData.tip -observe.data.ll.observation.SensorUsed.exportData -observe.data.ll.observation.SensorUsed.exportData.tip -observe.data.ll.observation.SensorUsed.importData -observe.data.ll.observation.SensorUsed.importData.tip observe.data.ll.observation.SensorUsed.sensorBrand observe.data.ll.observation.SensorUsed.sensorDataFormat observe.data.ll.observation.SensorUsed.sensorSerialNo @@ -414,22 +408,16 @@ observe.data.ll.observation.Tdr.caracteristicsTab observe.data.ll.observation.Tdr.data observe.data.ll.observation.Tdr.dataLocation observe.data.ll.observation.Tdr.dataLocation.tip -observe.data.ll.observation.Tdr.deleteData -observe.data.ll.observation.Tdr.deleteData.tip observe.data.ll.observation.Tdr.deployementEnd observe.data.ll.observation.Tdr.deployementStart observe.data.ll.observation.Tdr.enableTimestamp observe.data.ll.observation.Tdr.enableTimestamp.tip -observe.data.ll.observation.Tdr.exportData -observe.data.ll.observation.Tdr.exportData.tip observe.data.ll.observation.Tdr.fishingEnd observe.data.ll.observation.Tdr.fishingEndDepth observe.data.ll.observation.Tdr.fishingStart observe.data.ll.observation.Tdr.fishingStartDepth observe.data.ll.observation.Tdr.floatline1Length observe.data.ll.observation.Tdr.floatline2Length -observe.data.ll.observation.Tdr.importData -observe.data.ll.observation.Tdr.importData.tip observe.data.ll.observation.Tdr.itemHorizontalPosition observe.data.ll.observation.Tdr.itemVerticalPosition observe.data.ll.observation.Tdr.keyDataTab ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/ObserveLLKeyStrokes.java ===================================== @@ -41,4 +41,7 @@ public class ObserveLLKeyStrokes extends ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_ADD_SET_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed L"); public static final KeyStroke KEY_STROKE_ADD_SAMPLE_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed M"); public static final KeyStroke KEY_STROKE_GENERATE_ID = KeyStroke.getKeyStroke("ctrl pressed G"); + public static final KeyStroke KEY_STROKE_IMPORT_DATA = KeyStroke.getKeyStroke("ctrl pressed I"); + public static final KeyStroke KEY_STROKE_DELETE_DATA = KeyStroke.getKeyStroke("shift ctrl pressed D"); + public static final KeyStroke KEY_STROKE_EXPORT_DATA = KeyStroke.getKeyStroke("ctrl pressed E"); } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jaxx ===================================== @@ -126,9 +126,9 @@ </cell> <cell weightx='1' anchor='east'> <JPanel layout='{new GridLayout()}'> - <JButton id="importDataButton" onActionPerformed="getHandler().importData()"/> - <JButton id="exportDataButton" onActionPerformed="getHandler().exportData()"/> - <JButton id="deleteDataButton" onActionPerformed="getHandler().deleteData()"/> + <JButton id="importData"/> + <JButton id="exportData"/> + <JButton id="deleteData"/> </JPanel> </cell> </row> ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jcss ===================================== @@ -24,22 +24,10 @@ toolTipText:"observe.data.ll.observation.SensorUsed.dataLocation.tip"; } -#importDataButton { - actionIcon:data-import; - text:"observe.data.ll.observation.SensorUsed.importData"; - toolTipText:"observe.data.ll.observation.SensorUsed.importData.tip"; -} - -#exportDataButton { - actionIcon:data-export; - text:"observe.data.ll.observation.SensorUsed.exportData"; - toolTipText:"observe.data.ll.observation.SensorUsed.exportData.tip"; +#exportData { enabled:{tableEditBean.isHasData()}; } -#deleteDataButton { - actionIcon:delete; - text:"observe.data.ll.observation.SensorUsed.deleteData"; - toolTipText:"observe.data.ll.observation.SensorUsed.deleteData.tip"; +#deleteData { enabled:{tableEditBean.isHasData()}; } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUIHandler.java ===================================== @@ -22,13 +22,9 @@ package fr.ird.observe.client.datasource.editor.content.data.ll.observation; * #L% */ -import fr.ird.observe.client.ClientUIContextApplicationComponent; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy; -import fr.ird.observe.client.main.ObserveMainUI; -import fr.ird.observe.client.util.ObserveSwingTechnicalException; import fr.ird.observe.client.util.UIHelper; -import fr.ird.observe.dto.data.DataFileDto; import fr.ird.observe.dto.data.ll.observation.ActivitySensorUsedDto; import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; import fr.ird.observe.dto.form.Form; @@ -39,19 +35,13 @@ import fr.ird.observe.dto.result.SaveResultDto; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; -import org.nuiton.jaxx.widgets.file.JaxxFileChooser; -import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.awt.Component; import java.awt.Container; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; import static io.ultreia.java4all.i18n.I18n.n; -import static io.ultreia.java4all.i18n.I18n.t; /** * Created on 8/31/14. @@ -138,78 +128,4 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivitySensorUse saveResult.toDto(bean); } - public void importData() { - SensorUsedDto tableEditBean = getModel().getTableEditBean(); - if (tableEditBean.isHasData()) { - DataFileDto dataFile = tableEditBean.getData(); - if (dataFile == null) { - dataFile = getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); - } - int response = UIHelper.askUser(ui, - t("observe.title.confirmReplace"), - t("observe.data.ll.observation.SensorUsed.replace.data.message", dataFile.getName()), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.replace"), - t("observe.choice.cancel")}, - 1); - boolean doReplace = response == 0; - if (!doReplace) { - return; - } - } - File file = UIHelper.chooseFile(ui, - t("observe.data.ll.observation.SensorUsed.choose.title.importData"), - t("observe.data.ll.observation.SensorUsed.action.importData"), - null); - if (file != null) { - log.info(prefix + "Set data from file: " + file); - DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); - tableEditBean.setData(dataFileDto); - tableEditBean.setHasData(true); - } - } - - public void deleteData() { - int response = UIHelper.askUser(ui, - t("observe.title.delete"), - t("observe.data.ll.observation.SensorUsed.delete.data.message"), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.delete"), - t("observe.choice.cancel")}, - 1); - boolean doDelete = response == 0; - if (doDelete) { - SensorUsedDto tableEditBean = getModel().getTableEditBean(); - log.info(prefix + "Delete sensorUsed data " + tableEditBean.getData()); - tableEditBean.setData(null); - tableEditBean.setHasData(false); - } - } - - public void exportData() { - SensorUsedDto tableEditBean = getModel().getTableEditBean(); - DataFileDto dataFile = tableEditBean.getData(); - if (dataFile == null) { - dataFile = getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); - } - File file = JaxxFileChooser - .forSaving() - .setParent(ui) - .setTitle(t("observe.data.ll.observation.SensorUsed.choose.title.exportData")) - .setApprovalText(t("observe.data.ll.observation.SensorUsed.action.exportData")) - .setFilename(dataFile.getName()) - .setUseAcceptAllFileFilter(true) - .choose(); - - if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { - log.info(prefix + "save sensorUsed data to " + file); - try { - Files.write(file.toPath(), dataFile.getContent()); - ObserveMainUI mainUI = ClientUIContextApplicationComponent.value().getMainUI(); - mainUI.getStatus().setStatus(t("observe.data.ll.observation.SensorUsed.message.data.exported", file)); - } catch (IOException e) { - throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); - } - } - } } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jaxx ===================================== @@ -133,9 +133,9 @@ </cell> <cell weightx='1' anchor='east'> <JPanel layout='{new GridLayout()}'> - <JButton id="importDataButton" onActionPerformed="getHandler().importData()"/> - <JButton id="exportDataButton" onActionPerformed="getHandler().exportData()"/> - <JButton id="deleteDataButton" onActionPerformed="getHandler().deleteData()"/> + <JButton id="importData"/> + <JButton id="exportData"/> + <JButton id="deleteData"/> </JPanel> </cell> </row> ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jcss ===================================== @@ -28,23 +28,11 @@ toolTipText:"observe.data.ll.observation.Tdr.dataLocation.tip"; } -#importDataButton { - actionIcon:data-import; - text:"observe.data.ll.observation.Tdr.importData"; - toolTipText:"observe.data.ll.observation.Tdr.importData.tip"; -} - -#exportDataButton { - actionIcon:data-export; - text:"observe.data.ll.observation.Tdr.exportData"; - toolTipText:"observe.data.ll.observation.Tdr.exportData.tip"; +#exportData { enabled:{tableEditBean.isHasData()}; } -#deleteDataButton { - actionIcon:delete; - text:"observe.data.ll.observation.Tdr.deleteData"; - toolTipText:"observe.data.ll.observation.Tdr.deleteData.tip"; +#deleteData { enabled:{tableEditBean.isHasData()}; } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUIHandler.java ===================================== @@ -22,16 +22,12 @@ package fr.ird.observe.client.datasource.editor.content.data.ll.observation; * #L% */ -import fr.ird.observe.client.ClientUIContextApplicationComponent; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIModel; import fr.ird.observe.client.datasource.editor.content.spi.ContentUIReferenceCache; -import fr.ird.observe.client.main.ObserveMainUI; -import fr.ird.observe.client.util.ObserveSwingTechnicalException; import fr.ird.observe.client.util.UIHelper; -import fr.ird.observe.dto.data.DataFileDto; import fr.ird.observe.dto.data.ll.observation.SetTdrDto; import fr.ird.observe.dto.data.ll.observation.TdrDto; import fr.ird.observe.dto.form.Form; @@ -40,20 +36,14 @@ import fr.ird.observe.dto.result.SaveResultDto; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; -import org.nuiton.jaxx.widgets.file.JaxxFileChooser; import javax.swing.JComponent; -import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; import java.util.Date; import java.util.List; import static io.ultreia.java4all.i18n.I18n.n; -import static io.ultreia.java4all.i18n.I18n.t; /** * Created on 9/30/14. @@ -214,85 +204,6 @@ public class TdrUIHandler extends ContentTableUIHandler<SetTdrDto, TdrDto, TdrUI setTimestamp(bean, timeStamp); } - public void importData() { - TdrDto tableEditBean = getModel().getTableEditBean(); - if (tableEditBean.isHasData()) { - DataFileDto dataFile = tableEditBean.getData(); - if (dataFile == null) { - dataFile = getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); - } - int response = UIHelper.askUser(ui, - t("observe.title.confirmReplace"), - t("observe.data.ll.observation.Tdr.replace.data.message", dataFile.getName()), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.replace"), - t("observe.choice.cancel")}, - 1); - boolean doReplace = response == 0; - if (!doReplace) { - return; - } - } - - File file = UIHelper.chooseFile(ui, - t("observe.data.ll.observation.Tdr.choose.title.importData"), - t("observe.data.ll.observation.Tdr.action.importData"), - null); - if (file != null) { - log.info("Set data from file: " + file); - DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); - tableEditBean.setData(dataFileDto); - tableEditBean.setHasData(true); - } - } - - public void deleteData() { - int response = UIHelper.askUser(ui, - t("observe.title.delete"), - t("observe.data.ll.observation.Tdr.delete.data.message"), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.delete"), - t("observe.choice.cancel")}, - 1); - boolean doDelete = response == 0; - if (doDelete) { - TdrDto tableEditBean = getModel().getTableEditBean(); - log.info("Delete tdr data " + tableEditBean.getData()); - tableEditBean.setData(null); - tableEditBean.setHasData(false); - } - } - - public void exportData() { - - TdrDto tableEditBean = getModel().getTableEditBean(); - DataFileDto dataFile = tableEditBean.getData(); - - if (dataFile == null) { - dataFile = getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); - } - - File file = JaxxFileChooser - .forSaving() - .setParent(ui) - .setTitle(t("observe.data.ll.observation.Tdr.choose.title.exportData")) - .setApprovalText(t("observe.data.ll.observation.Tdr.action.exportData")) - .setFilename(dataFile.getName()) - .setUseAcceptAllFileFilter(true) - .choose(); - - if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { - log.info("save tdr data to " + file); - try { - Files.write(file.toPath(), dataFile.getContent()); - ObserveMainUI mainUI = ClientUIContextApplicationComponent.value().getMainUI(); - mainUI.getStatus().setStatus(t("observe.data.ll.observation.SensorUsed.message.data.exported", file)); - } catch (IOException e) { - throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); - } - } - } - private void setTimestamp(TdrDto bean, Date timestamp) { bean.setDeployementStart(timestamp); bean.setDeployementEnd(timestamp); ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIActionSupport.java ===================================== @@ -0,0 +1,41 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; + +import javax.swing.KeyStroke; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8 + */ +public abstract class SensorUsedUIActionSupport extends ContentUIActionSupport<SensorUsedUI> { + + protected SensorUsedUIActionSupport(String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + +} + ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIDeleteData.java ===================================== @@ -0,0 +1,68 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since ? + */ +public class SensorUsedUIDeleteData extends SensorUsedUIActionSupport { + + private static final Logger log = LogManager.getLogger(SensorUsedUIDeleteData.class); + + public SensorUsedUIDeleteData() { + super(n("observe.data.ll.observation.SensorUsed.deleteData"), n("observe.data.ll.observation.SensorUsed.deleteData.tip"), "delete", ObserveLLKeyStrokes.KEY_STROKE_DELETE_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, SensorUsedUI ui) { + int response = UIHelper.askUser(ui, + t("observe.title.delete"), + t("observe.data.ll.observation.SensorUsed.delete.data.message"), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); + boolean doDelete = response == 0; + if (doDelete) { + SensorUsedDto tableEditBean = ui.getModel().getTableEditBean(); + log.info(String.format("%s Delete sensorUsed data %s", ui.getModel().getPrefix(), tableEditBean.getData())); + tableEditBean.setData(null); + tableEditBean.setHasData(false); + } + + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIExportData.java ===================================== @@ -0,0 +1,81 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; +import fr.ird.observe.client.util.ObserveSwingTechnicalException; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.nuiton.jaxx.widgets.file.JaxxFileChooser; + +import java.awt.event.ActionEvent; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8 + */ +public class SensorUsedUIExportData extends SensorUsedUIActionSupport { + + private static final Logger log = LogManager.getLogger(SensorUsedUIExportData.class); + + public SensorUsedUIExportData() { + super(n("observe.data.ll.observation.SensorUsed.exportData"), n("observe.data.ll.observation.SensorUsed.exportData.tip"), "data-export", ObserveLLKeyStrokes.KEY_STROKE_EXPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent event, SensorUsedUI ui) { + + SensorUsedDto tableEditBean = ui.getModel().getTableEditBean(); + DataFileDto dataFile = tableEditBean.getData(); + if (dataFile == null) { + dataFile = getDataSource().getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); + } + File file = JaxxFileChooser + .forSaving() + .setParent(ui) + .setTitle(t("observe.data.ll.observation.SensorUsed.choose.title.exportData")) + .setApprovalText(t("observe.data.ll.observation.SensorUsed.action.exportData")) + .setFilename(dataFile.getName()) + .setUseAcceptAllFileFilter(true) + .choose(); + + if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { + log.info(String.format("%s save sensorUsed data to %s", ui.getModel().getPrefix(), file)); + try { + Files.write(file.toPath(), dataFile.getContent()); + } catch (IOException e) { + throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); + } + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIImportData.java ===================================== @@ -0,0 +1,85 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; +import java.io.File; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8 + */ +public class SensorUsedUIImportData extends SensorUsedUIActionSupport { + + private static final Logger log = LogManager.getLogger(SensorUsedUIImportData.class); + + public SensorUsedUIImportData() { + super(n("observe.data.ll.observation.SensorUsed.importData"), n("observe.data.ll.observation.SensorUsed.importData.tip"), "data-import", ObserveLLKeyStrokes.KEY_STROKE_IMPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, SensorUsedUI ui) { + SensorUsedDto tableEditBean = ui.getModel().getTableEditBean(); + if (tableEditBean.isHasData()) { + DataFileDto dataFile = tableEditBean.getData(); + if (dataFile == null) { + dataFile = getDataSource().getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); + } + int response = UIHelper.askUser(ui, + t("observe.title.confirmReplace"), + t("observe.data.ll.observation.SensorUsed.replace.data.message", dataFile.getName()), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.replace"), + t("observe.choice.cancel")}, + 1); + boolean doReplace = response == 0; + if (!doReplace) { + return; + } + } + + File file = UIHelper.chooseFile(ui, + t("observe.data.ll.observation.SensorUsed.choose.title.importData"), + t("observe.data.ll.observation.SensorUsed.action.importData"), + null, + null); + if (file != null) { + log.info(String.format("%s Import sensorUsed data from file: %s", ui.getModel().getPrefix(), file)); + DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); + tableEditBean.setData(dataFileDto); + tableEditBean.setHasData(true); + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIActionSupport.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; + +import javax.swing.KeyStroke; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8 + */ +public abstract class TdrUIActionSupport extends ContentUIActionSupport<TdrUI> { + + protected TdrUIActionSupport(String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + + protected TdrUIActionSupport(String actionCommandKey, String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(actionCommandKey, label, shortDescription, actionIcon, acceleratorKey); + } + + protected TdrUIActionSupport(String label, String shortDescription, String actionIcon, char acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + + protected TdrUIActionSupport(String actionCommandKey, String label, String shortDescription, String actionIcon, char acceleratorKey) { + super(actionCommandKey, label, shortDescription, actionIcon, acceleratorKey); + } +} + ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIDeleteData.java ===================================== @@ -0,0 +1,67 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.ll.observation.TdrDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8 + */ +public class TdrUIDeleteData extends TdrUIActionSupport { + + private static final Logger log = LogManager.getLogger(TdrUIDeleteData.class); + + public TdrUIDeleteData() { + super(n("observe.data.ll.observation.Tdr.deleteData"), n("observe.data.ll.observation.Tdr.deleteData.tip"), "delete", ObserveLLKeyStrokes.KEY_STROKE_DELETE_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, TdrUI ui) { + int response = UIHelper.askUser(ui, + t("observe.title.delete"), + t("observe.data.ll.observation.SensorUsed.delete.data.message"), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); + boolean doDelete = response == 0; + if (doDelete) { + TdrDto tableEditBean = ui.getModel().getTableEditBean(); + log.info(String.format("%s Delete tdr data %s", ui.getModel().getPrefix(), tableEditBean.getData())); + tableEditBean.setData(null); + tableEditBean.setHasData(false); + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIExportData.java ===================================== @@ -0,0 +1,83 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; +import fr.ird.observe.client.util.ObserveSwingTechnicalException; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.TdrDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.nuiton.jaxx.widgets.file.JaxxFileChooser; + +import java.awt.event.ActionEvent; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8 + */ +public class TdrUIExportData extends TdrUIActionSupport { + + private static final Logger log = LogManager.getLogger(TdrUIExportData.class); + + public TdrUIExportData() { + super(n("observe.data.ll.observation.Tdr.exportData"), n("observe.data.ll.observation.Tdr.exportData.tip"), "data-export", ObserveLLKeyStrokes.KEY_STROKE_EXPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent event, TdrUI ui) { + + TdrDto tableEditBean = ui.getModel().getTableEditBean(); + DataFileDto dataFile = tableEditBean.getData(); + + if (dataFile == null) { + dataFile = getDataSource().getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); + } + + File file = JaxxFileChooser + .forSaving() + .setParent(ui) + .setTitle(t("observe.data.ll.observation.Tdr.choose.title.exportData")) + .setApprovalText(t("observe.data.ll.observation.Tdr.action.exportData")) + .setFilename(dataFile.getName()) + .setUseAcceptAllFileFilter(true) + .choose(); + + if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { + try { + log.info(String.format("%s save tdr data to %s", ui.getModel().getPrefix(), file)); + Files.write(file.toPath(), dataFile.getContent()); + } catch (IOException e) { + throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); + } + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIImportData.java ===================================== @@ -0,0 +1,85 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.TdrDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; +import java.io.File; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8 + */ +public class TdrUIImportData extends TdrUIActionSupport { + + private static final Logger log = LogManager.getLogger(TdrUIImportData.class); + + public TdrUIImportData() { + super(n("observe.data.ll.observation.Tdr.importData"), n("observe.data.ll.observation.Tdr.importData.tip"), "data-import", ObserveLLKeyStrokes.KEY_STROKE_IMPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, TdrUI ui) { + TdrDto tableEditBean = ui.getModel().getTableEditBean(); + if (tableEditBean.isHasData()) { + DataFileDto dataFile = tableEditBean.getData(); + if (dataFile == null) { + dataFile = getDataSource().getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); + } + int response = UIHelper.askUser(ui, + t("observe.title.confirmReplace"), + t("observe.data.ll.observation.Tdr.replace.data.message", dataFile.getName()), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.replace"), + t("observe.choice.cancel")}, + 1); + boolean doReplace = response == 0; + if (!doReplace) { + return; + } + } + + File file = UIHelper.chooseFile(ui, + t("observe.data.ll.observation.Tdr.choose.title.importData"), + t("observe.data.ll.observation.Tdr.action.importData"), + null, + null); + if (file != null) { + log.info(String.format("%s Import tdr data from file: %s", ui.getModel().getPrefix(), file)); + DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); + tableEditBean.setData(dataFileDto); + tableEditBean.setHasData(true); + } + } +} ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-create-error-validation.xml ===================================== @@ -100,41 +100,6 @@ <message/> </field-validator> </field> - <field name="haulingStartTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - - <!-- settingEndTimeStamp < haulingStartTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ settingEndTimeStamp == null || settingEndTimeStamp.time < haulingStartTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp</message> - </field-validator> - </field> - <field name="haulingEndTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - - <!-- haulingStartTimeStamp < haulingEndTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ haulingStartTimeStamp == null || haulingStartTimeStamp.time < haulingEndTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp</message> - </field-validator> - </field> - <field name="settingStartQuadrant"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - <field-validator type="quadrantDto" short-circuit="true"> - <param name="ocean">currentLlCommonTrip.ocean</param> - <message/> - </field-validator> - </field> <field name="settingStartLatitude"> <field-validator type="mandatory" short-circuit="true"> <message/> @@ -153,7 +118,7 @@ <message/> </field-validator> </field> - <field name="settingEndQuadrant"> + <field name="settingStartQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -180,7 +145,7 @@ <message/> </field-validator> </field> - <field name="haulingStartQuadrant"> + <field name="settingEndQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -207,7 +172,7 @@ <message/> </field-validator> </field> - <field name="haulingEndQuadrant"> + <field name="haulingStartQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -234,6 +199,15 @@ <message/> </field-validator> </field> + <field name="haulingEndQuadrant"> + <field-validator type="mandatory" short-circuit="true"> + <message/> + </field-validator> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentLlCommonTrip.ocean</param> + <message/> + </field-validator> + </field> <field name="totalSectionsCount"> <field-validator type="mandatory" short-circuit="true"> <message/> @@ -267,7 +241,7 @@ <field name="totalBasketsCount"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> - <param name="max">1000.0</param> + <param name="max">400.0</param> <message/> </field-validator> </field> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-update-error-validation.xml ===================================== @@ -49,6 +49,7 @@ <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> + <!-- settingStartTimeStamp < settingEndTimeStamp --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> @@ -57,30 +58,6 @@ <message>observe.validation.setLongline.settingStartTimeStamp.before.settingEndTimeStamp</message> </field-validator> </field> - <field name="haulingStartTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - <!-- settingEndTimeStamp < haulingStartTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ settingEndTimeStamp == null || settingEndTimeStamp.time < haulingStartTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp</message> - </field-validator> - </field> - <field name="haulingEndTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - <!-- haulingStartTimeStamp < haulingEndTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ haulingStartTimeStamp == null || haulingStartTimeStamp.time < haulingEndTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp</message> - </field-validator> - </field> <field name="settingVesselSpeed"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> @@ -264,7 +241,7 @@ <field name="totalBasketsCount"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> - <param name="max">1000.0</param> + <param name="max">400.0</param> <message/> </field-validator> </field> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c6c83b3b5bb3b974e310a2b22... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c6c83b3b5bb3b974e310a2b22... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT