r1040 - in trunk: coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/test/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui/selection coser-ui/src/main/resources/i18n
Author: echatellier Date: 2012-08-13 17:15:19 +0200 (Mon, 13 Aug 2012) New Revision: 1040 Url: http://forge.codelutin.com/repositories/revision/coser/1040 Log: fixes #1326 : Pouvoir supprimer un r?\195?\169sultat depuis l'interface Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-13 14:09:34 UTC (rev 1039) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-13 15:15:19 UTC (rev 1040) @@ -1191,7 +1191,7 @@ * @param rsufiResult rsufi result * @throws CoserBusinessException */ - public void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException { + protected void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException { OutputStream outputStream = null; try { @@ -1212,6 +1212,35 @@ } /** + * Delete a rsufi result. + * + * @param project project + * @param selection selection + * @param rsufiResult rsufi result to delete + * @throws CoserBusinessException + * @since 1.3 + */ + public void deleteRSufiResult(Project project, Selection selection, RSufiResult rsufiResult) throws CoserBusinessException { + + try { + File projectsDirectory = config.getProjectsDirectory(); + File projectDirectory = new File(projectsDirectory, project.getName()); + File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); + File selectionDirectory = new File(selectionsDirectory, selection.getName()); + File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY); + File rsufiResultDirectory = new File(resultsDirectory, rsufiResult.getName()); + + FileUtils.deleteDirectory(rsufiResultDirectory); + List<RSufiResult> results = selection.getRsufiResults(); + results.remove(rsufiResult); + // this way to fire change event (do not remove) + selection.setRsufiResults(results); + } catch (IOException ex) { + throw new CoserBusinessException("Can't delete directory", ex); + } + } + + /** * Sauve une liste ordonnées de commande dans le fichier specifié. * * @param props proparties to add command to Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2012-08-13 14:09:34 UTC (rev 1039) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2012-08-13 15:15:19 UTC (rev 1040) @@ -183,4 +183,19 @@ project = projectService.loadControlData(project); return project; } + + /** + * Util method used to build path for test. + * + * @param root root dir + * @param paths path sub component + * @return file + */ + protected File getFile(File root, String... paths) { + File localFile = root; + for (String path : paths) { + localFile = new File(localFile, path); + } + return localFile; + } } Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2012-08-13 14:09:34 UTC (rev 1039) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2012-08-13 15:15:19 UTC (rev 1040) @@ -96,16 +96,16 @@ public void testCreateProject() throws CoserBusinessException { Project project = createTestProject(projectService, false); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "original" + File.separator + "testcatch.csv").exists()); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "original" + File.separator + "testhaul.csv").exists()); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "original" + File.separator + "teststrata.csv").exists()); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "original" + File.separator + "testlength.csv").exists()); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "reftaxSpecies.csv").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(), + "original", "testcatch.csv").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(), + "original", "testhaul.csv").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), + project.getName(), "original", "teststrata.csv").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), + project.getName(), "original", "testlength.csv").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), + project.getName(), "reftaxSpecies.csv").exists()); } /** @@ -149,8 +149,8 @@ Project project = createTestProject(projectService, false); projectService.saveProjectControl(project); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "control" + File.separator + "testcatch_co.csv").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), + project.getName(), "control", "testcatch_co.csv").exists()); } /** @@ -165,8 +165,8 @@ projectService.validControl(project); Assert.assertTrue(project.getControl().isValidated()); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "control" + File.separator + "control.pdf").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), + project.getName(), "control", "control.pdf").exists()); } /** @@ -184,9 +184,9 @@ projectService.validSelection(project, selection); Assert.assertTrue(selection.isValidated()); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "selections" + File.separator + - "titi" + File.separator + "selection.pdf").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), + project.getName(), "selections", + "titi", "selection.pdf").exists()); } /** @@ -201,9 +201,9 @@ selection.setName("titi"); projectService.createProjectSelection(project, selection); - Assert.assertTrue(new File(config.getProjectsDirectory(), - project.getName() + File.separator + "selections" + File.separator + - "titi" + File.separator + "testcatch_se.csv").exists()); + Assert.assertTrue(getFile(config.getProjectsDirectory(), + project.getName(), "selections", + "titi", "testcatch_se.csv").exists()); } /** @@ -601,4 +601,24 @@ Assert.assertEquals(2, selection.getSelectedSpeciesSizeAllYear().size()); Assert.assertEquals(1, selection.getSelectedSpeciesMaturity().size()); } + + /** + * Test de creation et de suppression de resultat. + * + * @throws CoserBusinessException + */ + @Test + public void testDeleteResult() throws CoserBusinessException { + Project project = openTestProject(projectService, "projectctrvalidated"); + Selection selection = project.getSelections().get("testselection1"); + + RSufiResult rsufiResult = selection.getRsufiResults().get(0); + Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(), + "selections", "testselection1", "results", rsufiResult.getName(), + "result.properties").exists()); + + projectService.deleteRSufiResult(project, selection, rsufiResult); + Assert.assertFalse(getFile(config.getProjectsDirectory(), project.getName(), + "selections", "testselection1", "results", rsufiResult.getName()).exists()); + } } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-13 14:09:34 UTC (rev 1039) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-13 15:15:19 UTC (rev 1040) @@ -33,6 +33,7 @@ import java.awt.event.MouseEvent; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -1391,6 +1392,34 @@ } /** + * Supprime le résultat après confirmation par l'utilisateur. + * + * @param view view + */ + public void deleteResult(SelectionRsufiView view) { + // get selected rsufi result + int selectedRow = view.getSelectionResultsTable().getSelectedRow(); + RSufiResult result = view.getSelectionResultsTableModel().getValue(selectedRow); + + int confirm = JOptionPane.showConfirmDialog(view, + _("coser.ui.result.confirmDeleteResult", result.getName()), + _("coser.ui.result.resultTitle"), JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE); + if (confirm == JOptionPane.YES_OPTION) { + Project project = view.getContextValue(Project.class); + Selection selection = view.getContextValue(Selection.class); + ProjectService projectService = view.getContextValue(ProjectService.class); + try { + projectService.deleteRSufiResult(project, selection, result); + // le model ecoute directement le changement sur la liste + // de resultat (auto refresh) + } catch (CoserBusinessException ex) { + throw new CoserException("Can't delete result", ex); + } + } + } + + /** * Selectionne le dossier d'extraction. * * @param view view Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2012-08-13 14:09:34 UTC (rev 1039) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2012-08-13 15:15:19 UTC (rev 1040) @@ -5,7 +5,7 @@ $Id$ $HeadURL$ %% - Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric + Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric %% This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -64,18 +64,22 @@ <cell weightx="1" weighty="2" fill="both"> <Table border='{BorderFactory.createTitledBorder(_("coser.ui.result.availableDataTitle"))}'> <row> - <cell columns="2" weightx="1" weighty="1" fill="both"> + <cell columns="3" weightx="1" weighty="1" fill="both"> <JScrollPane> <fr.ifremer.coser.ui.result.ResultTableModel id="selectionResultsTableModel" javaBean="new fr.ifremer.coser.ui.result.ResultTableModel(this)" /> <JTable id="selectionResultsTable" model="{getSelectionResultsTableModel()}"/> <ListSelectionModel javaBean="selectionResultsTable.getSelectionModel()" - onValueChanged="editResultButton.setEnabled(getSelectionResultsTable().getSelectedRow() != -1)" /> + onValueChanged="editResultButton.setEnabled(getSelectionResultsTable().getSelectedRow() != -1);deleteResultButton.setEnabled(getSelectionResultsTable().getSelectedRow() != -1)" /> </JScrollPane> </cell> </row> <row> <cell weightx="1" anchor="east"> + <JButton id="deleteResultButton" text="coser.ui.result.deleteResult" enabled="false" + onActionPerformed="getHandler().deleteResult(this)" /> + </cell> + <cell> <JButton id="editResultButton" text="coser.ui.result.editResult" enabled="false" onActionPerformed="getHandler().showEditResultDialog(this)" /> </cell> Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-13 14:09:34 UTC (rev 1039) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-13 15:15:19 UTC (rev 1040) @@ -151,7 +151,9 @@ coser.ui.result.addOtherDataFile=Add file coser.ui.result.availableDataTitle=Available results \: coser.ui.result.cancel=Cancel +coser.ui.result.confirmDeleteResult=Do you want to delete result %s ? coser.ui.result.creationDate=Result date \: +coser.ui.result.deleteResult=Delete result coser.ui.result.editResult=Modify result coser.ui.result.estComIndFile=ESTCOMind file \: coser.ui.result.estPopIndFile=ESTPOPind file \: @@ -167,6 +169,7 @@ coser.ui.result.requiredname= coser.ui.result.requiredrsufiVersion= coser.ui.result.resultName=Result name \: +coser.ui.result.resultTitle=Result coser.ui.result.rsufiVersion=RSufi version \: coser.ui.result.saveError=Save error coser.ui.result.table.estComIndFile=ESTCOMind file Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-13 14:09:34 UTC (rev 1039) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-13 15:15:19 UTC (rev 1040) @@ -151,7 +151,9 @@ coser.ui.result.addOtherDataFile=Ajouter un fichier coser.ui.result.availableDataTitle=Résultats disponibles coser.ui.result.cancel=Annuler +coser.ui.result.confirmDeleteResult=Êtes vous sûr de vouloir supprimer le résultat %s ? coser.ui.result.creationDate=Date du résultats \: +coser.ui.result.deleteResult=Supprimer le résultat coser.ui.result.editResult=Modifier le résultat coser.ui.result.estComIndFile=Fichier ESTCOMind \: coser.ui.result.estPopIndFile=Fichier ESTPOPind \: @@ -167,6 +169,7 @@ coser.ui.result.requiredname= coser.ui.result.requiredrsufiVersion= coser.ui.result.resultName=Nom du résultat \: +coser.ui.result.resultTitle=Résultat coser.ui.result.rsufiVersion=Version de RSufi \: coser.ui.result.saveError=Erreur de sauvegarde coser.ui.result.table.estComIndFile=Fichier ESTCOMind
participants (1)
-
echatellier@users.forge.codelutin.com