r575 - in trunk/coser-business/src: main/java/fr/ifremer/coser/services test/java/fr/ifremer/coser/services
Author: chatellier Date: 2011-01-25 16:38:20 +0000 (Tue, 25 Jan 2011) New Revision: 575 Log: Generate com chart data into zip file. Add test about non allowed data download. Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-25 16:37:31 UTC (rev 574) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-25 16:38:20 UTC (rev 575) @@ -1589,21 +1589,7 @@ // extraction des especes pour le résultat demandé if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) { - - if (species == null) { - // title = surveyName - indicateur - result = publicationService.getRsufiResultComChartData(resultFile, rsufiResult, indicator); - - // ajout du fichier d'information sur les espèces incluses dans - //les calculs des indicateurs de communautés - // load project (without data to get reftax data) - Project project = projectService.openProject(projectFile.getName(), projectsDirectory); - //File metaFile = generateMetaFilePDF(project, resultFile, rsufiResult, indicator, locale); - } - else { - // title = surveyName - indicateur - species - result = publicationService.getRsufiResultPopChartData(resultFile, rsufiResult, species, indicator); - } + result = getChartDataFile(resultFile, rsufiResult, species, indicator); break; } } @@ -1618,7 +1604,59 @@ return result; } + + /** + * Generate chart data (as csv for population and as zip for community). + * + * @param resultDirectory rsufi result directory + * @param rSufiResult rsufi result + * @param string species species (can be null for community) + * @param indicator indicator + * @return generated file (auto delete when jvm shutdown) + * @throws CoserBusinessException + */ + protected File getChartDataFile(File resultDirectory, RSufiResult rSufiResult, String species, String indicator) throws CoserBusinessException { + File result = null; + + try { + // cas community (zip avec fichier meta) + if (species == null) { + File tempDir = FileUtil.createTempDirectory("coser-", ".tmp"); + + String surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult); + File baseDir = new File(tempDir, surveyName); + baseDir.mkdirs(); + + File csvFile = publicationService.getRsufiResultComChartData(resultDirectory, rSufiResult, indicator); + FileUtils.copyFileToDirectory(csvFile, baseDir); + + // ajout du fichier d'information sur les espèces incluses dans + //les calculs des indicateurs de communautés + // load project (without data to get reftax data) + //Project project = projectService.openProject(projectFile.getName(), projectsDirectory); + //File metaFile = generateMetaFilePDF(project, resultFile, rsufiResult, indicator, locale); + + // make zip + result = File.createTempFile("coserchartdatazip-", ".zip"); + result.deleteOnExit(); + ZipUtil.compress(result, baseDir); + + // clean directory + FileUtils.deleteDirectory(tempDir); + } + else { + // cas pop, fichier csv brut + result = publicationService.getRsufiResultPopChartData(resultDirectory, rSufiResult, species, indicator); + } + + } catch (IOException ex) { + throw new CoserBusinessException("Can't generate chart data file", ex); + } + + return result; + } + /** * Recupere le fichier image de la carte demandées en fonction de la zone * et de l'espece. Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2011-01-25 16:37:31 UTC (rev 574) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2011-01-25 16:38:20 UTC (rev 575) @@ -126,6 +126,20 @@ } /** + * Test du contenu du zip de téléchargement des sources avec erreur + * can le projet ne le permet pas. + * + * @throws CoserBusinessException + * @throws IOException + */ + @Test(expected=CoserBusinessException.class) + public void testSourceZipError() throws CoserBusinessException, IOException { + registerUploadedResult("/web/upload2.zip"); + + webService.getSourceZip("testzone1", "en"); + } + + /** * Test du contenu du zip de téléchargement des sources. * * Generation du zip, freemarker, et pdf. @@ -137,7 +151,7 @@ public void testSourceZip() throws CoserBusinessException, IOException { registerUploadedResult("/web/upload2.zip"); - File zip = webService.getSourceZip("testzone1", "en"); + File zip = webService.getSourceZip("ecorse", "en"); File tempDir = FileUtil.createTempDirectory("coser", ".tmp"); ZipUtil.uncompress(zip, tempDir); Assert.assertTrue(new File(tempDir, "projet1" + File.separator + "testcatch.csv").isFile());
participants (1)
-
chatellier@users.labs.libre-entreprise.org