[Suiviobsmer-commits] r1305 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/io/csv2/models wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/resources/i18n wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/resources/fr/ifremer/wao/ui/co
Author: bleny Date: 2011-05-30 16:17:33 +0000 (Mon, 30 May 2011) New Revision: 1305 Log: in terrestrial locations, add region in database too, refactor terrestrial location to make it associated to a region Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.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/WaoQueryBuilder.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/LocationType.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties trunk/wao-business/src/main/xmi/wao.properties trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 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-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -26,6 +26,7 @@ import fr.ifremer.wao.bean.ContactState; import fr.ifremer.wao.bean.DataReliability; +import fr.ifremer.wao.bean.LocationType; import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.SynthesisId; import fr.ifremer.wao.bean.UserRole; @@ -931,4 +932,39 @@ 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);"); } + + @Override + protected void addLocationTypeToAllTerrestrialLocations(List<String> queries) { + // Before this version, district was found by having locationTypeOrdinal + // null. Now that region are added, types are now explicit so we must + // take that in consideration + // 2 is for LocationType.DISTRICT.ordinal() + queries.add("UPDATE TerrestrialLocation" + + " SET locationTypeOrdinal=2" + + " WHERE locationTypeOrdinal IS NULL;"); + } + + @Override + protected void migrateTerrestrialDivisions(List<String> queries) { + // add the new column + queries.add("ALTER TABLE TerrestrialDivision" + + " ADD regionIfremer CHARACTER VARYING(255);"); + queries.add("ALTER TABLE TerrestrialDivision" + + " ADD CONSTRAINT regionIfremer_fkey" + + " FOREIGN KEY (regionIfremer_fkey) " + + " REFERENCES TerrestrialLocation(topiaId);"); + +// // migrate from old column to new column +// // 3 is for LocationType.REGION.ordinal() +// queries.add("UPDATE TerrestrialDivision td" +// + " SET td.regionIfremer =" +// + " (SELECT topiaId" +// + " FROM TerrestrialLocation tl" +// + " WHERE tl.regionIfremerCode = td.regionIfremerCode" +// + " AND td.locationTypeOrdinal=3);"); +// + + // drop old column + queries.add("ALTER TABLE TerrestrialDivision DROP regionIfremerCode;"); + } } 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-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -155,6 +155,10 @@ protected abstract void addObsDebCodes_3_0(List<String> queries); + protected abstract void addLocationTypeToAllTerrestrialLocations(List<String> queries); + + protected abstract void migrateTerrestrialDivisions(List<String> queries); + protected static final Version[] VERSIONS = new Version[] { VersionUtil.valueOf("1.0"), VersionUtil.valueOf("1.1"), @@ -529,6 +533,10 @@ addFleetToBoats_3_0(queries); + addLocationTypeToAllTerrestrialLocations(queries); + + migrateTerrestrialDivisions(queries); + String[] strings = queries.toArray(new String[queries.size()]); executeSQL(tx, showSql, showProgression, strings); } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -390,8 +390,8 @@ query.addEquals(sampleRowProperty.observationUnitProperty().subPopulationCode(), filter.getSubPopulationCode()); } - if (filter.getRegionIfremerCode() != null) { - query.addEquals(sampleRowProperty.observationUnitProperty().regionIfremerCode(), filter.getRegionIfremerCode()); + if (filter.getRegionIfremer() != null) { + query.addEquals(sampleRowProperty.observationUnitProperty().regionIfremer(), filter.getRegionIfremer()); } // XXX 2011 04 12 using UserFilter#observer for both samplingfilter and Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/LocationType.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/LocationType.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/LocationType.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -27,7 +27,9 @@ public enum LocationType { PORT(n_("LocationType.PORT")), - AUCTION(n_("LocationType.AUCTION")); + AUCTION(n_("LocationType.AUCTION")), + DISTRICT(n_("LocationType.DISTRICT")), + REGION(n_("LocationType.REGION")); protected String i18nKey; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -94,6 +94,11 @@ return getAsList(getObservationUnits()); } + @Override + public List<TerrestrialLocation> getRegionIfremersAsList() { + return getAsList(getRegionIfremers()); + } + protected <E> List<E> getAsList(Collection<E> collection) { if (collection == null) { return new ArrayList<E>(); @@ -121,15 +126,6 @@ observationUnit.getSubPopulationName()); } - protected void addRegionIfremer(TerrestrialDivision observationUnit) { - Map<String, String> regionIfremers = getRegionIfremers(); - if (regionIfremers == null) { - regionIfremers = new TreeMap<String, String>(); - setRegionIfremers(regionIfremers); - } - regionIfremers.put(observationUnit.getRegionIfremerCode(), observationUnit.getRegionIfremerCode()); - } - protected void fillSampleRow(SampleRow sampleRow) { ObsProgram obsProgram = sampleRow.getObsProgram(); addCompanies(sampleRow.getCompany()); @@ -140,7 +136,7 @@ addObservationUnits(observationUnit); addSkillZone(observationUnit); addSubPopulation(observationUnit); - addRegionIfremer(observationUnit); + addRegionIfremers(observationUnit.getRegionIfremer()); } } else { // for both ObsMer and ObsVente @@ -174,6 +170,7 @@ setSampleRows(new HashSet<SampleRow>()); setObservers(new HashSet<WaoUser>()); setObservationUnits(new HashSet<TerrestrialDivision>()); + setRegionIfremers(new HashSet<TerrestrialLocation>()); } protected void removeNullValues() { @@ -186,6 +183,7 @@ getTerrestrialDistricts().remove(null); getObservers().remove(null); getObservationUnits().remove(null); + getRegionIfremers().remove(null); } @Override Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -34,8 +34,8 @@ public String getDescription() { String description; if (isObservationUnit()) { - description = getRegionIfremerCode() + "-" + getObservationUnitCode() - + " " + getObservationUnitName(); + description = getRegionIfremer().getRegionIfremerCode() + "-" + + getObservationUnitCode() + " " + getObservationUnitName(); } else { description = getPort().getPortName(); } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -22,6 +22,7 @@ import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.bean.LocationType; +import org.apache.commons.lang.builder.ToStringBuilder; import static org.nuiton.i18n.I18n.n_; @@ -52,7 +53,7 @@ @Override public boolean isDistrict() { - boolean isDistrict = getLocationType() == null; + boolean isDistrict = getLocationType() == LocationType.DISTRICT; return isDistrict; } @@ -82,4 +83,10 @@ description.append(")"); return description.toString(); } + + @Override + public String toString() { + String toString = ToStringBuilder.reflectionToString(this); + return toString; + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -59,6 +59,7 @@ static class ObservationUnitParserFormatter implements ValueParserFormatter<TerrestrialDivision> { + /** Index Region code -> UO Code -> Terrestrial division. */ protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits; protected List<TerrestrialDivision> observationUnits; @@ -72,7 +73,7 @@ protected void indexObservationUnits(List<TerrestrialDivision> observationUnits) { indexedObservationUnits = new HashMap<String, Map<String, TerrestrialDivision>>(); for (TerrestrialDivision terrestrialDivision : observationUnits) { - String regionCode = terrestrialDivision.getRegionIfremerCode(); + String regionCode = terrestrialDivision.getRegionIfremer().getRegionIfremerCode(); Map<String, TerrestrialDivision> unitCodesToDivision = indexedObservationUnits.get(regionCode); if (unitCodesToDivision == null) { unitCodesToDivision = new HashMap<String, TerrestrialDivision>(); @@ -134,7 +135,8 @@ if (sampleRow.getObservationUnit() == null) { regionCode = ""; } else { - regionCode = sampleRow.getObservationUnit().getRegionIfremerCode(); + regionCode = sampleRow.getObservationUnit().getRegionIfremer() + .getRegionIfremerCode(); } return regionCode; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -31,6 +31,7 @@ import fr.ifremer.wao.io.csv2.ModelBuilder; import fr.ifremer.wao.io.csv2.ValueParser; import fr.ifremer.wao.io.csv2.models.operations.PortParserFormatter; +import fr.ifremer.wao.io.csv2.models.operations.RegionValueParserFormatter; import org.apache.commons.lang.StringUtils; import java.util.Collection; @@ -42,13 +43,14 @@ /** all valid {@link fr.ifremer.wao.entity.TerrestrialLocation#getRegionIfremerCode()} values. * for validation purpose only */ - protected Set<String> regionCodes; + protected List<TerrestrialLocation> regions; protected List<TerrestrialLocation> ports; - public TerrestrialDivisionImportModel(List<TerrestrialLocation> ports, Set<String> regionCodes) { + public TerrestrialDivisionImportModel(List<TerrestrialLocation> ports, + List<TerrestrialLocation> regions) { this.ports = ports; - this.regionCodes = regionCodes; + this.regions = regions; } @Override @@ -85,17 +87,8 @@ TerrestrialDivision.PROPERTY_CODE); modelBuilder.newMandatoryColumn( "REGION_IFREMER_COD", - new ValueParser<String>() { - /** validate region code */ - @Override - public String parse(String regionCode) { - if (!regionCodes.contains(regionCode)) { - throw new IllegalArgumentException("Le code '" + regionCode + "' n'est pas un code de région valide"); - } - return regionCode; - } - }, - TerrestrialDivision.PROPERTY_REGION_IFREMER_CODE); + new RegionValueParserFormatter(regions), + TerrestrialDivision.PROPERTY_REGION_IFREMER); modelBuilder.newIgnoredColumn("REGION_IFREMER_LIB"); modelBuilder.newMandatoryColumn("ZONE_COMPETENCE_COD", TerrestrialDivision.PROPERTY_SKILL_ZONE_CODE); modelBuilder.newMandatoryColumn("ZONE_COMPETENCE_LIB", TerrestrialDivision.PROPERTY_SKILL_ZONE_NAME); Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java (rev 0) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -0,0 +1,45 @@ +package fr.ifremer.wao.io.csv2.models.operations; + +import fr.ifremer.wao.WaoUtils; +import fr.ifremer.wao.entity.TerrestrialLocation; +import fr.ifremer.wao.io.csv2.ValueParserFormatter; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +public class RegionValueParserFormatter implements ValueParserFormatter<TerrestrialLocation> { + + protected List<TerrestrialLocation> regions; + + protected Map<String, TerrestrialLocation> indexedRegions; + + public RegionValueParserFormatter(List<TerrestrialLocation> regions) { + this.regions = regions; + } + + @Override + public String format(TerrestrialLocation terrestrialDivision) { + String value = ""; + if (terrestrialDivision.getRegionIfremerCode() != null) { + value = terrestrialDivision.getRegionIfremerCode(); + } + return value; + } + + @Override + public TerrestrialLocation parse(String regionCode) throws ParseException { + if (indexedRegions == null) { + indexedRegions = WaoUtils.projectPropertyUnique( + regions, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE); + } + + TerrestrialLocation terrestrialLocation = + indexedRegions.get(regionCode.trim()); + if (terrestrialLocation == null) { + throw new IllegalArgumentException("Le code '" + regionCode + + "' n'est pas un code de région valide"); + } + return terrestrialLocation; + } +} Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -35,6 +35,7 @@ import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactState; import fr.ifremer.wao.bean.LocationType; +import fr.ifremer.wao.bean.ObservationType; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.entity.ContactStateMotif; import fr.ifremer.wao.entity.ContactStateMotifDAO; @@ -304,7 +305,7 @@ BinderFactory.newBinder(TerrestrialLocation.class); // counts for logging int districtAdded = 0, districtUpdated = 0; -// int regionAdded = 0, regionUpdated = 0; + int regionAdded = 0, regionUpdated = 0; for (String districtCode : districtCodes) { // for each district code found @@ -318,7 +319,7 @@ TerrestrialLocation.PROPERTY_PORT_NAME, TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, TerrestrialLocation.TOPIA_ID, TerrestrialLocation.TOPIA_CREATE_DATE, TerrestrialLocation.TOPIA_VERSION); - district.setLocationType(null); + district.setLocationType(LocationType.DISTRICT); // A particular case, some location (not in France) has no // district (district code null), so we must add a district @@ -341,7 +342,7 @@ // database. Now let's add it if not already in or update // it already in TerrestrialLocation existingDistrict = dao.findByProperties(TerrestrialLocation.PROPERTY_DISTRICT_CODE, district.getDistrictCode(), - TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, null); + TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, LocationType.DISTRICT.ordinal()); if (existingDistrict == null) { existingDistrict = dao.create(district); districtAdded += 1; @@ -352,39 +353,40 @@ districtUpdated += 1; } -// // creating a region object for this district -// TerrestrialLocation region = dao.newInstance(); -// locationBinder.copyExcluding(district, region, TerrestrialLocation.TOPIA_ID, -// TerrestrialLocation.TOPIA_CREATE_DATE, TerrestrialLocation.TOPIA_VERSION, -// TerrestrialLocation.PROPERTY_DEPARTMENT_CODE, TerrestrialLocation.PROPERTY_DEPARTMENT_NAME, -// TerrestrialLocation.PROPERTY_SUB_REGION_IFREMER_CODE, TerrestrialLocation.PROPERTY_SUB_REGION_IFREMER_NAME); -// -// // prevent to deal with case "Hors France" -// if (region.getRegionIfremerCode() != null) { -// -// // try to find it if it's already in DB -// TerrestrialLocation existingRegion = dao.findByProperties( -// TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE, region.getRegionIfremerCode(), -// TerrestrialLocation.PROPERTY_DISTRICT_CODE, null, -// TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, null); -// -// // create or update -// if (existingRegion == null) { -// dao.create(region); -// regionAdded += 1; -// } else { -// locationBinder.copyExcluding(region, existingRegion, TerrestrialLocation.TOPIA_ID, -// TerrestrialLocation.TOPIA_CREATE_DATE, TerrestrialLocation.TOPIA_VERSION); -// dao.update(existingRegion); -// regionUpdated += 1; -// } -// } + // creating a region object for this district + TerrestrialLocation region = dao.newInstance(); + locationBinder.copyExcluding(district, region, TerrestrialLocation.TOPIA_ID, + TerrestrialLocation.TOPIA_CREATE_DATE, TerrestrialLocation.TOPIA_VERSION, + TerrestrialLocation.PROPERTY_DISTRICT_CODE, TerrestrialLocation.PROPERTY_DISTRICT_NAME, + TerrestrialLocation.PROPERTY_DEPARTMENT_CODE, TerrestrialLocation.PROPERTY_DEPARTMENT_NAME, + TerrestrialLocation.PROPERTY_SUB_REGION_IFREMER_CODE, TerrestrialLocation.PROPERTY_SUB_REGION_IFREMER_NAME); + region.setLocationType(LocationType.REGION); + + // prevent to deal with case "Hors France" + if (region.getRegionIfremerCode() != null) { + + // try to find it if it's already in DB + TerrestrialLocation existingRegion = dao.findByProperties( + TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE, region.getRegionIfremerCode(), + TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, LocationType.REGION.ordinal()); + + // create or update + if (existingRegion == null) { + dao.create(region); + regionAdded += 1; + } else { + locationBinder.copyExcluding(region, existingRegion, TerrestrialLocation.TOPIA_ID, + TerrestrialLocation.TOPIA_CREATE_DATE, TerrestrialLocation.TOPIA_VERSION); + dao.update(existingRegion); + regionUpdated += 1; + } + } } if (log.isInfoEnabled()) { log.info(locationAdded + " terrestrial locations added, " + locationUpdated + " updated"); log.info(districtAdded + " terrestrial district added, " + districtUpdated + " updated"); -// log.info(regionAdded + " terrestrial region added, " + regionUpdated + " updated"); + log.info(regionAdded + " terrestrial region added, " + regionUpdated + " updated"); } transaction.commitTransaction(); @@ -420,7 +422,7 @@ protected TerrestrialLocation executeGetTerrestrialDistrict(TopiaContext transaction, String districtCode) throws Exception { TerrestrialLocationDAO dao = WaoDAOHelper.getTerrestrialLocationDAO(transaction); Map<String, Object> properties = new HashMap<String, Object>(); - properties.put(TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, null); + properties.put(TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, LocationType.DISTRICT.ordinal()); properties.put(TerrestrialLocation.PROPERTY_DISTRICT_CODE, districtCode); TerrestrialLocation result = dao.findByProperties(properties); return result; @@ -521,18 +523,17 @@ TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction); // let's find all ports in terrestrial location reference - List<TerrestrialLocation> ports = terrestrialLocationDAO.findAllByLocationTypeOrdinal(LocationType.PORT.ordinal()); + List<TerrestrialLocation> ports = terrestrialLocationDAO. + findAllByLocationTypeOrdinal(LocationType.PORT.ordinal()); + List<TerrestrialLocation> regions = terrestrialLocationDAO. + findAllByLocationTypeOrdinal(LocationType.REGION.ordinal()); - // from that, deduce a map terrestrial location code -> entity and the set of region codes - Set<String> regionCodes = WaoUtils.projectProperty(String.class, ports, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE).keySet(); - if (log.isDebugEnabled()) { - log.debug(ports.size() + " ports, " + regionCodes.size() + " regions"); - log.debug("regionCodes = " + regionCodes); + log.debug(ports.size() + " ports, " + regions.size() + " regions"); } // the import itself - ImportModel<TerrestrialDivision> importModel = new TerrestrialDivisionImportModel(ports, regionCodes); + ImportModel<TerrestrialDivision> importModel = new TerrestrialDivisionImportModel(ports, regions); Import<TerrestrialDivision> terrestrialDivisionImport = new Import<TerrestrialDivision>(importModel, input); TerrestrialDivisionDAO dao = WaoDAOHelper.getTerrestrialDivisionDAO(transaction); @@ -631,7 +632,7 @@ Map<String, Object> properties = new HashMap<String, Object>(); properties.put(TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_CODE, observationUnit.getObservationUnitCode()); - properties.put(TerrestrialDivision.PROPERTY_REGION_IFREMER_CODE, observationUnit.getRegionIfremerCode()); + properties.put(TerrestrialDivision.PROPERTY_REGION_IFREMER, observationUnit.getRegionIfremer()); List<TerrestrialDivision> terrestrialDivisions = terrestrialDivisionDAO.findAllByProperties(properties); ports = new LinkedList<TerrestrialLocation>(); Modified: trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-05-30 16:17:33 UTC (rev 1305) @@ -20,7 +20,9 @@ GlobalIndicatorValue.VERY_BAD=Level 2 penalty GlobalIndicatorValue.VERY_GOOD=Level 2 bonus LocationType.AUCTION=Auction +LocationType.DISTRICT=District LocationType.PORT=Port +LocationType.REGION=Region ObsProgram.OBSDEB=ObsDeb ObsProgram.OBSMER=ObsMer ObsProgram.OBSVENTE=ObsVente Modified: trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-05-30 16:17:33 UTC (rev 1305) @@ -1,177 +1,179 @@ ContactPieChartConstant.OTHER=Autres -ContactPieChartConstant.REALIZED=Réalisés -ContactPieChartConstant.REFUSED=Refusés -ContactState.CONTACT_DEFINITELY_REFUSED=Refus définitif +ContactPieChartConstant.REALIZED=R\u00e9alis\u00e9s +ContactPieChartConstant.REFUSED=Refus\u00e9s +ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00e9finitif ContactState.CONTACT_REFUSED=Refus ContactState.CONTACT_START=Contact pris -ContactState.OBSERVATION_CANCELLED=Annulée -ContactState.OBSERVATION_DONE=Observation réalisée -ContactState.OBSERVATION_EXPECTED=Observation programmée -ContactState.OBSERVATION_NOT_DONE=Non observé -DataReliability.CORRECTION_ASKED=Correction demandée +ContactState.OBSERVATION_CANCELLED=Annul\u00e9e +ContactState.OBSERVATION_DONE=Observation r\u00e9alis\u00e9e +ContactState.OBSERVATION_EXPECTED=Observation programm\u00e9e +ContactState.OBSERVATION_NOT_DONE=Non observ\u00e9 +DataReliability.CORRECTION_ASKED=Correction demand\u00e9e DataReliability.DOUBTFUL=Douteuse -DataReliability.NOT_PROVIDED=Non contrôlée +DataReliability.NOT_PROVIDED=Non contr\u00f4l\u00e9e DataReliability.NOT_RELIABLE=Non exploitable DataReliability.RELIABLE=Exploitable DataReliability.UNKNOWN=Inconnue -GlobalIndicatorValue.BAD=Pénalité de niveau 1 +GlobalIndicatorValue.BAD=P\u00e9nalit\u00e9 de niveau 1 GlobalIndicatorValue.GOOD=Bonus de niveau 1 GlobalIndicatorValue.NEUTRAL=Conforme au cahier des charges -GlobalIndicatorValue.VERY_BAD=Pénalité de niveau 2 +GlobalIndicatorValue.VERY_BAD=P\u00e9nalit\u00e9 de niveau 2 GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2 -LocationType.AUCTION=Criée +LocationType.AUCTION=Cri\u00e9e +LocationType.DISTRICT=Quartier maritime LocationType.PORT=Port +LocationType.REGION=R\u00e9gion Ifremer ObsProgram.OBSDEB=ObsDeb ObsProgram.OBSMER=ObsMer ObsProgram.OBSVENTE=ObsVente ObservationType.FIELD_WORK_OBSERVATION=Observation de terrain -ObservationType.FIELD_WORK_SURVEY=Enquête de terrain -ObservationType.PHONE_CALL=Enquête téléphonique -SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultané \: Toutes espèces commerciales -SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultané \: espèces G1+G2 -SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultané \: espèces G1 -SamplingStrategy.SPECIFIC_STOCK=Stock spécifique -SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observés -SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un même navire conforme aux exigences -SynthesisId.GRAPH_SAMPLING=Taux de réalisation du plan d'échantillonage -SynthesisId.IND_ALLEGRO_REACTIVITY=Délais de transmission des données -SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqués -SynthesisId.IND_CONTACT_STATE=États des contacts -SynthesisId.IND_DATA_RELIABILITY=Qualité de la donnée -SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journée +ObservationType.FIELD_WORK_SURVEY=Enqu\u00eate de terrain +ObservationType.PHONE_CALL=Enqu\u00eate t\u00e9l\u00e9phonique +SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultan\u00e9 \: Toutes esp\u00e8ces commerciales +SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1+G2 +SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1 +SamplingStrategy.SPECIFIC_STOCK=Stock sp\u00e9cifique +SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observ\u00e9s +SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un m\u00eame navire conforme aux exigences +SynthesisId.GRAPH_SAMPLING=Taux de r\u00e9alisation du plan d'\u00e9chantillonage +SynthesisId.IND_ALLEGRO_REACTIVITY=D\u00e9lais de transmission des donn\u00e9es +SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqu\u00e9s +SynthesisId.IND_CONTACT_STATE=\u00c9tats des contacts +SynthesisId.IND_DATA_RELIABILITY=Qualit\u00e9 de la donn\u00e9e +SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journ\u00e9e UserRole.ADMIN=Administrateur UserRole.COORDINATOR=Coordinateur -UserRole.GUEST=Invité +UserRole.GUEST=Invit\u00e9 UserRole.OBSERVER=Observateur UserRole.PROFESSIONAL=Professionnel csv.import.error.missingMandatoryHeaders=Les champs obligatoires %s sont manquants -csv.import.error.unableToParseValue=Erreur lors de l'interprétation de la valeur '%s' (colonne '%s', ligne %s) -csv.import.error.unableToReadField=Impossible de lire la colonne '%s' à la ligne %s +csv.import.error.unableToParseValue=Erreur lors de l'interpr\u00e9tation de la valeur '%s' (colonne '%s', ligne %s) +csv.import.error.unableToReadField=Impossible de lire la colonne '%s' \u00e0 la ligne %s csv.import.error.unableToReadLine=Impossible de lire la ligne %s -csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entité '%s', ligne %s, column '%s') +csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entit\u00e9 '%s', ligne %s, column '%s') csv.import.error.unrecognizedHeaders=Les champs %s ne sont pas reconnus. Les champs possibles sont %s. csv.import.logComment=Modification depuis import -fr.ifremer.wao.entity.FishingGearDCF.=Non spécifié -fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorquées par bateau -fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues à main -fr.ifremer.wao.entity.FishingGearDCF.FAR=Pièges aériens -fr.ifremer.wao.entity.FishingGearDCF.FCN=Éperviers -fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-spécifiés) -fr.ifremer.wao.entity.FishingGearDCF.FIX=Pièges (non-spécifiés) -fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pièges fixes non couverts +fr.ifremer.wao.entity.FishingGearDCF.=Non sp\u00e9cifi\u00e9 +fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorqu\u00e9es par bateau +fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues \u00e0 main +fr.ifremer.wao.entity.FishingGearDCF.FAR=Pi\u00e8ges a\u00e9riens +fr.ifremer.wao.entity.FishingGearDCF.FCN=\u00c9perviers +fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.FIX=Pi\u00e8ges (non-sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pi\u00e8ges fixes non couverts fr.ifremer.wao.entity.FishingGearDCF.FPO=Nasses (casiers) -fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets à l'étalage (diables) +fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00e0 l'\u00e9talage (diables) fr.ifremer.wao.entity.FishingGearDCF.FWR=Barrages, parcs, bordigues, etc. fr.ifremer.wao.entity.FishingGearDCF.FYK=Verveux -fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emmélants (non spécifiés) -fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis à civelles -fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non spécifiés) +fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00e9lants (non sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00e0 civelles +fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00e9cifi\u00e9s) fr.ifremer.wao.entity.FishingGearDCF.GNC=Filets maillants encerclants -fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants dérivants (filets dérivants) +fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00e9rivants (filets d\u00e9rivants) fr.ifremer.wao.entity.FishingGearDCF.GNF=Filets maillants fixes (sur perches) -fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants calés (ancrés) -fr.ifremer.wao.entity.FishingGearDCF.GT=Trémailleurs -fr.ifremer.wao.entity.FishingGearDCF.GTN=Trémails et filets maillants combinés -fr.ifremer.wao.entity.FishingGearDCF.GTR=Trémails +fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00e9s (ancr\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00e9mailleurs +fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00e9mails et filets maillants combin\u00e9s +fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00e9mails fr.ifremer.wao.entity.FishingGearDCF.HAR=Harpons -fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues mécanisées +fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00e9canis\u00e9es fr.ifremer.wao.entity.FishingGearDCF.HMP=Pompes -fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de récolte (non spécifiés) +fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00e9colte (non sp\u00e9cifi\u00e9s) fr.ifremer.wao.entity.FishingGearDCF.LA=Filets tournants sans coulisse (filet lamparo) -fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes à main et lignes avec cannes -fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes à main et lignes à cannes -fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non spécifiées) -fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres dérivantes -fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres calées ou semi-flottantes -fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulevés (non spécifiés) -fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulevés manœuvrées du bateau -fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulevés portatifs -fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulevés fixes manœuvrées du rivage -fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de traîne -fr.ifremer.wao.entity.FishingGearDCF.LX=Hameçons et lignes (non spécifiés) +fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00e0 main et lignes avec cannes +fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00e0 main et lignes \u00e0 cannes +fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00e9cifi\u00e9es) +fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00e9rivantes +fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00e9es ou semi-flottantes +fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00e9s (non sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00e9s man\u0153uvr\u00e9es du bateau +fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00e9s portatifs +fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00e9s fixes man\u0153uvr\u00e9es du rivage +fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00eene +fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00e7ons et lignes (non sp\u00e9cifi\u00e9s) fr.ifremer.wao.entity.FishingGearDCF.MIS=Divers -fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non spécifiés -fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts à panneaux (non spécifié) -fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond à panneaux -fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts pélagiques à panneaux -fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux à panneaux +fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00e9cifi\u00e9s +fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00e0 panneaux (non sp\u00e9cifi\u00e9) +fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00e0 panneaux +fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00e9lagiques \u00e0 panneaux +fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00e0 panneaux fr.ifremer.wao.entity.FishingGearDCF.PS=Filets tournants avec coulisse (sennes coulissantes) -fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes manœuvrées par un bateau -fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes manœuvrées par deux bateaux -fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-bœufs (non spécifié) -fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-bœufs de fond -fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-bœufs pélagiques -fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de pêche révréative +fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par un bateau +fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par deux bateaux +fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00e9cifi\u00e9) +fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-b\u0153ufs de fond +fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00e9lagiques +fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00eache r\u00e9vr\u00e9ative fr.ifremer.wao.entity.FishingGearDCF.SB=Sennes de plages fr.ifremer.wao.entity.FishingGearDCF.SDN=Sennes danoises -fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes manœuvrées par deux bateaux -fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes écossaises -fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes halées à bord -fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non spécifiées) -fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non spécifié) -fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts à perche -fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut à langoustines -fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut à crevettes -fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut pélagique (non spécifié) -fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut à crevettes -fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non spécifié) -fr.ifremer.wao.entity.TargetSpeciesDCF.=Non spécifié +fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00e9es par deux bateaux +fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00e9cossaises +fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00e9es \u00e0 bord +fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00e9cifi\u00e9es) +fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00e9cifi\u00e9) +fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00e0 perche +fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00e0 langoustines +fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00e0 crevettes +fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00e9lagique (non sp\u00e9cifi\u00e9) +fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00e0 crevettes +fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00e9cifi\u00e9) +fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00e9cifi\u00e9 fr.ifremer.wao.entity.TargetSpeciesDCF.ALG=Algues -fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Espèces catadromes -fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustacés +fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00e8ces catadromes +fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00e9s fr.ifremer.wao.entity.TargetSpeciesDCF.CSJ=Coquilles Saint-Jacques -fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Espèces démersales -fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Espèces d'eaux profondes +fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00e8ces d\u00e9mersales +fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00e8ces d'eaux profondes fr.ifremer.wao.entity.TargetSpeciesDCF.FIN=Poisson plats -fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands pélagiques +fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00e9lagiques fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques -fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits pélagiques -wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit être formée de 6 chiffres -wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s' -wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut préciser la qualité de la donnée avant de valider +fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00e9lagiques +wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit \u00eatre form\u00e9e de 6 chiffres +wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut pr\u00e9ciser dans le commentaire administrateur pourquoi la donn\u00e9e est '%s' +wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut pr\u00e9ciser la qualit\u00e9 de la donn\u00e9e avant de valider wao.business.entity.UserProfile.description=%s sur %s%s -wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseigné dans WAO l'information suivante \:\n\nMarée \: %s\nMétier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao +wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseign\u00e9 dans WAO l'information suivante \:\n\nMar\u00e9e \: %s\nM\u00e9tier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao wao.business.mammalsCapture.mail.subject=Obsmer WAO\: Information sur capture accidentelle wao.business.other=Autre wao.business.readOnly=(lecture seule) -wao.error.boat.canCreateContact=Impossible de créer un nouveau contact pour la société %1$s et le navire %2$s (%3$d) -wao.error.boat.getNbBoarding=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s -wao.error.boatInfos.getNbBoardingForCompany=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s pour la société %2$s +wao.error.boat.canCreateContact=Impossible de cr\u00e9er un nouveau contact pour la soci\u00e9t\u00e9 %1$s et le navire %2$s (%3$d) +wao.error.boat.getNbBoarding=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s +wao.error.boatInfos.getNbBoardingForCompany=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s pour la soci\u00e9t\u00e9 %2$s wao.error.context.close=Une erreur est survenue pendant la fermeture du contexte principale de ToPIA wao.error.context.encodeString= -wao.error.context.getRootContext=Une erreur est survenue pour la récupération du contexte principale de ToPIA +wao.error.context.getRootContext=Une erreur est survenue pour la r\u00e9cup\u00e9ration du contexte principale de ToPIA wao.error.context.parse=Une erreur est survenue pendant le chargement de la configuration du fichier %1$s wao.error.context.rollback=Une erreur est survenue pendant l'annulation de la transaction courante -wao.error.context.start=Une erreur est survenue pendant le démarrage de l'application +wao.error.context.start=Une erreur est survenue pendant le d\u00e9marrage de l'application wao.error.context.stop=Une erreur est survenue pendant la fermeture de l'application -wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de marées réels pour le mois de %1$s [ligne \: %2$s] -wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire écrit par %1$s -wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de créer ou modifier les informations liés au navire %1$d pour la société %2$s -wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires sélectionnés +wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00e9es r\u00e9els pour le mois de %1$s [ligne \: %2$s] +wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00e9crit par %1$s +wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00e9er ou modifier les informations li\u00e9s au navire %1$d pour la soci\u00e9t\u00e9 %2$s +wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00e9lectionn\u00e9s wao.error.serviceBoat.getActivityCalendarLogAccessFile= wao.error.serviceBoat.getActivityCalendarLogFile= wao.error.serviceBoat.getAllActiveBoats= wao.error.serviceBoat.getBoat=Impossible de charger le navire -wao.error.serviceBoat.getBoatNamesStartWith=Impossible de récupérer les navires avec un nom commencant par '%1$s' +wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00e9cup\u00e9rer les navires avec un nom commencant par '%1$s' wao.error.serviceBoat.getBoatsByFilter=Impossible de filtrer la liste des navires -wao.error.serviceBoat.getBoatsByImmatriculations=La chaîne d'immatriculations est incorrect \! Chaque immatriculation doit posséder 6 chiffres -wao.error.serviceBoat.getCompanyBoatInfos=Impossible de récupérer les informations du navire immatriculé %1$d pour la société %2$s -wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activité du navire %1$s (%2$d) +wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00eene d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00e9der 6 chiffres +wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00e9cup\u00e9rer les informations du navire immatricul\u00e9 %1$d pour la soci\u00e9t\u00e9 %2$s +wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00e9 du navire %1$s (%2$d) wao.error.serviceBoat.getNbBoatsByFilter=Impossible de filtrer la liste des navires wao.error.serviceBoat.getPossibleValuesForFilter= wao.error.serviceBoat.getShipOwnerNamesContains= -wao.error.serviceBoat.importActivityCalendarCsv=Problème d'import du fichier CSV des calendriers d'activité -wao.error.serviceBoat.importBoatCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier. +wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00e8me d'import du fichier CSV des calendriers d'activit\u00e9 +wao.error.serviceBoat.importBoatCsv=Probl\u00e8me d'import du fichier CSV. V\u00e9rifiez l'en-t\u00eate du fichier. wao.error.serviceBoat.newBoatFilter= wao.error.serviceCartography.exportContactMotifsStatisticsKml= wao.error.serviceCartography.exportContactStatisticsKml= -wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonnées des quartiers des navires. Vérifiez la documentation pour le bon format du fichier Kml. +wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonn\u00e9es des quartiers des navires. V\u00e9rifiez la documentation pour le bon format du fichier Kml. wao.error.serviceChart.getContactPieChartData= wao.error.serviceChart.getContactPieChartUrl= wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts wao.error.serviceContact.getContact=Impossible de trouver le contact wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts -wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtrés +wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00e9s wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact wao.error.serviceContact.getPossibleValuesForFilter= wao.error.serviceContact.getSubstitutesForBoat= @@ -183,7 +185,7 @@ wao.error.serviceContact.updateSampleMonthTidesValue= wao.error.serviceContact.validateContact= wao.error.serviceNews.getNewNews= -wao.error.serviceNews.getNews=Impossible de récupérer l'ensemble des news +wao.error.serviceNews.getNews=Impossible de r\u00e9cup\u00e9rer l'ensemble des news wao.error.serviceNews.saveNews=Impossible d'enregistrer la news ayant pour titre '%1$s' wao.error.serviceReferential.getAllContactStateMotifs= wao.error.serviceReferential.getAllObsDebCodes= @@ -193,13 +195,13 @@ wao.error.serviceReferential.getAllTerrestrialLocations= wao.error.serviceReferential.getCodesDCF5Contains= wao.error.serviceReferential.getFacades=Impossible de charger la liste des facades -wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de pêche -wao.error.serviceReferential.getProfessions=Impossible de charger la liste des métiers -wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de pêche +wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de p\u00eache +wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00e9tiers +wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00eache wao.error.serviceReferential.getTerrestrialDistrict= wao.error.serviceReferential.importContactStateMotifs= -wao.error.serviceReferential.importDCFcodes=Impossible de créer le référentiel des codes DCF -wao.error.serviceReferential.importFishingZoneCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de détails. +wao.error.serviceReferential.importDCFcodes=Impossible de cr\u00e9er le r\u00e9f\u00e9rentiel des codes DCF +wao.error.serviceReferential.importFishingZoneCsv=Probl\u00e8me d'import du fichier CSV. V\u00e9rifiez l'en-t\u00eate du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00e9tails. wao.error.serviceReferential.importInitialContactStateMotifs= wao.error.serviceReferential.importObsDebCodes= wao.error.serviceReferential.importTerrestrialDivisions= @@ -208,72 +210,72 @@ wao.error.serviceReferential.updateAllContactStatesMotifs= wao.error.serviceSampling.countSampleRows= wao.error.serviceSampling.createSampleRowLog= -wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'échantillon -wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'échantillon \: %1$s -wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'échantillonnage sur la période du %1$s au %2$s +wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00e9chantillon +wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'\u00e9chantillon \: %1$s +wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'\u00e9chantillonnage sur la p\u00e9riode du %1$s au %2$s wao.error.serviceSampling.exportSamplingPlanICalendar= wao.error.serviceSampling.getDCFGears= wao.error.serviceSampling.getDCFSpecies= wao.error.serviceSampling.getNewProfession= wao.error.serviceSampling.getNewSampleMonth= wao.error.serviceSampling.getNewSampleRow= -wao.error.serviceSampling.getNewSampleRowCode=Impossible de récupérer un nouveau code pour une ligne d'échantillonnage +wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00e9cup\u00e9rer un nouveau code pour une ligne d'\u00e9chantillonnage wao.error.serviceSampling.getNewSampleRowLog= wao.error.serviceSampling.getPossibleValuesForFilter= wao.error.serviceSampling.getPrograms=Impossible de charger la liste des programmes -wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'échantillon ayant pour identifiant \: %1$s -wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'échantillon ayant pour code %1$s -wao.error.serviceSampling.getSampleRowsByFilter=Impossible de récupérer la liste des lignes du plan d'échantillonnage +wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'\u00e9chantillon ayant pour identifiant \: %1$s +wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'\u00e9chantillon ayant pour code %1$s +wao.error.serviceSampling.getSampleRowsByFilter=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage wao.error.serviceSampling.getSampleRowsForEligibility= -wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de récupérer la liste des lignes du plan d'échantillonnage +wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage wao.error.serviceSampling.importSamplingPlanCsv=Erreur lors de l'import du plan wao.error.serviceSampling.newOperation= wao.error.serviceSampling.newSampleRow= wao.error.serviceSampling.newSamplingFilter= wao.error.serviceSampling.validateSampleRow= wao.error.serviceSynthesis.getAllIndicatorLogs= -wao.error.serviceSynthesis.getBoardingBoats=Impossible de récupérer les données du graphique concernant les embarquements sur les navires +wao.error.serviceSynthesis.getBoardingBoats=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es du graphique concernant les embarquements sur les navires wao.error.serviceSynthesis.getBoatsCount= wao.error.serviceSynthesis.getComplianceBoardingIndicator= -wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de récupérer l'indicateur de réactivité sur les dates de saisies dans Allegro +wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00e9cup\u00e9rer l'indicateur de r\u00e9activit\u00e9 sur les dates de saisies dans Allegro wao.error.serviceSynthesis.getContactPieChartData= wao.error.serviceSynthesis.getContactPieChartDataByBoatDistrict= wao.error.serviceSynthesis.getContactStateMotifsPieChartDataByBoatDistrict= -wao.error.serviceSynthesis.getContactStateStatistics=Impossible de récupérer les statistiques sur les états des contacts +wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts wao.error.serviceSynthesis.getDataReliability= -wao.error.serviceSynthesis.getDataSampling=Impossible de récupérer les données pour le graphique dynamique des efforts de marées +wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es pour le graphique dynamique des efforts de mar\u00e9es wao.error.serviceSynthesis.getDistinctBoatsCounts= -wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de récupérer les données concernant les indicateurs pour la synthèse globale +wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es concernant les indicateurs pour la synth\u00e8se globale wao.error.serviceSynthesis.getGlobalSynthesisResult= -wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de récupérer l'indicateur de non respect du nombre d'observateurs embarqués +wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00e9cup\u00e9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00e9s wao.error.serviceSynthesis.getObservationHours= -wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre à jour les paramètres de la synthèse globale +wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00e0 jour les param\u00e8tres de la synth\u00e8se globale wao.error.serviceUser.addTokensToAllProfiles= wao.error.serviceUser.connect=Une erreur est survenue lors de la demande de connexion -wao.error.serviceUser.createDefaultAdmin=Impossible de créer l'administrateur par défaut -wao.error.serviceUser.createUpdateCompany=Impossible de créer ou de mettre à jour la société -wao.error.serviceUser.createUpdateUser=Impossible de créer ou de mettre à jour l'utilisateur -wao.error.serviceUser.deleteCompany=Impossible de supprimer la société ou de vérifier les contraintes de suppression +wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00e9er l'administrateur par d\u00e9faut +wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00e9er ou de mettre \u00e0 jour la soci\u00e9t\u00e9 +wao.error.serviceUser.createUpdateUser=Impossible de cr\u00e9er ou de mettre \u00e0 jour l'utilisateur +wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00e9t\u00e9 ou de v\u00e9rifier les contraintes de suppression wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur wao.error.serviceUser.existLogin= wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe -wao.error.serviceUser.getCompanies=Impossible de récupérer la liste des sociétés +wao.error.serviceUser.getCompanies=Impossible de r\u00e9cup\u00e9rer la liste des soci\u00e9t\u00e9s wao.error.serviceUser.getCompany= wao.error.serviceUser.getConnectedUserByToken= wao.error.serviceUser.getNewUser=Impossible d'instancier un nouvel utilisateur -wao.error.serviceUser.getObservers=Impossible de récupérer la liste des observateurs +wao.error.serviceUser.getObservers=Impossible de r\u00e9cup\u00e9rer la liste des observateurs wao.error.serviceUser.getUserByToken= wao.error.serviceUser.getUserRolesByLogin= -wao.error.serviceUser.getUsersByCompany=Impossible de récupérer la liste des utilisateurs de la société %1$s +wao.error.serviceUser.getUsersByCompany=Impossible de r\u00e9cup\u00e9rer la liste des utilisateurs de la soci\u00e9t\u00e9 %1$s wao.export.ical.desc=avec %s wao.export.ical.title=Observation ObsDeb -wao.import.contact.failure.boatMissing=Il faut préciser l'immatriculation du navire associé au contact -wao.import.contact.failure.locationTypeMissing=Le type du lieu doit être renseigné -wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associée +wao.import.contact.failure.boatMissing=Il faut pr\u00e9ciser l'immatriculation du navire associ\u00e9 au contact +wao.import.contact.failure.locationTypeMissing=Le type du lieu doit \u00eatre renseign\u00e9 +wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associ\u00e9e wao.import.contact.failure.terrestrialLocationMissing=Il manque le code du lieu wao.import.contact.failure.wrongBoat=Il n'y a pas de navire avec l'immatriculation '%s' wao.import.contact.failure.wrongSampleRowCode=Il n'y a pas de ligne du plan avec le code '%s' wao.import.contact.failure.wrongTerrestrialLocation=Il n'y a pas de lieu de type '%s' ayant pour code '%s' -wao.import.failure.wrongObsDebCode=Il n'y a pas de code métier ayant pour code '%s' +wao.import.failure.wrongObsDebCode=Il n'y a pas de code m\u00e9tier ayant pour code '%s' wao.import.failure.wrongUser=Il n'y a pas d'utilisateur ayant pour identifiant '%s' -wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut être associé à la ligne %s car il doit observer, le même jour, pour la ligne %s +wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut \u00eatre associ\u00e9 \u00e0 la ligne %s car il doit observer, le m\u00eame jour, pour la ligne %s Modified: trunk/wao-business/src/main/xmi/wao.properties =================================================================== --- trunk/wao-business/src/main/xmi/wao.properties 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-business/src/main/xmi/wao.properties 2011-05-30 16:17:33 UTC (rev 1305) @@ -57,6 +57,8 @@ fr.ifremer.wao.entity.Contact.attribute.sampleRow.tagvalue.lazy=false fr.ifremer.wao.entity.Contact.attribute.boat.tagvalue.lazy=false +fr.ifremer.wao.entity.TerrestrialDivision.attribute.regionIfremer.tagvalue.lazy=false + fr.ifremer.wao.entity.Indicator.attribute.indicatorLevel.tagvalue.lazy=false fr.ifremer.wao.entity.IndicatorLog.attribute.author.tagvalue.lazy=false fr.ifremer.wao.entity.Indicator.attribute.indicatorLevel.tagvalue.orderBy=level Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-05-30 16:17:33 UTC (rev 1305) @@ -194,22 +194,6 @@ return subPopulationSelectModel; } - private SelectModel regionIfremerSelectModel; - - public SelectModel getRegionIfremerSelectModel() { - if (regionIfremerSelectModel == null) { - List<OptionModel> options = new ArrayList<OptionModel>(); - Map<String, String> regionIfremers = getPossibleValuesForFilter().getRegionIfremers(); - if (regionIfremers != null) { - for (Map.Entry<String, String> skillZone : regionIfremers.entrySet()) { - options.add(new OptionModelImpl(skillZone.getValue(), skillZone.getKey())); - } - } - regionIfremerSelectModel = new SelectModelImpl(null, options); - } - return regionIfremerSelectModel; - } - public SelectModel getObservationTypeSelectModel() { ObservationType[] allowedObservationTypes = { ObservationType.FIELD_WORK_OBSERVATION, Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-05-30 13:31:37 UTC (rev 1304) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-05-30 16:17:33 UTC (rev 1305) @@ -81,10 +81,12 @@ t:model="observationTypeSelectModel" /> </t:if> <label for="regionIfremer">${message:wao.ui.field.TerrestrialDivision.regionIfremer}</label> - <t:select t:id="regionIfremer" - t:model="regionIfremerSelectModel" - t:value="filter.regionIfremerCode" /> - <t:if test="filter.regionIfremerCode"> + <t:topiaEntitySelector t:id="regionIfremer" + t:clazzName="TerrestrialLocation" + t:labelPropertyName="description" + t:values="possibleValuesForFilter.regionIfremersAsList" + t:selectedValue="filter.regionIfremer" /> + <t:if test="filter.regionIfremer"> <label for="skillZone">${message:wao.ui.field.TerrestrialDivision.skillZone}</label> <t:select t:id="skillZone" t:model="skillZoneSelectModel"
participants (1)
-
bleny@users.labs.libre-entreprise.org