r1137 - in trunk/coser-business/src/main/java/fr/ifremer/coser: result/repository/legacy services
Author: tchemit Date: 2014-03-08 08:26:39 +0100 (Sat, 08 Mar 2014) New Revision: 1137 Url: http://forge.codelutin.com/projects/coser/repository/revisions/1137 Log: make raw data result ok for legacy storages) Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 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 07:26:03 UTC (rev 1136) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-08 07:26:39 UTC (rev 1137) @@ -27,6 +27,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import fr.ifremer.coser.CoserBusinessConfig; +import fr.ifremer.coser.CoserBusinessException; import fr.ifremer.coser.CoserConstants; import fr.ifremer.coser.CoserTechnicalException; import fr.ifremer.coser.bean.EchoBaseProject; @@ -43,6 +44,8 @@ import fr.ifremer.coser.result.request.MapRequest; import fr.ifremer.coser.result.request.PopulationIndicatorRequest; import fr.ifremer.coser.result.request.RawDataRequest; +import fr.ifremer.coser.services.ProjectService; +import fr.ifremer.coser.services.WebService; import fr.ifremer.coser.storage.DataStorage; import fr.ifremer.coser.storage.DataStorages; import fr.ifremer.coser.storage.MemoryDataStorage; @@ -61,6 +64,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; @@ -152,12 +157,25 @@ */ protected ZoneMap zonesMap; + /** + * Is the result contains maps ? + */ protected final boolean mapsResult; + /** + * Is the result contains indicators ? + */ protected final boolean indicatorsResult; + /** + * IS the results contains raw data ? + */ protected final boolean dataResult; + protected final ProjectService projectService; + + protected final WebService webService; + public LegacyResultRepository(CoserBusinessConfig config, File basedir, RSufiResultPath path, @@ -188,6 +206,8 @@ this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName); this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName); this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName); + this.projectService = new ProjectService(config); + this.webService = new WebService(config); } // --------------------------------------------------------------------- // @@ -211,7 +231,6 @@ if (request instanceof MapRequest) { MapRequest r = (MapRequest) request; - boolean match = mapsResult && matchFacade(r); if (match) { allowedZones = getZonesMap().getZonesForFacade(r.getFacade()); @@ -396,10 +415,12 @@ } else if (request instanceof RawDataRequest) { // No such result for echobase at the moment - if (log.isDebugEnabled()) { - log.debug("No result for RawDataRequest"); - } + RawDataRequest r = (RawDataRequest) request; + File file = getRawDataFile(r.getLocale() + ); + result = new FileResult(getId(), file); + } else if (request instanceof CommunityIndicatorRequest) { CommunityIndicatorRequest r = (CommunityIndicatorRequest) request; @@ -610,8 +631,55 @@ // --- Get Raw Data result --------------------------------------------- // // --------------------------------------------------------------------- // - // None for the moment + protected File getRawDataFile(Locale locale) { + try { + // be sure that data are available for this project + // or it will fail + projectService.loadSelectionData(basedir.getParentFile(), path.getProject(), path.getSelection()); + } catch (CoserBusinessException e) { + throw new CoserTechnicalException("Could not load project selection", e); + } + + File result; + + try { + File tempDir = FileUtil.createTempDirectory("coser-source-", "-tmp"); + + // il ne faut pas les fichiers de selection, mais leurs + // export rsufi (sans les lignes, et les quotes) + File archiveDir = projectService.extractRSUfiData(path.getProject(), path.getSelection(), tempDir, true); + + // add decharge file + String filename; + if (locale != null && "fr".equals(locale.getLanguage())) { + filename = "DechargeDonnees.pdf"; + } else if (locale != null && "es".equals(locale.getLanguage())) { + filename = "DatosDeExencionDeResponsabilidad.pdf"; + } else { + filename = "DataDisclaimer.pdf"; + } + File dechargePDF = new File(archiveDir, filename); + webService.generateDechargePDF(dechargePDF, resultDirectory, path.getRsufiResult(), locale); + + // ajout du reftax dans le zip + File reftaxFile = new File(basedir, CoserConstants.Category.REFTAX_SPECIES.getStorageFileName()); + FileUtils.copyFileToDirectory(reftaxFile, archiveDir); + + // make zip + result = File.createTempFile("coser-source-", ".zip"); + result.deleteOnExit(); + ZipUtil.compress(result, archiveDir); + + // clean directory + FileUtils.deleteDirectory(tempDir); + } catch (Exception ex) { + throw new CoserTechnicalException("Can't create zip file", ex); + } + + return result; + } + // --------------------------------------------------------------------- // // --- Get Community indicator result ---------------------------------- // // --------------------------------------------------------------------- // 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 2014-03-08 07:26:03 UTC (rev 1136) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-08 07:26:39 UTC (rev 1137) @@ -2176,7 +2176,7 @@ * @return le fichier généré * @throws CoserBusinessException */ - protected File generateDechargePDF(File disclamerPdf, File resultDirectory, RSufiResult rSufiResult, Locale locale) throws CoserBusinessException { + public File generateDechargePDF(File disclamerPdf, File resultDirectory, RSufiResult rSufiResult, Locale locale) throws CoserBusinessException { File result = null;
participants (1)
-
tchemit@users.forge.codelutin.com