r1139 - in trunk: coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy coser-web/src/main/java/fr/ifremer/coser/web/actions/com coser-web/src/main/java/fr/ifremer/coser/web/actions/pop
Author: tchemit Date: 2014-03-09 07:34:41 +0100 (Sun, 09 Mar 2014) New Revision: 1139 Url: http://forge.codelutin.com/projects/coser/repository/revisions/1139 Log: refs-50 #4651 legacy results of ok Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-08 12:46:01 UTC (rev 1138) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-09 06:34:41 UTC (rev 1139) @@ -45,6 +45,7 @@ import fr.ifremer.coser.storage.DataStorage; import fr.ifremer.coser.storage.DataStorages; import fr.ifremer.coser.storage.MemoryDataStorage; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,6 +60,8 @@ import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer; import org.jfree.data.statistics.DefaultStatisticalCategoryDataset; +import org.nuiton.util.FileUtil; +import org.nuiton.util.ZipUtil; import java.awt.Color; import java.io.File; @@ -560,23 +563,61 @@ protected File getCommunityIndicatorDataFile(String indicator, String speciesList) { - DataStorage dataStorage = new MemoryDataStorage(); + try { - Iterator<String[]> iterator = loadCommunityIndicatorStorage(false); + File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp"); - // add header - dataStorage.add(iterator.next()); + File baseDir = new File(tempDir, project.getSurveyName()); + FileUtils.forceMkdir(baseDir); - while (iterator.hasNext()) { - String[] tuple = iterator.next(); - if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) { - dataStorage.add(tuple); + // ajout du fichier csv avec les indicateurs + DataStorage dataStorage = new MemoryDataStorage(); + + Iterator<String[]> iterator = loadCommunityIndicatorStorage(false); + + // add header + dataStorage.add(iterator.next()); + + while (iterator.hasNext()) { + String[] tuple = iterator.next(); + if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) { + dataStorage.add(tuple); + } } + File csvFile = DataStorages.save("coser-chart-community-indicator", + ".csv", + dataStorage); + + File csvFileCopied = new File(baseDir, indicator + ".csv"); + FileUtils.copyFile(csvFile, csvFileCopied); + FileUtils.forceDelete(csvFile); + + //TODO See what to generate here (we don't have any selection in echobase results). +// // 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 = path.getProject(); +// Selection selection = path.getSelection(); +// File metaFile = webService.generateMetaFilePDF(project, +// selection, +// resultDirectory, +// rSufiResult, +// indicator, +// locale); +// File metaFileCopied = new File(baseDir, "Information.pdf"); +// FileUtils.copyFile(metaFile, metaFileCopied); + + // make zip + File result = File.createTempFile("coser-chart-community-indicator", ".zip"); + result.deleteOnExit(); + ZipUtil.compress(result, baseDir); + + // clean directory + FileUtils.deleteDirectory(tempDir); + return result; + } catch (IOException e) { + throw new CoserTechnicalException("Can't create zip file", e); } - File result = DataStorages.save("coser-chart-community-indicator", - ".csv", - dataStorage); - return result; } protected File getCommunityIndicatorGraphFile(Locale locale, String zone, Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-08 12:46:01 UTC (rev 1138) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-09 06:34:41 UTC (rev 1139) @@ -32,7 +32,10 @@ import fr.ifremer.coser.CoserTechnicalException; import fr.ifremer.coser.bean.EchoBaseProject; import fr.ifremer.coser.bean.IndicatorMap; +import fr.ifremer.coser.bean.Project; +import fr.ifremer.coser.bean.RSufiResult; import fr.ifremer.coser.bean.RSufiResultPath; +import fr.ifremer.coser.bean.Selection; import fr.ifremer.coser.bean.ZoneMap; import fr.ifremer.coser.result.CoserRequest; import fr.ifremer.coser.result.CoserResult; @@ -427,7 +430,9 @@ File file = null; switch (r.getResultType()) { case DATA: - file = getCommunityIndicatorDataFile(r.getIndicator(), + file = getCommunityIndicatorDataFile(r.getLocale(), + r.getZone(), + r.getIndicator(), r.getSpecies()); break; @@ -684,28 +689,71 @@ // --- Get Community indicator result ---------------------------------- // // --------------------------------------------------------------------- // - protected File getCommunityIndicatorDataFile(String indicator, String speciesList) { + protected File getCommunityIndicatorDataFile(Locale locale, + String zone, + String indicator, + String speciesList) { - DataStorage dataStorage = new MemoryDataStorage(); + try { - Iterator<String[]> iterator = loadCommunityIndicatorStorage(false); + File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp"); - // add header - dataStorage.add(iterator.next()); + File baseDir = new File(tempDir, surveyName); + FileUtils.forceMkdir(baseDir); - while (iterator.hasNext()) { - String[] tuple = iterator.next(); - if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) { - dataStorage.add(tuple); + RSufiResult rSufiResult = path.getRsufiResult(); + + // ajout du fichier csv avec les indicateurs + DataStorage dataStorage = new MemoryDataStorage(); + + Iterator<String[]> iterator = loadCommunityIndicatorStorage(false); + + // add header + dataStorage.add(iterator.next()); + + while (iterator.hasNext()) { + String[] tuple = iterator.next(); + if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) { + dataStorage.add(tuple); + } } + File csvFile = DataStorages.save("coser-chart-community-indicator", + ".csv", + dataStorage); + + File csvFileCopied = new File(baseDir, indicator + ".csv"); + FileUtils.copyFile(csvFile, csvFileCopied); + FileUtils.forceDelete(csvFile); + + // 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 = path.getProject(); + Selection selection = path.getSelection(); + File metaFile = webService.generateMetaFilePDF(project, + selection, + resultDirectory, + rSufiResult, + indicator, + locale); + File metaFileCopied = new File(baseDir, "Information.pdf"); + FileUtils.copyFile(metaFile, metaFileCopied); + + // make zip + File result = File.createTempFile("coser-chart-community-indicator", ".zip"); + result.deleteOnExit(); + ZipUtil.compress(result, baseDir); + + // clean directory + FileUtils.deleteDirectory(tempDir); + return result; + } catch (Exception e) { + throw new CoserTechnicalException("Can't create zip file", e); } - File result = DataStorages.save("coser-chart-community-indicator", - ".csv", - dataStorage); - return result; } - protected File getCommunityIndicatorGraphFile(Locale locale, String zone, + protected File getCommunityIndicatorGraphFile(Locale locale, + String zone, String indicator, String speciesList) { Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-08 12:46:01 UTC (rev 1138) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-09 06:34:41 UTC (rev 1139) @@ -28,6 +28,7 @@ import org.apache.struts2.convention.annotation.Result; import java.io.InputStream; +import java.util.Map; /** * Affiche le graphique demandé. @@ -95,9 +96,18 @@ addFacade(facade). addZone(zone). addIndicator(indicator). - addResultType(IndicatorRequest.ResultType.DATA). + addResultType(IndicatorRequest.ResultType.GRAPH). addSpecies(list). toCommunityIndicatorRequest(); + + if (list == null) { + + // on prend la première entrée dans le fichier + Map<String, String> lists = getService().getAvailableSpecies(request); + if (!lists.isEmpty()) { + request.setSpecies(lists.keySet().iterator().next()); + } + } result = getService().getFileResult(request); return SUCCESS; } Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-08 12:46:01 UTC (rev 1138) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-09 06:34:41 UTC (rev 1139) @@ -28,6 +28,7 @@ import org.apache.struts2.convention.annotation.Result; import java.io.InputStream; +import java.util.Map; /** * Télécharge les données qui ont servi a généré le graph au format CSV. @@ -91,13 +92,24 @@ // @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})}) @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})}) public String execute() { + IndicatorRequest request = requestBuilder(). addFacade(facade). addZone(zone). addIndicator(indicator). - addResultType(IndicatorRequest.ResultType.GRAPH). + addResultType(IndicatorRequest.ResultType.DATA). addSpecies(list). toCommunityIndicatorRequest(); + + if (list == null) { + + // on prend la première entrée dans le fichier + Map<String, String> lists = getService().getAvailableSpecies(request); + if (!lists.isEmpty()) { + request.setSpecies(lists.keySet().iterator().next()); + } + } + result = getService().getFileResult(request); return SUCCESS; } Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-08 12:46:01 UTC (rev 1138) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-09 06:34:41 UTC (rev 1139) @@ -98,7 +98,7 @@ addZone(zone). addSpecies(species). addIndicator(indicator). - addResultType(IndicatorRequest.ResultType.DATA). + addResultType(IndicatorRequest.ResultType.GRAPH). toPopulationIndicatorRequest(); result = getService().getFileResult(request); return SUCCESS; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-08 12:46:01 UTC (rev 1138) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-09 06:34:41 UTC (rev 1139) @@ -96,7 +96,7 @@ addZone(zone). addSpecies(species). addIndicator(indicator). - addResultType( IndicatorRequest.ResultType.GRAPH). + addResultType( IndicatorRequest.ResultType.DATA). toPopulationIndicatorRequest(); result = getService().getFileResult(request); return SUCCESS;
participants (1)
-
tchemit@users.forge.codelutin.com