[Suiviobsmer-commits] r1277 - 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/service wao-business/src/main/resources/i18n wao-business/src/main/xmi wao-business/src/test/java/fr/ifremer/wao/service wao-business/src/test/resources/import wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/java/fr/ifreme
Author: bleny Date: 2011-05-16 15:01:33 +0000 (Mon, 16 May 2011) New Revision: 1277 Log: add fleet for boats (import), add substitutes finding in services and UI 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/BoatFilterValuesImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.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-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.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java trunk/wao-business/src/test/resources/import/navires.csv trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.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-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -884,4 +884,16 @@ queries.add("ALTER TABLE Boat ADD portOfRegistry CHARACTER VARYING(255);"); queries.add("ALTER TABLE Boat ADD CONSTRAINT portOfRegistry_fkey FOREIGN KEY (portOfRegistry) REFERENCES TerrestrialLocation(topiaId);"); } + + @Override + protected void addFleetToBoats_3_0(List<String> queries) { + queries.add("CREATE TABLE Fleet (" + + "topiaId CHARACTER VARYING(255) PRIMARY KEY," + + "topiaVersion BIGINT NOT NULL," + + "topiaCreateDate TIMESTAMP WITHOUT TIME ZONE NOT NULL," + + "code CHARACTER VARYING(255)," + + "name TEXT);"); + queries.add("ALTER TABLE Boat ADD fleet CHARACTER VARYING(255);"); + queries.add("ALTER TABLE Boat ADD CONSTRAINT fleet_fkey FOREIGN KEY (fleet) REFERENCES Fleet(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-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -147,6 +147,8 @@ protected abstract void addPortOfRegistryToBoats_3_0(List<String> queries); + protected abstract void addFleetToBoats_3_0(List<String> queries); + protected static final Version[] VERSIONS = new Version[] { VersionUtil.valueOf("1.0"), VersionUtil.valueOf("1.1"), @@ -513,6 +515,8 @@ addPortOfRegistryToBoats_3_0(queries); + addFleetToBoats_3_0(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-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -445,6 +445,11 @@ if (filter.getPortOfRegistry() != null) { query.addEquals(boatProperty.portOfRegistry(), filter.getPortOfRegistry()); } + + if (filter.getFleet() != null) { + query.addEquals(boatProperty.fleet(), filter.getFleet()); + } + return query; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/BoatFilterValuesImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/BoatFilterValuesImpl.java 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/BoatFilterValuesImpl.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -26,6 +26,7 @@ import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.ElligibleBoat; +import fr.ifremer.wao.entity.Fleet; import fr.ifremer.wao.entity.TerrestrialLocation; import java.util.ArrayList; @@ -55,6 +56,24 @@ } @Override + public void addFleets(Fleet toAdd) { + if (toAdd == null) { + return; + } + if (getFleets() == null) { + setFleets(new ArrayList<Fleet>()); + } + if (!containsFleets(toAdd)) { + super.addFleets(toAdd); + } + } + + @Override + public List<Fleet> getFleetsAsList() { + return getAsList(getFleets()); + } + + @Override public void fillBoats(List<Boat> boats) { for (Boat boat : boats) { List<ElligibleBoat> elligibleBoats = boat.getElligibleBoat(); @@ -62,6 +81,7 @@ fillSampleRow(elligibleBoat.getSampleRow()); } addPortsOfRegistry(boat.getPortOfRegistry()); + addFleets(boat.getFleet()); } } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -140,4 +140,9 @@ public String getDistrictCode() { return getBoatDistrict().getCode(); } + + @Override + public String toString() { + return getName() + " (" + getImmatriculation() + ")"; + } } 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-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -4,6 +4,7 @@ import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.BoatDistrictImpl; import fr.ifremer.wao.entity.BoatImpl; +import fr.ifremer.wao.entity.FleetImpl; import fr.ifremer.wao.entity.ShipOwnerImpl; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.io.csv2.Common; @@ -120,6 +121,30 @@ Boat.PROPERTY_PORT_OF_REGISTRY, new PortParserFormatter(ports, true)); + // fleet + modelBuilder.newColumnForImportExport("FLOTILLE_CODE", new ValueGetterSetter<Boat, String>() { + @Override + public String get(Boat boat) throws Exception { + return boat.getFleet().getCode(); + } + + @Override + public void set(Boat boat, String code) throws Exception { + boat.getFleet().setCode(code); + } + }); + modelBuilder.newColumnForImportExport("FLOTILLE_NOM", new ValueGetterSetter<Boat, String>() { + @Override + public String get(Boat boat) throws Exception { + return boat.getFleet().getName(); + } + + @Override + public void set(Boat boat, String name) throws Exception { + boat.getFleet().setName(name); + } + }); + } @Override @@ -137,6 +162,7 @@ Boat emptyInstance = new BoatImpl(); emptyInstance.setShipOwner(new ShipOwnerImpl()); emptyInstance.setBoatDistrict(new BoatDistrictImpl()); + emptyInstance.setFleet(new FleetImpl()); return emptyInstance; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -59,6 +59,8 @@ import fr.ifremer.wao.entity.ContactDAO; import fr.ifremer.wao.entity.ElligibleBoat; import fr.ifremer.wao.entity.ElligibleBoatDAO; +import fr.ifremer.wao.entity.Fleet; +import fr.ifremer.wao.entity.FleetDAO; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.ShipOwner; import fr.ifremer.wao.entity.ShipOwnerDAO; @@ -406,10 +408,12 @@ BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction); ShipOwnerDAO shipOwnerDAO = WaoDAOHelper.getShipOwnerDAO(transaction); BoatDistrictDAO boatDistrictDAO = WaoDAOHelper.getBoatDistrictDAO(transaction); + FleetDAO fleetDAO = WaoDAOHelper.getFleetDAO(transaction); // load data that will be linked to the boat Map<String, ShipOwner> shipOwners = WaoUtils.projectPropertyUnique(shipOwnerDAO.findAll(), ShipOwner.PROPERTY_CODE); Map<String, BoatDistrict> districts = WaoUtils.projectPropertyUnique(boatDistrictDAO.findAll(), BoatDistrict.PROPERTY_CODE); + Map<String, Fleet> fleets = WaoUtils.projectPropertyUnique(fleetDAO.findAll(), Fleet.PROPERTY_CODE); // init the counts to be returned ImportResults importResults = new ImportResultsImpl(); @@ -441,6 +445,15 @@ } boat.setBoatDistrict(district); + // third, find and reuse fleet + String fleetCode = boat.getFleet().getCode(); + Fleet fleet = fleets.get(fleetCode); + if (fleet == null) { + fleet = fleetDAO.create(boat.getFleet()); + fleets.put(fleetCode, fleet); + } + boat.setFleet(fleet); + // now boat object is ready Boat existingBoat = boatDAO.findByImmatriculation(boat.getImmatriculation()); if (existingBoat == null) { @@ -455,6 +468,7 @@ existingBoat.setShipOwner(boat.getShipOwner()); existingBoat.setBoatDistrict(boat.getBoatDistrict()); existingBoat.setPortOfRegistry(boat.getPortOfRegistry()); + existingBoat.setFleet(boat.getFleet()); boatDAO.update(existingBoat); } 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 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -88,6 +88,7 @@ import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateUtils; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; import org.nuiton.topia.TopiaContext; @@ -116,10 +117,12 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; /** * ServiceContactImpl @@ -458,7 +461,7 @@ newContact.setContactState(ContactState.OBSERVATION_EXPECTED); } else { newContact.setContactState(ContactState.OBSERVATION_DONE); - newContact.setObservationType(ObservationType.FIELD_WORK_OBSERVATION); + newContact.setObservationType(row.getObservationType()); } ContactDAO dao = WaoDAOHelper.getContactDAO(transaction); @@ -1591,4 +1594,30 @@ return result; } + + @Override + protected Set<Boat> executeGetSubstitutesForBoat(TopiaContext transaction, Boat boat) throws Exception { + BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction); + Set<Boat> substitutes = new HashSet<Boat>(); + + if (boat.getFleet() != null) { + // a substitute for a boat must be in the same fleet + substitutes.addAll(boatDAO.findAllByFleet(boat.getFleet())); + substitutes.remove(boat); // a boat is not substitute for itself + + // a substitute must not have been contacted since one month + // so let's find all contact for this fleet done from now to one month ago + ContactFilter contactFilter = new ContactFilterImpl(); + contactFilter.setFromDate(DateUtils.addMonths(context.getCurrentDate(), -1)); + contactFilter.setFleet(boat.getFleet()); + Map<String, Contact> contacts = executeGetContacts(transaction, contactFilter); + + // for all the contact found, the boat can not be a substitute + for (Contact contact : contacts.values()) { + substitutes.remove(contact.getBoat()); + } + } + + return substitutes; + } } 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 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -40,6 +40,7 @@ import fr.ifremer.wao.bean.FacadeRow; import fr.ifremer.wao.bean.FacadeRowImpl; import fr.ifremer.wao.bean.ObsProgram; +import fr.ifremer.wao.bean.ObservationType; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterImpl; import fr.ifremer.wao.bean.SamplingFilterValues; @@ -617,7 +618,9 @@ row.sizeElligibleBoat(); row.sizeObservers(); - row.getBoat(); + if (row.getObservationType() == ObservationType.PHONE_CALL) { + row.getBoat().getFleet(); + } } } @@ -675,6 +678,10 @@ if (result.getObsProgram() == ObsProgram.OBSDEB) { result.sizeObservers(); result.getObservationUnit(); + + if (result.getObservationType() == ObservationType.PHONE_CALL) { + result.getBoat().getFleet(); + } } } @@ -713,6 +720,9 @@ if (ObsProgram.OBSDEB.equals(result.getObsProgram())) { result.sizeObservers(); result.getObservationUnit(); + if (result.getObservationType() == ObservationType.PHONE_CALL) { + result.getBoat().getFleet(); + } } else { result.sizeElligibleBoat(); result.sizeSampleMonth(); @@ -807,6 +817,13 @@ } @Override + protected SampleRow executeNewOperation(TopiaContext transaction, ConnectedUser connectedUser, ObservationType observationType) { + SampleRow newSampleRow = executeNewSampleRow(connectedUser); + newSampleRow.setObservationType(observationType); + return newSampleRow; + } + + @Override public SampleMonth executeGetNewSampleMonth(Date period, SampleRow row) { SampleMonth month = new SampleMonthImpl(); month.setSampleRow(row); 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-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-05-16 15:01:33 UTC (rev 1277) @@ -173,6 +173,7 @@ wao.error.serviceContact.getNbContacts= wao.error.serviceContact.getNewContact= wao.error.serviceContact.getPossibleValuesForFilter= +wao.error.serviceContact.getSubstitutesForBoat= wao.error.serviceContact.importContactCsv= wao.error.serviceContact.newContactFilter= wao.error.serviceContact.saveComment= @@ -222,6 +223,7 @@ wao.error.serviceSampling.getSampleRowsForEligibility= wao.error.serviceSampling.getSampleRowsOrderedByFishingZone= wao.error.serviceSampling.importSamplingPlanCsv= +wao.error.serviceSampling.newOperation= wao.error.serviceSampling.newSampleRow= wao.error.serviceSampling.newSamplingFilter= wao.error.serviceSampling.validateSampleRow= 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-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-05-16 15:01:33 UTC (rev 1277) @@ -1,178 +1,179 @@ ContactPieChartConstant.OTHER=Autres -ContactPieChartConstant.REALIZED=R\u00e9alis\u00e9s -ContactPieChartConstant.REFUSED=Refus\u00e9s -ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00e9finitif +ContactPieChartConstant.REALIZED=Réalisés +ContactPieChartConstant.REFUSED=Refusés +ContactState.CONTACT_DEFINITELY_REFUSED=Refus définitif ContactState.CONTACT_REFUSED=Refus ContactState.CONTACT_START=Contact pris -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 +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 DataReliability.DOUBTFUL=Douteuse -DataReliability.NOT_PROVIDED=Non contr\u00f4l\u00e9e +DataReliability.NOT_PROVIDED=Non contrôlée DataReliability.NOT_RELIABLE=Non exploitable DataReliability.RELIABLE=Exploitable DataReliability.UNKNOWN=Inconnue -GlobalIndicatorValue.BAD=P\u00e9nalit\u00e9 de niveau 1 +GlobalIndicatorValue.BAD=Pénalité de niveau 1 GlobalIndicatorValue.GOOD=Bonus de niveau 1 GlobalIndicatorValue.NEUTRAL=Conforme au cahier des charges -GlobalIndicatorValue.VERY_BAD=P\u00e9nalit\u00e9 de niveau 2 +GlobalIndicatorValue.VERY_BAD=Pénalité de niveau 2 GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2 -LocationType.AUCTION=Cri\u00e9e +LocationType.AUCTION=Criée LocationType.PORT=Port ObsProgram.OBSDEB=ObsDeb ObsProgram.OBSMER=ObsMer ObsProgram.OBSVENTE=ObsVente ObservationType.FIELD_WORK_OBSERVATION=Observation de terrain -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 +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 UserRole.ADMIN=Administrateur UserRole.COORDINATOR=Coordinateur -UserRole.GUEST=Invit\u00e9 +UserRole.GUEST=Invité 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\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.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.unableToReadLine=Impossible de lire la ligne %s -csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entit\u00e9 '%s', ligne %s) +csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entité '%s', ligne %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\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.=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.FPO=Nasses (casiers) -fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00e0 l'\u00e9talage (diables) +fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets à l'étalage (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\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.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.GNC=Filets maillants encerclants -fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00e9rivants (filets d\u00e9rivants) +fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants dérivants (filets dérivants) fr.ifremer.wao.entity.FishingGearDCF.GNF=Filets maillants fixes (sur perches) -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.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.HAR=Harpons -fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00e9canis\u00e9es +fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues mécanisées fr.ifremer.wao.entity.FishingGearDCF.HMP=Pompes -fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00e9colte (non sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de récolte (non spécifiés) fr.ifremer.wao.entity.FishingGearDCF.LA=Filets tournants sans coulisse (filet lamparo) -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.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.MIS=Divers -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.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.PS=Filets tournants avec coulisse (sennes coulissantes) -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.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.SB=Sennes de plages fr.ifremer.wao.entity.FishingGearDCF.SDN=Sennes danoises -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.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.TargetSpeciesDCF.ALG=Algues -fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00e8ces catadromes -fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00e9s +fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Espèces catadromes +fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustacés fr.ifremer.wao.entity.TargetSpeciesDCF.CSJ=Coquilles Saint-Jacques -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.DEF=Espèces démersales +fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Espèces d'eaux profondes fr.ifremer.wao.entity.TargetSpeciesDCF.FIN=Poisson plats -fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00e9lagiques +fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands pélagiques fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques -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 +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 wao.business.entity.UserProfile.description=%s sur %s%s -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.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.subject=Obsmer WAO\: Information sur capture accidentelle wao.business.other=Autre wao.business.readOnly=(lecture seule) -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.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.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\u00e9cup\u00e9ration du contexte principale de ToPIA +wao.error.context.getRootContext=Une erreur est survenue pour la récupération 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\u00e9marrage de l'application +wao.error.context.start=Une erreur est survenue pendant le démarrage 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\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.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.serviceBoat.getActivityCalendarLogAccessFile= wao.error.serviceBoat.getActivityCalendarLogFile= wao.error.serviceBoat.getBoat=Impossible de charger le navire -wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00e9cup\u00e9rer les navires avec un nom commencant par '%1$s' +wao.error.serviceBoat.getBoatNamesStartWith=Impossible de récupérer 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\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.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.getNbBoatsByFilter=Impossible de filtrer la liste des navires wao.error.serviceBoat.getPossibleValuesForFilter= wao.error.serviceBoat.getShipOwnerNamesContains= -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.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.newBoatFilter= wao.error.serviceCartography.exportContactMotifsStatisticsKml= wao.error.serviceCartography.exportContactStatisticsKml= -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.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.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\u00e9s +wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtrés wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact wao.error.serviceContact.getPossibleValuesForFilter= +wao.error.serviceContact.getSubstitutesForBoat= wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts wao.error.serviceContact.newContactFilter= wao.error.serviceContact.saveComment= @@ -181,7 +182,7 @@ wao.error.serviceContact.updateSampleMonthTidesValue= wao.error.serviceContact.validateContact= wao.error.serviceNews.getNewNews= -wao.error.serviceNews.getNews=Impossible de r\u00e9cup\u00e9rer l'ensemble des news +wao.error.serviceNews.getNews=Impossible de récupérer 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.getAllObservationUnits= @@ -190,83 +191,84 @@ 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\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.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.getTerrestrialDistrict= wao.error.serviceReferential.importContactStateMotifs= -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.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.importInitialContactStateMotifs= wao.error.serviceReferential.importTerrestrialDivisions= wao.error.serviceReferential.importTerrestrialLocations= wao.error.serviceReferential.updateAllContactStatesMotifs= wao.error.serviceSampling.countSampleRows= wao.error.serviceSampling.createSampleRowLog= -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.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.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\u00e9cup\u00e9rer un nouveau code pour une ligne d'\u00e9chantillonnage +wao.error.serviceSampling.getNewSampleRowCode=Impossible de récupérer un nouveau code pour une ligne d'échantillonnage 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'\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.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.getSampleRowsForEligibility= -wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage +wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de récupérer la liste des lignes du plan d'échantillonnage 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\u00e9cup\u00e9rer les donn\u00e9es du graphique concernant les embarquements sur les navires +wao.error.serviceSynthesis.getBoardingBoats=Impossible de récupérer les données du graphique concernant les embarquements sur les navires wao.error.serviceSynthesis.getBoatsCount= wao.error.serviceSynthesis.getComplianceBoardingIndicator= -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.getContactDataInputDateReactivity=Impossible de récupérer l'indicateur de réactivité 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\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts +wao.error.serviceSynthesis.getContactStateStatistics=Impossible de récupérer les statistiques sur les états des contacts wao.error.serviceSynthesis.getDataReliability= -wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es pour le graphique dynamique des efforts de mar\u00e9es +wao.error.serviceSynthesis.getDataSampling=Impossible de récupérer les données pour le graphique dynamique des efforts de marées wao.error.serviceSynthesis.getDistinctBoatsCounts= -wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es concernant les indicateurs pour la synth\u00e8se globale +wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de récupérer les données concernant les indicateurs pour la synthèse globale wao.error.serviceSynthesis.getGlobalSynthesisResult= -wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00e9cup\u00e9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00e9s +wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de récupérer l'indicateur de non respect du nombre d'observateurs embarqués wao.error.serviceSynthesis.getObservationHours= -wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00e0 jour les param\u00e8tres de la synth\u00e8se globale +wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre à jour les paramètres de la synthèse 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\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.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.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\u00e9cup\u00e9rer la liste des soci\u00e9t\u00e9s +wao.error.serviceUser.getCompanies=Impossible de récupérer la liste des sociétés 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\u00e9cup\u00e9rer la liste des observateurs +wao.error.serviceUser.getObservers=Impossible de récupérer la liste des observateurs wao.error.serviceUser.getUserByToken= wao.error.serviceUser.getUserRolesByLogin= -wao.error.serviceUser.getUsersByCompany=Impossible de r\u00e9cup\u00e9rer la liste des utilisateurs de la soci\u00e9t\u00e9 %1$s +wao.error.serviceUser.getUsersByCompany=Impossible de récupérer la liste des utilisateurs de la société %1$s wao.export.ical.desc=avec %s wao.export.ical.title=Observation ObsDeb -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.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.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.wrongUser=Il n'y a pas d'utilisateur ayant pour identifiant '%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 +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 Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -24,10 +24,12 @@ package fr.ifremer.wao.service; import fr.ifremer.wao.AbstractServiceTest; +import fr.ifremer.wao.TestManager; import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.bean.BoatFilter; import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.ContactFilter; +import fr.ifremer.wao.bean.ContactState; import fr.ifremer.wao.bean.ObservationType; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterValues; @@ -40,6 +42,8 @@ import fr.ifremer.wao.io.ImportResults; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateUtils; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -50,23 +54,27 @@ import java.io.IOException; import java.io.InputStream; +import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Set; /** * * * @author bleny */ -public class ObsDebTest extends AbstractServiceTest { +public class ObsDebTest { private static final Logger log = LoggerFactory.getLogger(ObsDebTest.class); + protected TestManager manager; + protected ServiceUser serviceUser; protected ServiceReferential serviceReferential; protected ServiceBoat serviceBoat; protected ServiceSampling serviceSampling; - private ServiceSynthesis serviceSynthesis; + protected ServiceSynthesis serviceSynthesis; protected ServiceContact serviceContact; protected ObsDebFixtures fixtures; @@ -85,20 +93,26 @@ + "2011_901;Code Lutin;OBS1;6/2010;174258;"; @Before - public void initServices() { + public void before() { + manager = new TestManager(); + manager.start(); + serviceUser = manager.getServiceUser(); serviceReferential = manager.getServiceReferential(); serviceBoat = manager.getServiceBoat(); serviceSampling = manager.getServiceSampling(); serviceContact = manager.getServiceContact(); serviceSynthesis = manager.getServiceSynthesis(); - } - @Before - public void initFixtures() { fixtures = new ObsDebFixtures(manager); } + @After + public void stopManager() { + manager.stop(); + manager = null; + } + /** * As an admin, i must be able to import terrestrial divisions */ @@ -132,7 +146,7 @@ manager.setCurrentDate(3, 1, 2010); InputStream input = IOUtils.toInputStream(SAMPLING_PLAN_CSV); - ImportResults importResults = manager.getServiceSampling().importSamplingPlanCsv(input, fixtures.joshAsAdministrator()); + ImportResults importResults = serviceSampling.importSamplingPlanCsv(input, fixtures.joshAsAdministrator()); Assert.assertEquals(4, importResults.getNbRowsImported()); Assert.assertEquals(0, importResults.getNbRowsRefused()); } @@ -148,7 +162,7 @@ manager.setCurrentDate(3, 1, 2010); InputStream input = IOUtils.toInputStream(PHONE_SAMPLING_PLAN_CSV); - ImportResults importResults = manager.getServiceSampling().importSamplingPlanCsv(input, fixtures.joshAsAdministrator()); + ImportResults importResults = serviceSampling.importSamplingPlanCsv(input, fixtures.joshAsAdministrator()); Assert.assertEquals(1, importResults.getNbRowsImported()); Assert.assertEquals(0, importResults.getNbRowsRefused()); } @@ -435,6 +449,47 @@ Assert.assertNotNull("service must have pre filled field", contact.getTerrestrialLocation()); } + @Test + public void observerCanCreateContactForPhoneSamplingPlan() throws WaoBusinessException { + adminCanImportPhoneSamplingPlan(); + + Date now = DateUtil.createDate(0, 30, 16, 11, 2, 2010); // 11 Feb 2010 at 4:30 PM + manager.setCurrentDate(now); + + // as observer, i can get the sample row i'm working on + SampleRow sampleRow = serviceSampling.getSampleRowByCode(fixtures.joshAsObserver(), "2011_901"); + + // the sample row tell me what boat to call + Boat boatToCall = sampleRow.getBoat(); + + // i can create a contact + Contact firstContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, boatToCall); + Assert.assertEquals("Observation type is, by default, a phone call because contact was created from phone sampling plan", + ObservationType.PHONE_CALL, firstContact.getObservationType()); + + // let's suppose the guy refused the survey + firstContact.setObservationBeginDate(now); + firstContact.setObservationEndDate(DateUtils.addMinutes(now, 5)); + firstContact.setContactState(ContactState.CONTACT_REFUSED); + serviceContact.saveContact(fixtures.joshAsObserver(), firstContact, false); + + + // as observer, i can get the substitute for this boat + Set<Boat> substituteBoats = serviceContact.getSubstitutesForBoat(boatToCall); + + if (log.isDebugEnabled()) { + log.debug("substitutes found for boat " + boatToCall + " are " + substituteBoats); + } + + Assert.assertEquals(2, substituteBoats.size()); + + Boat substitute = substituteBoats.iterator().next(); + Contact secondContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, substitute); + secondContact.setObservationBeginDate(now); + secondContact.setObservationEndDate(DateUtils.addMinutes(now, 30)); + serviceContact.saveContact(fixtures.joshAsObserver(), secondContact, false); + } + /** Check that coordinator is able to export the contacts created in {@link #observerCanCreateContact()} * @throws WaoBusinessException * @throws IOException Modified: trunk/wao-business/src/test/resources/import/navires.csv =================================================================== --- trunk/wao-business/src/test/resources/import/navires.csv 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-business/src/test/resources/import/navires.csv 2011-05-16 15:01:33 UTC (rev 1277) @@ -1,7 +1,7 @@ -NAVIRE_IMMATRICULATION;NAVIRE_NOM;NAVIRE_LONGUEUR;NAVIRE_ANNEE;QUARTIER_CODE;ARMATEUR_CODE;ARMATEUR_NOM;ARMATEUR_PRENOM;NAVIRE_ACTIF;PORT_CODE -273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y;MP3 -174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y;MP6 -177474;MAYFLOWERS;10;1983;UN;19784252;MOSELLE ;ALAIN RENE;N;XSN -174592;FIFITOU;8;1975;UN;18854131;POUTRE ;JEAN PIERRE;Y;XSN -284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y;LP3 -978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y;MP6 +NAVIRE_IMMATRICULATION;NAVIRE_NOM;NAVIRE_LONGUEUR;NAVIRE_ANNEE;QUARTIER_CODE;ARMATEUR_CODE;ARMATEUR_NOM;ARMATEUR_PRENOM;NAVIRE_ACTIF;PORT_CODE;FLOTILLE_CODE;FLOTILLE_NOM +273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y;MP3;FLOTILLE1;Ma première flotille +174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y;MP6;FLOTILLE1;Ma première flotille +177474;MAYFLOWERS;10;1983;UN;19784252;MOSELLE ;ALAIN RENE;N;XSN;FLOTILLE0;Les colons +174592;FIFITOU;8;1975;UN;18854131;POUTRE ;JEAN PIERRE;Y;XSN;FLOTILLE1;Ma première flotille +284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y;LP3;FLOTILLE2;Petits navires +978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y;MP6;FLOTILLE2;Petits navires Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -28,6 +28,7 @@ import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.ObservationType; +import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.io.ImportResults; import fr.ifremer.wao.service.ServiceContact; @@ -60,6 +61,7 @@ import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.Set; @RequiresAuthentication(allowedPrograms = {ObsProgram.OBSDEB}) public class ObsDebSamplingPlan { @@ -240,6 +242,17 @@ return manager.getTooltipBoat(sampleRow.getBoat()); } + @Property + private Boat substitute; + + public String getSubstituteDescription() { + return manager.getTooltipBoat(substitute); + } + + public Set<Boat> getSubstitutes() { + return serviceContact.getSubstitutesForBoat(sampleRow.getBoat()); + } + //// grid actions public boolean canEditSampleRow() { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-05-16 15:01:33 UTC (rev 1277) @@ -28,6 +28,7 @@ import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactFilterImpl; import fr.ifremer.wao.bean.ObservationType; +import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.service.ServiceContact; @@ -43,6 +44,7 @@ import java.text.SimpleDateFormat; import java.util.LinkedList; import java.util.List; +import java.util.Set; /** * Used to generate a bean model for the grid used in sampling plan showed @@ -190,6 +192,7 @@ return value; } }); + add("substitutes", null); add("actions", null); } @@ -205,7 +208,7 @@ if (observationType == ObservationType.PHONE_CALL) { model.exclude("dayOfWeek", "day", "subPopulation", SampleRow.PROPERTY_OBSERVATION_UNIT); } else { - model.exclude(SampleRow.PROPERTY_BOAT); + model.exclude(SampleRow.PROPERTY_BOAT, "substitutes"); } } Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-05-16 15:01:33 UTC (rev 1277) @@ -52,6 +52,7 @@ wao.ui.boatinfo.title=Infos about %s wao.ui.boats.associatedLine=Sample row(s) associated with this boat wao.ui.boats.nbObservations=%s observation(s), %s with your company (all programs considered) +wao.ui.boats.substitutes=Substitutes for this boat wao.ui.cartography.help=Click on the graphs to get the details. wao.ui.cartography.title=Dispatching of the contacts among boat districts wao.ui.cartography.title.company=Dispatching of the contacts among boat districts for company %s Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-05-16 15:01:33 UTC (rev 1277) @@ -8,214 +8,215 @@ SynthesisId.OBSERVATION_HOUR= wao.ui.action.acceptContact=Valider le contact wao.ui.action.add=Ajouter -wao.ui.action.addNewContactFromBoat=Cr\u00E9er un nouveau contact pour ce navire et la ligne s\u00E9lectionn\u00E9e dans les filtres -wao.ui.action.back=Revenier \u00E0 l'\u00E9cran pr\u00E9c\u00E9dent +wao.ui.action.addNewContactFromBoat=Cr\u00e9er un nouveau contact pour ce navire et la ligne s\u00e9lectionn\u00e9e dans les filtres +wao.ui.action.back=Revenier \u00e0 l'\u00e9cran pr\u00e9c\u00e9dent wao.ui.action.cancel=Annuler wao.ui.action.changeLocale=Changer de langue wao.ui.action.contactAdmin=Contacter un responsable ObsMer -wao.ui.action.create=Cr\u00E9er -wao.ui.action.createCompany=Cr\u00E9er une soci\u00E9t\u00E9 -wao.ui.action.createUser=Cr\u00E9er un utilisateur +wao.ui.action.create=Cr\u00e9er +wao.ui.action.createCompany=Cr\u00e9er une soci\u00e9t\u00e9 +wao.ui.action.createUser=Cr\u00e9er un utilisateur wao.ui.action.delete=Supprimer -wao.ui.action.deleteCompany=Supprimer la soci\u00E9t\u00E9 -wao.ui.action.deleteCompany.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer la soci\u00E9t\u00E9 ? +wao.ui.action.deleteCompany=Supprimer la soci\u00e9t\u00e9 +wao.ui.action.deleteCompany.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la soci\u00e9t\u00e9 ? wao.ui.action.deleteContact=Supprimer le contact -wao.ui.action.deleteContact.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer d\u00E9finitivement ce contact ? +wao.ui.action.deleteContact.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement ce contact ? wao.ui.action.deleteNews=Supprimer la nouvelle -wao.ui.action.deleteNews.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer d\u00E9finitivement cette nouvelle ? +wao.ui.action.deleteNews.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement cette nouvelle ? wao.ui.action.deleteSampleRow=Supprimer la ligne du plan -wao.ui.action.deleteSampleRow.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer la ligne %s du plan ? +wao.ui.action.deleteSampleRow.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la ligne %s du plan ? wao.ui.action.deleteUser=Supprimer l'utilisateur -wao.ui.action.deleteUser.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer l'utilisateur ? +wao.ui.action.deleteUser.confirm=\u00cates-vous s\u00fbr de vouloir supprimer l'utilisateur ? wao.ui.action.edit=Modifier wao.ui.action.enlargeView=Agrandir la vue -wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00E9es +wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00e9es wao.ui.action.filter=Filtrer wao.ui.action.hideFilters=Masquer les filtres wao.ui.action.login=Connexion -wao.ui.action.logout=D\u00E9connexion -wao.ui.action.reduceView=R\u00E9duire la vue -wao.ui.action.refresh=Rafra\u00EEchir +wao.ui.action.logout=D\u00e9connexion +wao.ui.action.reduceView=R\u00e9duire la vue +wao.ui.action.refresh=Rafra\u00eechir wao.ui.action.refuseContact=Refuser le contact wao.ui.action.remove=Retirer -wao.ui.action.resetFields=Remettre le formulaire \u00E0 z\u00E9ro +wao.ui.action.resetFields=Remettre le formulaire \u00e0 z\u00e9ro wao.ui.action.revert=Annuler wao.ui.action.runExport=Lancer l'export wao.ui.action.runImport=Lancer l'import wao.ui.action.runSearch=Lancer la recherche wao.ui.action.save=Enregistrer -wao.ui.action.showDetails=Voir les d\u00E9tails +wao.ui.action.showDetails=Voir les d\u00e9tails wao.ui.action.showFilters=Afficher les filtres wao.ui.action.unvalidateContact=Invalider le contact wao.ui.action.viewIndicatorsHistory=Voir l'historique des modifications des indicateurs wao.ui.boatList=Liste de %s navires wao.ui.boatinfo.title=Informations sur %s -wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00E9e(s) \u00E0 ce navire -wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00E9t\u00E9 -wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00E9tail. -wao.ui.cartography.title=R\u00E9partition des contacts par quartier des navires -wao.ui.cartography.title.company=R\u00E9partition des contacts par quartier des navires pour la soci\u00E9t\u00E9 %s +wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00e9e(s) \u00e0 ce navire +wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00e9t\u00e9 +wao.ui.boats.substitutes=Substituts du navire +wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00e9tail. +wao.ui.cartography.title=R\u00e9partition des contacts par quartier des navires +wao.ui.cartography.title.company=R\u00e9partition des contacts par quartier des navires pour la soci\u00e9t\u00e9 %s wao.ui.chart.boardingsSince=Nombre de sollicitations depuis le %s wao.ui.chart.numberBoats=Nb navires wao.ui.chart.numberObservations=Nb observations wao.ui.chart.numberOfBoatsWithBoardings=Nombre de navires avec x embarquements -wao.ui.contact.lastContact=Derni\u00E8re observation concernant ce navire pour votre soci\u00E9t\u00E9 (tous programmes confondus) -wao.ui.contacts.createFromBoat=Cr\u00E9er un nouveau contact pour ce navire et cette ligne du plan -wao.ui.contacts.createFromBoat.fail=Cr\u00E9ation d'un nouveau contact impossible -wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00E9e \u00E0 \u00E9ch\u00E9ance, \u00EAtes-vous s\u00FBr de vouloir cr\u00E9er un nouveau contact ? -wao.ui.disclaimer=Le site de \u00AB SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00BB a fait l'objet d'une d\u00E9claration \u00E0 la CNIL sous le num\u00E9ro suivant \: 1414476 -wao.ui.disclaimer.boats=Les donn\u00E9es saisies dans cette page sont la propri\u00E9t\u00E9 exclusive de la soci\u00E9t\u00E9. En dehors de la soci\u00E9t\u00E9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer. +wao.ui.contact.lastContact=Derni\u00e8re observation concernant ce navire pour votre soci\u00e9t\u00e9 (tous programmes confondus) +wao.ui.contacts.createFromBoat=Cr\u00e9er un nouveau contact pour ce navire et cette ligne du plan +wao.ui.contacts.createFromBoat.fail=Cr\u00e9ation d'un nouveau contact impossible +wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00e9e \u00e0 \u00e9ch\u00e9ance, \u00eates-vous s\u00fbr de vouloir cr\u00e9er un nouveau contact ? +wao.ui.disclaimer=Le site de \u00ab SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00bb a fait l'objet d'une d\u00e9claration \u00e0 la CNIL sous le num\u00e9ro suivant \: 1414476 +wao.ui.disclaimer.boats=Les donn\u00e9es saisies dans cette page sont la propri\u00e9t\u00e9 exclusive de la soci\u00e9t\u00e9. En dehors de la soci\u00e9t\u00e9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer. wao.ui.email=Adresse e-mail wao.ui.entity.Boat=Navire wao.ui.entity.Boats=Navires -wao.ui.entity.Company=Soci\u00E9t\u00E9 +wao.ui.entity.Company=Soci\u00e9t\u00e9 wao.ui.entity.Contact=Contact -wao.ui.entity.FishingZone=Zones de p\u00EAche -wao.ui.entity.SampleRow=Ligne du plan d'\u00E9chantillonnage +wao.ui.entity.FishingZone=Zones de p\u00eache +wao.ui.entity.SampleRow=Ligne du plan d'\u00e9chantillonnage wao.ui.entity.TerrestrialLocation=Lieu wao.ui.entity.fishingGearDCF=Engin code DCF -wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00E8ces-cible code DCF +wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00e8ces-cible code DCF wao.ui.field.Boat.boatLength=Longueur -wao.ui.field.Boat.buildYear=Ann\u00E9e de construction +wao.ui.field.Boat.buildYear=Ann\u00e9e de construction wao.ui.field.Boat.districtCode=Quartier wao.ui.field.Boat.immatriculation=Immatriculation wao.ui.field.Boat.name=Nom wao.ui.field.Boat.portOfRegistry=Port d'attache wao.ui.field.Boat.shipOwner=Armateur wao.ui.field.BoatDistrict.code=Code quartier -wao.ui.field.BoatInfos.dup=Capacit\u00E9 d'accueil du navire en personnels sp\u00E9cialis\u00E9s +wao.ui.field.BoatInfos.dup=Capacit\u00e9 d'accueil du navire en personnels sp\u00e9cialis\u00e9s wao.ui.field.Company.active=Active wao.ui.field.Company.name=Nom -wao.ui.field.Contact.beginDate=D\u00E9but d'observation +wao.ui.field.Contact.beginDate=D\u00e9but d'observation wao.ui.field.Contact.comment=Commentaire observateur wao.ui.field.Contact.commentAdmin=Commentaire programme wao.ui.field.Contact.commentCoordinator=Commentaire coordinateur -wao.ui.field.Contact.completeSampling=\u00C9chantillonnage complet -wao.ui.field.Contact.contactState=\u00C9tat du contact +wao.ui.field.Contact.completeSampling=\u00c9chantillonnage complet +wao.ui.field.Contact.contactState=\u00c9tat du contact wao.ui.field.Contact.contactStateMotif=Motif du refus wao.ui.field.Contact.contactStateMotifs=Motifs de refus -wao.ui.field.Contact.creationDate=Date de cr\u00E9ation du contact -wao.ui.field.Contact.dataInputDate=Saisie des donn\u00E9es -wao.ui.field.Contact.dataReliability=Qualit\u00E9 des donn\u00E9es +wao.ui.field.Contact.creationDate=Date de cr\u00e9ation du contact +wao.ui.field.Contact.dataInputDate=Saisie des donn\u00e9es +wao.ui.field.Contact.dataReliability=Qualit\u00e9 des donn\u00e9es wao.ui.field.Contact.endDate=Fin d'observation -wao.ui.field.Contact.landingDate=Date de d\u00E9barquement -wao.ui.field.Contact.mainObserver=Observateur r\u00E9f\u00E9rent +wao.ui.field.Contact.landingDate=Date de d\u00e9barquement +wao.ui.field.Contact.mainObserver=Observateur r\u00e9f\u00e9rent wao.ui.field.Contact.mammalsCapture=Capture accidentelle -wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00E8ces captur\u00E9es +wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00e8ces captur\u00e9es wao.ui.field.Contact.mammalsObservation=Observation exceptionnelle wao.ui.field.Contact.nbObservants=Nombre d'observateurs wao.ui.field.Contact.observationType=Type d'observation -wao.ui.field.Contact.samplingStrategy=Strat\u00E9gie d'\u00E9chantillonnage suivie +wao.ui.field.Contact.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage suivie wao.ui.field.Contact.secondaryObservers=Observateurs wao.ui.field.Contact.terrestrialLocation=Lieu d'observation -wao.ui.field.Contact.validationCompany=Validation soci\u00E9t\u00E9 +wao.ui.field.Contact.validationCompany=Validation soci\u00e9t\u00e9 wao.ui.field.Contact.validationProgram=Validation programme -wao.ui.field.FishingZone.facadeName=Fa\u00E7ade +wao.ui.field.FishingZone.facadeName=Fa\u00e7ade wao.ui.field.FishingZone.sectorName=Zone wao.ui.field.SampleRow.boat=Navire wao.ui.field.SampleRow.code=Code ligne wao.ui.field.SampleRow.comment=Commentaire -wao.ui.field.SampleRow.company=Soci\u00E9t\u00E9 +wao.ui.field.SampleRow.company=Soci\u00e9t\u00e9 wao.ui.field.SampleRow.dCF5Code=Codes wao.ui.field.SampleRow.day=Jour wao.ui.field.SampleRow.dcf5Code=Code DCF Niv. 5 wao.ui.field.SampleRow.expectedDate=Date -wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00EAche -wao.ui.field.SampleRow.libelle=Libell\u00E9 +wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00eache +wao.ui.field.SampleRow.libelle=Libell\u00e9 wao.ui.field.SampleRow.meshSize=Maillage -wao.ui.field.SampleRow.observationUnit=Unit\u00E9 d'observation +wao.ui.field.SampleRow.observationUnit=Unit\u00e9 d'observation wao.ui.field.SampleRow.observers=Observateurs wao.ui.field.SampleRow.other=Autre -wao.ui.field.SampleRow.periodBegin=D\u00E9but +wao.ui.field.SampleRow.periodBegin=D\u00e9but wao.ui.field.SampleRow.periodEnd=Fin -wao.ui.field.SampleRow.profession=M\u00E9tier -wao.ui.field.SampleRow.professionCode=Code m\u00E9tier +wao.ui.field.SampleRow.profession=M\u00e9tier +wao.ui.field.SampleRow.professionCode=Code m\u00e9tier wao.ui.field.SampleRow.programName=Programme -wao.ui.field.SampleRow.samplingStrategy=Strat\u00E9gie d'\u00E9chantillonnage +wao.ui.field.SampleRow.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage wao.ui.field.SampleRow.size=Taille du navire -wao.ui.field.SampleRow.species=Esp\u00E8ces cibles +wao.ui.field.SampleRow.species=Esp\u00e8ces cibles wao.ui.field.SampleRow.terrestrialLocation=Quartier maritime wao.ui.field.SampleRow.terrestrialLocationInfos=Autre(s) info(s) -wao.ui.field.TerrestrialDivision.regionIfremer=R\u00E9gion Ifremer -wao.ui.field.TerrestrialDivision.skillZone=Zone de comp\u00E9tence +wao.ui.field.TerrestrialDivision.regionIfremer=R\u00e9gion Ifremer +wao.ui.field.TerrestrialDivision.skillZone=Zone de comp\u00e9tence wao.ui.field.TerrestrialDivision.subPopulation=Sous-population -wao.ui.field.User.firstName=Pr\u00E9nom +wao.ui.field.User.firstName=Pr\u00e9nom wao.ui.field.User.lastName=Nom wao.ui.field.User.login=Identifiant -wao.ui.field.UserProfile.userRole=R\u00F4le +wao.ui.field.UserProfile.userRole=R\u00f4le wao.ui.field.WaoUser.login=Identifiant wao.ui.field.WaoUser.mammalsNotifications=Recevoir les notifications de captures accidentelles wao.ui.field.WaoUser.password=Mot de passe wao.ui.filters.filters=Filtres de recherche -wao.ui.filters.refresh=Rafra\u00EEchir les champs du filtre -wao.ui.forgotPassword=Mot de passe oubli\u00E9 ? -wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00E9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00E9parateur pour s\u00E9parer les immatriculations (virgule, point, espace ou saut de ligne) -wao.ui.form.SampleRow.error.missingLogComment=Vous devez pr\u00E9ciser la raison de vos modifications -wao.ui.form.SampleRow.missingBeginDate=Date de d\u00E9but manquante pour g\u00E9n\u00E9rer le code de la ligne \! -wao.ui.form.SampleRow.others=Autres donn\u00E9es de la ligne d'\u00E9chantillonnage +wao.ui.filters.refresh=Rafra\u00eechir les champs du filtre +wao.ui.forgotPassword=Mot de passe oubli\u00e9 ? +wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00e9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00e9parateur pour s\u00e9parer les immatriculations (virgule, point, espace ou saut de ligne) +wao.ui.form.SampleRow.error.missingLogComment=Vous devez pr\u00e9ciser la raison de vos modifications +wao.ui.form.SampleRow.missingBeginDate=Date de d\u00e9but manquante pour g\u00e9n\u00e9rer le code de la ligne \! +wao.ui.form.SampleRow.others=Autres donn\u00e9es de la ligne d'\u00e9chantillonnage wao.ui.form.SampleRow.program=Programme de rattachement et effort d'observation par mois wao.ui.form.addComment=Ajouter un commentaire -wao.ui.form.addRole=Ajouter ce r\u00F4le +wao.ui.form.addRole=Ajouter ce r\u00f4le wao.ui.form.boardingFrom=Sollicitations du navire depuis le wao.ui.form.contactsFile=Fichier des contacts -wao.ui.form.definePasswordManually=d\u00E9finir manuellement +wao.ui.form.definePasswordManually=d\u00e9finir manuellement wao.ui.form.editComment=Commentaire sur la modification wao.ui.form.editionAuthor=Auteur de la modification -wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00E9 -wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00E9 \u00E9quivaut au nombre de contacts valid\u00E9s ou non par la soci\u00E9t\u00E9. Les contacts refus\u00E9s par le programme ne sont pas pris en compte. -wao.ui.form.generatePassword=G\u00E9n\u00E9rer le mot de passe +wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00e9 +wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00e9 \u00e9quivaut au nombre de contacts valid\u00e9s ou non par la soci\u00e9t\u00e9. Les contacts refus\u00e9s par le programme ne sont pas pris en compte. +wao.ui.form.generatePassword=G\u00e9n\u00e9rer le mot de passe wao.ui.form.otherBoatInfos=Autres informations sur le navire -wao.ui.form.period=P\u00E9riode +wao.ui.form.period=P\u00e9riode wao.ui.form.period.from=du wao.ui.form.period.to=au -wao.ui.form.periodFrom=P\u00E9riode du -wao.ui.form.periodFromTo=P\u00E9riode du %s au %s +wao.ui.form.periodFrom=P\u00e9riode du +wao.ui.form.periodFromTo=P\u00e9riode du %s au %s wao.ui.form.program=Programme -wao.ui.form.programEvaluation=\u00C9valuation programme +wao.ui.form.programEvaluation=\u00c9valuation programme wao.ui.form.readOnly=lecture seule wao.ui.form.removeRole=retirer ce role -wao.ui.form.repeatPassword=R\u00E9p\u00E9ter le mot de passe -wao.ui.form.roles=R\u00F4les -wao.ui.form.sortByTideBegin=Trier par date de d\u00E9but d'observation (du plus r\u00E9cent au plus ancien) -wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00E9 -wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00E9 en cours. Vous pouvez continuer \u00E0 naviguer sur le site en attendant la fin du chargement. -wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00E9 -wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00E8s utilisateurs aux calendriers d'activit\u00E9 -wao.ui.import.boatDistrictLabel=des coordonn\u00E9es des quartiers des navires +wao.ui.form.repeatPassword=R\u00e9p\u00e9ter le mot de passe +wao.ui.form.roles=R\u00f4les +wao.ui.form.sortByTideBegin=Trier par date de d\u00e9but d'observation (du plus r\u00e9cent au plus ancien) +wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00e9 +wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00e9 en cours. Vous pouvez continuer \u00e0 naviguer sur le site en attendant la fin du chargement. +wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00e9 +wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00e8s utilisateurs aux calendriers d'activit\u00e9 +wao.ui.import.boatDistrictLabel=des coordonn\u00e9es des quartiers des navires wao.ui.import.boatsLabel=des navires wao.ui.import.description=Fichier %s %s \: -wao.ui.import.fishingZoneLabel=des zones de p\u00EAches +wao.ui.import.fishingZoneLabel=des zones de p\u00eaches wao.ui.import.fullDescription=Import %s (format %s avec encodage UTF-8) wao.ui.import.longTitle=Import/Export CSV (UTF-8) -wao.ui.import.samplingPlanLabel=du plan d'\u00E9chantillonnage -wao.ui.import.terrestrialDivisionsLabel=du r\u00E9f\u00E9rentiel de stratification spatiale (ObsDeb) +wao.ui.import.samplingPlanLabel=du plan d'\u00e9chantillonnage +wao.ui.import.terrestrialDivisionsLabel=du r\u00e9f\u00e9rentiel de stratification spatiale (ObsDeb) wao.ui.import.terrestrialLocationsLabel=des lieux terrestres wao.ui.import.title=Import %s wao.ui.indicator.andMore=%s et plus wao.ui.indicator.bounds=Bornes -wao.ui.indicator.coefficient=Pond\u00E9ration +wao.ui.indicator.coefficient=Pond\u00e9ration wao.ui.indicator.editions=Modifications wao.ui.indicator.indicator=Indicateur -wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00E9t\u00E9 selon cet indicateur. +wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00e9t\u00e9 selon cet indicateur. wao.ui.indicator.levels=Niveaux -wao.ui.indicator.useRightDecimalSymbol=Attention \u00E0 bien utiliser ',' et non '.' pour les d\u00E9cimales +wao.ui.indicator.useRightDecimalSymbol=Attention \u00e0 bien utiliser ',' et non '.' pour les d\u00e9cimales wao.ui.indicators.coefficientsSum=Total coefficient -wao.ui.indicators.title=Indicateurs qualit\u00E9s prestataires +wao.ui.indicators.title=Indicateurs qualit\u00e9s prestataires wao.ui.invalidLogin=Identifiant invalide -wao.ui.layout.userDescription=Vous \u00EAtes %s de la soci\u00E9t\u00E9 %s (%s) +wao.ui.layout.userDescription=Vous \u00eates %s de la soci\u00e9t\u00e9 %s (%s) wao.ui.message.chooseProfile=Choisissez dans la liste votre profil de connexion \: -wao.ui.misc.METIER=M\u00C9TIER -wao.ui.misc.N/A=non renseign\u00E9e -wao.ui.misc.accepted=Accept\u00E9 -wao.ui.misc.advancedSearch=Recherche avanc\u00E9e +wao.ui.misc.METIER=M\u00c9TIER +wao.ui.misc.N/A=non renseign\u00e9e +wao.ui.misc.accepted=Accept\u00e9 +wao.ui.misc.advancedSearch=Recherche avanc\u00e9e wao.ui.misc.by=par wao.ui.misc.changeOn=Modification du wao.ui.misc.comment=Commentaire -wao.ui.misc.commentAddedOn=Commentaire ajout\u00E9 le +wao.ui.misc.commentAddedOn=Commentaire ajout\u00e9 le wao.ui.misc.comments=Commentaires -wao.ui.misc.companies=Soci\u00E9t\u00E9s -wao.ui.misc.createdOnF=Cr\u00E9\u00E9e le -wao.ui.misc.creating=En cours de cr\u00E9ation +wao.ui.misc.companies=Soci\u00e9t\u00e9s +wao.ui.misc.createdOnF=Cr\u00e9\u00e9e le +wao.ui.misc.creating=En cours de cr\u00e9ation wao.ui.misc.dayOfWeek=Jour wao.ui.misc.export=Export wao.ui.misc.export.longTitle=Export CSV @@ -228,7 +229,7 @@ wao.ui.misc.logFile.description=Afficher le fichier de log de %s wao.ui.misc.no=Non wao.ui.misc.noComment=aucun commentaire -wao.ui.misc.notValidated=Non valid\u00E9 +wao.ui.misc.notValidated=Non valid\u00e9 wao.ui.misc.observationReport=Compte-rendu d'observation wao.ui.misc.observations=Observations wao.ui.misc.observer=Observateur @@ -238,79 +239,79 @@ wao.ui.misc.other=Autre wao.ui.misc.otherInfos=Autre information wao.ui.misc.others=Autres -wao.ui.misc.refused=R\u00E9fus\u00E9 +wao.ui.misc.refused=R\u00e9fus\u00e9 wao.ui.misc.since=depuis le wao.ui.misc.total=Total -wao.ui.misc.undefined=Non-d\u00E9fini -wao.ui.misc.validated=Valid\u00E9 +wao.ui.misc.undefined=Non-d\u00e9fini +wao.ui.misc.validated=Valid\u00e9 wao.ui.misc.week=Semaine -wao.ui.misc.year=Ann\u00E9e +wao.ui.misc.year=Ann\u00e9e wao.ui.misc.yes=Oui -wao.ui.nContactsFound=%s contacts trouv\u00E9s +wao.ui.nContactsFound=%s contacts trouv\u00e9s wao.ui.news.content=Texte wao.ui.news.title=Titre wao.ui.page.Administration.title=Administration wao.ui.page.Boats.title=Navires wao.ui.page.Cartography.title=Cartographie -wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00E0 des personnels ext\u00E9rieurs, soyez riguoureux dans la description de la capture accidentelle +wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00e0 des personnels ext\u00e9rieurs, soyez riguoureux dans la description de la capture accidentelle wao.ui.page.ContactForm.title=Modification d'un contact wao.ui.page.Contacts.title=Contacts wao.ui.page.Index.title=Accueil -wao.ui.page.SamplingPlan.title=Plan d'\u00E9chantillonnage -wao.ui.page.Synthesis.title=Synth\u00E8se +wao.ui.page.SamplingPlan.title=Plan d'\u00e9chantillonnage +wao.ui.page.Synthesis.title=Synth\u00e8se wao.ui.page.UserProfileForm.title=Gestion du profil -wao.ui.publishedByProgram=Publi\u00E9e par le programme -wao.ui.publishedByYourCompany=Publi\u00E9e par la soci\u00E9t\u00E9 -wao.ui.sampleRow.creation=Cr\u00E9ation d'une ligne du plan d'\u00E9chantillonnage +wao.ui.publishedByProgram=Publi\u00e9e par le programme +wao.ui.publishedByYourCompany=Publi\u00e9e par la soci\u00e9t\u00e9 +wao.ui.sampleRow.creation=Cr\u00e9ation d'une ligne du plan d'\u00e9chantillonnage wao.ui.sampleRow.edition=Modification de la ligne %s wao.ui.sampleRowLog.title=Historique de la ligne %s wao.ui.samplingPlan.actions=Actions -wao.ui.samplingPlan.actual=r\u00E9alis\u00E9 -wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00E9chantillonnage -wao.ui.samplingPlan.averageTideTime=Dur\u00E9e moyenne d'une mar\u00E9e (J.) -wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00E9es -wao.ui.samplingPlan.estimated=estim\u00E9 -wao.ui.samplingPlan.expected=planifi\u00E9 -wao.ui.samplingPlan.export=Exporter le plan d'\u00E9chantillonnage du %s au %s +wao.ui.samplingPlan.actual=r\u00e9alis\u00e9 +wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00e9chantillonnage +wao.ui.samplingPlan.averageTideTime=Dur\u00e9e moyenne d'une mar\u00e9e (J.) +wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00e9es +wao.ui.samplingPlan.estimated=estim\u00e9 +wao.ui.samplingPlan.expected=planifi\u00e9 +wao.ui.samplingPlan.export=Exporter le plan d'\u00e9chantillonnage du %s au %s wao.ui.samplingPlan.fishingZoneInfo=Zone autre(s) info(s) wao.ui.samplingPlan.months=Mois wao.ui.samplingPlan.nbObservants=Nb. d'observateurs -wao.ui.samplingPlan.program=Programme ou r\u00E8glement rattachement -wao.ui.samplingPlan.sampledProfessions=M\u00E9tiers \u00E9chantillonn\u00E9s -wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00E9alis\u00E9 pour les contacts valid\u00E9s seulement -wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00E9 pour les contacts valid\u00E9s ou non par la soci\u00E9t\u00E9 -wao.ui.samplingPlan.title=Plan d'\u00E9chantillonnage -wao.ui.synthesis.allegroReactivity.description=Ce r\u00E9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00E9es et la date de fin d'observation. -wao.ui.synthesis.allegroReactivity.title=R\u00E9activit\u00E9 quant \u00E0 la saisie des donn\u00E9es +wao.ui.samplingPlan.program=Programme ou r\u00e8glement rattachement +wao.ui.samplingPlan.sampledProfessions=M\u00e9tiers \u00e9chantillonn\u00e9s +wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00e9alis\u00e9 pour les contacts valid\u00e9s seulement +wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00e9 pour les contacts valid\u00e9s ou non par la soci\u00e9t\u00e9 +wao.ui.samplingPlan.title=Plan d'\u00e9chantillonnage +wao.ui.synthesis.allegroReactivity.description=Ce r\u00e9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00e9es et la date de fin d'observation. +wao.ui.synthesis.allegroReactivity.title=R\u00e9activit\u00e9 quant \u00e0 la saisie des donn\u00e9es wao.ui.synthesis.boarding.boardingCount=Au total, %s observations invalides sur %s observations. -wao.ui.synthesis.boarding.description=Ces r\u00E9sultats ne concernent que les lignes du plan d'\u00E9chantillonnage ayant une dur\u00E9e moyenne de mar\u00E9es inf\u00E9rieure ou \u00E9gale \u00E0 48h. -wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00E9 avec %s observations (tous programmes confondus) \: %s (%s) +wao.ui.synthesis.boarding.description=Ces r\u00e9sultats ne concernent que les lignes du plan d'\u00e9chantillonnage ayant une dur\u00e9e moyenne de mar\u00e9es inf\u00e9rieure ou \u00e9gale \u00e0 48h. +wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00e9 avec %s observations (tous programmes confondus) \: %s (%s) wao.ui.synthesis.boarding.title=Sollicitations des navires -wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00E9vu d'observateurs pour chaque mar\u00E9e r\u00E9alis\u00E9e. -wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00E9s -wao.ui.synthesis.contactsStates.description=Ces r\u00E9sultats concernent l'ensemble des \u00E9tats des contacts except\u00E9 ceux qui ont \u00E9t\u00E9 refus\u00E9s par le programme. -wao.ui.synthesis.contactsStates.title=\u00C9tats des contacts -wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00E9es exploitables par rapport nombre de mar\u00E9e r\u00E9alis\u00E9es. -wao.ui.synthesis.dataReliability.title=Qualit\u00E9 de la donn\u00E9e -wao.ui.synthesis.dataSampling.title=Donn\u00E9es des mar\u00E9es (r\u00E9alis\u00E9 / planifi\u00E9) +wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00e9vu d'observateurs pour chaque mar\u00e9e r\u00e9alis\u00e9e. +wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00e9s +wao.ui.synthesis.contactsStates.description=Ces r\u00e9sultats concernent l'ensemble des \u00e9tats des contacts except\u00e9 ceux qui ont \u00e9t\u00e9 refus\u00e9s par le programme. +wao.ui.synthesis.contactsStates.title=\u00c9tats des contacts +wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00e9es exploitables par rapport nombre de mar\u00e9e r\u00e9alis\u00e9es. +wao.ui.synthesis.dataReliability.title=Qualit\u00e9 de la donn\u00e9e +wao.ui.synthesis.dataSampling.title=Donn\u00e9es des mar\u00e9es (r\u00e9alis\u00e9 / planifi\u00e9) wao.ui.synthesis.distinctBoatsCounts.axisName=Nombre de navires distincts -wao.ui.synthesis.distinctBoatsCounts.categoryName=Mois de l'ann\u00E9e -wao.ui.synthesis.distinctBoatsCounts.description=Nombre de navires distincts observ\u00E9s selon le mois de l'ann\u00E9e -wao.ui.synthesis.distinctBoatsCounts.title=Nombre de navires observ\u00E9s -wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00E8se global -wao.ui.synthesis.globalSynthesis.title=Synth\u00E8se globale -wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00E8se globale (selon estimations) -wao.ui.synthesis.log.description=Cette page pr\u00E9sente toutes les modifications effectu\u00E9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs. -wao.ui.synthesis.log.empty=Aucune modification n'a \u00E9t\u00E9 apport\u00E9e \u00E0 ce jour +wao.ui.synthesis.distinctBoatsCounts.categoryName=Mois de l'ann\u00e9e +wao.ui.synthesis.distinctBoatsCounts.description=Nombre de navires distincts observ\u00e9s selon le mois de l'ann\u00e9e +wao.ui.synthesis.distinctBoatsCounts.title=Nombre de navires observ\u00e9s +wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00e8se global +wao.ui.synthesis.globalSynthesis.title=Synth\u00e8se globale +wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00e8se globale (selon estimations) +wao.ui.synthesis.log.description=Cette page pr\u00e9sente toutes les modifications effectu\u00e9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs. +wao.ui.synthesis.log.empty=Aucune modification n'a \u00e9t\u00e9 apport\u00e9e \u00e0 ce jour wao.ui.synthesis.log.entry.author=Auteur de la modification -wao.ui.synthesis.log.entry.comment=Commentaire associ\u00E9 +wao.ui.synthesis.log.entry.comment=Commentaire associ\u00e9 wao.ui.synthesis.log.entry.date=Date de la modification -wao.ui.synthesis.log.entry.summary=Modifications effectu\u00E9es -wao.ui.synthesis.log.title=Historique des modifications des param\u00E8tres de la synth\u00E8se globale +wao.ui.synthesis.log.entry.summary=Modifications effectu\u00e9es +wao.ui.synthesis.log.title=Historique des modifications des param\u00e8tres de la synth\u00e8se globale wao.ui.synthesis.observationHours.axisName=Nombre d'observations -wao.ui.synthesis.observationHours.categoryName=Heures de la journ\u00E9e -wao.ui.synthesis.observationHours.description=Nombre d'observations effectu\u00E9e selon l'heure d'arriv\u00E9e -wao.ui.synthesis.observationHours.title=Distribution des p\u00E9riodes d'observation -wao.ui.unavailableOperation=Op\u00E9ration non-disponible +wao.ui.synthesis.observationHours.categoryName=Heures de la journ\u00e9e +wao.ui.synthesis.observationHours.description=Nombre d'observations effectu\u00e9e selon l'heure d'arriv\u00e9e +wao.ui.synthesis.observationHours.title=Distribution des p\u00e9riodes d'observation +wao.ui.unavailableOperation=Op\u00e9ration non-disponible wao.ui.userList=Liste des utilisateurs wao.ui.validLogin=Identifiant valide Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-16 15:00:58 UTC (rev 1276) +++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-16 15:01:33 UTC (rev 1277) @@ -139,6 +139,18 @@ </span> </p:boatCell> + <!-- substitutes boats --> + <p:substitutesHeader> + ${message:wao.ui.boats.substitutes} + </p:substitutesHeader> + <p:substitutesCell> + <t:loop source="substitutes" value="substitute"> + <span t:type="ck/Tooltip" title="Infos" t:value="prop:boatDescription" t:effect="appear"> + ${substitute.name} + </span> + </t:loop> + </p:substitutesCell> + <!-- observers --> <p:observersHeader> ${message:wao.ui.field.SampleRow.observers}
participants (1)
-
bleny@users.labs.libre-entreprise.org