Author: tchemit Date: 2014-03-19 18:21:43 +0100 (Wed, 19 Mar 2014) New Revision: 1160 Url: http://forge.codelutin.com/projects/coser/repository/revisions/1160 Log: fixes #4753 (import in webserver) + fix some commands Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 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/command/AbstractEchoBaseCommand.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java 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/LegacyResultRepositoryProvider.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -22,25 +22,36 @@ package fr.ifremer.coser.bean; +import fr.ifremer.coser.CoserTechnicalException; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; import java.util.Date; import java.util.List; import java.util.Properties; /** * RSufi result. - * + * * @author chatellier * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ + * <p/> + * Last update : $Date$ + * By : $Author$ */ public class RSufiResult extends AbstractEntity { /** serialVersionUID. */ private static final long serialVersionUID = -1337710082675120199L; + /** Logger. */ + private static final Log log = LogFactory.getLog(RSufiResult.class); + protected Date creationDate; protected String name; @@ -65,6 +76,7 @@ /** Utilisé seulement dans l'ui de visu des resultats (presence de carte ou non). */ protected boolean mapsAvailable; + /** Liste des nom de fichiers/dossier present dans other files */ protected List<File> otherFiles; @@ -287,4 +299,30 @@ setMapsResult(Boolean.parseBoolean(props.getProperty("result.mapsResult"))); } } + + /** + * Save rsufi result (only properties file). + * + * @param rsufiResultDirectory rsufiresult directory + * @since 1.5 + */ + public void save(File rsufiResultDirectory) { + + OutputStream outputStream = null; + try { + // sauvegarde des informations du resultat (properties) + File propertiesFile = new File(rsufiResultDirectory, "result.properties"); + Properties props = toProperties(); + outputStream = new FileOutputStream(propertiesFile); + props.store(outputStream, "Saved by " + getClass()); + outputStream.close(); + if (log.isDebugEnabled()) { + log.debug("Saving result properties file : " + propertiesFile); + } + } catch (IOException ex) { + throw new CoserTechnicalException("Can't save result", ex); + } finally { + IOUtils.closeQuietly(outputStream); + } + } } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -29,6 +29,7 @@ import fr.ifremer.coser.result.repository.ResultRepositoryProvider; import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider; import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider; +import fr.ifremer.coser.util.DataType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -62,11 +63,11 @@ // add legacy map repository Preconditions.checkNotNull(config.getWebMapsProjectsDirectory()); - result.add(new LegacyResultRepositoryProvider(config, config.getWebMapsProjectsDirectory())); + result.add(new LegacyResultRepositoryProvider(config, config.getWebMapsProjectsDirectory(), ResultType.MAP)); // add legacy indicators repository Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory()); - result.add(new LegacyResultRepositoryProvider(config, config.getWebIndicatorsProjectsDirectory())); + result.add(new LegacyResultRepositoryProvider(config, config.getWebIndicatorsProjectsDirectory(), ResultType.INDICATOR)); // add EchoBase repository Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory()); 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-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -201,8 +201,8 @@ result = request.getExtractTypeList().contains(DataType.POPULATION) || request.getExtractTypeList().contains(DataType.COMMUNITY); } - if (isDataResult()) { - result |= request.getExtractTypeList().contains(DataType.SOURCE); + if (!result && isDataResult()) { + result = request.getExtractTypeList().contains(DataType.SOURCE); } return result; } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -172,6 +172,11 @@ return result; } + protected Map<String, String> getMapSpeciesMap() { + Map<String, String> result = repository.getMapSpecies(); + return result; + } + // --------------------------------------------------------------------- // // --- Get indicator lists --------------------------------------------- // // --------------------------------------------------------------------- // Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -47,7 +47,7 @@ @Override public VoidResult execute(CopyRepositoryRequest request) { File basedir = repository.getBasedir(); - File targetDirectory = request.getTargetDirectory(); + File targetDirectory = new File (request.getTargetDirectory(), repository.getProjectName()); try { CoserUtils.customCopyDirectory(basedir, targetDirectory, FileFilterUtils.trueFileFilter()); } catch (IOException e) { Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -25,7 +25,9 @@ import com.google.common.collect.Maps; import fr.ifremer.coser.result.request.GetResultNameRequest; import fr.ifremer.coser.result.result.MapResult; +import fr.ifremer.coser.util.DataType; +import java.util.List; import java.util.Map; /** @@ -38,7 +40,18 @@ @Override public boolean accept(GetResultNameRequest request) { - return repository.matchExtractTypeList(request); + List<DataType> extractTypeList = request.getExtractTypeList(); + boolean result = false; + if (extractTypeList.contains(DataType.MAP)) { + result = repository.isMapsResult(); + } + if (!result && (extractTypeList.contains(DataType.POPULATION) || extractTypeList.contains(DataType.COMMUNITY))) { + result = repository.isIndicatorsResult(); + } + if (!result && extractTypeList.contains(DataType.SOURCE)) { + result = repository.isDataResult(); + } + return result; } @Override Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -25,7 +25,9 @@ import com.google.common.collect.Maps; import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest; import fr.ifremer.coser.result.result.MapResult; +import fr.ifremer.coser.util.DataType; +import java.util.List; import java.util.Map; /** @@ -45,10 +47,19 @@ public MapResult execute(GetSpeciesForExtractRawDataAndResultsRequest request) { Map<String, String> map = Maps.newHashMap(); - // get all species for population indicators - map.putAll(getPopulationSpeciesMap()); - // get all species for community indicators - map.putAll(getCommunitySpeciesMap()); + List<DataType> extractTypeList = request.getExtractTypeList(); + if (extractTypeList.contains(DataType.MAP)) { + // get all species for maps + map.putAll(getMapSpeciesMap()); + } + if (extractTypeList.contains(DataType.POPULATION)) { + // get all species for population indicators + map.putAll(getPopulationSpeciesMap()); + } + if (extractTypeList.contains(DataType.COMMUNITY)) { + // get all species for community indicators + map.putAll(getCommunitySpeciesMap()); + } MapResult result = newMapResult(map); return result; 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-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -139,10 +139,7 @@ this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName); this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName); - this.id = String.format("%s::%s::%s", - LegacyResultRepositoryType.ID, - resultDirectory, - path.getRsufiResult().isMapsResult() ? "Map" : "Indicator"); + this.id = String.format("%s::%s", LegacyResultRepositoryType.ID, resultDirectory); if (log.isInfoEnabled()) { log.info("New result repository: " + id); @@ -269,8 +266,8 @@ result = request.getExtractTypeList().contains(DataType.POPULATION) || request.getExtractTypeList().contains(DataType.COMMUNITY); } - if (isDataResult()) { - result |= request.getExtractTypeList().contains(DataType.SOURCE); + if (!result && isDataResult()) { + result = request.getExtractTypeList().contains(DataType.SOURCE); } return result; } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -32,6 +32,7 @@ import fr.ifremer.coser.bean.RSufiResultPath; import fr.ifremer.coser.bean.Selection; import fr.ifremer.coser.result.ResultRepositoryInitializationException; +import fr.ifremer.coser.result.ResultType; import fr.ifremer.coser.result.repository.ResultRepositoryProvider; import fr.ifremer.coser.services.ProjectService; import org.apache.commons.logging.Log; @@ -62,9 +63,21 @@ */ protected final CoserBusinessConfig config; - public LegacyResultRepositoryProvider(CoserBusinessConfig config, File basedir) { + /** + * Hack to sanity repository {@link LegacyResultRepository#isMapsResult()} or + * {@link LegacyResultRepository#isIndicatorsResult()} flags. + * + * @see #sanityRepository(LegacyResultRepository) + */ + protected final ResultType resultType; + + public LegacyResultRepositoryProvider(CoserBusinessConfig config, + File basedir, + ResultType resultType) { + Preconditions.checkNotNull(config); + Preconditions.checkNotNull(basedir); this.config = config; - Preconditions.checkNotNull(basedir); + this.resultType = resultType; this.basedir = basedir; } @@ -140,8 +153,7 @@ String surveyName = projectService.getProjectSurveyName(rSufiResult, r); LegacyResultRepository repository = new LegacyResultRepository(existingProject, path, surveyName); - - + sanityRepository(repository); if (log.isInfoEnabled()) { log.info(String.format("Detected result: %s - %s", path.getProject().getName(), path.getRsufiResult().getName())); } @@ -158,4 +170,44 @@ } return result; } + + /** + * Sanity the given repository. + * + * @param repository repository to sanity + */ + protected void sanityRepository(LegacyResultRepository repository) { + if (resultType != null) { + + boolean needSave = false; + RSufiResult rsufiResult = repository.getPath().getRsufiResult(); + if (resultType == ResultType.MAP) { + // map repository + if (repository.isIndicatorsResult()) { + // can't be both indicator result and maps result + needSave = true; + rsufiResult.setIndicatorsResult(false); + if (log.isInfoEnabled()) { + log.info("Will sanity repository to only map result"); + } + } + } + if (resultType == ResultType.INDICATOR) { + { + // indicator repository + if (repository.isMapsResult()) { + // can't be both indicator result and maps result + needSave = true; + rsufiResult.setMapsResult(false); + if (log.isInfoEnabled()) { + log.info("Will sanity repository to only indicator result"); + } + } + } + if (needSave) { + rsufiResult.save(repository.getResultDirectory()); + } + } + } + } } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -235,6 +235,11 @@ return result; } + protected Map<String, String> getMapSpeciesMap() { + //TODO + return getPopulationSpeciesMap(); + } + // --------------------------------------------------------------------- // // --- Get indicator lists --------------------------------------------- // // --------------------------------------------------------------------- // Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -25,7 +25,9 @@ import com.google.common.collect.Maps; import fr.ifremer.coser.result.request.GetResultNameRequest; import fr.ifremer.coser.result.result.MapResult; +import fr.ifremer.coser.util.DataType; +import java.util.List; import java.util.Map; /** @@ -38,7 +40,18 @@ @Override public boolean accept(GetResultNameRequest request) { - return repository.matchExtractTypeList(request); + List<DataType> extractTypeList = request.getExtractTypeList(); + boolean result = false; + if (extractTypeList.contains(DataType.MAP)) { + result = repository.isMapsResult(); + } + if (!result && (extractTypeList.contains(DataType.POPULATION) || extractTypeList.contains(DataType.COMMUNITY))) { + result = repository.isIndicatorsResult(); + } + if (!result && extractTypeList.contains(DataType.SOURCE)) { + result = repository.isDataResult(); + } + return result; } @Override Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -23,9 +23,11 @@ */ import com.google.common.collect.Maps; +import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest; import fr.ifremer.coser.result.result.MapResult; -import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest; +import fr.ifremer.coser.util.DataType; +import java.util.List; import java.util.Map; /** @@ -47,10 +49,19 @@ Map<String, String> map = Maps.newHashMap(); - // get all species for population indicators - map.putAll(getPopulationSpeciesMap()); - // get all species for community indicators - map.putAll(getCommunitySpeciesMap()); + List<DataType> extractTypeList = request.getExtractTypeList(); + if (extractTypeList.contains(DataType.MAP)) { + // get all species for maps + map.putAll(getMapSpeciesMap()); + } + if (extractTypeList.contains(DataType.POPULATION)) { + // get all species for population indicators + map.putAll(getPopulationSpeciesMap()); + } + if (extractTypeList.contains(DataType.COMMUNITY)) { + // get all species for community indicators + map.putAll(getCommunitySpeciesMap()); + } MapResult result = newMapResult(map); return result; Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -530,8 +530,18 @@ } } - // copie vers le dossier dedie - FileUtils.copyDirectory(projectsDirectory, rsufiDirectory, mFileFilters); + // get all files to compress + Collection<File> files = FileUtil.getFilteredElements(projectsDirectory, + mFileFilters, + true); + + // create a temp zip file + File tempZip = File.createTempFile("Coserextractrsufi-", ".zip"); + ZipUtil.compressFiles(tempZip, projectsDirectory, files, false); + // unzip it to correct directory + ZipUtil.uncompress(tempZip, rsufiDirectory); + // delete temp zip + FileUtils.forceDelete(tempZip); } catch (CoserBusinessException e) { throw new CoserTechnicalException("Can't prepare upload data", e); } catch (IOException e) { 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 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -1242,12 +1242,12 @@ * @param rsufiResult rsufi result * @throws CoserBusinessException */ - protected void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException { + public void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException { OutputStream outputStream = null; try { // sauvegarde des informations du resultat (properties) - File propertiesFile = new File(rsufiResultDirectory, "result.properties"); + File propertiesFile = new File(rsufiResultDirectory,"result.properties"); Properties props = rsufiResult.toProperties(); outputStream = new FileOutputStream(propertiesFile); props.store(outputStream, null); Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -57,6 +57,7 @@ import fr.ifremer.coser.util.DataType; import fr.ifremer.coser.util.io.MultipleFileFilter; import fr.ifremer.coser.util.io.OneRSufiResultFileFilter; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -283,6 +284,10 @@ CoserMainRepositoryProvider mainRepositoryProvider = new CoserMainRepositoryProvider(Sets.<ResultRepositoryProvider<?>>newHashSet(provider)); + if (CollectionUtils.isEmpty(mainRepositoryProvider.getResultRepositories())) { + // no repository found, nothing to do + return; + } CoserRequestContext context = uploadContext.context; // recuperation des noms zone des nouveau fichiers @@ -306,18 +311,22 @@ List<String> zonesToDelete = Lists.newArrayList(zonesToImport); zonesToDelete.retainAll(existingZones); - // suppression des results deja existants - DeleteResultsRequest deleteRequest = requestBuilder(context, DeleteResultsRequest.class). - addZoneList(zonesToDelete). - toRequest(); - executeAll(mainRepositoryProvider, context, deleteRequest); + if (CollectionUtils.isNotEmpty(zonesToDelete)) { + // suppression des results deja existants + DeleteResultsRequest deleteRequest = requestBuilder(context, DeleteResultsRequest.class). + addZoneList(zonesToDelete). + toRequest(); + executeAll(mainRepositoryProvider, context, deleteRequest); + } - // ajout des nouvelles zones - CopyRepositoryRequest addRequest = requestBuilder(context, CopyRepositoryRequest.class). - addZoneList(zonesToDelete). - addTargetDirectory(getConfig().getWebEchobaseProjectsDirectory()). - toRequest(); - executeAll(mainRepositoryProvider, context, addRequest); + if (CollectionUtils.isNotEmpty(zonesToImport)) { + // ajout des nouvelles zones + CopyRepositoryRequest addRequest = requestBuilder(context, CopyRepositoryRequest.class). + addZoneList(Lists.newArrayList(zonesToImport)). + addTargetDirectory(getConfig().getWebEchobaseProjectsDirectory()). + toRequest(); + executeAll(mainRepositoryProvider, context, addRequest); + } // mise a jour du context uploadContext.indicatorsResultZoneIds.putAll(indicatorsResultZoneIds); @@ -332,9 +341,13 @@ GetResultNameRequest rawDataRequest) throws CoserBusinessException, IOException { // Creation d'un repository provider - LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(getConfig(), tempDirectory); + LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(getConfig(), tempDirectory, null); CoserMainRepositoryProvider mainRepositoryProvider = new CoserMainRepositoryProvider(Sets.<ResultRepositoryProvider<?>>newHashSet(provider)); + if (CollectionUtils.isEmpty(mainRepositoryProvider.getResultRepositories())) { + // no repository found, nothing to do + return; + } ProjectService projectService = new ProjectService(getConfig()); File projectsDirectory = getConfig().getWebIndicatorsProjectsDirectory(); Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-19 10:56:06 UTC (rev 1159) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-19 17:21:43 UTC (rev 1160) @@ -22,7 +22,9 @@ * #L% */ +import fr.ifremer.coser.result.ResultType; import fr.ifremer.coser.services.CoserTestAbstract; +import fr.ifremer.coser.util.DataType; import org.junit.Assert; import org.junit.Test; @@ -49,7 +51,7 @@ File basedir = config.getWebIndicatorsProjectsDirectory(); - LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir); + LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir, ResultType.INDICATOR); Set<LegacyResultRepository> resultRepositories = provider.loadRepositories(); Assert.assertNotNull(resultRepositories);