|
From: <de...@us...> - 2014-01-10 23:00:42
|
Revision: 8566
http://sourceforge.net/p/fudaa/svn/8566
Author: deniger
Date: 2014-01-10 23:00:37 +0000 (Fri, 10 Jan 2014)
Log Message:
-----------
CRUE-619
Modified Paths:
--------------
trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/EMHProjetController.java
trunk/soft/fudaa-crue/crue-project/src/test/resources/remover/Etu3-0_1.1.2.zip
trunk/soft/fudaa-crue/pom.xml
trunk/soft/fudaa-crue/ui-modelling/pom.xml
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/action/ModellingOpenListeCLimMsAction.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java
trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/AbstractOpenProjectAction.java
trunk/soft/fudaa-crue/ui-study/src/main/resources/org/fudaa/fudaa/crue/study/actions/Bundle.properties
trunk/soft/fudaa-crue/ui-wrapper/pom.xml
Added Paths:
-----------
trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java
trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/ScenarioRunCleanerTest.java
Removed Paths:
-------------
trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/RunRemover.java
trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/RunRemoverTest.java
Modified: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/EMHProjetController.java
===================================================================
--- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/EMHProjetController.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/EMHProjetController.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -332,17 +332,8 @@
return new CrueOperationResult<EMHRun>(run, errors);
}
- public CtuluLogGroup removeAllRun(File etuFile) {
- final RunRemover remover = new RunRemover(projet);
- final CtuluLogGroup errors = new CtuluLogGroup(BusinessMessages.RESOURCE_BUNDLE);
+
- remover.remove();
-
- this.saveProjet(etuFile, errors);
-
- return errors;
- }
-
public static CrueOperationResult<EMHProjet> readProjet(File fichier, CoeurConfigContrat config) {
return readProjet(fichier, config, true);
}
Deleted: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/RunRemover.java
===================================================================
--- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/RunRemover.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/RunRemover.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -1,60 +0,0 @@
-/**
- * License GPL v2
- */
-package org.fudaa.dodico.crue.projet;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import org.fudaa.ctulu.CtuluLibFile;
-import org.fudaa.ctulu.CtuluLog;
-import org.fudaa.dodico.crue.common.BusinessMessages;
-import org.fudaa.dodico.crue.metier.etude.EMHProjet;
-import org.fudaa.dodico.crue.metier.etude.EMHRun;
-import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario;
-
-/**
- * @author CANEL Christophe (Genesis)
- *
- */
-public class RunRemover {
- private final EMHProjet projet;
-
- public RunRemover(EMHProjet projet) {
- super();
- this.projet = projet;
- }
-
- public CtuluLog remove()
- {
- final List<ManagerEMHScenario> scenarios = this.projet.getListeScenarios();
- final CtuluLog log = new CtuluLog(BusinessMessages.RESOURCE_BUNDLE);
-
- for (ManagerEMHScenario scenario : scenarios)
- {
- scenario.setRunCourant(null);
-
- final List<EMHRun> runs = scenario.getListeRuns();
-
- if (runs != null)
- {
- for (EMHRun run : runs)
- {
- File runDir = this.projet.getDirForRun(scenario, run);
-
- if (runDir.isDirectory())
- {
- if (!CtuluLibFile.deleteDir(runDir))
- {
- log.addSevereError("run.runRemover.cannotDeleteFile", runDir.getName());
- }
- }
- }
- }
-
- scenario.setListeRuns(new ArrayList<EMHRun>());
- }
-
- return log;
- }
-}
Added: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java
===================================================================
--- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java (rev 0)
+++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -0,0 +1,89 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.crue.projet;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.fudaa.ctulu.CtuluLibFile;
+import org.fudaa.ctulu.FileDeleteResult;
+import org.fudaa.dodico.crue.metier.etude.EMHProjet;
+import org.fudaa.dodico.crue.metier.etude.EMHRun;
+import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class ScenarioRunCleaner {
+
+ private final EMHProjet projet;
+
+ public ScenarioRunCleaner(EMHProjet projet) {
+ this.projet = projet;
+ }
+
+ public FileDeleteResult deleteUnusedDir() {
+ List<File> dirToDelete = getDirToDelete();
+ FileDeleteResult result = new FileDeleteResult();
+ for (File file : dirToDelete) {
+ CtuluLibFile.deleteDir(file, result);
+ }
+ return result;
+ }
+
+ public List<File> getDirToDelete() {
+ List<File> toDelete = new ArrayList<File>();
+ Set<String> expectedScenarioDir = new HashSet<String>();
+ Set<String> expectedRunDir = new HashSet<String>();
+ try {
+ fillWithExpectedDir(expectedScenarioDir, expectedRunDir);
+ } catch (IOException ex) {
+ Logger.getLogger(ScenarioRunCleaner.class.getName()).log(Level.SEVERE, null, ex);
+ return toDelete;
+ }
+ File dirOfRuns = projet.getInfos().getDirOfRuns();
+ File[] listFilesScenarios = dirOfRuns.listFiles();
+ for (File scenarioFile : listFilesScenarios) {
+ if (scenarioFile.isDirectory()) {
+ if (expectedScenarioDir.contains(scenarioFile.getAbsolutePath())) {
+ File[] listFilesRuns = scenarioFile.listFiles();
+ for (File dirRun : listFilesRuns) {
+ if (dirRun.isDirectory()) {
+ if (!expectedRunDir.contains(dirRun.getAbsolutePath())) {
+ toDelete.add(dirRun);
+ }
+ }
+ }
+ } else {
+ toDelete.add(scenarioFile);
+ }
+
+ }
+ }
+
+ return toDelete;
+
+ }
+
+ private void fillWithExpectedDir(Set<String> expectedScenarioDir, Set<String> expectedRunDir) throws IOException {
+ List<ManagerEMHScenario> listeScenarios = projet.getListeScenarios();
+ for (ManagerEMHScenario managerEMHScenario : listeScenarios) {
+ if (managerEMHScenario.hasRun()) {
+ expectedScenarioDir.add(projet.getMainDirOfRuns(managerEMHScenario).getCanonicalPath());
+ List<EMHRun> listeRuns = managerEMHScenario.getListeRuns();
+ for (EMHRun eMHRun : listeRuns) {
+ expectedRunDir.add(projet.getDirForRun(managerEMHScenario, eMHRun).getCanonicalPath());
+
+ }
+ }
+ }
+ }
+
+}
Deleted: trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/RunRemoverTest.java
===================================================================
--- trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/RunRemoverTest.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/RunRemoverTest.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -1,43 +0,0 @@
-/**
- * License GPL v2
- */
-package org.fudaa.dodico.crue.projet;
-
-import java.io.File;
-import org.fudaa.ctulu.CtuluLog;
-import org.fudaa.dodico.crue.config.coeur.TestCoeurConfig;
-import org.fudaa.dodico.crue.io.etu.CrueETUFileTest;
-import org.fudaa.dodico.crue.metier.etude.EMHProjet;
-import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario;
-import org.fudaa.dodico.crue.test.AbstractTestCase;
-
-/**
- * @author CANEL Christophe (Genesis)
- *
- */
-public class RunRemoverTest extends AbstractTestCase {
- public void testRunRemover()
- {
- File exportZipInTempDir = exportZipInTempDir("/remover/Etu3-0_1.1.2.zip");
- File etuFile = getEtuFileUpdated("etu3-0", exportZipInTempDir);
- assertNotNull(etuFile);
- assertTrue(etuFile.exists());
-
- EMHProjet projet = CrueETUFileTest.readData(etuFile, TestCoeurConfig.INSTANCE);
- assertNotNull(projet);
-
- RunRemover remover = new RunRemover(projet);
- final CtuluLog log = remover.remove();
-
- assertFalse(log.containsSevereError());
-
- assertEquals(0, new File(exportZipInTempDir, "Sc_M3_c9").list().length);
- assertEquals(0, new File(exportZipInTempDir, "Sc_M3-0_c10").list().length);
-
- for (ManagerEMHScenario scenario : projet.getListeScenarios())
- {
- assertNull(scenario.getRunCourant());
- assertEquals(0, scenario.getListeRuns().size());
- }
- }
-}
Copied: trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/ScenarioRunCleanerTest.java (from rev 8404, trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/RunRemoverTest.java)
===================================================================
--- trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/ScenarioRunCleanerTest.java (rev 0)
+++ trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/projet/ScenarioRunCleanerTest.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -0,0 +1,43 @@
+/**
+ * License GPL v2
+ */
+package org.fudaa.dodico.crue.projet;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import org.fudaa.ctulu.FileDeleteResult;
+import org.fudaa.dodico.crue.config.coeur.TestCoeurConfig;
+import org.fudaa.dodico.crue.io.etu.CrueETUFileTest;
+import org.fudaa.dodico.crue.metier.etude.EMHProjet;
+import org.fudaa.dodico.crue.test.AbstractTestCase;
+
+/**
+ * @author CANEL Christophe (Genesis)
+ *
+ */
+public class ScenarioRunCleanerTest extends AbstractTestCase {
+
+ public void testRunRemover() throws IOException {
+ File exportZipInTempDir = exportZipInTempDir("/remover/Etu3-0_1.1.2.zip");
+ File etuFile = getEtuFileUpdated("etu3-0", exportZipInTempDir);
+ assertNotNull(etuFile);
+ assertTrue(etuFile.exists());
+
+ EMHProjet projet = CrueETUFileTest.readData(etuFile, TestCoeurConfig.INSTANCE);
+ assertNotNull(projet);
+
+ ScenarioRunCleaner remover = new ScenarioRunCleaner(projet);
+ List<File> dirToDelete = remover.getDirToDelete();
+ assertEquals(2, dirToDelete.size());
+ File d1 = new File(exportZipInTempDir, "To_DeleteScenario").getCanonicalFile();
+ File d2 = new File(new File(exportZipInTempDir, "Sc_M3-0_c10"), "To_DeleteRun").getCanonicalFile();
+ assertTrue(dirToDelete.contains(d1));
+ assertTrue(dirToDelete.contains(d2));
+ //
+ FileDeleteResult deleteUnusedDir = remover.deleteUnusedDir();
+ assertTrue(deleteUnusedDir.isEmpty());
+ assertFalse(d1.exists());
+ assertFalse(d2.exists());
+ }
+}
Modified: trunk/soft/fudaa-crue/crue-project/src/test/resources/remover/Etu3-0_1.1.2.zip
===================================================================
(Binary files differ)
Modified: trunk/soft/fudaa-crue/pom.xml
===================================================================
--- trunk/soft/fudaa-crue/pom.xml 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/pom.xml 2014-01-10 23:00:37 UTC (rev 8566)
@@ -98,12 +98,8 @@
<artifactId>utils</artifactId>
<version>1.07.00</version>
</dependency>
+
<dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- <version>3.9</version>
- </dependency>
- <dependency>
<groupId>org.fudaa.soft.fudaa-crue</groupId>
<artifactId>crue-io</artifactId>
<version>${project.version}</version>
Modified: trunk/soft/fudaa-crue/ui-modelling/pom.xml
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/pom.xml 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-modelling/pom.xml 2014-01-10 23:00:37 UTC (rev 8566)
@@ -50,6 +50,11 @@
<artifactId>ctulu-common</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.fudaa.soft.fudaa-crue</groupId>
<artifactId>crue-io</artifactId>
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/action/ModellingOpenListeCLimMsAction.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/action/ModellingOpenListeCLimMsAction.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/action/ModellingOpenListeCLimMsAction.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
package org.fudaa.fudaa.crue.modelling.action;
import javax.swing.Action;
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -8,6 +8,17 @@
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.lang.StringUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.fudaa.ctulu.CtuluLibFile;
import org.fudaa.fudaa.crue.modelling.calcul.importer.CLimMsImporter;
import org.netbeans.api.progress.ProgressHandle;
@@ -45,14 +56,7 @@
}
values = CSVParser.parse(initValues, sep);
} else if (file != null) {
- try {
- reader = new FileReader(file);
- values = new CSVParser(new BufferedReader(reader), ';').getAllValues();
- } catch (Exception ex) {
- Exceptions.printStackTrace(ex);
- } finally {
- CtuluLibFile.close(reader);
- }
+ values = readFile(values);
}
if (values == null) {
return null;
@@ -62,4 +66,64 @@
importer.importData();
return null;
}
+
+ protected String getValue(Cell cell) {
+ switch (cell.getCellType()) {
+ case Cell.CELL_TYPE_NUMERIC:
+ return Double.toString(cell.getNumericCellValue());
+ case Cell.CELL_TYPE_STRING:
+ return cell.getStringCellValue();
+ default:
+ try {
+ return Double.toString(cell.getNumericCellValue());
+ } catch (Exception ex) {
+ Logger.getLogger(ModellingListCLimMsProgressRunnable.class.getName()).log(Level.INFO, "message {0}", ex);
+ try {
+ return cell.getStringCellValue();
+ } catch (Exception ex1) {
+ Logger.getLogger(ModellingListCLimMsProgressRunnable.class.getName()).log(Level.INFO, "message {0}", ex1);
+
+ }
+ }
+ }
+ return StringUtils.EMPTY;
+ }
+
+ protected String[][] readFile(String[][] values) {
+ final String nameToLowerCase = file.getName().toLowerCase();
+ if (nameToLowerCase.endsWith("xlsx") || nameToLowerCase.endsWith("xls")) {
+ List<String[]> rows = new ArrayList<String[]>();
+ try {
+ Workbook wb = WorkbookFactory.create(file);
+ Sheet sheetAt = wb.getSheetAt(0);
+ for (Row row : sheetAt) {
+ List<String> cols = new ArrayList<String>();
+ for (Cell cell : row) {
+ cols.add(getValue(cell));
+ }
+ rows.add(cols.toArray(new String[cols.size()]));
+ }
+ } catch (Exception ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ final String[][] toArray = rows.toArray(new String[rows.size()][]);
+ return toArray;
+
+ } else {
+ return readCsv(values);
+ }
+ }
+
+ protected String[][] readCsv(String[][] values) {
+ Reader reader = null;
+ try {
+ reader = new FileReader(file);
+ values = new CSVParser(new BufferedReader(reader), ';').getAllValues();
+ } catch (Exception ex) {
+ Exceptions.printStackTrace(ex);
+ } finally {
+ CtuluLibFile.close(reader);
+ }
+ return values;
+ }
}
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -52,11 +52,17 @@
if (!tc.isEditable()) {
return;
}
- final BuFileFilter ftCsv = new BuFileFilter(new String[]{"txt", "csv"}, CtuluResource.CTULU.getString("Texte CSV"));
+ final BuFileFilter ftCsv = new BuFileFilter(new String[]{"csv", "txt"}, CtuluResource.CTULU.getString("Texte CSV"));
+ final BuFileFilter ftXsl = new BuFileFilter(new String[]{"xls"}, CtuluResource.CTULU.getString("Fichier Excel 97-2003"));
+ final BuFileFilter ftXslx = new BuFileFilter(new String[]{"xlsx"}, CtuluResource.CTULU.getString("Fichier Excel"));
ftCsv.setExtensionListInDescription(true);
+ ftXsl.setExtensionListInDescription(true);
+ ftXslx.setExtensionListInDescription(true);
CtuluFileChooser fileChooser = new CtuluFileChooser(true);
fileChooser.addChoosableFileFilter(ftCsv);
- fileChooser.setFileFilter(ftCsv);
+ fileChooser.addChoosableFileFilter(ftXsl);
+ fileChooser.addChoosableFileFilter(ftXslx);
+ fileChooser.setFileFilter(ftXslx);
fileChooser.setAcceptAllFileFilterUsed(false);
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -40,7 +40,7 @@
public static final String PROP_VALUE = "value";
private final String[][] values;
private final CrueConfigMetier ccm;
- private DonLoiHYConteneur loiConteneur;
+ private final DonLoiHYConteneur loiConteneur;
public CLimMsImporter(CrueConfigMetier ccm, DonLoiHYConteneur loiConteneur, String[][] values) {
this.values = values;
Modified: trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/AbstractOpenProjectAction.java
===================================================================
--- trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/AbstractOpenProjectAction.java 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/AbstractOpenProjectAction.java 2014-01-10 23:00:37 UTC (rev 8566)
@@ -5,12 +5,20 @@
package org.fudaa.fudaa.crue.study.actions;
import java.awt.event.ActionEvent;
+import java.io.File;
+import java.util.List;
import java.util.MissingResourceException;
+import org.apache.commons.collections.CollectionUtils;
+import org.fudaa.ctulu.CtuluLog;
+import org.fudaa.ctulu.CtuluLogGroup;
+import org.fudaa.ctulu.FileDeleteResult;
import org.fudaa.dodico.crue.metier.etude.EMHProjet;
import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario;
+import org.fudaa.dodico.crue.projet.ScenarioRunCleaner;
import org.fudaa.fudaa.crue.common.PerspectiveEnum;
import org.fudaa.fudaa.crue.common.action.AbstractPerspectiveAwareAction;
import org.fudaa.fudaa.crue.common.helper.DialogHelper;
+import org.fudaa.fudaa.crue.common.log.LogsDisplayer;
import org.fudaa.fudaa.crue.common.services.ModellingScenarioService;
import org.fudaa.fudaa.crue.common.services.PerspectiveState;
import org.fudaa.fudaa.crue.options.services.ConfigurationManagerService;
@@ -18,6 +26,7 @@
import org.fudaa.fudaa.crue.study.services.CrueService;
import org.fudaa.fudaa.crue.study.services.EMHProjetServiceImpl;
import org.openide.util.Lookup;
+import org.openide.util.NbBundle;
public abstract class AbstractOpenProjectAction extends AbstractPerspectiveAwareAction {
@@ -29,27 +38,77 @@
private final boolean readOnly;
public AbstractOpenProjectAction(boolean readOnly) {
- super(PerspectiveEnum.STUDY,false);
- this.readOnly=readOnly;
+ super(PerspectiveEnum.STUDY, false);
+ this.readOnly = readOnly;
}
@Override
public void actionPerformed(ActionEvent e) {
perspectiveServiceStudy.setState(PerspectiveState.MODE_READ);
- //TODO verification ici ?
crueService.closeAll();
if (configurationManagerService.isConfigValidShowMessage()) {
service.load(readOnly);
EMHProjet selectedProject = service.getSelectedProject();
+ cleanUnusedRunDir(selectedProject);
openCurrentScenario(modellingScenarioService, selectedProject);
}
}
+ protected void cleanUnusedRunDir(EMHProjet selectedProject) {
+ if (selectedProject != null && !readOnly) {
+ ScenarioRunCleaner cleaner = new ScenarioRunCleaner(selectedProject);
+ List<File> dirToDelete = cleaner.getDirToDelete();
+ if (CollectionUtils.isNotEmpty(dirToDelete)) {
+ String filesAsString = getFilesAsString(dirToDelete);
+ String question = NbBundle.getMessage(AbstractOpenProjectAction.class, "unusedDirFound.deleteAction", filesAsString);
+ boolean showQuestion = DialogHelper.showQuestion(question);
+ if (showQuestion) {
+ FileDeleteResult deleteUnusedDir = cleaner.deleteUnusedDir();
+ if (deleteUnusedDir.isNotEmpty()) {
+ CtuluLogGroup gr = new CtuluLogGroup(null);
+ gr.setDescription(NbBundle.getMessage(AbstractOpenProjectAction.class, "deleteNotComplete.Title"));
+ if (!deleteUnusedDir.getFilesNotDeleted().isEmpty()) {
+ CtuluLog log = gr.createLog();
+ log.setDesc(NbBundle.getMessage(AbstractOpenProjectAction.class, "deleteFileNotComplete.Title"));
+ for (File file : deleteUnusedDir.getFilesNotDeleted()) {
+ log.addWarn(file.getAbsolutePath());
+ }
+ }
+ if (!deleteUnusedDir.getDirNotDeleted().isEmpty()) {
+ CtuluLog log = gr.createLog();
+ log.setDesc(NbBundle.getMessage(AbstractOpenProjectAction.class, "deleteDirNotComplete.Title"));
+ for (File file : deleteUnusedDir.getDirNotDeleted()) {
+ log.addWarn(file.getAbsolutePath());
+ }
+ }
+ LogsDisplayer.displayError(gr, gr.getDescription());
+ }
+ }
+ }
+ }
+ }
+
+ protected String getFilesAsString(List<File> dirToDelete) {
+ int max = Math.min(10, dirToDelete.size());
+ StringBuilder builder = new StringBuilder();
+ builder.append("<ul>");
+ for (int i = 0; i < max; i++) {
+ builder.append("<li>").append(dirToDelete.get(i).getAbsolutePath()).append("</li>");
+ }
+ if (max < dirToDelete.size()) {
+ builder.append("<li>...</li>");
+ }
+ builder.append("</ul>");
+ String filesAsString = builder.toString();
+ return filesAsString;
+ }
+
public static void openCurrentScenario(ModellingScenarioService modellingScenarioService, EMHProjet selectedProject) throws MissingResourceException {
if (selectedProject != null) {
ManagerEMHScenario scenarioCourant = selectedProject.getScenarioCourant();
if (scenarioCourant != null) {
- boolean accepted = DialogHelper.showQuestion(org.openide.util.NbBundle.getMessage(AbstractOpenProjectAction.class, "OpenScenarioCourantAtStartup", scenarioCourant.getNom()));
+ boolean accepted = DialogHelper.showQuestion(org.openide.util.NbBundle.getMessage(AbstractOpenProjectAction.class,
+ "OpenScenarioCourantAtStartup", scenarioCourant.getNom()));
if (accepted) {
modellingScenarioService.loadScenario(selectedProject, scenarioCourant);
}
@@ -59,5 +118,4 @@
}
}
-
}
Modified: trunk/soft/fudaa-crue/ui-study/src/main/resources/org/fudaa/fudaa/crue/study/actions/Bundle.properties
===================================================================
--- trunk/soft/fudaa-crue/ui-study/src/main/resources/org/fudaa/fudaa/crue/study/actions/Bundle.properties 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-study/src/main/resources/org/fudaa/fudaa/crue/study/actions/Bundle.properties 2014-01-10 23:00:37 UTC (rev 8566)
@@ -152,3 +152,7 @@
penFichier.EditorFileIsNotConfigured=L'ex\u00e9cutable vers l'\u00e9diteur externe n'est pas configur\u00e9
CTL_StudyHelpAction=Aide sur la perspective \u00c9tude
CompareTwoScenario.LoadingScenario=Chargement des sc\u00e9narios/runs
+unusedDirFound.deleteAction=<html><body>Des dossiers de runs sont pr\u00e9sents dans l''arborescence mais ne correspondent plus \u00e0 des runs. <b>Voulez-vous les supprimer ?</b> :<br>{0}</body></html>
+deleteNotComplete.Title=Suppression des dossiers non termin\u00e9e
+deleteDirNotComplete.Title=Des dossiers n'ont pas pu \u00eatre supprim\u00e9s
+deleteFileNotComplete.Title=Des fichiers n'ont pas pu \u00eatre supprim\u00e9s (en cours d'utilisation ?)
Modified: trunk/soft/fudaa-crue/ui-wrapper/pom.xml
===================================================================
--- trunk/soft/fudaa-crue/ui-wrapper/pom.xml 2014-01-10 21:56:47 UTC (rev 8565)
+++ trunk/soft/fudaa-crue/ui-wrapper/pom.xml 2014-01-10 23:00:37 UTC (rev 8566)
@@ -46,10 +46,6 @@
<groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-all</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- </dependency>
</dependencies>
<build>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|