Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: eafab6dc by Tony Chemit at 2023-11-21T10:30:11+01:00 Sur le plan de cuves, empêcher la saisie multiple d'une même activité sur une même cuve - Closes #2717 - - - - - f71ab184 by Tony Chemit at 2023-11-21T11:12:44+01:00 importDirectory must not be final and transient to be persisted... - - - - - 78740869 by Tony Chemit at 2023-11-21T11:18:05+01:00 add backupsDirectory (only used for automatic backups) - - - - - 52092051 by Tony Chemit at 2023-11-21T11:18:37+01:00 fix dumpFile initial value in initFromConfig method - - - - - 0c44c3a8 by Tony Chemit at 2023-11-21T11:30:41+01:00 persist backupDirectory when performing a backup - - - - - 8416c255 by Tony Chemit at 2023-11-21T11:52:18+01:00 Merge branch 'feature/issue-2804' into develop Les assistants d'ouverture ou sauvergade de sql.gz ne retrouvent jamais le dernier répertoire utilisé - Closes #2804 - - - - - 11 changed files: - client/configuration/src/main/config/Client.ini - client/configuration/src/main/i18n/getters/config.getter - client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java - client/core/src/main/java/fr/ird/observe/client/datasource/h2/backup/LocalDatabaseBackupTaskSupport.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/Start.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/wizard/StorageBackupUILauncher.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/wizard/StorageUIModel.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/WellActivityUITableModel.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 Changes: ===================================== client/configuration/src/main/config/Client.ini ===================================== @@ -117,6 +117,12 @@ description = observe.config.defaultBackupDirectory.description key = instance.backup.directory type = file defaultValue = ${instance.data.directory}/backup + +[option backupsDirectory] +description = observe.config.backupsDirectory.description +key = instance.backups.directory +type = file +defaultValue = ${instance.data.directory}/backup final = true transient = true @@ -313,8 +319,6 @@ description = observe.config.importDirectory.description key = instance.import.directory type = file defaultValue = ${instance.data.directory}/backup -final = true -transient = true [option logDirectory] description = observe.config.defaultLogDbDirectory.description ===================================== client/configuration/src/main/i18n/getters/config.getter ===================================== @@ -13,6 +13,7 @@ observe.config.avdthDirectory.description observe.config.backup.atClose observe.config.backup.delay observe.config.backup.use +observe.config.backupsDirectory.description observe.config.backupsFile.description observe.config.checkServerVersion.description observe.config.client.backupFiles.timeout.description ===================================== client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java ===================================== @@ -676,6 +676,9 @@ public class ClientConfig extends GeneratedClientConfig implements TripMapConfig return new File(getBackupDirectory(), String.format(BACKUP_DB_PATTERN, getBuildVersion().toString().replaceAll("\\.", "_"), new Date())); } + public File newAutomaticBackupDataFile() { + return new File(getBackupsDirectory(), String.format(BACKUP_DB_PATTERN, getBuildVersion().toString().replaceAll("\\.", "_"), new Date())); + } public File getFeedBackDirectoryFile() { if (feedBackDirectoryFile == null) { Date now = new Date(); @@ -696,7 +699,12 @@ public class ClientConfig extends GeneratedClientConfig implements TripMapConfig @Override public Map<Path, Integer> getTemporaryDirectoriesAndTimeout() { - return Map.of(getTemporaryDirectory().toPath(), getTemporaryFilesTimeout(), getLogDirectory().toPath(), getLogFilesTimeout(), getFeedBackDirectoryFile().toPath(), getFeedbackFilesTimeout(), getBackupDirectory().toPath(), getBackupFilesTimeout()); + return Map.of(getTemporaryDirectory().toPath(), getTemporaryFilesTimeout(), getLogDirectory().toPath(), getLogFilesTimeout(), getFeedBackDirectoryFile().toPath(), getFeedbackFilesTimeout(), getBackupsDirectory().toPath(), getBackupFilesTimeout()); + } + + public void updateBackupDirectory(File backupFile) { + setBackupDirectory(backupFile.getParentFile()); + saveForUser(); } public void saveForUser() { ===================================== client/core/src/main/java/fr/ird/observe/client/datasource/h2/backup/LocalDatabaseBackupTaskSupport.java ===================================== @@ -72,7 +72,7 @@ public abstract class LocalDatabaseBackupTaskSupport implements Runnable { } protected File doBackup() { - File file = config.newBackupDataFile(); + File file = config.newAutomaticBackupDataFile(); String startMessage = t("observe.ui.datasource.backup.start", new Date()); ClientUIContextApplicationComponent.value().setUiStatus(startMessage); ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/Start.java ===================================== @@ -91,6 +91,8 @@ public class Start extends SaveLocalUIActionSupport { CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addGeneratedSchema().addVersionTable().addStandaloneTables().addAllData().build(); SqlScript dump = dumpService.produceCreateSqlScript(request); dump.copyAndCompress(backupFile.toPath()); + + stepModel.getClientConfig().updateBackupDirectory(backupFile); } if (stepModel.containsStepForSave(AdminStep.SYNCHRONIZE)) { ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/wizard/StorageBackupUILauncher.java ===================================== @@ -110,6 +110,12 @@ public class StorageBackupUILauncher extends StorageUILauncher { StorageUIModel storageModel = ui.getModel(); File backupFile = storageModel.getBackupFile(); Objects.requireNonNull(backupFile, "file where to backup can not be null"); + createBackup(storageModel, backupFile); + + storageModel.getClientConfig().updateBackupDirectory(backupFile); + } + + private void createBackup(StorageUIModel storageModel, File backupFile) { ObserveDataSourcesManager dataSourcesManager = storageModel.getDataSourcesManager(); ObserveSwingDataSource incomingSource = dataSourcesManager.getMainDataSource(); SelectionTreeModel dataModel = storageModel.getSelectDataModel(); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/wizard/StorageUIModel.java ===================================== @@ -410,7 +410,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie */ protected void initFromConfig(ClientConfig config) { setBackupFile(config.newBackupDataFile()); - setDumpFile(config.getBackupDirectory()); + setDumpFile(config.getImportDirectory()); setDoBackup(false); ObserveDataSourcesManager dataSourcesManager = getDataSourcesManager(); setLocalConfig(dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.ui.datasource.storage.label.local"))); ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/WellActivityUITableModel.java ===================================== @@ -25,11 +25,15 @@ package fr.ird.observe.client.datasource.editor.ps.data.logbook; import fr.ird.observe.client.datasource.editor.api.content.EditableContentUI; import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.client.util.table.EditableListProperty; +import fr.ird.observe.dto.data.ps.logbook.ActivityStubDto; +import fr.ird.observe.dto.data.ps.logbook.WellActivityDto; import fr.ird.observe.dto.data.ps.logbook.WellActivitySpeciesDto; import fr.ird.observe.dto.data.ps.logbook.WellDto; +import io.ultreia.java4all.jaxx.widgets.combobox.FilterableComboBox; import javax.swing.JTable; import java.util.Collection; +import java.util.LinkedList; import java.util.List; public class WellActivityUITableModel extends GeneratedWellActivityUITableModel { @@ -83,4 +87,20 @@ public class WellActivityUITableModel extends GeneratedWellActivityUITableModel super.startEditTableEditBeanOnInlineModels(); wellActivitySpeciesTableModel.validate(); } + + @Override + protected void onSelectedRowChanged(WellActivityUI ui, int editingRow, WellActivityDto tableEditBean, WellActivityDto previousRowBean, boolean notPersisted, boolean newRow) { + super.onSelectedRowChanged(ui, editingRow, tableEditBean, previousRowBean, notPersisted, newRow); + if (ui.getModel().getStates().isReadingMode()) { + return; + } + // Only offers activities not used + // See https://gitlab.com/ultreiaio/ird-observe/-/issues/2717 + FilterableComboBox<ActivityStubDto> editor = ui.getActivity(); + List<ActivityStubDto> columnValues = getColumnValues(0); + columnValues.remove(tableEditBean.getActivity()); + List<ActivityStubDto> values = new LinkedList<>(ui.getModel().getStates().getActivity()); + values.removeAll(columnValues); + editor.setData(values); + } } ===================================== client/runner/src/main/i18n/translations/client-runner_en_GB.properties ===================================== @@ -14,6 +14,7 @@ observe.config.avdthDirectory.description=Avdth directory observe.config.backup.atClose=Perform a backup of local source when closing application observe.config.backup.delay=Delay in minutes between local data source backup observe.config.backup.use=To activate auto backup of local source +observe.config.backupsDirectory.description=Default directory where are stored automatic backups of data sources observe.config.backupsFile.description=File to store backups information observe.config.category.application=Validation observe.config.category.application.description=Validation options ===================================== client/runner/src/main/i18n/translations/client-runner_es_ES.properties ===================================== @@ -14,6 +14,7 @@ observe.config.avdthDirectory.description=Avdth directory \#TODO observe.config.backup.atClose=Realizar una copia de seguridad de la base de datos local al cerrar la aplicación observe.config.backup.delay=Minutos entre cada copia de seguridad de la base de datos local observe.config.backup.use=Para activar la copia de seguridad automática +observe.config.backupsDirectory.description=Carpeta por defecto para copia de seguridad de automatico bases locales \#TODO observe.config.backupsFile.description=Archivo de información de la copia de seguridad observe.config.category.application=Contrôles et validation \#TODO observe.config.category.application.description=Options de contrôles et validation \#TODO ===================================== client/runner/src/main/i18n/translations/client-runner_fr_FR.properties ===================================== @@ -14,6 +14,7 @@ observe.config.avdthDirectory.description=Répertoire où chercher les bases AVD observe.config.backup.atClose=Effectuer une sauvegarde de la base locale à la fermeture de l'application observe.config.backup.delay=Temps en minutes entre chaque sauvegarde de la base locale observe.config.backup.use=Pour activer la sauvegarde automatique +observe.config.backupsDirectory.description=Répertoire où conserver les sauvegardes automatiques observe.config.backupsFile.description=Fichier des informations des sauvegardes observe.config.category.application=Contrôles et validation observe.config.category.application.description=Options de contrôles et validation View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3e9dac1427773a2977f7afeb4... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3e9dac1427773a2977f7afeb4... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)