Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
April 2011
- 3 participants
- 122 discussions
[Suiviobsmer-commits] r1154 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/resources/i18n wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/base wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/resources/fr/ifremer/wao/ui/components wao-ui/src/main/webapp
by sletellier@users.labs.libre-entreprise.org 07 Apr '11
by sletellier@users.labs.libre-entreprise.org 07 Apr '11
07 Apr '11
Author: sletellier
Date: 2011-04-07 08:43:40 +0000 (Thu, 07 Apr 2011)
New Revision: 1154
Log:
Final pass of refactor, AbstractFilteredPage can be removed
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterValuesImpl.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ContactFilterManager.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ContactFilterComponent.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/FilterComponent.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ContactFilterComponent.tml
Removed:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/AbstractFilterComponent.java
Modified:
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/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-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingFilterManager.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/BoatFilterComponent.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/TopiaEntitySelector.tml
trunk/wao-ui/src/main/webapp/Contacts.tml
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterValuesImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterValuesImpl.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterValuesImpl.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -0,0 +1,48 @@
+package fr.ifremer.wao.bean;
+
+import fr.ifremer.wao.entity.ContactStateMotif;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author sletellier <letellier at codelutin.com>
+ */
+public class ContactFilterValuesImpl extends ContactFilterValues {
+
+ @Override
+ public void addContactStateMotifs(ContactStateMotif toAdd) {
+ if (toAdd == null) {
+ return;
+ }
+ if (getContactStateMotifs() == null) {
+ setContactStateMotifs(new ArrayList<ContactStateMotif>());
+ }
+ if (!containsContactStateMotifs(toAdd)) {
+ super.addContactStateMotifs(toAdd);
+ }
+ }
+
+ @Override
+ public void addAllContactStateMotifs(Collection<ContactStateMotif> toAdds) {
+ if (toAdds == null) {
+ return;
+ }
+ if (getContactStateMotifs() == null) {
+ setContactStateMotifs(new ArrayList<ContactStateMotif>());
+ }
+ if (!containsAllContactStateMotifs(toAdds)) {
+ super.addAllContactStateMotifs(toAdds);
+ } else {
+ for (ContactStateMotif toAdd : toAdds) {
+ addContactStateMotifs(toAdd);
+ }
+ }
+ }
+
+ @Override
+ public List<ContactStateMotif> getContactStateMotifsAsList() {
+ return getAsList(getContactStateMotifs());
+ }
+}
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-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -701,6 +701,12 @@
protected BoatFilterValues executeGetPossibleValuesForFilter(TopiaContext transaction, BoatFilter filter) throws Exception {
BoatFilterValues result = new BoatFilterValuesImpl();
+
+ Integer startIndex = filter.getStartIndex();
+ Integer endIndex = filter.getEndIndex();
+ filter.setStartIndex(null);
+ filter.setEndIndex(null);
+
if (filter.getFacadeName() == null && filter.getSectorName() == null) {
ServiceReferential serviceReferential = context.getServiceFactory().getServiceReferential();
ServiceSampling serviceSampling = context.getServiceFactory().getServiceSampling();
@@ -723,6 +729,9 @@
result.fill(rows);
}
+ filter.setStartIndex(startIndex);
+ filter.setEndIndex(endIndex);
+
return result;
}
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-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -38,6 +38,8 @@
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ContactFilter;
import fr.ifremer.wao.bean.ContactFilterImpl;
+import fr.ifremer.wao.bean.ContactFilterValues;
+import fr.ifremer.wao.bean.ContactFilterValuesImpl;
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.ContactStatus;
import fr.ifremer.wao.bean.ContactStatus.NullSampleMonthException;
@@ -109,6 +111,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
@@ -1524,4 +1527,30 @@
return contactFilter;
}
+
+ @Override
+ protected ContactFilterValues executeGetPossibleValuesForFilter(TopiaContext transaction, ContactFilter filter) throws Exception {
+
+ // Dont use index
+ Integer startIndex = filter.getStartIndex();
+ Integer endIndex = filter.getEndIndex();
+ filter.setStartIndex(null);
+ filter.setEndIndex(null);
+ Map<String, Contact> contacts = executeGetContacts(transaction, filter);
+ filter.setStartIndex(startIndex);
+ filter.setEndIndex(endIndex);
+
+ ContactFilterValues result = new ContactFilterValuesImpl();
+ List<SampleRow> rows = extractSampleRows(contacts.values());
+ result.fill(rows);
+ return result;
+ }
+
+ protected List<SampleRow> extractSampleRows(Collection<Contact> contacts) {
+ List<SampleRow> result = new ArrayList<SampleRow>();
+ for (Contact contact : contacts) {
+ result.add(contact.getSampleRow());
+ }
+ return result;
+ }
}
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-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-04-07 08:43:40 UTC (rev 1154)
@@ -164,6 +164,7 @@
wao.error.serviceContact.getContacts=
wao.error.serviceContact.getNbContacts=
wao.error.serviceContact.getNewContact=
+wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.importContactCsv=
wao.error.serviceContact.newContactFilter=
wao.error.serviceContact.saveComment=
@@ -211,6 +212,7 @@
wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=
wao.error.serviceSampling.importSamplingPlanCsv=
wao.error.serviceSampling.newSamplingFilter=
+wao.error.serviceSampling.validateSampleRow=
wao.error.serviceSynthesis.getAllIndicatorLogs=
wao.error.serviceSynthesis.getBoardingBoats=
wao.error.serviceSynthesis.getComplianceBoardingIndicator=
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-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-04-07 08:43:40 UTC (rev 1154)
@@ -164,6 +164,7 @@
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.getNewContact=Impossible d'instancier un nouveau contact
+wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts
wao.error.serviceContact.newContactFilter=
wao.error.serviceContact.saveComment=
@@ -211,6 +212,7 @@
wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00E9cup\u00E9rer la liste des lignes du plan d'\u00E9chantillonnage
wao.error.serviceSampling.importSamplingPlanCsv=Erreur \u00E0 la ligne %1$d [CODE \= %2$s]
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.getComplianceBoardingIndicator=
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ContactFilterManager.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ContactFilterManager.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ContactFilterManager.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -0,0 +1,67 @@
+package fr.ifremer.wao.ui.base;
+
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ContactFilter;
+import fr.ifremer.wao.bean.ContactFilterValues;
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.service.ServiceContact;
+import org.apache.tapestry5.SelectModel;
+import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.util.EnumSelectModel;
+
+import java.util.List;
+
+/**
+ * @author sletellier <letellier at codelutin.com>
+ */
+public class ContactFilterManager extends FilterManager<ContactFilter> {
+
+ protected ServiceContact serviceContact;
+
+ /*
+ * Datas
+ */
+ protected ContactFilterValues possibleValuesForFilter;
+
+ public ContactFilterManager(ConnectedUser user, ServiceContact serviceContact) {
+ super(user);
+ this.serviceContact = serviceContact;
+ }
+
+ @Override
+ public void resetFilter() {
+ filter = serviceContact.newContactFilter(user);
+ }
+
+ @Override
+ protected boolean isAvailableDataForFiltersOnly() {
+ return false;
+ }
+
+ @Override
+ public void updateSearchFields() {
+ updatePossibleValuesForFilter();
+ }
+
+ public ContactFilterValues getPossibleValuesForFilter() {
+ return getPossibleValuesForFilter(false);
+ }
+
+ public ContactFilterValues updatePossibleValuesForFilter() {
+ return getPossibleValuesForFilter(true);
+ }
+
+ protected ContactFilterValues getPossibleValuesForFilter(boolean update) {
+ if (update || possibleValuesForFilter == null) {
+ possibleValuesForFilter = serviceContact.getPossibleValuesForFilter(getFilter());
+ }
+ return possibleValuesForFilter;
+ }
+
+ public SelectModel getContactStateSelectModel(Messages messages) {
+ List<ContactState> allowedStates = ContactState.getAllowedStates(user.getProfile().getObsProgram());
+ return new EnumSelectModel(ContactState.class, messages,
+ // just convert list to array
+ allowedStates.toArray(new ContactState[allowedStates.size()]));
+ }
+}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingFilterManager.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingFilterManager.java 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/SamplingFilterManager.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -27,6 +27,7 @@
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterValues;
import fr.ifremer.wao.service.ServiceSampling;
+import org.nuiton.util.PeriodDates;
/**
* @author sletellier <letellier at codelutin.com>
@@ -58,7 +59,13 @@
@Override
public void resetFilter() {
+ // Don't reset period in filters
+ PeriodDates period = (filter == null ? null : filter.getPeriod());
filter = serviceSampling.newSamplingFilter(user);
+
+ if (period != null) {
+ filter.setPeriod(period);
+ }
}
@Override
Deleted: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/AbstractFilterComponent.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/AbstractFilterComponent.java 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/AbstractFilterComponent.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -1,109 +0,0 @@
-package fr.ifremer.wao.ui.components;
-
-import fr.ifremer.wao.bean.SamplingFilter;
-import fr.ifremer.wao.ui.base.FilterManager;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.corelib.components.Zone;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.slf4j.Logger;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
-/**
- * @author sletellier <letellier at codelutin.com>
- */
-public abstract class AbstractFilterComponent<E extends SamplingFilter, F extends FilterManager<E>> {
-
- @Inject
- private Logger log;
-
- @Inject
- private ComponentResources resources;
-
- @Parameter(required = true)
- private F filterManager;
-
- @Parameter(required = false)
- private Boolean visibleOnStartup;
-
- @InjectComponent
- private Zone filtersZone;
-
- @Persist
- private Boolean filtersVisible;
-
- public ComponentResources getResources() {
- return resources;
- }
-
- // True by default
- public Boolean getVisibleOnStartup() {
- if (visibleOnStartup == null) {
- visibleOnStartup = true;
- }
- return visibleOnStartup;
- }
-
- public Boolean getFiltersVisible() {
- if (filtersVisible == null) {
- filtersVisible = getVisibleOnStartup();
- }
- return filtersVisible;
- }
-
- public void setFiltersVisible(Boolean filtersVisible) {
- this.filtersVisible = filtersVisible;
- }
-
- public void switchFiltersVisible() {
- filtersVisible = !filtersVisible;
- }
-
- public Zone getFiltersZone() {
- return filtersZone;
- }
-
- public E getFilter() {
- return filterManager.getFilter();
- }
-
- public F getFilterManager() {
- return filterManager;
- }
-
- public void setFilterManager(F filterManager) {
- this.filterManager = filterManager;
- }
-
- public DateFormat getDateFormat() {
- return new SimpleDateFormat("MM/yyyy");
- }
-
- /**
- * Activate reset filter
- */
- private boolean reset;
- private boolean refresh;
-
- public boolean isReset() {
- return reset;
- }
-
- public boolean isRefresh() {
- return refresh;
- }
-
- public void onSelectedFromReset() {
- reset = true;
- }
-
- public void onSelectedFromRefresh() {
- refresh = true;
- }
-
- public abstract Object onSuccessFromFiltersForm();
-}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/BoatFilterComponent.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/BoatFilterComponent.java 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/BoatFilterComponent.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -9,7 +9,7 @@
/**
* @author sletellier <letellier at codelutin.com>
*/
-public class BoatFilterComponent extends AbstractFilterComponent<BoatFilter, BoatFilterManager> {
+public class BoatFilterComponent extends FilterComponent<BoatFilter, BoatFilterManager> {
@InjectComponent
private FeedBack filterFeedback;
@@ -24,24 +24,6 @@
return getFilterManager().getPossibleValuesForFilter();
}
- @Override
- public Object onSuccessFromFiltersForm() {
- if (isReset()) {
- getFilterManager().resetFilter();
- }
-
- // Limite search panel
- getFilterManager().updatePossibleValuesForFilter();
-
- if (isRefresh()) {
- // Refresh search panel
- return this;
- } else {
- // Refresh owner
- return getResources().getContainer();
- }
- }
-
public String[] onProvideCompletionsFromShipOwnerName(String input) {
return getFilterManager().getShipOwnerNamesContains(input);
}
@@ -49,4 +31,8 @@
public String[] onProvideCompletionsFromBoatName(String input) throws WaoException {
return getFilterManager().getBoatNamesStartWith(input);
}
+
+ public boolean isSampleRowExists() {
+ return getFilterManager().isSampleRowExists();
+ }
}
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ContactFilterComponent.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ContactFilterComponent.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ContactFilterComponent.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -0,0 +1,31 @@
+package fr.ifremer.wao.ui.components;
+
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ContactFilter;
+import fr.ifremer.wao.bean.ContactFilterValues;
+import fr.ifremer.wao.ui.base.ContactFilterManager;
+import org.apache.tapestry5.SelectModel;
+import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.ioc.annotations.Inject;
+
+/**
+ * @author sletellier <letellier at codelutin.com>
+ */
+public class ContactFilterComponent extends FilterComponent<ContactFilter, ContactFilterManager> {
+
+ @Inject
+ private Messages messages;
+
+ public ConnectedUser getUser() {
+ return getFilterManager().getUser();
+ }
+
+ public ContactFilterValues getPossibleValuesForFilter() {
+
+ return getFilterManager().getPossibleValuesForFilter();
+ }
+
+ public SelectModel getContactStateSelectModel() {
+ return getFilterManager().getContactStateSelectModel(messages);
+ }
+}
Copied: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/FilterComponent.java (from rev 1143, trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/AbstractFilterComponent.java)
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/FilterComponent.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/FilterComponent.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -0,0 +1,124 @@
+package fr.ifremer.wao.ui.components;
+
+import fr.ifremer.wao.bean.SamplingFilter;
+import fr.ifremer.wao.ui.base.FilterManager;
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.annotations.InjectComponent;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.corelib.components.Zone;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.slf4j.Logger;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+/**
+ * @author sletellier <letellier at codelutin.com>
+ */
+public abstract class FilterComponent<E extends SamplingFilter, F extends FilterManager<E>> {
+
+ @Inject
+ private Logger log;
+
+ @Inject
+ private ComponentResources resources;
+
+ @Parameter(required = true)
+ private F filterManager;
+
+ @Parameter(required = false)
+ private Boolean visibleOnStartup;
+
+ @InjectComponent
+ private Zone filtersZone;
+
+ @Persist
+ private Boolean filtersVisible;
+
+ public ComponentResources getResources() {
+ return resources;
+ }
+
+ // True by default
+ public Boolean getVisibleOnStartup() {
+ if (visibleOnStartup == null) {
+ visibleOnStartup = true;
+ }
+ return visibleOnStartup;
+ }
+
+ public Boolean getFiltersVisible() {
+ if (filtersVisible == null) {
+ filtersVisible = getVisibleOnStartup();
+ }
+ return filtersVisible;
+ }
+
+ public void setFiltersVisible(Boolean filtersVisible) {
+ this.filtersVisible = filtersVisible;
+ }
+
+ public void switchFiltersVisible() {
+ filtersVisible = !filtersVisible;
+ }
+
+ public Zone getFiltersZone() {
+ return filtersZone;
+ }
+
+ public E getFilter() {
+ return filterManager.getFilter();
+ }
+
+ public F getFilterManager() {
+ return filterManager;
+ }
+
+ public void setFilterManager(F filterManager) {
+ this.filterManager = filterManager;
+ }
+
+ public DateFormat getDateFormat() {
+ return new SimpleDateFormat("MM/yyyy");
+ }
+
+ /**
+ * Activate reset filter
+ */
+ private boolean reset;
+ private boolean refresh;
+
+ public boolean isReset() {
+ return reset;
+ }
+
+ public boolean isRefresh() {
+ return refresh;
+ }
+
+ public void onSelectedFromReset() {
+ reset = true;
+ }
+
+ public void onSelectedFromRefresh() {
+ refresh = true;
+ }
+
+ public Object onSuccessFromFiltersForm() {
+ if (isReset()) {
+ getFilterManager().resetFilter();
+ }
+
+ // Limite search panel
+ getFilterManager().updateSearchFields();
+
+ if (isRefresh()) {
+ // Refresh search panel
+ return this;
+ } else {
+ // Refresh owner
+ return getResources().getContainer();
+ }
+ }
+}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -27,12 +27,11 @@
import fr.ifremer.wao.bean.SamplingFilterValues;
import fr.ifremer.wao.ui.base.SamplingFilterManager;
import org.apache.tapestry5.annotations.Parameter;
-import org.nuiton.util.PeriodDates;
/**
* @author sletellier <letellier at codelutin.com>
*/
-public class SamplingFilterComponent extends AbstractFilterComponent<SamplingFilter, SamplingFilterManager> {
+public class SamplingFilterComponent extends FilterComponent<SamplingFilter, SamplingFilterManager> {
@Parameter(required = false)
private Boolean showEstimatedTides;
@@ -55,30 +54,4 @@
public String getLegendMsg() {
return legendMsg;
}
-
- /**
- * Do filtering
- *
- * @return owner (for refresh) if filter is edited
- */
- @Override
- public Object onSuccessFromFiltersForm() {
- if (isReset()) {
- // Don't reset period in filters
- PeriodDates period = getFilter().getPeriod();
- getFilterManager().resetFilter();
- getFilter().setPeriod(period);
- }
-
- // Limite search panel
- getFilterManager().updatePossibleValuesForFilter();
-
- if (isRefresh()) {
- // Refresh search panel
- return getFiltersZone().getBody();
- } else {
- // Refresh owner
- return getResources().getContainer();
- }
- }
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -72,6 +72,9 @@
private Boolean multiple;
@Parameter(required = false)
+ private Boolean disabled;
+
+ @Parameter(required = false)
private E selectedValue;
@Parameter(required = false)
@@ -191,6 +194,17 @@
this.multiple = multiple;
}
+ public Boolean getDisabled() {
+ if (disabled == null) {
+ disabled = false;
+ }
+ return disabled;
+ }
+
+ public void setDisabled(Boolean disabled) {
+ this.disabled = disabled;
+ }
+
/**
* Model used by {@link fr.ifremer.wao.ui.components.TopiaEntitySelector}
*
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -26,7 +26,6 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.BoatFilter;
-import fr.ifremer.wao.bean.BoatFilterImpl;
import fr.ifremer.wao.bean.CompanyBoatInfos;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.SamplingFilter;
@@ -36,17 +35,14 @@
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.ElligibleBoat;
-import fr.ifremer.wao.entity.Profession;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.service.ServiceBoat;
import fr.ifremer.wao.service.ServiceContact;
import fr.ifremer.wao.service.ServiceReferential;
import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.service.ServiceUser;
-import fr.ifremer.wao.ui.base.AbstractFilteredPage;
import fr.ifremer.wao.ui.base.BoatFilterManager;
import fr.ifremer.wao.ui.components.BoatFilterComponent;
-import fr.ifremer.wao.ui.components.FeedBack;
import fr.ifremer.wao.ui.components.Layout;
import fr.ifremer.wao.ui.data.BoatDataSource;
import fr.ifremer.wao.ui.data.ExportStreamResponse;
@@ -56,7 +52,6 @@
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.Block;
-import org.apache.tapestry5.EventContext;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.StreamResponse;
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2011-04-07 08:43:40 UTC (rev 1154)
@@ -28,20 +28,17 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ContactFilter;
-import fr.ifremer.wao.bean.ContactFilterImpl;
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.bean.ValidationResult;
import fr.ifremer.wao.entity.Contact;
-import fr.ifremer.wao.entity.ContactStateMotif;
-import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.io.ImportResults;
import fr.ifremer.wao.service.ServiceContact;
import fr.ifremer.wao.service.ServiceReferential;
import fr.ifremer.wao.service.ServiceUser;
-import fr.ifremer.wao.ui.base.AbstractFilteredPage;
+import fr.ifremer.wao.ui.base.ContactFilterManager;
import fr.ifremer.wao.ui.components.Layout;
import fr.ifremer.wao.ui.data.ContactDataSource;
import fr.ifremer.wao.ui.data.ExportStreamResponse;
@@ -52,7 +49,6 @@
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.Import;
@@ -69,16 +65,12 @@
import org.apache.tapestry5.services.BeanModelSource;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;
import org.apache.tapestry5.upload.services.UploadedFile;
-import org.apache.tapestry5.util.EnumSelectModel;
import org.slf4j.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
import java.util.List;
/**
@@ -92,7 +84,7 @@
@SuppressWarnings({"UnusedDeclaration"})
@RequiresAuthentication(allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
@Import(stylesheet = "context:css/contacts.css")
-public class Contacts extends AbstractFilteredPage {
+public class Contacts {
@Inject
private Logger logger;
@@ -116,6 +108,20 @@
@Inject
private Messages messages;
+ @Persist
+ private ContactFilterManager filterManager;
+
+ public ContactFilterManager getFilterManager() {
+ if (filterManager == null) {
+ filterManager = new ContactFilterManager(user, serviceContact);
+ }
+ return filterManager;
+ }
+
+ public void setFilterManager(ContactFilterManager filterManager) {
+ this.filterManager = filterManager;
+ }
+
public String getLabelForEnum(Enum value) {
return messages.get(value.getDeclaringClass().getSimpleName() + "." + value.name());
}
@@ -123,17 +129,10 @@
@Log
void setupRender() throws WaoException {
contacts = null;
- // Initialize filters if needed
- if (isFiltersVisible()) {
- initSelectFilters(true, true, true);
- }
// Initialize fullView to true for admin user
if (fullView == null) {
fullView = user.isAdmin();
}
-
- // The company of connected user will be contributed to abstractFilteredPage
- initCompanyFilter();
}
@Log
@@ -146,8 +145,8 @@
@Persist
private ContactFilter contactFilter;
- @InjectComponent
- private Zone filtersZone;
+// @InjectComponent
+// private Zone filtersZone;
@InjectComponent
private Zone importExportZone;
@@ -158,13 +157,7 @@
private ContactState stateFilter;
public ContactFilter getContactFilter() throws WaoException {
- if (contactFilter == null) {
- if (logger.isDebugEnabled()) {
- logger.debug("Init contactFilter");
- }
- contactFilter = serviceContact.newContactFilter(user);
- }
- return contactFilter;
+ return getFilterManager().getFilter();
}
public boolean isFiltersVisible() {
@@ -174,22 +167,10 @@
StringUtils.isEmpty(getContactFilter().getBoatName());
}
- @Override
protected SamplingFilter getFilter() throws WaoException {
return getContactFilter();
}
- @Override
- protected boolean isAvailableDataForFiltersOnly() {
- return false;
- }
-
- Object onActionFromShowFilters() {
- // Initialize filters
- initSelectFilters(true, true, true);
- return filtersZone.getBody();
- }
-
Object onActionFromShowImportExport() {
return importExportZone.getBody();
}
@@ -198,90 +179,90 @@
reset = true;
}
- @Log
- Object onSuccessFromFiltersForm() throws WaoException {
- if (StringUtils.isNotEmpty(contactStateMotifId)) {
- getContactFilter().setContactStateMotif(getContactStateMotifSelectModel().findObject(contactStateMotifId));
- }
- if (isEdited()) {
- return filtersZone.getBody();
- }
- if (reset) {
- contactFilter = null;
- }
-// else {
-// filtersVisible = true;
+// @Log
+// Object onSuccessFromFiltersForm() throws WaoException {
+// if (StringUtils.isNotEmpty(contactStateMotifId)) {
+// getContactFilter().setContactStateMotif(getContactStateMotifSelectModel().findObject(contactStateMotifId));
// }
- return this;
- }
+// if (isEdited()) {
+// return filtersZone.getBody();
+// }
+// if (reset) {
+// contactFilter = null;
+// }
+//// else {
+//// filtersVisible = true;
+//// }
+// return this;
+// }
- public void onChangeFromSampleRow(String sampleRowId) {
- getFilter().setSampleRow(getSampleRowSelectModel().findObject(sampleRowId));
- if (logger.isDebugEnabled()) {
- logger.debug("change sample row code in filter to " + getFilter().getSampleRow());
- }
- }
+// public void onChangeFromSampleRow(String sampleRowId) {
+// getFilter().setSampleRow(getSampleRowSelectModel().findObject(sampleRowId));
+// if (logger.isDebugEnabled()) {
+// logger.debug("change sample row code in filter to " + getFilter().getSampleRow());
+// }
+// }
@Inject
private ServiceReferential serviceReferential;
- @Property
- @Persist
- private String terrestrialLocationId;
+// @Property
+// @Persist
+// private String terrestrialLocationId;
- public Zone onValueChangedTerrestrialDistrict(String terrestrialDistrictId) {
- updateLocation(terrestrialDistrictId);
- return filtersZone;
- }
+// public Zone onValueChangedTerrestrialDistrict(String terrestrialDistrictId) {
+// updateLocation(terrestrialDistrictId);
+// return filtersZone;
+// }
- private GenericSelectModel<TerrestrialLocation> terrestrialLocationSelectModel;
+// private GenericSelectModel<TerrestrialLocation> terrestrialLocationSelectModel;
+//
+// public GenericSelectModel<TerrestrialLocation> getTerrestrialLocationSelectModel() {
+// List<TerrestrialLocation> locations = new ArrayList<TerrestrialLocation>();
+// if (getFilter().getTerrestrialDistrict() != null) {
+// // it may occurs if the user reset the filters
+// serviceReferential.getAllTerrestrialLocations(getContactFilter(),
+// getFilter().getTerrestrialDistrict().getDistrictCode());
+// }
+// terrestrialLocationSelectModel = new GenericSelectModel<TerrestrialLocation>(locations,
+// TerrestrialLocation.class, "description", TerrestrialLocation.TOPIA_ID, propertyAccess);
+// return terrestrialLocationSelectModel;
+// }
- public GenericSelectModel<TerrestrialLocation> getTerrestrialLocationSelectModel() {
- List<TerrestrialLocation> locations = new ArrayList<TerrestrialLocation>();
- if (getFilter().getTerrestrialDistrict() != null) {
- // it may occurs if the user reset the filters
- serviceReferential.getAllTerrestrialLocations(getContactFilter(),
- getFilter().getTerrestrialDistrict().getDistrictCode());
- }
- terrestrialLocationSelectModel = new GenericSelectModel<TerrestrialLocation>(locations,
- TerrestrialLocation.class, "description", TerrestrialLocation.TOPIA_ID, propertyAccess);
- return terrestrialLocationSelectModel;
- }
+// public SelectModel getContactStateSelectModel() {
+// List<ContactState> allowedStates = ContactState.getAllowedStates(user.getProfile().getObsProgram());
+// return new EnumSelectModel(ContactState.class, messages,
+// // just convert list to array
+// allowedStates.toArray(new ContactState[allowedStates.size()]));
+// }
- public SelectModel getContactStateSelectModel() {
- List<ContactState> allowedStates = ContactState.getAllowedStates(user.getProfile().getObsProgram());
- return new EnumSelectModel(ContactState.class, messages,
- // just convert list to array
- allowedStates.toArray(new ContactState[allowedStates.size()]));
- }
+// @Property
+// @Persist
+// private String contactStateMotifId;
+//
+// private GenericSelectModel<ContactStateMotif> contactStateMotifSelectModel;
+//
+// public GenericSelectModel<ContactStateMotif> getContactStateMotifSelectModel() {
+// if (contactStateMotifSelectModel == null) {
+// if (contactFilter.getState() != null) {
+// List<ContactStateMotif> motifs = serviceReferential.getAllContactStateMotifs(contactFilter.getState());
+// if (motifs.size() != 0) {
+// contactStateMotifSelectModel = new GenericSelectModel<ContactStateMotif>(
+// motifs, ContactStateMotif.class, "translation", ContactStateMotif.TOPIA_ID, propertyAccess);
+// }
+// }
+// }
+// return contactStateMotifSelectModel;
+// }
- @Property
- @Persist
- private String contactStateMotifId;
+// public Zone onValueChangedFromState(ContactState contactState) {
+// contactFilter.setState(contactState);
+// // refresh
+// contactStateMotifSelectModel = null;
+// contactStateMotifId = null;
+// return filtersZone;
+// }
- private GenericSelectModel<ContactStateMotif> contactStateMotifSelectModel;
-
- public GenericSelectModel<ContactStateMotif> getContactStateMotifSelectModel() {
- if (contactStateMotifSelectModel == null) {
- if (contactFilter.getState() != null) {
- List<ContactStateMotif> motifs = serviceReferential.getAllContactStateMotifs(contactFilter.getState());
- if (motifs.size() != 0) {
- contactStateMotifSelectModel = new GenericSelectModel<ContactStateMotif>(
- motifs, ContactStateMotif.class, "translation", ContactStateMotif.TOPIA_ID, propertyAccess);
- }
- }
- }
- return contactStateMotifSelectModel;
- }
-
- public Zone onValueChangedFromState(ContactState contactState) {
- contactFilter.setState(contactState);
- // refresh
- contactStateMotifSelectModel = null;
- contactStateMotifId = null;
- return filtersZone;
- }
-
/**************************** CONTACT IMPORT/EXPORT ***********************/
@Property
Added: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ContactFilterComponent.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ContactFilterComponent.tml (rev 0)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ContactFilterComponent.tml 2011-04-07 08:43:40 UTC (rev 1154)
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
+ <div t:type="zone" class="so-filters" t:id="filtersZone" t:visible="prop:filtersVisible" id="so-contacts-filters">
+ <fieldset>
+ <legend>${message:wao.ui.misc.advancedSearch}</legend>
+ <div class="so-filters-form">
+ <form t:type="form" t:id="filtersForm" t:zone="so-contacts-filters">
+ <t:errors />
+ <div class="t-beaneditor">
+ <div>
+ <div style="float: left; margin-right: 15px;">
+ <label for="sampleRow">${message:wao.ui.field.SampleRow.code} :</label><br />
+ <t:topiaEntitySelector t:id="sampleRow"
+ t:multiple="true"
+ t:clazzName="SampleRow"
+ t:labelPropertyName="code"
+ t:values="possibleValuesForFilter.sampleRowsAsList"
+ t:selectedValues="filter.sampleRows"
+ size="6"/>
+ </div>
+
+ <label for="fromDate">${message:wao.ui.misc.since} :</label>
+ <input t:type="datefield" class="width70" t:id="fromDate" value="filter.fromDate" />
+ <label for="state">${message:wao.ui.field.Contact.contactState} :</label>
+
+ <!-- TODO sletellier 20110406 : create SimpleEnumSelector ??? -->
+ <select t:type="select"
+ t:id="state"
+ value="filter.state"
+ t:model="contactStateSelectModel"/>
+ <!-- t:zone="so-contacts-filters" -->
+
+ <!-- TODO sletellier 20110407 : not yet implemented -->
+ <!--label for="stateMotif">${message:wao.ui.field.Contact.contactStateMotif} :</label>
+ <t:topiaEntitySelector t:id="stateMotif"
+ t:clazzName="ContactStateMotif"
+ t:labelPropertyName="translation"
+ t:values="possibleValuesForFilter.stateAsList"
+ t:selectedValues="filter.state"/> -->
+ <t:if t:test="user.admin">
+ <label for="company">${message:wao.ui.entity.Company} :</label>
+ <t:topiaEntitySelector t:id="company"
+ t:clazzName="Company"
+ t:labelPropertyName="name"
+ t:values="possibleValuesForFilter.companiesAsList"
+ t:selectedValue="filter.company"/>
+ <!--input t:type="select" t:id="company" t:model="companySelectModel" value="companyId"/>
+ <input t:type="submit" class="ico22px refresh" t:id="refreshByCompany" value="Refresh"
+ title="Rafraîchir les filtres en fonction de la société sélectionnée"/-->
+ </t:if>
+ <label for="observer">${message:wao.ui.misc.observer} :</label>
+ <t:topiaEntitySelector t:id="observer"
+ t:clazzName="WaoUser"
+ t:labelPropertyName="fullName"
+ t:values="possibleValuesForFilter.observersAsList"
+ t:selectedValue="filter.observer"/>
+ <!--select t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" /-->
+ </div>
+ <p> </p>
+ <div>
+ <label>${message:wao.ui.entity.Boat} </label>
+ <label t:for="boatImmatriculation">${message:wao.ui.field.Boat.immatriculation} :</label>
+ <input t:type="textfield"
+ t:id="boatImmatriculation"
+ class="width50"
+ t:value="filter.boatImmatriculation" />
+
+ <label t:for="boatDistrictCode">${message:wao.ui.field.Boat.districtCode} :</label>
+ <input t:type="textfield"
+ t:id="boatDistrictCode"
+ class="width50"
+ t:value="filter.boatDistrictCode" />
+
+ <label t:for="facadeName">${message:wao.ui.field.FishingZone.facadeName} :</label>
+ <t:simpleSelector t:id="facadeName"
+ t:values="possibleValuesForFilter.facadeNamesAsList"
+ t:selectedValue="filter.facadeName"/>
+ <!--select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="filter.facadeName" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshByFacade" value="${message:wao.ui.action.refresh}" /-->
+ <label for="sectorName">${message:wao.ui.field.FishingZone.sectorName} :</label>
+ <t:simpleSelector t:id="sectorName"
+ t:values="possibleValuesForFilter.sectorsNamesAsList"
+ t:selectedValue="filter.sectorName"/>
+ <!--select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="filter.sectorName" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshBySector" value="Refresh"
+ title="Rafraîchir les métiers en fonction de la zone sélectionnée"/-->
+ </div>
+ <p> </p>
+ <t:if test="user.obsVente">
+ <div>
+ <label>${message:wao.ui.field.SampleRow.terrestrialLocation} :</label>
+ <t:topiaEntitySelector t:id="terrestrialDistrict"
+ t:clazzName="TerrestrialLocation"
+ t:labelPropertyName="description"
+ t:values="possibleValuesForFilter.terrestrialDistrictsAsList"
+ t:selectedValue="filter.terrestrialDistrict"/>
+ <!--input t:type="select" t:id="terrestrialDistrict" t:zone="so-contacts-filters" t:model="terrestrialDistrictSelectModel" t:value="terrestrialDistrictId" /-->
+ <t:if test="filter.terrestrialDistrict">
+ <label style="margin-left: 10px;">${message:wao.ui.field.Contact.terrestrialLocation} :</label>
+ <t:topiaEntitySelector t:id="terrestrialLocation"
+ t:clazzName="TerrestrialLocation"
+ t:labelPropertyName="description"
+ t:values="possibleValuesForFilter.terrestrialDistrictsAsList"
+ t:selectedValue="filter.terrestrialLocation"/>
+ <!--input t:type="select" t:model="terrestrialLocationSelectModel" t:value="terrestrialLocationId" /-->
+ </t:if>
+ </div>
+ <p> </p>
+ </t:if>
+ <div>
+ <t:if test="user.obsMer">
+ <label>${message:wao.ui.misc.observations} :</label>
+ <input t:type="checkbox" t:id="mammalsObservation" value="filter.mammalsObservation" />
+ <label for="mammalsObservation">
+ <img src="${asset:context:img/eye-22px.png}" alt="${message:wao.ui.field.Contact.mammalsObservation}" />
+ </label>
+ <label>${message:wao.ui.field.Contact.mammalsCapture} :</label>
+ <input t:type="checkbox" t:id="mammalsCapture" value="filter.mammalsCapture" />
+ <label for="mammalsCapture">
+ <img src="${asset:context:img/fishing-net-22px.png}" alt="${message:wao.ui.field.Contact.mammalsCapture}" />
+ </label>
+ </t:if>
+ <label>${message:wao.ui.field.Contact.validationCompany} :</label>
+ <input t:type="checkbox" t:id="companyAccepted" value="filter.companyAccepted" />
+ <label for="companyAccepted">
+ <img src="${asset:context:img/true-22px.png}" alt="${message:wao.ui.misc.accepted}" />
+ </label>
+ <input t:type="checkbox" t:id="companyRefused" value="filter.companyRefused" />
+ <label t:for="companyRefused">
+ <img src="${asset:context:img/false-22px.png}" alt="${message:wao.ui.misc.refused}" />
+ </label>
+ <input t:type="checkbox" t:id="companyUndefined" value="filter.companyUndefined" />
+ <label t:for="companyUndefined">
+ <img src="${asset:context:img/help-22px.png}" alt="${message:wao.ui.misc.undefined}" />
+ </label>
+ <label>${message:wao.ui.field.Contact.validationProgram} :</label>
+ <input t:type="checkbox" t:id="programAccepted" value="filter.programAccepted" />
+ <label t:for="programAccepted">
+ <img src="${asset:context:img/true-22px.png}" alt="${message:wao.ui.misc.accepted}" />
+ </label>
+ <input t:type="checkbox" t:id="programRefused" value="filter.programRefused" />
+ <label t:for="programRefused">
+ <img src="${asset:context:img/false-22px.png}" alt="${message:wao.ui.misc.refused}" />
+ </label>
+ <input t:type="checkbox" t:id="programUndefined" value="filter.programUndefined" />
+ <label t:for="programUndefined">
+ <img src="${asset:context:img/help-22px.png}" alt="${message:wao.ui.misc.undefined}" />
+ </label>
+ <t:if test="user.obsMer">
+ <t:unless t:test="user.observer">
+ <label for="reliabilityFilter">${message:wao.ui.field.Contact.dataReliability} :</label>
+ <select t:type="select" t:id="reliabilityFilter" value="filter.dataReliability"/>
+ </t:unless>
+ </t:if>
+ <span style="margin-left: 15px;">${message:wao.ui.misc.comments} :</span>
+ <input t:type="checkbox" t:id="commentFilter" value="filter.comment" />
+ <label for="commentFilter" style="margin-right: 5px;">${message:wao.ui.field.Contact.mainObserver}</label>
+
+ <input t:type="checkbox" t:id="commentCompany" value="filter.commentCompany" />
+ <label for="commentCompany" style="margin-right: 5px;">${message:wao.ui.entity.Company}</label>
+
+ <input t:type="checkbox" t:id="commentAdmin" value="filter.commentAdmin" />
+ <label for="commentAdmin" style="margin-right: 5px;">${message:wao.ui.form.program}</label>
+ </div>
+ <t:if t:test="user.obsVente">
+ <label for="samplingStrategy">${message:wao.ui.field.SampleRow.samplingStrategy}</label>
+ <!-- TODO sletellier 20110405 : find how model is filled -->
+ <input t:type="select"
+ t:id="samplingStrategy"
+ value="filter.samplingStrategy" />
+
+ <label for="actualSamplingStrategy">${message:wao.ui.field.Contact.samplingStrategy}</label>
+ <!-- TODO sletellier 20110405 : find how model is filled -->
+ <input t:type="select"
+ t:id="actualSamplingStrategy"
+ value="filter.actualSamplingStrategy" />
+
+ <label>${message:wao.ui.field.Contact.completeSampling}</label>
+ <input t:type="checkbox" t:id="completeSampling" value="filter.completeSampling" />
+ <label for="completeSampling">
+ <img src="${asset:context:img/true-22px.png}" alt="${message:wao.ui.misc.yes}" />
+ </label>
+ <input t:type="checkbox" t:id="incompleteSampling" value="filter.incompleteSampling" />
+ <label t:for="incompleteSampling">
+ <img src="${asset:context:img/false-22px.png}" alt="${message:wao.ui.misc.no}" />
+ </label>
+ <input t:type="checkbox" t:id="noSamplingCompleteness" value="filter.noSamplingCompleteness" />
+ <label t:for="noSamplingCompleteness">
+ <img src="${asset:context:img/help-22px.png}" alt="${message:wao.ui.misc.undefined}" />
+ </label>
+ </t:if>
+ <div class="fleft" style="margin-top: 15px;">
+ <input t:type="checkbox" t:id="sortedByBoardingDate" value="filter.sortedByBoardingDate" />
+ <label for="sortedByBoardingDate">${message:wao.ui.form.sortByTideBegin}</label>
+ </div>
+ <div class="t-beaneditor-row aright">
+ <input t:type="submit" class="ico22px refresh" t:id="refresh"
+ value="${message:wao.ui.filters.refresh}"
+ title="${message:wao.ui.filters.refresh}"/>
+ <input t:type="submit"
+ class="ico search-32px"
+ t:id="search"
+ value="Search"
+ title="${message:wao.ui.action.runSearch}" />
+
+ <input t:type="submit"
+ class="ico undo"
+ t:id="reset"
+ value="Reset"
+ title="${message:wao.ui.action.resetFields}" />
+ </div>
+ </div>
+ </form>
+ </div>
+ </fieldset>
+ </div>
+</html>
\ No newline at end of file
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/TopiaEntitySelector.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/TopiaEntitySelector.tml 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/TopiaEntitySelector.tml 2011-04-07 08:43:40 UTC (rev 1154)
@@ -30,13 +30,15 @@
t:model="multipleModel"
t:encoder="multipleModel"
t:value="selectedValues"
+ t:disabled="disabled"
size="${size}"/>
<p:else>
<input t:type="select"
t:id="select"
t:model="model"
t:encoder="model"
- t:value="selectedValue"/>
+ t:value="selectedValue"
+ t:disabled="disabled"/>
</p:else>
</t:if>
</html>
\ No newline at end of file
Modified: trunk/wao-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Contacts.tml 2011-04-07 08:43:29 UTC (rev 1153)
+++ trunk/wao-ui/src/main/webapp/Contacts.tml 2011-04-07 08:43:40 UTC (rev 1154)
@@ -57,8 +57,11 @@
</a>
</t:if>
</div>
+
+<t:contactFilterComponent t:id="filterComponent"
+ t:filterManager="filterManager"/>
<!-- FILTRES -->
-<div t:type="zone" class="so-filters" t:id="filtersZone" t:visible="prop:filtersVisible" id="so-contacts-filters">
+<!--div t:type="zone" class="so-filters" t:id="filtersZone" t:visible="prop:filtersVisible" id="so-contacts-filters">
<fieldset>
<legend>${message:wao.ui.misc.advancedSearch}</legend>
<div class="so-filters-form">
@@ -205,7 +208,7 @@
</form>
</div>
</fieldset>
-</div>
+</div-->
<!-- IMPORT/EXPORT -->
<div t:type="zone" class="so-filters" t:id="importExportZone" t:update="show" t:visible="false" id="so-contacts-importexport">
<fieldset>
1
0
[Suiviobsmer-commits] r1153 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/test/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 07 Apr '11
by bleny@users.labs.libre-entreprise.org 07 Apr '11
07 Apr '11
Author: bleny
Date: 2011-04-07 08:43:29 +0000 (Thu, 07 Apr 2011)
New Revision: 1153
Log:
move ObsDeb sampleRow validation to servic - WiP
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ValidationResultImpl.java 2011-04-07 08:43:29 UTC (rev 1153)
@@ -0,0 +1,13 @@
+package fr.ifremer.wao.bean;
+
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+public class ValidationResultImpl extends ValidationResult {
+
+ @Override
+ public String toString() {
+ String toString = ToStringBuilder.reflectionToString(this);
+ return toString;
+ }
+
+}
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-04-06 18:33:05 UTC (rev 1152)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-04-07 08:43:29 UTC (rev 1153)
@@ -47,6 +47,7 @@
import fr.ifremer.wao.bean.SamplingStrategy;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.bean.ValidationResult;
+import fr.ifremer.wao.bean.ValidationResultImpl;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.CompanyDAO;
@@ -124,6 +125,8 @@
import java.util.LinkedList;
import java.util.List;
+import static org.nuiton.i18n.I18n.n_;
+
/**
* ServiceSamplingImpl
*
@@ -1452,7 +1455,44 @@
}
@Override
- protected ValidationResult executeValidateSampleRow(TopiaContext transaction, SampleRow sampleRow) {
- throw new UnsupportedOperationException("not yet implemented");
+ protected ValidationResult executeValidateSampleRow(TopiaContext transaction, SampleRow sampleRow) throws TopiaException {
+
+ ValidationResult validationResult = new ValidationResultImpl();
+ validationResult.setSuccess(true);
+
+ if (ObsProgram.OBSDEB == sampleRow.getObsProgram()) {
+
+ if (sampleRow.getObservers() != null && sampleRow.getDay() != null) {
+
+ // let's find a conflict, is there another sample-row
+ // declaring the this observer should be anywhere on the
+ // same day
+
+ SamplingFilter samplingFilter = new SamplingFilterImpl();
+ samplingFilter.setObsProgram(ObsProgram.OBSDEB);
+ samplingFilter.setPeriod(new PeriodDates(sampleRow.getDay(), sampleRow.getDay()));
+
+ String message = "";
+
+ for (WaoUser observer : sampleRow.getObservers()) {
+
+ samplingFilter.setObserver(observer);
+ List<SampleRow> conflictingSampleRows = executeGetSampleRowsByFilter(transaction, samplingFilter);
+
+ if ( ! conflictingSampleRows.isEmpty()) {
+ validationResult.setSuccess(false);
+ message += WaoUtils.translate(n_("wao.validation.sampleRow.conflictOnObserver"),
+ observer.getFullName(), sampleRow.getCode(), conflictingSampleRows.get(0).getCode());
+ }
+ }
+
+ validationResult.setMessage(message);
+ }
+
+ } else {
+ throw new UnsupportedOperationException("not supported (yet)");
+ }
+
+ return validationResult;
}
}
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-04-06 18:33:05 UTC (rev 1152)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-04-07 08:43:29 UTC (rev 1153)
@@ -30,6 +30,7 @@
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterValues;
import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.bean.ValidationResult;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.CompanyImpl;
import fr.ifremer.wao.entity.SampleRow;
@@ -322,8 +323,35 @@
Assert.assertTrue("added observer is mentioned in the log", logEntry.contains(josh().getFullName()));
}
+ /**
+ * We want to check that the coordinator is not able to create a bad sampling
+ * plan by sending a same observer on two different place the same day
+ */
@Test
@Ignore("not yet implemented")
+ public void coordinatorCannotBreakSamplingPlan() throws IOException, WaoBusinessException {
+ coordinatorCanAddObserversViaImport();
+
+ ServiceSampling serviceSampling = manager.getServiceSampling();
+
+ // josh cannot be affected to this row, because on the same day
+ // he is to be elsewhere
+ SampleRow row2011_891 = serviceSampling.getSampleRowByCode(joshAsCoordinator(), "2011_891");
+ row2011_891.addObservers(josh());
+
+ ValidationResult validationResult = serviceSampling.validateSampleRow(row2011_891);
+
+ if (log.isDebugEnabled()) {
+ log.debug("validation result is " + validationResult.toString());
+ }
+
+ Assert.assertFalse("validation must fail", validationResult.isSuccess());
+ Assert.assertTrue("message mentions sample row in conflict",
+ validationResult.getMessage().contains("2011_890"));
+ }
+
+ @Test
+ @Ignore("not yet implemented")
public void observerCanReadSamplingPlan() throws IOException, WaoBusinessException {
// first, the coordinator must add observers
coordinatorCanAddObserversViaImport();
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-04-06 18:33:05 UTC (rev 1152)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-04-07 08:43:29 UTC (rev 1153)
@@ -662,40 +662,13 @@
saveProgram();
}
- protected ValidationResult validateSampleRow(SampleRow sampleRow) {
- ValidationResult validationResult = new ValidationResultImpl();
-
- if (ObsProgram.OBSDEB == sampleRow.getObsProgram()) {
-
- if (sampleRow.getObservers() != null && sampleRow.getDay() != null) {
- for (WaoUser observer : sampleRow.getObservers()) {
-
- // let's find a conflict, is there another sample-row
- // declaring the this observer should be anywhere on the
- // same day
-
- // SampleRowDAO sampleRowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
- // Map<String, Object> properties = new HashMap<String, Object>();
- // properties.put(SampleRow.PROPERTY_OBS_PROGRAM_ORDINAL, sampleRow.getObsProgram().ordinal());
- // properties.put(SampleRow.PROPERTY_DAY, sampleRow.getDay());
- // addInObservers
- }
- }
-
- } else {
- throw new UnsupportedOperationException("not supported (yet)");
- }
-
- return validationResult;
- }
-
@Log
void onValidateFormFromSampleRowForm() throws WaoException {
sampleRowForm.clearErrors();
if (ObsProgram.OBSDEB == getSampleRow().getObsProgram()) {
- ValidationResult validationResult = validateSampleRow(getSampleRow());
+ ValidationResult validationResult = serviceSampling.validateSampleRow(getSampleRow());
if ( ! validationResult.isSuccess()) {
sampleRowForm.recordError(validationResult.getMessage());
1
0
[Suiviobsmer-commits] r1152 - trunk/wao-business/src/main/java/fr/ifremer/wao/bean
by bleny@users.labs.libre-entreprise.org 06 Apr '11
by bleny@users.labs.libre-entreprise.org 06 Apr '11
06 Apr '11
Author: bleny
Date: 2011-04-06 18:33:05 +0000 (Wed, 06 Apr 2011)
New Revision: 1152
Log:
code style
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterImpl.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterImpl.java 2011-04-06 17:50:38 UTC (rev 1151)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterImpl.java 2011-04-06 18:33:05 UTC (rev 1152)
@@ -28,7 +28,6 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
-import org.nuiton.util.beans.BeanUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -108,8 +107,7 @@
@Override
public String toString() {
- ToStringBuilder toStringBuilder = new ToStringBuilder(this);
- String toString = toStringBuilder.reflectionToString(this);
+ String toString = ToStringBuilder.reflectionToString(this);
return toString;
}
}
1
0
[Suiviobsmer-commits] r1151 - trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 06 Apr '11
by bleny@users.labs.libre-entreprise.org 06 Apr '11
06 Apr '11
Author: bleny
Date: 2011-04-06 17:50:38 +0000 (Wed, 06 Apr 2011)
New Revision: 1151
Log:
forgot file
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-04-06 17:49:48 UTC (rev 1150)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-04-06 17:50:38 UTC (rev 1151)
@@ -63,6 +63,7 @@
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.InjectPage;
+import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
@@ -104,9 +105,6 @@
@Property
private ConnectedUser user;
- @InjectComponent
- private BoatFilterComponent filterComponent;
-
@Inject
private ServiceReferential serviceReferential;
@@ -122,54 +120,25 @@
@Inject
private PropertyAccess propertyAccess;
-// @Property
-// private String sampleRowContextId;
-
- /** Selected boat immatriculation for showing boatInfos */
- //(a)Persist(PersistenceConstants.FLASH)
- @Persist
- private Integer boatSelectedImmatriculation;
-
- @Persist
- private BoatFilterManager filterManager;
-
- public BoatFilterManager getFilterManager() {
- if (filterManager == null) {
- filterManager = new BoatFilterManager(user, serviceBoat);
- }
- return filterManager;
- }
-
- public void setFilterManager(BoatFilterManager filterManager) {
- this.filterManager = filterManager;
- }
-
- public Integer getBoatSelectedImmatriculation() {
- return boatSelectedImmatriculation;
- }
-
- public void setBoatSelectedImmatriculation(Integer boatSelectedImmatriculation) {
- this.boatSelectedImmatriculation = boatSelectedImmatriculation;
- }
-
void setupRender() throws WaoException {
- if (boatSelectedImmatriculation != null && getBoatSelected() == null) {
- layout.addFatal("L'immatriculation " + boatSelectedImmatriculation +
- " ne correspond à aucun navire affichable. " +
- "Veuillez à enlever cette immatriculation de l'url puis" +
- " rechargez la page.");
- boatSelectedImmatriculation = null;
- }
+// if (boatSelectedImmatriculation != null && getBoatSelected() == null) {
+// layout.addFatal("L'immatriculation " + boatSelectedImmatriculation +
+// " ne correspond à aucun navire affichable. " +
+// "Veuillez à enlever cette immatriculation de l'url puis" +
+// " rechargez la page.");
+// boatSelectedImmatriculation = null;
+// }
// Initialize filters using AbstractFilteredPage superclass
// initSelectFilters(false, false, false);
// // The company of connected user will be contributed to abstractFilteredPage
// initCompanyFilter();
+ boats = null;
+ boatSelectedImmatriculation = null;
companyBoatInfos = null;
}
-
// void onActivate(EventContext ec) {
// sampleRowContextId = ec.get(String.class, 0);
// if (ec.getCount() > 1) {
@@ -186,143 +155,52 @@
// return sampleRowContextId;
// }
- /**************************** Import Forms ********************************/
+ StreamResponse onActionFromExportShowBoats() {
+ return new ExportStreamResponse("wao-navires") {
-// /** Csv file for boats import */
+ @Override
+ public InputStream getStream() throws IOException {
+ InputStream result = null;
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Filter sampleRow : " + getFilter().getSampleRow());
+ }
+ result = serviceBoat.exportBoatCsv(getBoatFilter());
+ } catch (WaoException eee) {
+ throw new IOException(eee);
+ }
+ return result;
+ }
+ };
+ }
+
+ /******************** FILTERS *******************/
+
+ @InjectComponent
+ private BoatFilterComponent filterComponent;
+
// @Property
-// private UploadedFile boatsCsvFile;
-//
-// /** Csv file for activityCalendar import, can be a Gzip file */
-// @Property
-// private UploadedFile activityCalendarsCsvFile;
-//
-// private InputStream activityCalendarLogFile;
-//
-// private InputStream activityCalendarLogAccessFile;
-//
-// protected static final String GZIP_MIMETYPE = "application/x-gzip";
-//
-// public boolean canImportReferentials() {
-// return user.isAdmin() && !user.isReadOnly();
-// }
-//
-// @Log
-// void onSuccessFromImportBoatsForm() {
-// if (canImportReferentials()) {
-// try {
-// int[] result = serviceBoat.importBoatCsv(
-// boatsCsvFile.getStream());
-// // Suppress persitant list of boats
-// boats = null;
-// layout.addInfo(result[0] + " navires importés dont " +
-// result[1] + " nouveaux");
-// } catch (WaoBusinessException eee) {
-// layout.addError(eee.getMessage());
-// }
-// }
-// }
-//
-// InputStream getActivityCalendarLogFile() throws FileNotFoundException {
-// if (activityCalendarLogFile == null) {
-// activityCalendarLogFile = serviceBoat.getActivityCalendarLogFile();
-// }
-// return activityCalendarLogFile;
-// }
-//
-// public boolean isLogFileExists() {
-// try {
-// getActivityCalendarLogFile();
-// return true;
-// } catch (FileNotFoundException eee) {
-// if (log.isInfoEnabled()) {
-// log.info("Aucun fichier de log existant pour les calendriers d'activité");
-// }
-// return false;
-// }
-// }
-//
-// InputStream getActivityCalendarLogAccessFile() throws FileNotFoundException {
-// if (activityCalendarLogAccessFile == null) {
-// activityCalendarLogAccessFile =
-// serviceBoat.getActivityCalendarLogAccessFile();
-// }
-// return activityCalendarLogAccessFile;
-// }
-//
-// public boolean isLogAccessFileExists() {
-// try {
-// getActivityCalendarLogAccessFile();
-// return true;
-// } catch (FileNotFoundException eee) {
-// if (log.isInfoEnabled()) {
-// log.info("Aucun fichier de log existant pour les accès " +
-// "utilisateurs aux calendriers d'activité");
-// }
-// return false;
-// }
-// }
-//
-// @Log
-// void onSuccessFromImportActivityCalendarsForm()
-// throws WaoException, IOException {
-// if (canImportReferentials()) {
-// InputStream input = activityCalendarsCsvFile.getStream();
-// if (log.isDebugEnabled()) {
-// log.debug("Content type : " +
-// activityCalendarsCsvFile.getContentType());
-// }
-// if (activityCalendarsCsvFile.getContentType().
-// equals(GZIP_MIMETYPE)) {
-// if (log.isDebugEnabled()) {
-// log.debug("Gzip file");
-// }
-// input = new GZIPInputStream(input);
-// }
-// serviceBoat.importActivityCalendarCsv(input);
-// companyBoatInfos = null;
-// }
-// }
-//
-// public StreamResponse onActionFromShowActivityCalendarLogFile() {
-// return new StreamResponse() {
-//
-// @Override
-// public String getContentType() {
-// return "text/plain;charset=utf-8";
-// }
-//
-// @Override
-// public InputStream getStream() throws IOException {
-// return getActivityCalendarLogFile();
-// }
-//
-// @Override
-// public void prepareResponse(Response response) {
-// }
-// };
-// }
-//
-// public StreamResponse onActionFromShowActivityCalendarLogAccessFile() {
-// return new StreamResponse() {
-//
-// @Override
-// public String getContentType() {
-// return "text/plain;charset=utf-8";
-// }
-//
-// @Override
-// public InputStream getStream() throws IOException {
-// return getActivityCalendarLogAccessFile();
-// }
-//
-// @Override
-// public void prepareResponse(Response response) {
-// }
-// };
-// }
+// private String sampleRowContextId;
- /**************************** Filters Form *****************************************/
+ /** Selected boat immatriculation for showing boatInfos */
+ @Persist
+ private Integer boatSelectedImmatriculation;
+ @Persist
+ private BoatFilterManager filterManager;
+
+ public BoatFilterManager getFilterManager() {
+ if (filterManager == null) {
+ filterManager = new BoatFilterManager(user, serviceBoat);
+ }
+ return filterManager;
+ }
+
+ public void setFilterManager(BoatFilterManager filterManager) {
+ this.filterManager = filterManager;
+ }
+
+
/** Filters to apply on boats list */
// @Persist
// private BoatFilter boatFilter;
@@ -374,16 +252,12 @@
// return professionSelectModel;
// }
- /**************************** FILTERS *************************************/
-
public boolean isFiltersVisible() {
return filterComponent.getFiltersVisible();
}
Object onActionFromShowFilters() {
-
filterComponent.switchFiltersVisible();
-
if (isFiltersVisible()) {
return filterComponent;
} else {
@@ -405,7 +279,7 @@
* Other filters are managed by AbstractFilteredPage superclass.
*
* @throws WaoException for business errors
- * @see AbstractFilteredPage#onSelectedFromSearch()
+ * @see AbstractFilteredPage#onSelectedFromSearch()
*/
// @Override
// public void onSelectedFromSearch() throws WaoException {
@@ -442,9 +316,29 @@
// companyBoatInfos = null;
// return this;
// }
+ @Log
+ Object onSuccessFromFiltersForm() throws WaoException {
+ // Suppress persistant boats list to get new one with filter
+ boats = null;
+ // Suppress persistant immatriculation for boat selected
+ boatSelectedImmatriculation = null;
+ // Suppress persistant boat informations for boat selected
+ companyBoatInfos = null;
+ return boatsZone;
+ }
- /**************************** Boats List *****************************************/
+ /*************** RIGHT PANEL ****************/
+ public Integer getBoatSelectedImmatriculation() {
+ return boatSelectedImmatriculation;
+ }
+
+ public void setBoatSelectedImmatriculation(Integer boatSelectedImmatriculation) {
+ this.boatSelectedImmatriculation = boatSelectedImmatriculation;
+ }
+
+ /*************** Boats List (left panel) ****************/
+
/** DataSource containing the boats */
@Persist
private BoatDataSource boats;
@@ -509,25 +403,6 @@
return false;
}
- StreamResponse onActionFromExportShowBoats() {
- return new ExportStreamResponse("wao-navires") {
-
- @Override
- public InputStream getStream() throws IOException {
- InputStream result = null;
- try {
- if (log.isDebugEnabled()) {
- log.debug("Filter sampleRow : " + getFilter().getSampleRow());
- }
- result = serviceBoat.exportBoatCsv(getBoatFilter());
- } catch (WaoException eee) {
- throw new IOException(eee);
- }
- return result;
- }
- };
- }
-
Block onActionFromShowBoatInfos(Integer boatImma) throws WaoException {
boatSelectedImmatriculation = boatImma;
// Suppress persistant boat informations
@@ -755,8 +630,6 @@
return condition1 || isElligibleBoatCompanyActiveFalse() ? "line-through" : "";
}
- /** /////////////////////// ACTIONS //////////////////////////////////// **/
-
/**
* Only user with no readOnly rights can edit BoatInfos.
*
@@ -777,19 +650,14 @@
getCompanyBoatInfos();
return boatInfosZone.getBody();
}
-//
-// Block onActionFromEditBoatInfos() throws WaoException {
-// if (canEditBoatInfos()) {
-// boatInfosEditable = true;
-// // WARNING :: Reset sampleRow select for edition mode, no limit for
-// // showing sampleRows instead of filters
-// getFilter().setNbMonthFinishedFromToday(null);
-// resetSampleRowSelect();
-// getFilter().setNbMonthFinishedFromToday(-1);
-// }
-// return boatInfosZone.getBody();
-// }
+ Block onActionFromEditBoatInfos() throws WaoException {
+ if (canEditBoatInfos()) {
+ boatInfosEditable = true;
+ }
+ return boatInfosZone.getBody();
+ }
+
Block onActionFromCancelEditBoatInfos() throws WaoException {
/*if (propertyChange.isChanged()) {
if (log.isDebugEnabled()) {
@@ -866,32 +734,24 @@
/**************************** Go to last ActivityCalendar *****************/
-// @InjectPage
-// private BoatActivityCalendar calendarPage;
+//// @InjectPage
+//// private BoatActivityCalendar calendarPage;
+//
+// @Inject
+// private PageRenderLinkSource renderLink;
+//
+// public boolean hasActivityCalendar() throws WaoException {
+// return getBoatSelected() != null &&
+// getBoatSelected().sizeActivityCalendar() != 0;
+// }
+//
+// Link onActionFromShowLastActivityCalendar() throws WaoException {
+// Link result = renderLink.createPageRenderLinkWithContext(
+// BoatActivityCalendar.class,
+// getBoatSelected().getImmatriculation());
+// return result;
+//// calendarPage.setBoat(getBoatSelected());
+//// return calendarPage;
+// }
- @Inject
- private PageRenderLinkSource renderLink;
-
- public boolean hasActivityCalendar() throws WaoException {
- return getBoatSelected() != null &&
- getBoatSelected().sizeActivityCalendar() != 0;
- }
-
- Link onActionFromShowLastActivityCalendar() throws WaoException {
- Link result = renderLink.createPageRenderLinkWithContext(
- BoatActivityCalendar.class,
- getBoatSelected().getImmatriculation());
- return result;
-// calendarPage.setBoat(getBoatSelected());
-// return calendarPage;
- }
-
- /*************************************** I18N ****************************/
-
- @Inject
- private Messages messages;
-
- public String getLabelForEnum(Enum value) {
- return messages.get(value.getDeclaringClass().getSimpleName() + "." + value.name());
- }
}
1
0
[Suiviobsmer-commits] r1150 - in trunk/wao-ui/src/main: resources/fr/ifremer/wao/ui/components webapp webapp/css
by bleny@users.labs.libre-entreprise.org 06 Apr '11
by bleny@users.labs.libre-entreprise.org 06 Apr '11
06 Apr '11
Author: bleny
Date: 2011-04-06 17:49:48 +0000 (Wed, 06 Apr 2011)
New Revision: 1150
Log:
fix boat page CSS and refresh
Modified:
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/BoatFilterComponent.tml
trunk/wao-ui/src/main/webapp/Boats.tml
trunk/wao-ui/src/main/webapp/css/common.css
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/BoatFilterComponent.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/BoatFilterComponent.tml 2011-04-06 15:45:15 UTC (rev 1149)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/BoatFilterComponent.tml 2011-04-06 17:49:48 UTC (rev 1150)
@@ -28,22 +28,8 @@
<form t:type="form" t:id="filtersForm" t:zone="so-filters-form" action="post">
<t:errors />
- <div class="t-beaneditor">
- <div>
- <!-- Sampling filter -->
- <div style="float: left; margin-right: 15px;">
- <label for="sampleRow">${message:wao.ui.field.SampleRow.code} :</label>
- <!--select t:type="select" t:id="sampleRow" t:disabled="sampleRowExists" t:model="sampleRowSelectModel" value="sampleRowId" /-->
- <t:topiaEntitySelector t:id="sampleRow"
- t:multiple="true"
- t:clazzName="SampleRow"
- t:labelPropertyName="code"
- t:values="possibleValuesForFilter.sampleRowsAsList"
- t:selectedValues="filter.sampleRows"
- size="6"/>
- <!--t:disabled="sampleRowExists" -->
-
- </div>
+ <div style="table-layout: auto;">
+ <div style="white-space: nowrap;">
<label for="facadeName">${message:wao.ui.field.FishingZone.facadeName} :</label>
<t:simpleSelector t:id="facadeName"
t:values="possibleValuesForFilter.facadeNamesAsList"
@@ -59,7 +45,7 @@
value="Refresh"
title="${message:wao.ui.filters.refresh}"/-->
- <label for="sectorName">${message:wao.ui.field.FishingZone.sectorName} :</label>
+ <label for="sectorName" style="margin-left: 15px;">${message:wao.ui.field.FishingZone.sectorName} :</label>
<t:simpleSelector t:id="sectorName"
t:values="possibleValuesForFilter.sectorsNamesAsList"
t:selectedValue="filter.sectorName"/>
@@ -74,36 +60,42 @@
value="Refresh"
title="${message:wao.ui.filters.refresh}"/-->
- </div><p> </p>
- <div>
+ <label for="sampleRow" style="margin-left: 15px;">${message:wao.ui.field.SampleRow.code} :</label>
+ <t:topiaEntitySelector t:id="sampleRow"
+ t:clazzName="SampleRow"
+ t:labelPropertyName="code"
+ t:values="possibleValuesForFilter.sampleRowsAsList"
+ t:selectedValue="filter.sampleRow" />
+ </div>
+ <div style="white-space: nowrap;">
<!-- Boat filter -->
- <label for="boatName">${message:wao.ui.field.Boat.name} :</label>
+ <label for="boatName" style="margin-left: 15px;">${message:wao.ui.field.Boat.name} :</label>
<input t:type="textfield"
t:id="boatName"
class="width150"
t:value="filter.boatName"
t:mixins="Autocomplete" />
- <span style="margin-left: 15px;">${message:wao.ui.field.Boat.immatriculation} :</span>
+ <label for="boatImmatriculation" style="margin-left: 15px;">${message:wao.ui.field.Boat.immatriculation} :</label>
<input t:type="textfield"
t:id="boatImmatriculation"
class="width50"
t:value="filter.boatImmatriculation" />
- <span style="margin-left: 15px;">${message:wao.ui.field.BoatDistrict.code} :</span>
+ <label for="boatDistrictCode" style="margin-left: 15px;">${message:wao.ui.field.BoatDistrict.code} :</label>
<input t:type="textfield"
t:id="boatDistrictCode"
class="width50"
t:value="filter.boatDistrictCode" />
- <span style="margin-left: 15px;">${message:wao.ui.field.Boat.shipOwner} :</span>
+ <label for="shipOwnerName" style="margin-left: 15px;">${message:wao.ui.field.Boat.shipOwner} :</label>
<input t:type="textfield"
t:id="shipOwnerName"
class="width150"
t:value="filter.shipOwnerName"
t:mixins="Autocomplete" />
</div>
- <div class="t-beaneditor-row aright">
+ <div class="aright">
<input t:type="submit" class="ico22px refresh" t:id="refresh"
value="${message:wao.ui.filters.refresh}"
title="${message:wao.ui.filters.refresh}"/>
Modified: trunk/wao-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Boats.tml 2011-04-06 15:45:15 UTC (rev 1149)
+++ trunk/wao-ui/src/main/webapp/Boats.tml 2011-04-06 17:49:48 UTC (rev 1150)
@@ -33,7 +33,7 @@
<div>
<fieldset>
<legend>${message:wao.ui.misc.advancedSearch}</legend>
- <div class="aright">
+ <!--div class="aright">
<a t:type="actionlink" t:id="showFilters">
<t:if t:test="filtersVisible">
<img src="${asset:context:}/img/downarrow.png" title="${message:wao.ui.action.showFilters}" />
@@ -42,7 +42,7 @@
</p:else>
</t:if>
</a>
- </div>
+ </div-->
<t:boatFilterComponent t:id="filterComponent"
t:filterManager="filterManager"/>
</fieldset>
@@ -146,7 +146,6 @@
<t:unless t:test="user.readOnly">
<form t:type="form" t:id="companySelectForm" t:zone="so-boats-boat-infos">
<label for="company">${message:wao.ui.entity.Company} :</label>
- <!--input t:type="select" t:id="company" t:model="companies" t:value="companySelectedId" /-->
<t:topiaEntitySelector t:id="company"
t:clazzName="Company"
t:labelPropertyName="name"
@@ -220,7 +219,7 @@
<dl t:type="beandisplay" t:id="boatInfosLastContact" t:object="companyBoatInfos.lastContact"
t:include="referenceDate, state" t:add="createdBy, sampleRowCode">
<p:state>
- ${getLabelForEnum(companyBoatInfos.lastContact.contactState)}
+ ${companyBoatInfos.lastContact.contactState}
</p:state>
<p:createdBy>
${companyBoatInfos.lastContact.mainObserver.fullName}
Modified: trunk/wao-ui/src/main/webapp/css/common.css
===================================================================
--- trunk/wao-ui/src/main/webapp/css/common.css 2011-04-06 15:45:15 UTC (rev 1149)
+++ trunk/wao-ui/src/main/webapp/css/common.css 2011-04-06 17:49:48 UTC (rev 1150)
@@ -340,7 +340,6 @@
background-color: transparent;
}
-div#so-boats label,
div.so-filters-form div.t-beaneditor label,
div.so-filters-form div.t-beaneditor span {
width: 120px;
1
0
[Suiviobsmer-commits] r1149 - in trunk/wao-business/src/main: java/fr/ifremer/wao/service xmi
by bleny@users.labs.libre-entreprise.org 06 Apr '11
by bleny@users.labs.libre-entreprise.org 06 Apr '11
06 Apr '11
Author: bleny
Date: 2011-04-06 15:45:15 +0000 (Wed, 06 Apr 2011)
New Revision: 1149
Log:
add method to validate sample row in model
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
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-04-06 15:40:12 UTC (rev 1148)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-04-06 15:45:15 UTC (rev 1149)
@@ -46,6 +46,7 @@
import fr.ifremer.wao.bean.SamplingFilterValuesImpl;
import fr.ifremer.wao.bean.SamplingStrategy;
import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.bean.ValidationResult;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.CompanyDAO;
@@ -1449,4 +1450,9 @@
return samplingFilter;
}
+
+ @Override
+ protected ValidationResult executeValidateSampleRow(TopiaContext transaction, SampleRow sampleRow) {
+ throw new UnsupportedOperationException("not yet implemented");
+ }
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r1148 - in trunk/wao-ui/src/main: java/fr/ifremer/wao/ui/pages webapp
by bleny@users.labs.libre-entreprise.org 06 Apr '11
by bleny@users.labs.libre-entreprise.org 06 Apr '11
06 Apr '11
Author: bleny
Date: 2011-04-06 15:40:12 +0000 (Wed, 06 Apr 2011)
New Revision: 1148
Log:
fix broken access to boat infos for admin
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/webapp/Boats.tml
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-04-06 15:39:45 UTC (rev 1147)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-04-06 15:40:12 UTC (rev 1148)
@@ -126,7 +126,8 @@
// private String sampleRowContextId;
/** Selected boat immatriculation for showing boatInfos */
- @Persist(PersistenceConstants.FLASH)
+ //(a)Persist(PersistenceConstants.FLASH)
+ @Persist
private Integer boatSelectedImmatriculation;
@Persist
@@ -445,7 +446,7 @@
/**************************** Boats List *****************************************/
/** DataSource containing the boats */
-// @Persist
+ @Persist
private BoatDataSource boats;
/** Current boat in the Grid */
@@ -537,7 +538,7 @@
}
if (user.isAdmin() && getCompany() != null) {
- companySelectedId = getCompany().getTopiaId();
+// companySelectedId = getCompany().getTopiaId();
}
return boatsZone.getBody();
}
@@ -566,19 +567,19 @@
private Date boardingFromDate;
- private GenericSelectModel<Company> companies;
+ // private GenericSelectModel<Company> companies;
@Inject
private ServiceUser serviceUser;
- @Property
- @Persist(PersistenceConstants.FLASH)
- private String companySelectedId;
-
private Company company;
+ public void setCompany(Company company) {
+ this.company = company;
+ }
+
/*@Persist
- private WaoPropertyChangeListener propertyChange;*/
+ private WaoPropertyChangeListener propertyChange;*/
/** /////////////////////// GLOBAL TO THE BLOCK /////////////////////// **/
@@ -611,11 +612,16 @@
* @return the GenericSelectModel<Company>
* @throws WaoException
*/
- public GenericSelectModel<Company> getCompanies() throws WaoException {
- if (companies == null) {
- List<Company> results = serviceUser.getCompanies(true);
- companies = new GenericSelectModel<Company>(results, Company.class, "name","topiaId",propertyAccess);
- }
+// public GenericSelectModel<Company> getCompanies() throws WaoException {
+// if (companies == null) {
+// List<Company> results = serviceUser.getCompanies(true);
+// companies = new GenericSelectModel<Company>(results, Company.class, "name","topiaId",propertyAccess);
+// }
+// return companies;
+// }
+
+ public List<Company> getCompanies() {
+ List<Company> companies = serviceUser.getCompanies(true);
return companies;
}
@@ -626,17 +632,27 @@
* @return the current Company
* @throws WaoException
*/
- public Company getCompany() throws WaoException {
+// public Company getCompany() throws WaoException {
+// if (company == null) {
+// if (StringUtils.isNotEmpty(companySelectedId)) {
+// company = getCompanies().findObject(companySelectedId);
+// } else if (!user.isAdmin()) {
+// company = user.getCompany();
+// }
+// }
+// return company;
+// }
+
+ public Company getCompany() {
if (company == null) {
- if (StringUtils.isNotEmpty(companySelectedId)) {
- company = getCompanies().findObject(companySelectedId);
- } else if (!user.isAdmin()) {
+ if ( ! user.isAdmin()) {
company = user.getCompany();
}
}
return company;
}
+
/**
* Used to get the selected boat.
*
Modified: trunk/wao-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Boats.tml 2011-04-06 15:39:45 UTC (rev 1147)
+++ trunk/wao-ui/src/main/webapp/Boats.tml 2011-04-06 15:40:12 UTC (rev 1148)
@@ -146,7 +146,12 @@
<t:unless t:test="user.readOnly">
<form t:type="form" t:id="companySelectForm" t:zone="so-boats-boat-infos">
<label for="company">${message:wao.ui.entity.Company} :</label>
- <input t:type="select" t:id="company" t:model="companies" t:value="companySelectedId" />
+ <!--input t:type="select" t:id="company" t:model="companies" t:value="companySelectedId" /-->
+ <t:topiaEntitySelector t:id="company"
+ t:clazzName="Company"
+ t:labelPropertyName="name"
+ t:values="companies"
+ t:selectedValue="company" />
<input t:type="submit" class="ico search" t:id="searchCompany" value="Search" />
</form>
</t:unless>
1
0
[Suiviobsmer-commits] r1147 - trunk/wao-business/src/main/java/fr/ifremer/wao/service
by bleny@users.labs.libre-entreprise.org 06 Apr '11
by bleny@users.labs.libre-entreprise.org 06 Apr '11
06 Apr '11
Author: bleny
Date: 2011-04-06 15:39:45 +0000 (Wed, 06 Apr 2011)
New Revision: 1147
Log:
optimize getPossibleValues for BoatFilter, prevent browsing 9000 boats when filter is empty
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
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-04-06 14:33:43 UTC (rev 1146)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-04-06 15:39:45 UTC (rev 1147)
@@ -700,20 +700,29 @@
@Override
protected BoatFilterValues executeGetPossibleValuesForFilter(TopiaContext transaction, BoatFilter filter) throws Exception {
- // extract data
- Map<Integer, Boat> integerBoatMap = executeGetBoatsByFilter(transaction, filter);
+ BoatFilterValues result = new BoatFilterValuesImpl();
+ if (filter.getFacadeName() == null && filter.getSectorName() == null) {
+ ServiceReferential serviceReferential = context.getServiceFactory().getServiceReferential();
+ ServiceSampling serviceSampling = context.getServiceFactory().getServiceSampling();
- logger.info("Starting extracting rows : " + new Date());
- // Extract sampleRows
- List<SampleRow> rows = extractSampleRows(integerBoatMap.values());
+ result.setFacadeNames(serviceReferential.getFacades(filter));
+ result.setSectorsNames(serviceReferential.getSectors(filter));
+ result.setSampleRows(serviceSampling.getSampleRowsByFilter(filter));
+ } else {
+ // extract data
+ Map<Integer, Boat> integerBoatMap = executeGetBoatsByFilter(transaction, filter);
- logger.info("End of extracting rows : " + new Date());
+ logger.info("Starting extracting rows : " + new Date());
+ // Extract sampleRows
+ List<SampleRow> rows = extractSampleRows(integerBoatMap.values());
- // collect values
- BoatFilterValues result = new BoatFilterValuesImpl();
+ logger.info("End of extracting rows : " + new Date());
- result.fill(rows);
+ // collect values
+ result.fill(rows);
+ }
+
return result;
}
1
0
[Suiviobsmer-commits] r1146 - trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 06 Apr '11
by bleny@users.labs.libre-entreprise.org 06 Apr '11
06 Apr '11
Author: bleny
Date: 2011-04-06 14:33:43 +0000 (Wed, 06 Apr 2011)
New Revision: 1146
Log:
fix user asked to send email if contact is newly imported from CSV in ObsDeb
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2011-04-06 14:33:04 UTC (rev 1145)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2011-04-06 14:33:43 UTC (rev 1146)
@@ -145,7 +145,8 @@
protected void addSendEmailScript() {
// Ask user to send an email if not already sent
- if ( ! getContact().getEmailSent()) {
+ if ( ObsProgram.OBSMER == getContact().getObsProgram() // mail is only for ObsMer
+ && ! getContact().getEmailSent()) {
String confirmMessage =
"Souhaitez vous envoyer un email de demande d\\'ajout " +
@@ -167,9 +168,6 @@
@Persist
private String contactId;
-// @Persist
-// private Contact oldContact;
-
@Persist
private Contact contact;
1
0
06 Apr '11
Author: bleny
Date: 2011-04-06 14:33:04 +0000 (Wed, 06 Apr 2011)
New Revision: 1145
Log:
fix right management for obsdeb sampling plan
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml
trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-04-06 14:33:04 UTC (rev 1145)
@@ -319,11 +319,11 @@
// Period filter on sampleRow dates
if (period != null) {
- period.initDayOfMonthExtremities();
if (ObsProgram.OBSDEB.equals(filter.getObsProgram())) {
query.addWhere(sampleRowProperty.day(), TopiaQuery.Op.LT, period.getThruDate()).
addWhere(sampleRowProperty.day(), TopiaQuery.Op.GT, period.getFromDate());
} else {
+ period.initDayOfMonthExtremities();
query.addWhere(sampleRowProperty.periodBegin(), TopiaQuery.Op.LT, period.getThruDate()).
addWhere(sampleRowProperty.periodEnd(), TopiaQuery.Op.GT, period.getFromDate());
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java 2011-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java 2011-04-06 14:33:04 UTC (rev 1145)
@@ -68,7 +68,9 @@
Object value = column.getValue(object);
String formattedValue = column.formatValue(value);
boolean valueNeedQuotes = formattedValue.contains(separator)
- || formattedValue.contains("\n");
+ || formattedValue.contains("\n")
+ || formattedValue.contains(";")
+ || formattedValue.contains(",");
if (valueNeedQuotes) {
// escape '"' char to prevent
formattedValue = formattedValue.replaceAll("\"", "\"\"");
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-04-06 14:33:04 UTC (rev 1145)
@@ -23,6 +23,7 @@
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowImpl;
import fr.ifremer.wao.entity.TerrestrialDivision;
@@ -118,6 +119,35 @@
}
}
+ static class CompanyParserFormatter implements ValueParserFormatter<Company> {
+
+ protected List<Company> companies;
+
+ protected Map<String, Company> indexedCompanies;
+
+ public CompanyParserFormatter(List<Company> companies) {
+ this.companies = companies;
+ }
+
+ @Override
+ public String format(Company company) {
+ return company.getName();
+ }
+
+ @Override
+ public Company parse(String companyName) throws ParseException {
+ if (indexedCompanies == null) {
+ indexedCompanies = WaoUtils.projectPropertyUnique(companies, Company.PROPERTY_NAME);
+ }
+ Company company = indexedCompanies.get(companyName.trim());
+ if (company == null) {
+ throw new IllegalArgumentException("Il n'y a pas de société ayant pour nom '"
+ + companyName + "'");
+ }
+ return company;
+ }
+ }
+
static class RegionCodeSetter implements ValueGetterSetter<SampleRow, String> {
protected ObservationUnitParserFormatter observationUnitSetter;
@@ -147,16 +177,19 @@
protected List<WaoUser> allWaoUsers;
+ protected List<Company> allCompanies;
+
protected ConnectedUser connectedUser;
protected ModelBuilder<SampleRow> modelBuilder;
/** Constructor used for import */
public SamplingPlanImportExportModel(ConnectedUser connectedUser,
- List<TerrestrialDivision> observationUnits, List<WaoUser> allWaoUsers) {
+ List<TerrestrialDivision> observationUnits, List<WaoUser> allWaoUsers, List<Company> allCompanies) {
this.connectedUser = connectedUser;
this.allWaoUsers = allWaoUsers;
this.observationUnits = observationUnits;
+ this.allCompanies = allCompanies;
buildModel();
}
@@ -186,6 +219,7 @@
protected void buildModel() {
modelBuilder = new ModelBuilder<SampleRow>();
modelBuilder.newColumnForImportExport("PLAN_CODE", SampleRow.PROPERTY_CODE);
+ modelBuilder.newColumnForImportExport("SOCIETE", SampleRow.PROPERTY_COMPANY, new CompanyParserFormatter(allCompanies));
modelBuilder.newColumnForImportExport("OBSERVATEUR_COD", SampleRow.PROPERTY_GROUP_NAME);
modelBuilder.newColumnForImportExport("OBSERVATION_DATE", SampleRow.PROPERTY_DAY, Common.DAY);
ObservationUnitParserFormatter observationUnitParser = new ObservationUnitParserFormatter(observationUnits);
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-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-04-06 14:33:04 UTC (rev 1145)
@@ -347,6 +347,11 @@
BinderModelBuilder<SampleRow, SampleRow> sampleRowBinderModelBuilder =
BinderModelBuilder.newEmptyBuilder(SampleRow.class);
+
+ // add properties common to all programs
+ sampleRowBinderModelBuilder.addSimpleProperties(SampleRow.PROPERTY_COMPANY);
+
+ // plus per-program properties
if (ObsProgram.OBSDEB.equals(row.getObsProgram())) {
sampleRowBinderModelBuilder.addSimpleProperties(
SampleRow.PROPERTY_COMMENT,
@@ -371,7 +376,6 @@
SampleRow.PROPERTY_PERIOD_END,
SampleRow.PROPERTY_SAMPLING_STRATEGY_ORDINAL,
SampleRow.PROPERTY_PROFESSION,
- SampleRow.PROPERTY_COMPANY,
SampleRow.PROPERTY_ELLIGIBLE_BOAT,
SampleRow.PROPERTY_FISHING_ZONE);
@@ -990,12 +994,15 @@
WaoUserDAO waoUserDAO = WaoDAOHelper.getWaoUserDAO(transaction);
List<WaoUser> waoUsers = waoUserDAO.findAllByActive(true);
+ CompanyDAO companyDAO = WaoDAOHelper.getCompanyDAO(transaction);
+ List<Company> allCompanies = companyDAO.findAll();
+
if (observationUnits.isEmpty()) {
throw new IllegalStateException("Le référentiel de stratification n'a pas été importé");
}
ImportModel<SampleRow> samplingPlanImportModel =
- new SamplingPlanImportExportModel(connectedUser, observationUnits, waoUsers);
+ new SamplingPlanImportExportModel(connectedUser, observationUnits, waoUsers, allCompanies);
try {
Import<SampleRow> samplingPlanImport = new Import<SampleRow>(samplingPlanImportModel, input);
@@ -1424,7 +1431,8 @@
fromDate = DateUtil.setMinTimeOfDay(fromDate);
toDate = DateUtil.setMaxTimeOfDay(toDate);
- samplingFilter.setObsProgram(connectedUser.getProfile().getObsProgram());
+ ObsProgram obsProgram = connectedUser.getProfile().getObsProgram();
+ samplingFilter.setObsProgram(obsProgram);
samplingFilter.setPeriod(new PeriodDates(fromDate, toDate));
samplingFilter.setEstimatedTides(true);
@@ -1435,6 +1443,10 @@
samplingFilter.setCompany(connectedUser.getCompany());
}
+ if (ObsProgram.OBSDEB == obsProgram && connectedUser.isObserver()) {
+ samplingFilter.setObserver(connectedUser.getUser());
+ }
+
return samplingFilter;
}
}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java 2011-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java 2011-04-06 14:33:04 UTC (rev 1145)
@@ -80,46 +80,4 @@
Assert.assertTrue(locationsCodes.contains("XPY"));
Assert.assertTrue(locationsCodes.contains("TJA"));
}
-
- @Test
- @Ignore("not yet implemented")
- public void testImportSamplingPlan() throws IOException {
-
- TerrestrialDivision uo07 = new TerrestrialDivisionImpl();
- uo07.setRegionIfremerCode("GA");
- uo07.setObservationUnitCode("UO007");
- TerrestrialDivision uo87 = new TerrestrialDivisionImpl();
- uo87.setRegionIfremerCode("MA");
- uo87.setObservationUnitCode("UO087");
-
- List<TerrestrialDivision> terrestrialDivisions = new ArrayList<TerrestrialDivision>();
- terrestrialDivisions.add(uo07);
- terrestrialDivisions.add(uo87);
-
- ImportModel<SampleRow> model = new SamplingPlanImportExportModel(null, terrestrialDivisions, null);
- InputStream input = null;
- try {
- input = getClass().getResourceAsStream("/import/samplingPlan-obsdeb.csv");
- Import<SampleRow> samplingPlanImport = new Import<SampleRow>(model, input);
-
- ValidationResult validationResult = samplingPlanImport.validateCsv();
- if (log.isDebugEnabled()) {
- log.debug("validation result message : " + validationResult.getMessage());
- }
- Assert.assertTrue(validationResult.isSuccess());
-
- Iterator<SampleRow> it = samplingPlanImport.startImport();
-
- List<SampleRow> sampleRows = new ArrayList<SampleRow>();
- while (it.hasNext()) {
- SampleRow sampleRow = it.next();
- sampleRows.add(sampleRow);
- if (log.isDebugEnabled()) {
- log.debug(sampleRow.getObservationUnit().getObservationUnitCode());
- }
- }
- } finally {
- IOUtils.closeQuietly(input);
- }
- }
}
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-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-04-06 14:33:04 UTC (rev 1145)
@@ -30,7 +30,10 @@
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterValues;
import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.Company;
+import fr.ifremer.wao.entity.CompanyImpl;
import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.UserProfile;
import fr.ifremer.wao.entity.UserProfileImpl;
import fr.ifremer.wao.entity.WaoUser;
@@ -39,6 +42,7 @@
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import org.nuiton.util.DateUtil;
import org.nuiton.util.PeriodDates;
@@ -58,18 +62,45 @@
protected WaoUser josh;
+ protected Company codeLutin;
+
+ protected Company ifremer;
+
protected ServiceUser serviceUser;
protected static final String CSV_CONTENT =
- "PLAN_CODE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD\n"
- + "2011_888;GA;OBS1;05/01/2010;UO007\n"
- + "2011_889;MA;OBS2;25/02/2010;UO087";
+ "PLAN_CODE;SOCIETE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD\n"
+ + "2011_888;Ifremer;GA;OBS1;05/01/2010;UO007\n"
+ + "2011_889;Code Lutin;MA;OBS2;25/02/2010;UO087\n"
+ + "2011_890;Code Lutin;GA;OBS1;13/02/2010;UO007\n"
+ + "2011_891;Code Lutin;MA;OBS2;13/02/2010;UO087";
protected static final String CSV_WITH_OBSERVERS_CONTENT =
- "PLAN_CODE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n"
- + "2011_888;GA;OBS1;05/01/2010;UO007;\n"
- + "2011_889;MA;OBS2;25/02/2010;UO087;josh";
+ "PLAN_CODE;SOCIETE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n"
+ + "2011_890;Code Lutin;GA;OBS1;13/02/2010;UO007;josh";
+ protected Company codeLutin() {
+ if (codeLutin == null) {
+ codeLutin = new CompanyImpl();
+ codeLutin.setName("Code Lutin");
+ codeLutin.setActive(true);
+ serviceUser = manager.getServiceUser();
+ serviceUser.createUpdateCompany(codeLutin);
+ }
+ return codeLutin;
+ }
+
+ protected Company ifremer() {
+ if (ifremer == null) {
+ ifremer = new CompanyImpl();
+ ifremer.setName("Ifremer");
+ ifremer.setActive(true);
+ serviceUser = manager.getServiceUser();
+ serviceUser.createUpdateCompany(ifremer);
+ }
+ return ifremer;
+ }
+
protected WaoUser josh() throws WaoBusinessException {
if (josh == null) {
josh = new WaoUserImpl();
@@ -78,6 +109,7 @@
josh.setLastName("B.");
josh.setPassword(manager.getContext().encodeString("mdp"));
josh.setActive(true);
+ josh.setCompany(codeLutin());
serviceUser = manager.getServiceUser();
serviceUser.createUpdateUser(josh, false);
josh.setPassword("mdp");
@@ -87,7 +119,6 @@
protected ConnectedUser joshAsAdministrator() throws WaoBusinessException {
UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.ADMIN, true);
- josh();
ConnectedUser connectedUser = serviceUser.connect(josh().getLogin(), josh().getPassword());
connectedUser.setProfile(userProfile);
return connectedUser;
@@ -95,19 +126,33 @@
protected ConnectedUser joshAsCoordinator() throws WaoBusinessException {
UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.COORDINATOR, true);
- josh();
ConnectedUser connectedUser = serviceUser.connect(josh().getLogin(), josh().getPassword());
connectedUser.setProfile(userProfile);
return connectedUser;
}
+ protected ConnectedUser joshAsObserver() throws WaoBusinessException {
+ UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.OBSERVER, true);
+ ConnectedUser connectedUser = serviceUser.connect(josh().getLogin(), josh().getPassword());
+ connectedUser.setProfile(userProfile);
+ return connectedUser;
+ }
+
/**
* As an admin, i must be able to import terrestrial divisions
*/
@Test
- public void adminCanImportTerrestrialDistrict() {
+ public void adminCanImportTerrestrialDivisions() {
+ ServiceReferential serviceReferential = manager.getServiceReferential();
+
+ // as an admin, i can import terrestrial divisions, i should not
+ // raise any exception
InputStream input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv");
- manager.getServiceReferential().importTerrestrialDivisions(input);
+ serviceReferential.importTerrestrialDivisions(input);
+
+ // i can read what was imported
+ List<TerrestrialDivision> observationsUnits = serviceReferential.getAllObservationUnits();
+ Assert.assertEquals(243, observationsUnits.size());
}
/**
@@ -115,10 +160,20 @@
*/
@Test
public void adminCanImportSamplingPlan() throws WaoBusinessException {
- adminCanImportTerrestrialDistrict();
+ adminCanImportTerrestrialDivisions();
+
+ // First create add two companies in Wao
+ manager.setCurrentDate(DateUtil.createDate(2, 1, 2010));
+
+ ifremer();
+ codeLutin();
+
+ // Then, import the sampling plan
+ manager.setCurrentDate(DateUtil.createDate(3, 1, 2010));
+
InputStream input = IOUtils.toInputStream(CSV_CONTENT);
ImportResults importResults = manager.getServiceSampling().importSamplingPlanCsv(input, joshAsAdministrator());
- Assert.assertEquals(2, importResults.getNbRowsImported());
+ Assert.assertEquals(4, importResults.getNbRowsImported());
Assert.assertEquals(0, importResults.getNbRowsRefused());
}
@@ -151,13 +206,15 @@
if (log.isDebugEnabled()) {
log.debug(sampleRows.toString());
}
- Assert.assertEquals(2, sampleRows.size());
+ // as an admin, i can see all the sample-rows for all companies
+ Assert.assertEquals(4, sampleRows.size());
for (SampleRow sampleRow : sampleRows) {
// i must be able to read those values without error
sampleRow.getObservationUnit().getObservationUnitCode();
sampleRow.getDay();
sampleRow.getGroupName();
+ sampleRow.getCompany().getName();
// all the rows have a code
Assert.assertTrue(StringUtils.isNotEmpty(sampleRow.getCode()));
@@ -186,19 +243,54 @@
samplingFilter.setPeriod(new PeriodDates(DateUtil.createDate(20, 2, 2010),
DateUtil.createDate(27, 2, 2010)));
+ if (log.isDebugEnabled()) {
+ log.debug("sampling filter for admin with period is " + samplingFilter.toString());
+ }
+
// service should have returned the line with date 25/02/2010
List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
Assert.assertEquals(1, sampleRows.size());
Assert.assertEquals("2011_889", sampleRows.get(0).getCode());
}
+ /**
+ * As an admin, i should be able to read sampling plan
+ */
@Test
+ public void coordinatorCanReadSamplingPlan() throws WaoBusinessException {
+
+ // given a sampling plan
+ adminCanImportSamplingPlan();
+
+ // as a coordinator, i can get the sampling plan
+ ServiceSampling serviceSampling = manager.getServiceSampling();
+
+ manager.setCurrentDate(DateUtil.createDate(25, 1, 2010));
+
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsCoordinator());
+
+ if (log.isDebugEnabled()) {
+ log.debug("a new empty sampling filter for coordinator is " + samplingFilter.toString());
+ }
+
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
+
+ if (log.isDebugEnabled()) {
+ log.debug(sampleRows.toString());
+ }
+ // as an coordinator, i can see all sample-rows only for my company
+ Assert.assertEquals(3, sampleRows.size());
+ }
+
+ @Test
public void coordinatorCanAddObserversViaImport() throws WaoBusinessException, IOException {
// given a sampling plan
adminCanImportSamplingPlan();
ServiceSampling serviceSampling = manager.getServiceSampling();
+
+ // as a coordinator, i can export the sampling plan
SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsCoordinator());
InputStream input = serviceSampling.exportSamplingPlanCsv(joshAsCoordinator(), samplingFilter);
@@ -209,24 +301,48 @@
log.debug("CSV file as it will be imported (with observers):\n" + CSV_WITH_OBSERVERS_CONTENT);
}
+ // i can add a column to add observers to each line
serviceSampling.importSamplingPlanCsv(IOUtils.toInputStream(CSV_WITH_OBSERVERS_CONTENT), joshAsCoordinator());
// now getting the sampling plan and checking that observers are linked to sample rows
samplingFilter = serviceSampling.newSamplingFilter(joshAsCoordinator());
- SampleRow row2011_889 = serviceSampling.getSampleRowByCode(joshAsCoordinator(), "2011_889");
- Assert.assertEquals(1, row2011_889.sizeObservers());
+ SampleRow row2011_890 = serviceSampling.getSampleRowByCode(joshAsCoordinator(), "2011_890");
+ Assert.assertEquals(1, row2011_890.sizeObservers());
// adding an observer must add a log entry
- Assert.assertEquals(1, row2011_889.sizeSampleRowLog());
+ Assert.assertEquals(1, row2011_890.sizeSampleRowLog());
// the text of the log entry itself
- String logEntry = row2011_889.getSampleRowLog().get(0).getLogText();
+ String logEntry = row2011_890.getSampleRowLog().get(0).getLogText();
if (log.isDebugEnabled()) {
log.debug("log entry after update on observers is: '" + logEntry + "'");
}
- Assert.assertTrue("added observer is mentioned in the log", logEntry.contains("Joshua"));
+ Assert.assertTrue("added observer is mentioned in the log", logEntry.contains(josh().getFullName()));
}
+ @Test
+ @Ignore("not yet implemented")
+ public void observerCanReadSamplingPlan() throws IOException, WaoBusinessException {
+ // first, the coordinator must add observers
+ coordinatorCanAddObserversViaImport();
+
+ // as an observer, i can get the sampling plan
+ ServiceSampling serviceSampling = manager.getServiceSampling();
+
+ manager.setCurrentDate(DateUtil.createDate(25, 1, 2010));
+
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsObserver());
+
+ if (log.isDebugEnabled()) {
+ log.debug("a new empty sampling filter for observer is " + samplingFilter.toString());
+ }
+
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
+
+ // as an observer, i can see only the sample-rows the coordinator affected to me
+ Assert.assertEquals(1, sampleRows.size());
+ }
+
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-04-06 14:33:04 UTC (rev 1145)
@@ -32,6 +32,8 @@
import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.bean.SamplingStrategy;
import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.bean.ValidationResult;
+import fr.ifremer.wao.bean.ValidationResultImpl;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.DCF5Code;
@@ -85,6 +87,7 @@
import org.nuiton.util.StringUtil;
import org.slf4j.Logger;
+import javax.transaction.NotSupportedException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -659,152 +662,192 @@
saveProgram();
}
+ protected ValidationResult validateSampleRow(SampleRow sampleRow) {
+ ValidationResult validationResult = new ValidationResultImpl();
+
+ if (ObsProgram.OBSDEB == sampleRow.getObsProgram()) {
+
+ if (sampleRow.getObservers() != null && sampleRow.getDay() != null) {
+ for (WaoUser observer : sampleRow.getObservers()) {
+
+ // let's find a conflict, is there another sample-row
+ // declaring the this observer should be anywhere on the
+ // same day
+
+ // SampleRowDAO sampleRowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
+ // Map<String, Object> properties = new HashMap<String, Object>();
+ // properties.put(SampleRow.PROPERTY_OBS_PROGRAM_ORDINAL, sampleRow.getObsProgram().ordinal());
+ // properties.put(SampleRow.PROPERTY_DAY, sampleRow.getDay());
+ // addInObservers
+ }
+ }
+
+ } else {
+ throw new UnsupportedOperationException("not supported (yet)");
+ }
+
+ return validationResult;
+ }
+
@Log
void onValidateFormFromSampleRowForm() throws WaoException {
sampleRowForm.clearErrors();
- if (StringUtils.isNotEmpty(terrestrialLocationId)) {
- getSampleRow().setTerrestrialLocation(
- getTerrestrialLocationSelectModel().findObject(terrestrialLocationId));
- }
+ if (ObsProgram.OBSDEB == getSampleRow().getObsProgram()) {
- // remove sampleMonths with "-1" as value, it should be removed
- // to mean that no observation should be done this month
- List<SampleMonth> sampleMonths = new ArrayList<SampleMonth>();
- for (SampleMonth sampleMonth : getSampleMonths()) {
- if (sampleMonth.getExpectedTidesValue() != -1) {
- sampleMonths.add(sampleMonth);
+ ValidationResult validationResult = validateSampleRow(getSampleRow());
+
+ if ( ! validationResult.isSuccess()) {
+ sampleRowForm.recordError(validationResult.getMessage());
}
- }
- getSampleRow().clearSampleMonth();
- getSampleRow().addAllSampleMonth(sampleMonths);
- try {
- // Only for save or periodChanged (refreshMonth)
- if (!cancel && !edited) {
- if (StringUtils.isEmpty(getSampleRow().getProgramName())) {
- sampleRowForm.recordError(program,
- "Vous devez choisir un programme existant ou en créer un nouveau");
+ } else {
+
+ // TODO 20110406 bleny move validation of ObsMer/ObsVente in ServiceSampling#validateSampleRow()
+
+ if (StringUtils.isNotEmpty(terrestrialLocationId)) {
+ getSampleRow().setTerrestrialLocation(
+ getTerrestrialLocationSelectModel().findObject(terrestrialLocationId));
+ }
+
+ // remove sampleMonths with "-1" as value, it should be removed
+ // to mean that no observation should be done this month
+ List<SampleMonth> sampleMonths = new ArrayList<SampleMonth>();
+ for (SampleMonth sampleMonth : getSampleMonths()) {
+ if (sampleMonth.getExpectedTidesValue() != -1) {
+ sampleMonths.add(sampleMonth);
}
+ }
+ getSampleRow().clearSampleMonth();
+ getSampleRow().addAllSampleMonth(sampleMonths);
- // validate DCF5 codes
- getSampleRow().setDCF5Code(getDcf5codes(), ", ");
- if (CollectionUtils.isEmpty(getSampleRow().getDCF5Code())) {
- sampleRowForm.recordError("Vous devez associer au moins un code DCF5");
- } else {
- // check that codes exist in the reference
- SamplingFilter noFilter = new SamplingFilterImpl();
- List<String> existingFishingGearCodes = new LinkedList<String>();
- // filling existingFishingGearCodes
- for (FishingGearDCF dcfGear : serviceSampling.getDCFGears(noFilter)) {
- existingFishingGearCodes.add(dcfGear.getCode());
+ try {
+ // Only for save or periodChanged (refreshMonth)
+ if (!cancel && !edited) {
+ if (StringUtils.isEmpty(getSampleRow().getProgramName())) {
+ sampleRowForm.recordError(program,
+ "Vous devez choisir un programme existant ou en créer un nouveau");
}
- List<String> existingTargetSpeciesCodes = new LinkedList<String>();
- for (TargetSpeciesDCF dcfSpecies : serviceSampling.getDCFSpecies(noFilter)) {
- existingTargetSpeciesCodes.add(dcfSpecies.getCode());
- }
-
- for (DCF5Code code : getSampleRow().getDCF5Code()) {
- if ( ! existingFishingGearCodes.contains(code.getFishingGearCode())) {
- sampleRowForm.recordError(code.getFishingGearCode() + " n'est pas un code d'engin valide");
+ // validate DCF5 codes
+ getSampleRow().setDCF5Code(getDcf5codes(), ", ");
+ if (CollectionUtils.isEmpty(getSampleRow().getDCF5Code())) {
+ sampleRowForm.recordError("Vous devez associer au moins un code DCF5");
+ } else {
+ // check that codes exist in the reference
+ SamplingFilter noFilter = new SamplingFilterImpl();
+ List<String> existingFishingGearCodes = new LinkedList<String>();
+ // filling existingFishingGearCodes
+ for (FishingGearDCF dcfGear : serviceSampling.getDCFGears(noFilter)) {
+ existingFishingGearCodes.add(dcfGear.getCode());
}
+ List<String> existingTargetSpeciesCodes = new LinkedList<String>();
+ for (TargetSpeciesDCF dcfSpecies : serviceSampling.getDCFSpecies(noFilter)) {
+ existingTargetSpeciesCodes.add(dcfSpecies.getCode());
+ }
- if (StringUtils.isEmpty(code.getTargetSpeciesCode())) {
- if (StringUtils.isEmpty(getSampleRow().getProfession().getSpecies())) {
- sampleRowForm.recordError("Le code DCF d'espèces cibles peut ne pas être renseigné, mais dans ce cas il faut préciser une description des espèces cibles");
+
+ for (DCF5Code code : getSampleRow().getDCF5Code()) {
+ if ( ! existingFishingGearCodes.contains(code.getFishingGearCode())) {
+ sampleRowForm.recordError(code.getFishingGearCode() + " n'est pas un code d'engin valide");
}
- } else {
- if ( ! existingTargetSpeciesCodes.contains(code.getTargetSpeciesCode())) {
- sampleRowForm.recordError(code.getTargetSpeciesCode() + " n'est pas un code d'espèces cibles valide");
+
+ if (StringUtils.isEmpty(code.getTargetSpeciesCode())) {
+ if (StringUtils.isEmpty(getSampleRow().getProfession().getSpecies())) {
+ sampleRowForm.recordError("Le code DCF d'espèces cibles peut ne pas être renseigné, mais dans ce cas il faut préciser une description des espèces cibles");
+ }
+ } else {
+ if ( ! existingTargetSpeciesCodes.contains(code.getTargetSpeciesCode())) {
+ sampleRowForm.recordError(code.getTargetSpeciesCode() + " n'est pas un code d'espèces cibles valide");
+ }
}
}
}
- }
- Date periodBegin = getSampleRow().getPeriodBegin();
- Date periodEnd = getSampleRow().getPeriodEnd();
+ Date periodBegin = getSampleRow().getPeriodBegin();
+ Date periodEnd = getSampleRow().getPeriodEnd();
- // Validation for period dates
- if (periodBegin == null) {
- sampleRowForm.recordError(programPeriodBegin,
- "Vous ne pouvez pas rafraîchir les mois avec une date de début de programme vide");
- }
- if (periodEnd == null) {
- sampleRowForm.recordError(programPeriodEnd,
- "Vous ne pouvez pas rafraîchir les mois avec une date de fin de programme vide");
- }
+ // Validation for period dates
+ if (periodBegin == null) {
+ sampleRowForm.recordError(programPeriodBegin,
+ "Vous ne pouvez pas rafraîchir les mois avec une date de début de programme vide");
+ }
+ if (periodEnd == null) {
+ sampleRowForm.recordError(programPeriodEnd,
+ "Vous ne pouvez pas rafraîchir les mois avec une date de fin de programme vide");
+ }
- if (periodBegin != null && periodEnd != null) {
+ if (periodBegin != null && periodEnd != null) {
- SampleMonth firstMonth = getSampleMonths().get(0);
+ SampleMonth firstMonth = getSampleMonths().get(0);
- if (firstMonth != null) {
- Date firstDate = firstMonth.getPeriodDate();
+ if (firstMonth != null) {
+ Date firstDate = firstMonth.getPeriodDate();
- if (periodBegin.after(firstDate) && firstMonth.getRealTidesValue() != 0) {
- sampleRowForm.recordError(programPeriodBegin,
- "Vous ne pouvez pas réduire la période du programme. " +
- "Il existe des enregistrements de marées réels.");
+ if (periodBegin.after(firstDate) && firstMonth.getRealTidesValue() != 0) {
+ sampleRowForm.recordError(programPeriodBegin,
+ "Vous ne pouvez pas réduire la période du programme. " +
+ "Il existe des enregistrements de marées réels.");
+ }
}
+
+ for (SampleMonth month : getSampleMonths()) {
+ if (log.isTraceEnabled()) {
+ log.trace("month : " + month.formatMonth() + " _ " +
+ propertyChange.hasChanged(month.getTopiaId()));
+ }
+
+ if (propertyChange.hasChanged(month.getTopiaId()) &&
+ month.getExpectedTidesValue() < month.getRealTidesValue()) {
+ sampleRowForm.recordError(
+ "Il n'est pas possible de mettre moins de marées (" + month.getExpectedTidesValue() + ") " +
+ "pour le mois " + getDateFormat().format(month.getPeriodDate()) +
+ " qu'il y en a de réels (" + month.getRealTidesValue() + ")");
+ }
+ }
}
- for (SampleMonth month : getSampleMonths()) {
- if (log.isTraceEnabled()) {
- log.trace("month : " + month.formatMonth() + " _ " +
- propertyChange.hasChanged(month.getTopiaId()));
+ // Validate profession, fishingZone and boats (from immatriculations) if no programChanged
+ if (!periodChanged) {
+
+ if (!isCreateMode() && StringUtils.isEmpty(sampleRowLog.getComment())) {
+ sampleRowForm.recordError(updateComment,
+ "Un commentaire est obligatoire lors d'une modification de la ligne");
}
- if (propertyChange.hasChanged(month.getTopiaId()) &&
- month.getExpectedTidesValue() < month.getRealTidesValue()) {
+ if (CollectionUtils.isEmpty(getSampleRow().getDCF5Code())) {
sampleRowForm.recordError(
- "Il n'est pas possible de mettre moins de marées (" + month.getExpectedTidesValue() + ") " +
- "pour le mois " + getDateFormat().format(month.getPeriodDate()) +
- " qu'il y en a de réels (" + month.getRealTidesValue() + ")");
+ "Le métier doit obligatoirement avoir un Code DCF niveau 5");
}
- }
- }
+ int nbZones = getSampleRow().sizeFishingZone();
+ if (nbZones == 0) {
+ sampleRowForm.recordError(fishingZoneSelect,
+ "Vous devez ajouter au moins une zone de pêche à la ligne");
+ }
- // Validate profession, fishingZone and boats (from immatriculations) if no programChanged
- if (!periodChanged) {
-
- if (!isCreateMode() && StringUtils.isEmpty(sampleRowLog.getComment())) {
- sampleRowForm.recordError(updateComment,
- "Un commentaire est obligatoire lors d'une modification de la ligne");
+ boats = serviceBoat.getBoatsByImmatriculations(immatriculations);
+ // Update sampleRowCode from program only if changed
+ } else if (isCreateMode()) {
+ String rowCode = serviceSampling.getNewSampleRowCode(periodBegin);
+ getSampleRow().setCode(rowCode);
}
- if (CollectionUtils.isEmpty(getSampleRow().getDCF5Code())) {
- sampleRowForm.recordError(
- "Le métier doit obligatoirement avoir un Code DCF niveau 5");
+ if (sampleRow.getSamplingStrategy() == SamplingStrategy.SPECIFIC_STOCK) {
+ if (StringUtils.isEmpty(getSampleRow().getProfession().getSpecies())) {
+ sampleRowForm.recordError("Pour ce choix de stratégie d'échantillonnage, il faut préciser les espèces cibles");
+ }
}
- int nbZones = getSampleRow().sizeFishingZone();
- if (nbZones == 0) {
- sampleRowForm.recordError(fishingZoneSelect,
- "Vous devez ajouter au moins une zone de pêche à la ligne");
- }
-
- boats = serviceBoat.getBoatsByImmatriculations(immatriculations);
- // Update sampleRowCode from program only if changed
- } else if (isCreateMode()) {
- String rowCode = serviceSampling.getNewSampleRowCode(periodBegin);
- getSampleRow().setCode(rowCode);
}
+ } catch (WaoBusinessException eee) {
+ sampleRowForm.recordError(eee.getMessage());
+ log.error("BUSINESS ERROR : " + eee.getType() + " depuis " + eee.getServiceName() +
+ " : " + eee.getMessage());
+ }
- if (sampleRow.getSamplingStrategy() == SamplingStrategy.SPECIFIC_STOCK) {
- if (StringUtils.isEmpty(getSampleRow().getProfession().getSpecies())) {
- sampleRowForm.recordError("Pour ce choix de stratégie d'échantillonnage, il faut préciser les espèces cibles");
- }
- }
+ if (log.isDebugEnabled()) {
+ log.debug("SampleMonths : " + getSampleMonths());
}
- } catch (WaoBusinessException eee) {
- sampleRowForm.recordError(eee.getMessage());
- log.error("BUSINESS ERROR : " + eee.getType() + " depuis " + eee.getServiceName() +
- " : " + eee.getMessage());
}
-
- if (log.isDebugEnabled()) {
- log.debug("SampleMonths : " + getSampleMonths());
- }
}
@InjectPage
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-04-06 14:33:04 UTC (rev 1145)
@@ -57,6 +57,14 @@
t:values="possibleValuesForFilter.observationUnitsAsList"
t:selectedValue="filter.observationUnit" />
</div>
+ <div>
+ <label for="observer">${message:wao.ui.field.SampleRow.observers}</label>
+ <t:topiaEntitySelector t:id="observer"
+ t:clazzName="WaoUser"
+ t:labelPropertyName="fullName"
+ t:values="possibleValuesForFilter.observersAsList"
+ t:selectedValue="filter.observer" />
+ </div>
<p:else>
<!-- filter field for ObsMer and ObsVente -->
<div>
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-04-06 14:20:17 UTC (rev 1144)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-04-06 14:33:04 UTC (rev 1145)
@@ -1,204 +1,204 @@
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.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.SampleRow.day=
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.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.mainObserver=Observateur r\u00e9f\u00e9rent
+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.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.code=Code ligne
wao.ui.field.SampleRow.comment=Commentaire
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.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.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.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.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.export=Export
wao.ui.misc.export.longTitle=Export CSV
wao.ui.misc.import-export=Import/export
@@ -208,7 +208,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
@@ -218,69 +218,69 @@
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.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.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.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.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.unavailableOperation=Op\u00e9ration non-disponible
+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.unavailableOperation=Op\u00E9ration non-disponible
wao.ui.userList=Liste des utilisateurs
wao.ui.validLogin=Identifiant valide
1
0