Author: bleny Date: 2010-11-12 18:13:17 +0000 (Fri, 12 Nov 2010) New Revision: 771 Log: migration : dealing with CSV import/export Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/WaoManager.java trunk/wao-ui/src/main/webapp/SamplingPlan.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java 2010-11-12 16:53:30 UTC (rev 770) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java 2010-11-12 18:13:17 UTC (rev 771) @@ -28,6 +28,8 @@ import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoContext; import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.entity.DCFFiveCode; +import fr.ifremer.wao.entity.DCFFiveCodeImpl; import fr.ifremer.wao.io.csv.WaoCsvHeader.ACTIVITY_CALENDAR; import fr.ifremer.wao.io.csv.WaoCsvHeader.CONTACT; import fr.ifremer.wao.io.csv.WaoCsvHeader.DatedHeader; @@ -43,8 +45,10 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; @@ -128,6 +132,23 @@ return context.prepareSampleRowCode(code); } + public static Collection<DCFFiveCode> readDCF5Codes(CsvReader reader) throws IOException { + Collection<DCFFiveCode> result = new ArrayList<DCFFiveCode>(); + String codesString = read(reader, SAMPLING.METIER_CODE_DCF5); + // codeString is something like "AAA_BBB CCC", let's break it + String[] codes = codesString.split(" et "); + for (String codeString : codes) { + String[] codeParts = codeString.split("_"); + DCFFiveCode code = new DCFFiveCodeImpl(); + code.setFishingGearDCF(codeParts[0]); + if (codeParts.length == 2) { + code.setTargetSpeciesDCF(codeParts[1]); + } + result.add(code); + } + return result; + } + /** * Read a string value in CsvReader from {@code header} column. * In ActivityCalendarImport the result value can be null if the read value is "NA". Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-11-12 16:53:30 UTC (rev 770) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-11-12 18:13:17 UTC (rev 771) @@ -72,6 +72,7 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -466,6 +467,7 @@ Profession profession = row.getProfession(); // export.record(SAMPLING.METIER_CODE_DCF5, profession.getCodeDCF5()); + export.record(SAMPLING.METIER_CODE_DCF5, StringUtil.join(profession.getDcf5code(), " et ", true)); export.record(SAMPLING.METIER_MAILLAGE, profession.getMeshSize()); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-11-12 16:53:30 UTC (rev 770) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-11-12 18:13:17 UTC (rev 771) @@ -78,6 +78,7 @@ import org.nuiton.topia.framework.TopiaQuery.Op; import org.nuiton.util.DateUtil; import org.nuiton.util.PeriodDates; +import org.nuiton.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -841,7 +842,10 @@ // Profession can't be null Profession profession = row.getProfession(); - //export.record(SAMPLING.METIER_CODE_DCF5, profession.getCodeDCF5()); + + // export.record(SAMPLING.METIER_CODE_DCF5, profession.getCodeDCF5()); + export.record(SAMPLING.METIER_CODE_DCF5, StringUtil.join(profession.getDcf5code(), " et ", true)); + export.record(SAMPLING.METIER_MAILLAGE, profession.getMeshSize()); export.record(SAMPLING.METIER_TAILLE, profession.getSize()); export.record(SAMPLING.METIER_AUTRE, profession.getOther()); @@ -1015,13 +1019,15 @@ // Always create a new profession Profession profession = dao.create(); - // profession.setCodeDCF5(codeDCF5); profession.setMeshSize(maillage); profession.setSize(taille); profession.setOther(autre); profession.setLibelle(libelle); profession.setSpecies(especes); + // profession.setCodeDCF5(codeDCF5); + profession.setDcf5code(insertOrSelect(transaction, ImportHelper.readDCF5Codes(reader))); + return profession; } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-11-12 16:53:30 UTC (rev 770) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-11-12 18:13:17 UTC (rev 771) @@ -46,6 +46,7 @@ import fr.ifremer.wao.ui.data.RequiresAuthentication; import fr.ifremer.wao.ui.data.WaoPropertyChangeListener; import fr.ifremer.wao.ui.services.WaoManager; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.EventContext; @@ -705,7 +706,7 @@ } Profession profession = getSampleRow().getProfession(); - if (StringUtils.isEmpty(profession.getCodeDCF5())) { + if (CollectionUtils.isEmpty(profession.getDcf5code())) { sampleRowForm.recordError( "Le métier doit obligatoirement avoir un Code DCF niveau 5"); } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/WaoManager.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/WaoManager.java 2010-11-12 16:53:30 UTC (rev 770) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/WaoManager.java 2010-11-12 18:13:17 UTC (rev 771) @@ -1,3 +1,4 @@ + /* * #%L * Wao :: Web Interface @@ -181,16 +182,7 @@ DateFormat dateFormat = new SimpleDateFormat("MM/yyyy"); Profession profession = row.getProfession(); result.append("<strong>Métier : </strong>"). - append(profession.getCodeDCF5()); - if (!StringUtils.isEmpty(profession.getMeshSize())) { - result.append(' ').append(profession.getMeshSize()); - } - if (!StringUtils.isEmpty(profession.getSize())) { - result.append(' ').append(profession.getSize()); - } - if (!StringUtils.isEmpty(profession.getOther())) { - result.append(' ').append(profession.getOther()); - } + append(profession.getCode()); result.append(" - ").append(profession.getLibelle()); if (!StringUtils.isEmpty(profession.getSpecies())) { result.append("\n<strong>Espèces cibles : </strong>"). Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-11-12 16:53:30 UTC (rev 770) +++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-11-12 18:13:17 UTC (rev 771) @@ -244,10 +244,10 @@ <t:if t:test="fullView"> <td>${fishingZones}</td> <td>${row.fishingZonesInfos}</td> - <td>${row.profession.codeDCF5} ; + <td> <t:loop source="row.profession.dcf5code" value="dcf5code"> <span t:type="ck/Tooltip" t:value="${dcf5Code.fishingGearDCF} - ${dcf5Code.fishingGearDCFDescription} ; ${dcf5Code.targetSpeciesDCF} - ${dcf5Code.targetSpeciesDCFDescription}" t:effect="appear"> - ${dcf5Code.fishingGearDCF}_${dcf5Code.targetSpeciesDCF} + ${dcf5Code} </span> </t:loop> </td>