Author: bleny Date: 2011-05-27 13:29:43 +0000 (Fri, 27 May 2011) New Revision: 1300 Log: add fields for boats for ObsDeb Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatImmatriculationParserFormatter.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatGroupImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatParserFormatter.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/CompanyParserFormatter.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/resources/import/navires.csv Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -898,6 +898,11 @@ } @Override + protected void addStaffSizeToBoats_3_0(List<String> queries) { + queries.add("ALTER TABLE Boat ADD staffSize DOUBLE PRECISION;"); + } + + @Override protected void addFleetToBoats_3_0(List<String> queries) { queries.add("CREATE TABLE Fleet (" + "topiaId CHARACTER VARYING(255) PRIMARY KEY," + @@ -918,7 +923,11 @@ "topiaVersion BIGINT NOT NULL," + "topiaCreateDate TIMESTAMP WITHOUT TIME ZONE NOT NULL," + "code CHARACTER VARYING(255)," + - "name TEXT);"); + "commune TEXT," + + "sector TEXT," + + "lengthGroup TEXT," + + "staffSizeGroup TEXT," + + ");"); queries.add("ALTER TABLE Boat ADD boatGroup CHARACTER VARYING(255);"); queries.add("ALTER TABLE Boat ADD CONSTRAINT boatGroup_fkey FOREIGN KEY (boatGroup) REFERENCES BoatGroup(topiaId);"); } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -145,6 +145,8 @@ protected abstract void addObsDebToSampleRows_3_0(List<String> queries); + protected abstract void addStaffSizeToBoats_3_0(List<String> queries); + protected abstract void addPortOfRegistryToBoats_3_0(List<String> queries); protected abstract void addFleetToBoats_3_0(List<String> queries); @@ -519,6 +521,8 @@ addObsDebToSampleRows_3_0(queries); + addStaffSizeToBoats_3_0(queries); + addPortOfRegistryToBoats_3_0(queries); addBoatGroupToBoats_3_0(queries); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatGroupImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatGroupImpl.java 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatGroupImpl.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -4,7 +4,8 @@ @Override public String getDescription() { - return getCode() + " - " + getName(); + return getCode() + " - " + getCommune() + " - " + getSector() + " - " + + getStaffSizeGroup() + "-" + getLengthGroup(); } @Override Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -258,4 +258,26 @@ } public static ValueParserFormatter<Integer> INTEGER = new IntegerParserFormatter(); + + public static class DoubleParserFormatter implements ValueParserFormatter<Double> { + @Override + public String format(Double value) { + String str = ""; + if (value != null) { + str = String.valueOf(value); + } + return str; + } + + @Override + public Double parse(String value) throws ParseException { + Double doubleValue = null; + if (StringUtils.isNotBlank(value)) { + doubleValue = Double.valueOf(value); + } + return doubleValue; + } + } + + public static ValueParserFormatter<Double> DOUBLE = new DoubleParserFormatter(); } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -1,10 +1,9 @@ package fr.ifremer.wao.io.csv2.models; -import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.BoatDistrictImpl; +import fr.ifremer.wao.entity.BoatGroupImpl; import fr.ifremer.wao.entity.BoatImpl; -import fr.ifremer.wao.entity.BoatGroupImpl; import fr.ifremer.wao.entity.FleetImpl; import fr.ifremer.wao.entity.ShipOwnerImpl; import fr.ifremer.wao.entity.TerrestrialLocation; @@ -14,15 +13,12 @@ import fr.ifremer.wao.io.csv2.ImportableColumn; import fr.ifremer.wao.io.csv2.ModelBuilder; import fr.ifremer.wao.io.csv2.ValueGetterSetter; -import fr.ifremer.wao.io.csv2.ValueParserFormatter; +import fr.ifremer.wao.io.csv2.models.operations.BoatImmatriculationParserFormatter; import fr.ifremer.wao.io.csv2.models.operations.PortParserFormatter; import org.apache.commons.lang.StringUtils; -import java.text.ParseException; import java.util.Collection; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * @@ -47,29 +43,30 @@ protected void buildModel() { modelBuilder = new ModelBuilder<Boat>(); - modelBuilder.newColumnForImportExport("NAVIRE_IMMATRICULATION", Boat.PROPERTY_IMMATRICULATION, new ValueParserFormatter<Integer>() { - Pattern pattern = Pattern.compile("\\d{6}"); + modelBuilder.newColumnForImportExport( + "NAVIRE_IMMATRICULATION", + Boat.PROPERTY_IMMATRICULATION, + new BoatImmatriculationParserFormatter()); + modelBuilder.newColumnForImportExport( + "NAVIRE_NOM", + Boat.PROPERTY_NAME); + modelBuilder.newColumnForImportExport( + "NAVIRE_LONGUEUR", + Boat.PROPERTY_BOAT_LENGTH, + Common.INTEGER); + modelBuilder.newColumnForImportExport( + "NAVIRE_ANNEE", + Boat.PROPERTY_BUILD_YEAR, + Common.INTEGER); + modelBuilder.newColumnForImportExport( + "NAVIRE_ACTIF", + Boat.PROPERTY_ACTIVE, + Common.BOOLEAN); + modelBuilder.newColumnForImportExport( + "NAVIRE_EFFECTIF", + Boat.PROPERTY_STAFF_SIZE, + Common.DOUBLE); - @Override - public String format(Integer immatriculation) { - return String.valueOf(immatriculation); - } - - @Override - public Integer parse(String imma) throws ParseException { - Matcher matcher = pattern.matcher(imma); - if (!matcher.find()) { - throw new IllegalArgumentException(WaoUtils._("wao.business.boat.validation.immatriculation.wrongFormat")); - } - Integer immatriculation = Integer.parseInt(imma); - return immatriculation; - } - }); - modelBuilder.newColumnForImportExport("NAVIRE_NOM", Boat.PROPERTY_NAME); - modelBuilder.newColumnForImportExport("NAVIRE_LONGUEUR", Boat.PROPERTY_BOAT_LENGTH, Common.INTEGER); - modelBuilder.newColumnForImportExport("NAVIRE_ANNEE", Boat.PROPERTY_BUILD_YEAR, Common.INTEGER); - modelBuilder.newColumnForImportExport("NAVIRE_ACTIF", Boat.PROPERTY_ACTIVE, Common.BOOLEAN); - // ship owner modelBuilder.newColumnForImportExport("ARMATEUR_CODE", new ValueGetterSetter<Boat, String>() { @Override @@ -222,6 +219,75 @@ } }); + modelBuilder.newColumnForImportExport( + "STRATE_CLASSE_LONGUEUR", + new ValueGetterSetter<Boat, String>() { + @Override + public String get(Boat boat) throws Exception { + String value = ""; + if (boat.getBoatGroup() != null) { + value = boat.getBoatGroup().getLengthGroup(); + } + return value; + } + + @Override + public void set(Boat boat, String value) throws Exception { + boat.getBoatGroup().setLengthGroup(value); + } + }); + modelBuilder.newColumnForImportExport( + "STRATE_CLASSE_EFFECTIF", + new ValueGetterSetter<Boat, String>() { + @Override + public String get(Boat boat) throws Exception { + String value = ""; + if (boat.getBoatGroup() != null) { + value = boat.getBoatGroup().getStaffSizeGroup(); + } + return value; + } + + @Override + public void set(Boat boat, String value) throws Exception { + boat.getBoatGroup().setStaffSizeGroup(value); + } + }); + modelBuilder.newColumnForImportExport( + "STRATE_COMMUNE", + new ValueGetterSetter<Boat, String>() { + @Override + public String get(Boat boat) throws Exception { + String value = ""; + if (boat.getBoatGroup() != null) { + value = boat.getBoatGroup().getCommune(); + } + return value; + } + + @Override + public void set(Boat boat, String value) throws Exception { + boat.getBoatGroup().setCommune(value); + } + }); + modelBuilder.newColumnForImportExport( + "STRATE_SECTEUR_GEOGRAPHIQUE", + new ValueGetterSetter<Boat, String>() { + @Override + public String get(Boat boat) throws Exception { + String value = ""; + if (boat.getBoatGroup() != null) { + value = boat.getBoatGroup().getSector(); + } + return value; + } + + @Override + public void set(Boat boat, String value) throws Exception { + boat.getBoatGroup().setSector(value); + } + }); + } @Override @@ -259,4 +325,5 @@ } return modelBuilder.getColumnsForExport(); } + } Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatImmatriculationParserFormatter.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatImmatriculationParserFormatter.java (rev 0) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatImmatriculationParserFormatter.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -0,0 +1,45 @@ +package fr.ifremer.wao.io.csv2.models.operations; + +import fr.ifremer.wao.WaoUtils; +import fr.ifremer.wao.io.csv2.ValueParserFormatter; + +import java.text.ParseException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** Used to parse and format boat immatriculation. + * The parser is in charge of validating the 6-digits form of imported + * lines. + * + * This parser/formatter should be used when importing/exporting information + * on boats. + * + * For finding boats associated with an entity when importing contact, see + * {@link BoatParserFormatter} + */ +public class BoatImmatriculationParserFormatter implements ValueParserFormatter<Integer> { + + /** Exactly 6 digits */ + Pattern pattern = Pattern.compile("\\d{6}"); + + @Override + public String format(Integer immatriculation) { + return String.valueOf(immatriculation); + } + + /** Parse immatriculation and validate its pattern + * @param imma immatriculation read in file + * @return the immatriculation if it has the good format + * @throws IllegalArgumentException if immatriculation does not follow + * expected pattern + */ + @Override + public Integer parse(String imma) throws ParseException { + Matcher matcher = pattern.matcher(imma); + if (!matcher.find()) { + throw new IllegalArgumentException(WaoUtils._("wao.business.boat.validation.immatriculation.wrongFormat")); + } + Integer immatriculation = Integer.parseInt(imma); + return immatriculation; + } +} Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatParserFormatter.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatParserFormatter.java 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatParserFormatter.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -8,13 +8,7 @@ import java.util.List; import java.util.Map; -/** -* Created by IntelliJ IDEA. -* User: brendan -* Date: 13/05/11 -* Time: 11:10 -* To change this template use File | Settings | File Templates. -*/ +/** Parse a boat (identification based on the immatriculation) */ public class BoatParserFormatter implements ValueParserFormatter<Boat> { protected Map<Integer, Boat> indexedBoats; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/CompanyParserFormatter.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/CompanyParserFormatter.java 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/CompanyParserFormatter.java 2011-05-27 13:29:43 UTC (rev 1300) @@ -9,13 +9,7 @@ import java.util.List; import java.util.Map; -/** -* Created by IntelliJ IDEA. -* User: brendan -* Date: 13/05/11 -* Time: 10:53 -* To change this template use File | Settings | File Templates. -*/ +/** Parse a company according to it's name. */ public class CompanyParserFormatter implements ValueParserFormatter<Company> { protected List<Company> companies; Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/resources/import/navires.csv =================================================================== --- trunk/wao-business/src/test/resources/import/navires.csv 2011-05-27 08:37:12 UTC (rev 1299) +++ trunk/wao-business/src/test/resources/import/navires.csv 2011-05-27 13:29:43 UTC (rev 1300) @@ -1,7 +1,7 @@ -NAVIRE_IMMATRICULATION;NAVIRE_NOM;NAVIRE_LONGUEUR;NAVIRE_ANNEE;QUARTIER_CODE;ARMATEUR_CODE;ARMATEUR_NOM;ARMATEUR_PRENOM;NAVIRE_ACTIF;PORT_CODE;FLOTILLE_CODE;FLOTILLE_NOM;SOUS_FLOTILLE_NOM;SOUS_SOUS_FLOTILLE_NOM;STRATE_CODE -273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y;MP3;FLOTILLE1;Ma première flotille;A;A;STRATE1 -174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y;MP6;FLOTILLE1;Ma première flotille;A;A;STRATE1 -177474;MAYFLOWERS;10;1983;UN;19784252;MOSELLE ;ALAIN RENE;N;XSN;FLOTILLE0;Les colons;A;A;STRATE0 -174592;FIFITOU;8;1975;UN;18854131;POUTRE ;JEAN PIERRE;Y;XSN;FLOTILLE1;Ma première flotille;A;A;STRATE1 -284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y;LP3;FLOTILLE2;Petits navires;A;A;STRATE2 -978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y;MP6;FLOTILLE2;Petits navires;A;A;STRATE2 +"NAVIRE_IMMATRICULATION";"NAVIRE_NOM";"NAVIRE_LONGUEUR";"NAVIRE_ANNEE";"NAVIRE_EFFECTIF";"QUARTIER_CODE";"ARMATEUR_CODE";"ARMATEUR_NOM";"ARMATEUR_PRENOM";"NAVIRE_ACTIF";"PORT_CODE";"FLOTILLE_CODE";"FLOTILLE_NOM";"SOUS_FLOTILLE_NOM";"SOUS_SOUS_FLOTILLE_NOM";"STRATE_CODE";"STRATE_CLASSE_LONGUEUR";"STRATE_CLASSE_EFFECTIF";"STRATE_COMMUNE";"STRATE_SECTEUR_GEOGRAPHIQUE" +273129;"MOISE";7;1992;3;"UX";19771564;"BEURRE ";"JEAN CLAUDE";"Y";"MP3";"FLOTILLE0";"Les colons";"Les colons";"Les colons";"STRATE1";"<10 mètres";"< 5 marins";"Ici";"Les bermudes" +174258;"SAMOURAI KING";9;1982;3;"UN";19744130;"MARIE";"JEAN PHILIPPE";"Y";"MP6";"FLOTILLE1";"Ma première flotille";"Ma première flotille";"Ma première flotille";"STRATE1";"<10 mètres";"< 5 marins";"Ailleurs";"Les bermudes" +177474;"MAYFLOWERS";10;1983;3;"UN";19784252;"MOSELLE";"ALAIN RENE";"N";"XSN";"FLOTILLE0";"Les colons";"Les colons";"Les colons";"STRATE0";">= 10 mètres";"< 5 marins";"Autre-part";"Les bermudes" +174592;"FIFITOU";8;1975;7;"UN";18854131;"POUTRE";"JEAN PIERRE";"Y";"XSN";"FLOTILLE1";"Ma première flotille";"Ma première flotille";"Ma première flotille";"STRATE1";"<10 mètres";">= 5 marins";"Loin";"Les bermudes" +284595;"A MA LOUTRE";8;1973;9;"UN";"SPR3965";"BECANAUD";"NA";"Y";"LP3";"FLOTILLE1";"Ma première flotille";"Ma première flotille";"Ma première flotille";"STRATE2";"<10 mètres";">= 5 marins";"Pas si loin";"Les bermudes" +978419;"BISOUNOURS";11;2002;8;"CI";18854131;"POUTRE ";"JEAN PIERRE";"Y";"MP6";;;;;;;;;