r1731 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service wao-services/src/main/java/fr/ifremer/wao/services/service/csv wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations wao-services/src/test/java/fr/ifremer/wao/services/service
Author: bleny Date: 2014-03-20 10:06:44 +0100 (Thu, 20 Mar 2014) New Revision: 1731 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1731 Log: refs #4483 add export sampling plan service Added: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/DCF5Codes.java Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerObsVenteSamplingPlanImportExportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DCF5CodesParserFormatter.java trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java Added: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/DCF5Codes.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/DCF5Codes.java (rev 0) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/DCF5Codes.java 2014-03-20 09:06:44 UTC (rev 1731) @@ -0,0 +1,18 @@ +package fr.ifremer.wao.entity; + +import com.google.common.base.Function; + +public class DCF5Codes { + + public static Function<DCF5Code, String> getCode() { + return new GetCode(); + } + + protected static class GetCode implements Function<DCF5Code, String> { + + @Override + public String apply(DCF5Code input) { + return input.getCode(); + } + } +} Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-03-19 16:53:56 UTC (rev 1730) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-03-20 09:06:44 UTC (rev 1731) @@ -3,10 +3,12 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import fr.ifremer.wao.SampleRowsFilter; +import fr.ifremer.wao.WaoTechnicalException; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Boats; import fr.ifremer.wao.entity.Company; @@ -37,11 +39,14 @@ import fr.ifremer.wao.services.service.administration.UnknownFishingGearDcfCodeException; import fr.ifremer.wao.services.service.administration.UnknownTargetSpeciesDcfCodeException; import fr.ifremer.wao.services.service.csv.ObsMerObsVenteSamplingPlanImportExportModel; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.ExportModel; import org.nuiton.csv.Import; import org.nuiton.csv.ImportModel; import org.nuiton.csv.ImportRuntimeException; @@ -49,6 +54,7 @@ import org.nuiton.util.DateUtil; import java.io.InputStream; +import java.nio.charset.Charset; import java.text.ParseException; import java.util.ArrayList; import java.util.Calendar; @@ -483,4 +489,39 @@ return samplingPlanImportModel; } + + public InputStream exportSamplingPlan(SampleRowsFilter filter) { + + Preconditions.checkArgument(filter.getPeriodFrom() != null); + Preconditions.checkArgument(filter.getPeriodTo() != null); + + // ignore pagination when exporting + filter.setOrderByArguments(ImmutableSet.of(SampleRow.PROPERTY_CODE)); + + SampleRowTopiaDao dao = getSampleRowDao(); + + List<SampleRow> sampleRows = dao.findAll(filter); + + ExportModel<SampleRow> exportModel = + new ObsMerObsVenteSamplingPlanImportExportModel( + filter.getPeriodFrom(), + filter.getPeriodTo(), + ObsProgram.OBSMER); + + Export<SampleRow> export = Export.newExport(exportModel, sampleRows); + + try { + + String csvContent = export.toString(Charset.forName("UTF-8")); + + InputStream csvInputStream = IOUtils.toInputStream(csvContent, "UTF-8"); + + return csvInputStream; + + } catch (Exception e) { + throw new WaoTechnicalException(e); + } + + } + } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerObsVenteSamplingPlanImportExportModel.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerObsVenteSamplingPlanImportExportModel.java 2014-03-19 16:53:56 UTC (rev 1730) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerObsVenteSamplingPlanImportExportModel.java 2014-03-20 09:06:44 UTC (rev 1731) @@ -124,8 +124,8 @@ protected PeriodDates periodDates; /** Pour l'export */ - public ObsMerObsVenteSamplingPlanImportExportModel(PeriodDates periodDates, ObsProgram obsProgram) { - this.periodDates = periodDates; + public ObsMerObsVenteSamplingPlanImportExportModel(Date fromMonth, Date toMonth, ObsProgram obsProgram) { + this.periodDates = new PeriodDates(fromMonth, toMonth); this.obsProgram = obsProgram; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DCF5CodesParserFormatter.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DCF5CodesParserFormatter.java 2014-03-19 16:53:56 UTC (rev 1730) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DCF5CodesParserFormatter.java 2014-03-20 09:06:44 UTC (rev 1731) @@ -23,7 +23,9 @@ */ package fr.ifremer.wao.services.service.csv.operations; +import com.google.common.collect.Iterables; import fr.ifremer.wao.entity.DCF5Code; +import fr.ifremer.wao.entity.DCF5Codes; import fr.ifremer.wao.services.service.administration.ReferentialService; import fr.ifremer.wao.services.service.administration.UnknownFishingGearDcfCodeException; import fr.ifremer.wao.services.service.administration.UnknownTargetSpeciesDcfCodeException; @@ -49,7 +51,8 @@ @Override public String format(List<DCF5Code> dcf5Codes) { - return StringUtil.join(dcf5Codes, DCF5_CODES_SEPARATOR, true); + String join = StringUtil.join(Iterables.transform(dcf5Codes, DCF5Codes.getCode()), DCF5_CODES_SEPARATOR, true); + return join; } @Override Modified: trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java =================================================================== --- trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java 2014-03-19 16:53:56 UTC (rev 1730) +++ trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanServiceTest.java 2014-03-20 09:06:44 UTC (rev 1731) @@ -13,6 +13,7 @@ import org.junit.Test; import org.nuiton.util.DateUtil; +import java.io.IOException; import java.io.InputStream; import java.util.List; @@ -82,4 +83,23 @@ } + @Test + public void testExportSamplingPlan() throws IOException { + + fixtures.samplingPlan(); + + serviceContext.setDate(DateUtil.createDate(15, 5, 2010)); + + SampleRowsFilter filter = service.newSampleRowsFilter(fixtures.admin()); + + InputStream inputStream = service.exportSamplingPlan(filter); + + String csvContent = IOUtils.toString(inputStream); + + if (log.isDebugEnabled()) { + log.debug("csvContent = \n" + csvContent); + } + + } + }
participants (1)
-
bleny@users.forge.codelutin.com