[Suiviobsmer-commits] r378 - in trunk: . wao-business/src/main/java/fr/ifremer/wao/io wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/test/java/fr/ifremer/wao/services wao-business/src/test/resources/import
Author: fdesbois Date: 2010-03-24 11:05:02 +0000 (Wed, 24 Mar 2010) New Revision: 378 Modified: trunk/changelog.txt trunk/wao-business/src/main/java/fr/ifremer/wao/io/WaoCsvHeader.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-business/src/test/java/fr/ifremer/wao/services/ServiceSamplingImplTest.java trunk/wao-business/src/test/resources/import/echantillonnage.csv Log: - Ano #2221 : error on importProfession : don't use an existing profession for tow different rows - Ano #2222 : error on importSamplingCsv after export : not the same number of fixed columns to calculate month headers Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-03-15 15:08:30 UTC (rev 377) +++ trunk/changelog.txt 2010-03-24 11:05:02 UTC (rev 378) @@ -3,13 +3,20 @@ Historique des versions +1.0.3 (patch) +------------- + +- [fdesbois] Ano #2222 : Plan d'échantillonnage : Problème d'import sur un + fichier précédemment exporté. +- [fdesbois] Ano #2221 : Les métiers (libelle/ espèces) ne sont pas isolés + d'une ligne du plan à l'autre. + 1.0.2 (patch) ------------- - [fdesbois] Ano #2185 : Erreur a la creation d'un contact sur le même navire en même temps pour une même société. - 1.0.1 (patch) ------------- Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/WaoCsvHeader.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/WaoCsvHeader.java 2010-03-15 15:08:30 UTC (rev 377) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/WaoCsvHeader.java 2010-03-24 11:05:02 UTC (rev 378) @@ -239,14 +239,18 @@ } public static int getStartIndexForMonths() { - // PROGRAMME_FIN is the last column before months - return PROGRAMME_FIN.forSamplingCsv() + 1; + return getLastHeaderBeforeMonths().forSamplingCsv() + 1; } public static int getTotalHeaders() { // PLAN_COMMENT is the last column return PLAN_COMMENT.forSamplingCsv() + 1; } + + public static SAMPLING getLastHeaderBeforeMonths() { + // PROGRAMME_FIN is the last column before months + return PROGRAMME_FIN; + } } /** 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-03-15 15:08:30 UTC (rev 377) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-03-24 11:05:02 UTC (rev 378) @@ -764,26 +764,32 @@ protected Profession importProfession(TopiaContext transaction, CsvReader reader) throws IOException, TopiaException { - String codeDCF5 = reader.get(SAMPLING.METIER_CODE_DCF5.name()).trim(); - String maillage = reader.get(SAMPLING.METIER_MAILLAGE.name()).trim(); - String taille = reader.get(SAMPLING.METIER_TAILLE.name()).trim(); - String autre = reader.get(SAMPLING.METIER_AUTRE.name()).trim(); - String libelle = reader.get(SAMPLING.METIER_LIBELLE.name()).trim(); - String especes = reader.get(SAMPLING.METIER_ESPECES.name()).trim(); + String codeDCF5 = ImportHelper.read(reader, SAMPLING.METIER_CODE_DCF5); + String maillage = ImportHelper.read(reader, SAMPLING.METIER_MAILLAGE); + String taille = ImportHelper.read(reader, SAMPLING.METIER_TAILLE); + String autre = ImportHelper.read(reader, SAMPLING.METIER_AUTRE); + String libelle = ImportHelper.read(reader, SAMPLING.METIER_LIBELLE); + String especes = ImportHelper.read(reader, SAMPLING.METIER_ESPECES); ProfessionDAO dao = WaoModelDAOHelper.getProfessionDAO(transaction); - Map<String, Object> existParams = new HashMap<String, Object>(); - existParams.put(Profession.CODE_DCF5, codeDCF5); - existParams.put(Profession.MESH_SIZE, maillage); - existParams.put(Profession.SIZE, taille); - existParams.put(Profession.OTHER, autre); +// Map<String, Object> existParams = new HashMap<String, Object>(); +// existParams.put(Profession.CODE_DCF5, codeDCF5); +// existParams.put(Profession.MESH_SIZE, maillage); +// existParams.put(Profession.SIZE, taille); +// existParams.put(Profession.OTHER, autre); +// +// Profession profession = dao.findByProperties(existParams); +// +// if (profession == null) { +// profession = dao.create(); +// } - Profession profession = dao.findByProperties(existParams); - - if (profession == null) { - profession = dao.create(existParams); - } - + // 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); @@ -830,7 +836,11 @@ * Program must be set to get beginDate and endDate for getting correct months. * SampleMonth will be created corresponding to program period. * Careful : fixed columns set to 16 and months columns start to 13. - * Updatable fields : fishingZoneInfos, nbObservants, averageTideTime, sampleMonths. + * The case of importing a previously exported file is Ok (the default + * values is check from SAMPLING header). + * Updatable fields : fishingZoneInfos, nbObservants, averageTideTime, + * sampleMonths. + * * @param transaction Topia transaction for using FishingZoneDAO * @param sampleRow * @param reader CsvReader to get values for updatable fields @@ -842,14 +852,17 @@ protected void updateRow(TopiaContext transaction, SampleRow sampleRow, CsvReader reader) throws IOException, TopiaException, ParseException { - String fishingZoneInfos = ImportHelper.read(reader, SAMPLING.PECHE_AUTRE); - int nbObservants = ImportHelper.readInt(reader, SAMPLING.PLAN_NB_OBSERV); + String fishingZoneInfos = + ImportHelper.read(reader, SAMPLING.PECHE_AUTRE); + int nbObservants = + ImportHelper.readInt(reader, SAMPLING.PLAN_NB_OBSERV); String averageStr = ImportHelper.read(reader, SAMPLING.PLAN_DUREE_MOY); averageStr = averageStr.replaceAll(",", "."); double averageTideTime = Double.parseDouble(averageStr); String programName = ImportHelper.read(reader, SAMPLING.PROGRAMME_CODE); String comment = ImportHelper.read(reader, SAMPLING.PLAN_COMMENT); - PeriodDates period = ImportHelper.readPeriod(reader, SAMPLING.PROGRAMME_DEBUT, SAMPLING.PROGRAMME_FIN); + PeriodDates period = ImportHelper.readPeriod(reader, + SAMPLING.PROGRAMME_DEBUT, SAMPLING.PROGRAMME_FIN); sampleRow.setFishingZonesInfos(fishingZoneInfos); sampleRow.setNbObservants(nbObservants); @@ -860,22 +873,48 @@ sampleRow.setComment(comment); // 16 fixed columns : 13 before months and 3 after - final int nbFixedColumns = 16; + int nbFixedColumns = 16; // Months begin at 14th column - final int firstMonthColumnId = 13; + int firstMonthColumnId = 13; int nbTotalColumns = reader.getColumnCount(); + + // Case for importing CSV after exporting from appli : more columns + // are exported. + // Check if the previous column (12) is the lastHeader + // defined in SAMPLING + if (!reader.getHeader(firstMonthColumnId-1). + equals(SAMPLING.getLastHeaderBeforeMonths().name())) { + if (log.isTraceEnabled()) { + log.trace("CSV import from previous export"); + } + + // Reinitialize variables to calculate months header + firstMonthColumnId = SAMPLING.getStartIndexForMonths(); + nbFixedColumns = SAMPLING.getTotalHeaders(); + } + // Note : nbTotalColumns must be > nbFixedColumns - int lastMonthColumnId = firstMonthColumnId + nbTotalColumns - nbFixedColumns; + int lastMonthColumnId = firstMonthColumnId + + nbTotalColumns - nbFixedColumns; + if (log.isTraceEnabled()) { + log.trace("Month headers : firstMontId = " + firstMonthColumnId + + " _ nbFixedColumns = " + nbFixedColumns + + " _ lastMonthId = " + lastMonthColumnId); + } + DateFormat dateFormat = SAMPLING.getDateFormat(); for (int i = firstMonthColumnId; i < lastMonthColumnId; i++) { Date monthDate = dateFormat.parse(reader.getHeader(i)); - Integer monthValue = StringUtils.isEmpty(reader.get(i)) ? null : Integer.parseInt(reader.get(i)); + Integer monthValue = StringUtils.isEmpty(reader.get(i)) ? + null : Integer.parseInt(reader.get(i)); - if (monthValue != null && DateUtils.between(monthDate, sampleRow.getPeriodBegin(), sampleRow.getPeriodEnd())) { - SampleMonthDAO dao = WaoModelDAOHelper.getSampleMonthDAO(transaction); + if (monthValue != null && DateUtils.between(monthDate, + sampleRow.getPeriodBegin(), sampleRow.getPeriodEnd())) { + SampleMonthDAO dao = + WaoModelDAOHelper.getSampleMonthDAO(transaction); SampleMonth month = sampleRow.getSampleMonth(monthDate); Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/services/ServiceSamplingImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/services/ServiceSamplingImplTest.java 2010-03-15 15:08:30 UTC (rev 377) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/services/ServiceSamplingImplTest.java 2010-03-24 11:05:02 UTC (rev 378) @@ -478,20 +478,26 @@ ImportResults result = service.importSamplingPlanCsv(input); // total imported - assertEquals(10, result.getNbRowsImported()); + assertEquals(12, result.getNbRowsImported()); // total refused assertEquals(1, result.getNbRowsRefused()); /** CHECK VALUES **/ transaction = WaoContext.getTopiaRootContext().beginTransaction(); + + SampleRowDAO rowDAO = WaoModelDAOHelper.getSampleRowDAO(transaction); - ProfessionDAO professionDAO = WaoModelDAOHelper.getProfessionDAO(transaction); + // Error #2221 : don't keep the same profession for two different rows + SampleRow row2 = rowDAO.findByCode("2010_0010"); + SampleRow row3 = rowDAO.findByCode("2010_0011"); + assertNotSame(row2.getProfession(), row3.getProfession()); + ProfessionDAO professionDAO = + WaoModelDAOHelper.getProfessionDAO(transaction); + List<Profession> professions = professionDAO.findAll(); - assertEquals(9, professions.size()); + assertEquals(12, professions.size()); - SampleRowDAO rowDAO = WaoModelDAOHelper.getSampleRowDAO(transaction); - SampleRow row1 = rowDAO.findByCode("2010_0001"); assertNotNull(row1); assertEquals(1, row1.getNbObservants()); Modified: trunk/wao-business/src/test/resources/import/echantillonnage.csv =================================================================== --- trunk/wao-business/src/test/resources/import/echantillonnage.csv 2010-03-15 15:08:30 UTC (rev 377) +++ trunk/wao-business/src/test/resources/import/echantillonnage.csv 2010-03-24 11:05:02 UTC (rev 378) @@ -10,3 +10,5 @@ "2009_6",BIS,"I / IV",,"OP_DEF","70-1100",">1140",,"Leon","poissons plats","PPP2010",12/2009,10/2010,0,1,0,1,0,1,2,2,2,2,1,,,,,,3,2, "2010_4",TARTANPION,"IId / IV",,"OTB_TEF et OTB_U et OL",,,,"Chalutage de fond","gadidés, poissons plats, divers","BLOB",01/2010,12/2010,,3,0,0,3,0,0,3,0,0,3,0,0,,,,3,1, "2010_5",,,,"OTB_TEF et OTB_U et OL",,,,"Kamoulox","merlu, poissons cerises, divers","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1, +"2010_10",,"I / IV",,"OTB_TEF et OTB_U et OL","70-1100",,,"Kamoulox","merlu, poissons pommes, divers","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1, +"2010_11",,"I / IV",,"OTB_TEF et OTB_U et OL","70-1100",,,"Troubidou","merlu, poissons cerises","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
participants (1)
-
fdesbois@users.labs.libre-entreprise.org