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
- 2352 discussions
r2005 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 16:29:53 +0200 (Thu, 05 Jun 2014)
New Revision: 2005
Url: http://forge.codelutin.com/projects/wao/repository/revisions/2005
Log:
refs #4493 fix some NPEs
Modified:
trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
===================================================================
--- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 14:15:10 UTC (rev 2004)
+++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 14:29:53 UTC (rev 2005)
@@ -410,6 +410,7 @@
HqlAndParametersBuilder<Contact> hqlAndParametersBuilder = toContactHqlAndParametersBuilder(filter);
hqlAndParametersBuilder.addEquals(Contact.PROPERTY_STATE, ContactState.OBSERVATION_DONE.ordinal());
+ hqlAndParametersBuilder.addNotNull(Contact.PROPERTY_DATA_INPUT_DATE);
String hql = "select c.sampleRow.company.topiaId, c.observationEndDate, c.dataInputDate " + hqlAndParametersBuilder.getHql();
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 14:15:10 UTC (rev 2004)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 14:29:53 UTC (rev 2005)
@@ -76,11 +76,11 @@
}
public double getDataReliabilityRatio() {
+ Long reliableObservationsCount = getReliableObservationsCount();
Long doneObservationsCount = getContactsStatesStatistics().get(ContactState.OBSERVATION_DONE);
double ratio = 0.;
- if (doneObservationsCount != null && doneObservationsCount > 0) {
- double reliableObservationsCount = (double) getReliableObservationsCount();
- ratio = reliableObservationsCount / doneObservationsCount;
+ if (reliableObservationsCount != null && doneObservationsCount != null && doneObservationsCount > 0) {
+ ratio = (double) reliableObservationsCount / doneObservationsCount;
}
return ratio;
}
1
0
r2004 - in trunk/wao-web/src/main: java/fr/ifremer/wao/web java/fr/ifremer/wao/web/action/obsmer webapp/WEB-INF/content/obsmer
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 16:15:10 +0200 (Thu, 05 Jun 2014)
New Revision: 2004
Url: http://forge.codelutin.com/projects/wao/repository/revisions/2004
Log:
refs #4493 user different filter object in session for synthesis
Added:
trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSynthesisFilterAction.java
Modified:
trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoSession.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/DeleteContactAction.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetBoatsFilterAction.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetContactsFilterAction.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSampleRowsFilterAction.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SynthesisAction.java
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/boats.jsp
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoSession.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoSession.java 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoSession.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -54,6 +54,8 @@
protected ContactsFilter contactsFilter;
+ protected ContactsFilter synthesisFilter;
+
public Collection<String> getMessages() {
if (messages == null) {
messages = Lists.newLinkedList();
@@ -143,4 +145,12 @@
public void setContactsFilter(ContactsFilter contactsFilter) {
this.contactsFilter = contactsFilter;
}
+
+ public void setSynthesisFilter(ContactsFilter synthesisFilter) {
+ this.synthesisFilter = synthesisFilter;
+ }
+
+ public ContactsFilter getSynthesisFilter() {
+ return synthesisFilter;
+ }
}
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/DeleteContactAction.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/DeleteContactAction.java 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/DeleteContactAction.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -59,7 +59,7 @@
}
@Override
- public String execute() throws Exception {
+ public String execute() {
Contact contact = service.getContact(contactId);
String contactCode = contact.getMainObserver().getFullName();
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -299,4 +299,5 @@
session.setContactToHighlightId(updateContactCommand.getContact().getTopiaId());
return SUCCESS;
}
+
}
\ No newline at end of file
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetBoatsFilterAction.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetBoatsFilterAction.java 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetBoatsFilterAction.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -37,7 +37,7 @@
private static final long serialVersionUID = 1L;
@Override
- public String execute() throws Exception {
+ public String execute() {
// clean boats filter from session
getSession().setBoatsFilter(null);
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetContactsFilterAction.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetContactsFilterAction.java 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetContactsFilterAction.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -37,7 +37,7 @@
private static final long serialVersionUID = 1L;
@Override
- public String execute() throws Exception {
+ public String execute() {
// clean contacts filter from session
getSession().setContactsFilter(null);
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSampleRowsFilterAction.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSampleRowsFilterAction.java 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSampleRowsFilterAction.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -37,7 +37,7 @@
private static final long serialVersionUID = 1L;
@Override
- public String execute() throws Exception {
+ public String execute() {
// clean sampling plan filter from session
getSession().setSampleRowsFilter(null);
Copied: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSynthesisFilterAction.java (from rev 1985, trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSampleRowsFilterAction.java)
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSynthesisFilterAction.java (rev 0)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ResetSynthesisFilterAction.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -0,0 +1,40 @@
+package fr.ifremer.wao.web.action.obsmer;
+
+/*
+ * #%L
+ * Wao :: Web
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import fr.ifremer.wao.web.WaoJspActionSupport;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.convention.annotation.Results;
+
+@Results({@Result(name = WaoJspActionSupport.SUCCESS, type = "redirectAction", params = {"actionName", "synthesis"})})
+public class ResetSynthesisFilterAction extends WaoJspActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String execute() {
+
+ // clean sampling plan filter from session
+ getSession().setSynthesisFilter(null);
+ return SUCCESS;
+ }
+}
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SynthesisAction.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SynthesisAction.java 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SynthesisAction.java 2014-06-05 14:15:10 UTC (rev 2004)
@@ -28,7 +28,11 @@
@Override
public void prepare() {
- filter = service.newFilter(getAuthenticatedWaoUser());
+ filter = getSession().getContactsFilter();
+ if (filter == null) {
+ filter = service.newFilter(getAuthenticatedWaoUser());
+ getSession().setSynthesisFilter(filter);
+ }
}
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/boats.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/boats.jsp 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/boats.jsp 2014-06-05 14:15:10 UTC (rev 2004)
@@ -148,9 +148,10 @@
<i class="icon-filter"></i> <s:text name="wao.ui.action.filter"/>
</s:submit>
- <s:submit action="reset-boats-filter" type="button" cssClass="btn">
- <i class="icon-reset"></i> <s:text name="wao.ui.action.reset" />
- </s:submit>
+ <s:url action="reset-boats-filter" id="resetFilterUrl" />
+ <s:a href="%{resetFilterUrl}" cssClass="btn">
+ <i class="icon-trash"></i> <s:text name="wao.ui.action.reset"/>
+ </s:a>
<s:submit action="export-boats" type="button" cssClass="btn">
<i class="icon-download"></i> <s:text name="wao.ui.action.csvExport"/>
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp 2014-06-05 14:15:10 UTC (rev 2004)
@@ -207,9 +207,10 @@
<i class="icon-filter"></i> <s:text name="wao.ui.action.filter"/>
</s:submit>
- <s:submit action="reset-contacts-filter" type="button" cssClass="btn">
- <i class="icon-reset"></i> <s:text name="wao.ui.action.reset"/>
- </s:submit>
+ <s:url action="reset-contacts-filter" id="resetFilterUrl" />
+ <s:a href="%{resetFilterUrl}" cssClass="btn">
+ <i class="icon-trash"></i> <s:text name="wao.ui.action.reset"/>
+ </s:a>
<s:submit action="export-contacts" type="button" cssClass="btn">
<i class="icon-download"></i> <s:text name="wao.ui.action.csvExport"/>
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp 2014-06-05 14:15:10 UTC (rev 2004)
@@ -137,9 +137,10 @@
<i class="icon-filter"></i> <s:text name="wao.ui.action.filter" />
</s:submit>
- <s:submit action="reset-sample-rows-filter" type="button" cssClass="btn">
- <i class="icon-reset"></i> <s:text name="wao.ui.action.reset"/>
- </s:submit>
+ <s:url action="reset-sample-rows-filter" id="resetFilterUrl" />
+ <s:a href="%{resetFilterUrl}" cssClass="btn">
+ <i class="icon-trash"></i> <s:text name="wao.ui.action.reset"/>
+ </s:a>
<s:submit action="export-sampling-plan" type="button" cssClass="btn">
<i class="icon-download"></i> <s:text name="wao.ui.action.csvExport" />
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 13:52:12 UTC (rev 2003)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 14:15:10 UTC (rev 2004)
@@ -174,9 +174,9 @@
<i class="icon-filter"></i> <s:text name="wao.ui.action.filter"/>
</s:submit>
- <s:url action="reset-synthesis-filter" id="resetSynthesisFilterUrl" />
- <s:a href="%{resetSynthesisFilterUrl}" cssClass="btn">
- <i class="icon-reset"></i> <s:text name="wao.ui.action.reset"/>
+ <s:url action="reset-sample-rows-filter" id="resetFilterUrl" />
+ <s:a href="%{resetFilterUrl}" cssClass="btn">
+ <i class="icon-trash"></i> <s:text name="wao.ui.action.reset"/>
</s:a>
</div>
1
0
r2003 - in trunk/wao-web/src/main/webapp: . WEB-INF/content/obsmer
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 15:52:12 +0200 (Thu, 05 Jun 2014)
New Revision: 2003
Url: http://forge.codelutin.com/projects/wao/repository/revisions/2003
Log:
refs #4493 review filter
Removed:
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts-filter.jsp
Modified:
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
trunk/wao-web/src/main/webapp/wao.css
Deleted: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts-filter.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts-filter.jsp 2014-06-05 13:39:25 UTC (rev 2002)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts-filter.jsp 2014-06-05 13:52:12 UTC (rev 2003)
@@ -1,163 +0,0 @@
-<head>
- <script>
-
- $(document).ready(function () {
-
- var contactsFilterMappings = [
- <s:if test="authenticatedWaoUser.authorizedToViewOtherCompanies">
- {
- filterName: 'sampleRowFilter.companyIds',
- filterLabel: "<s:text name="wao.ui.entity.Company"/>",
- filterValuesField: 'sampleRowsFilterValues.companies',
- },
- </s:if>
- {
- filterName: 'sampleRowFilter.sampleRowCodes',
- filterLabel: "<s:text name="wao.ui.field.SampleRow.code"/>",
- filterValuesField: 'sampleRowsFilterValues.sampleRowCodes',
- },
- {
- filterName: 'sampleRowFilter.programNames',
- filterLabel: "<s:text name="wao.ui.field.SampleRow.programName"/>",
- filterValuesField: 'sampleRowsFilterValues.programNames',
- },
- {
- filterName: 'sampleRowFilter.fishingZoneFacadeNames',
- filterLabel: "<s:text name="wao.ui.field.FishingZone.facadeName"/>",
- filterValuesField: 'sampleRowsFilterValues.fishingZoneFacadeNames',
- },
- {
- filterName: 'sampleRowFilter.fishingZoneSectorNames',
- filterLabel: "<s:text name="wao.ui.field.FishingZone.sectorName"/>",
- filterValuesField: 'sampleRowsFilterValues.fishingZoneSectorNames',
- },
- {
- filterName: 'sampleRowFilter.fishingGearDcfIds',
- filterLabel: "<s:text name="wao.ui.entity.fishingGearDCF"/>",
- filterValuesField: 'sampleRowsFilterValues.fishingGearDcfs',
- },
- {
- filterName: 'sampleRowFilter.targetSpeciesDcfIds',
- filterLabel: "<s:text name="wao.ui.entity.targetSpeciesDCF"/>",
- filterValuesField: 'sampleRowsFilterValues.targetSpeciesDcfs',
- },
- {
- filterName: 'boatFilter.boatIds',
- filterLabel: "<s:text name="wao.ui.entity.Boat"/>",
- filterValuesField: 'boatsFilterValues.boats',
- minimumInputLength: 3
- },
- {
- filterName: 'boatFilter.districtIds',
- filterLabel: "<s:text name="wao.ui.field.Boat.district"/>",
- filterValuesField: 'boatsFilterValues.districts'
- },
- {
- filterName: 'observerIds',
- filterLabel: "<s:text name="wao.ui.misc.observer"/>",
- filterValuesField: 'observers'
- },
- {
- filterName: 'contactStates',
- filterLabel: "<s:text name="wao.ui.field.Contact.contactState"/>",
- filterValuesField: 'contactStates'
- },
- {
- filterName: 'companyAcceptations',
- filterLabel: "<s:text name="wao.ui.field.Contact.validationCompany"/>",
- filterValuesField: 'companyAcceptations'
- },
- {
- filterName: 'programAcceptations',
- filterLabel: "<s:text name="wao.ui.field.Contact.validationProgram"/>",
- filterValuesField: 'programAcceptations'
- },
- {
- filterName: 'observedDataControls',
- filterLabel: "<s:text name="wao.ui.field.Contact.observedDataControl"/>",
- filterValuesField: 'observedDataControls'
- },
- {
- filterName: 'dataReliabilities',
- filterLabel: "<s:text name="wao.ui.field.Contact.dataReliability"/>",
- filterValuesField: 'dataReliabilities'
- }
- ];
-
- filter = <s:property value="filter" escapeHtml="false"/>;
-
- contactsFilterController2 = new FilterController2(contactsFilterMappings, filter, WAO.OBSMER_CONTACTS_FILTER_VALUES_JSON_URL, $('#contacts-filters-form fieldset.extra-filters'));
- contactsFilterController2.init();
-
- });
-
- </script>
-</head>
-
-
-<s:form method="GET" id="contacts-filters-form" cssClass="filters-form">
-
- <fieldset>
-
- <s:textfield name="filter.periodFrom"
- label="%{getText('wao.ui.form.periodFrom')}"
- placeholder="%{getFilterPeriodFromPlaceholder()}"
- cssClass="input-small"/>
-
- <s:textfield name="filter.periodTo"
- label="%{getText('wao.ui.form.period.to')}"
- placeholder="%{getFilterPeriodToPlaceholder()}"
- cssClass="input-small"/>
-
- <s:checkbox name="filter.filterOnObservationBeginDate"
- label="%{getText('wao.ui.form.filterOnObservationBeginDate')}"/>
-
- </fieldset>
-
- <fieldset class="extra-filters">
-
- </fieldset>
-
- <fieldset>
-
- <s:checkbox name="filter.mammalsObservationOnly"
- label="%{getText('wao.ui.misc.observations')}"/>
-
- <s:checkbox name="filter.mammalsCaptureOnly"
- label="%{getText('wao.ui.field.Contact.mammalsCapture')}"/>
-
- <s:checkbox name="filter.commentDefinedOnly"
- label="%{getText('wao.ui.field.Contact.comment')}"/>
-
- <s:checkbox name="filter.commentCompanyDefinedOnly"
- label="%{getText('wao.ui.field.Contact.commentCompany')}"/>
-
- <s:checkbox name="filter.commentAdminDefinedOnly"
- label="%{getText('wao.ui.field.Contact.commentAdmin')}"/>
-
- </fieldset>
-
- <fieldset>
-
- <s:checkbox name="filter.sortedByBoardingDate"
- label="%{getText('wao.ui.form.sortByTideBegin')}"/>
-
- </fieldset>
-
- <div class="form-actions">
-
- <s:submit type="button" cssClass="btn btn-primary">
- <i class="icon-filter"></i> <s:text name="wao.ui.action.filter"/>
- </s:submit>
-
- <s:submit action="reset-contacts-filter" type="button" cssClass="btn">
- <i class="icon-reset"></i> <s:text name="wao.ui.action.reset"/>
- </s:submit>
-
- <s:submit action="export-contacts" type="button" cssClass="btn">
- <i class="icon-download"></i> <s:text name="wao.ui.action.csvExport"/>
- </s:submit>
-
- </div>
-
-</s:form>
\ No newline at end of file
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp 2014-06-05 13:39:25 UTC (rev 2002)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp 2014-06-05 13:52:12 UTC (rev 2003)
@@ -32,6 +32,92 @@
$(document).ready(function () {
+ var contactsFilterMappings = [
+ <s:if test="authenticatedWaoUser.authorizedToViewOtherCompanies">
+ {
+ filterName: 'sampleRowFilter.companyIds',
+ filterLabel: "<s:text name="wao.ui.entity.Company"/>",
+ filterValuesField: 'sampleRowsFilterValues.companies',
+ },
+ </s:if>
+ {
+ filterName: 'sampleRowFilter.sampleRowCodes',
+ filterLabel: "<s:text name="wao.ui.field.SampleRow.code"/>",
+ filterValuesField: 'sampleRowsFilterValues.sampleRowCodes',
+ },
+ {
+ filterName: 'sampleRowFilter.programNames',
+ filterLabel: "<s:text name="wao.ui.field.SampleRow.programName"/>",
+ filterValuesField: 'sampleRowsFilterValues.programNames',
+ },
+ {
+ filterName: 'sampleRowFilter.fishingZoneFacadeNames',
+ filterLabel: "<s:text name="wao.ui.field.FishingZone.facadeName"/>",
+ filterValuesField: 'sampleRowsFilterValues.fishingZoneFacadeNames',
+ },
+ {
+ filterName: 'sampleRowFilter.fishingZoneSectorNames',
+ filterLabel: "<s:text name="wao.ui.field.FishingZone.sectorName"/>",
+ filterValuesField: 'sampleRowsFilterValues.fishingZoneSectorNames',
+ },
+ {
+ filterName: 'sampleRowFilter.fishingGearDcfIds',
+ filterLabel: "<s:text name="wao.ui.entity.fishingGearDCF"/>",
+ filterValuesField: 'sampleRowsFilterValues.fishingGearDcfs',
+ },
+ {
+ filterName: 'sampleRowFilter.targetSpeciesDcfIds',
+ filterLabel: "<s:text name="wao.ui.entity.targetSpeciesDCF"/>",
+ filterValuesField: 'sampleRowsFilterValues.targetSpeciesDcfs',
+ },
+ {
+ filterName: 'boatFilter.boatIds',
+ filterLabel: "<s:text name="wao.ui.entity.Boat"/>",
+ filterValuesField: 'boatsFilterValues.boats',
+ minimumInputLength: 3
+ },
+ {
+ filterName: 'boatFilter.districtIds',
+ filterLabel: "<s:text name="wao.ui.field.Boat.district"/>",
+ filterValuesField: 'boatsFilterValues.districts'
+ },
+ {
+ filterName: 'observerIds',
+ filterLabel: "<s:text name="wao.ui.misc.observer"/>",
+ filterValuesField: 'observers'
+ },
+ {
+ filterName: 'contactStates',
+ filterLabel: "<s:text name="wao.ui.field.Contact.contactState"/>",
+ filterValuesField: 'contactStates'
+ },
+ {
+ filterName: 'companyAcceptations',
+ filterLabel: "<s:text name="wao.ui.field.Contact.validationCompany"/>",
+ filterValuesField: 'companyAcceptations'
+ },
+ {
+ filterName: 'programAcceptations',
+ filterLabel: "<s:text name="wao.ui.field.Contact.validationProgram"/>",
+ filterValuesField: 'programAcceptations'
+ },
+ {
+ filterName: 'observedDataControls',
+ filterLabel: "<s:text name="wao.ui.field.Contact.observedDataControl"/>",
+ filterValuesField: 'observedDataControls'
+ },
+ {
+ filterName: 'dataReliabilities',
+ filterLabel: "<s:text name="wao.ui.field.Contact.dataReliability"/>",
+ filterValuesField: 'dataReliabilities'
+ }
+ ];
+
+ filter = <s:property value="filter" escapeHtml="false"/>;
+
+ contactsFilterController2 = new FilterController2(contactsFilterMappings, filter, WAO.OBSMER_CONTACTS_FILTER_VALUES_JSON_URL, $('#contacts-filters-form fieldset.extra-filters'));
+ contactsFilterController2.init();
+
$('#switch-compact-full-view').click(function () {
$('#switch-compact-full-view').toggleClass('full-view').toggleClass('compact-view');
$('table.contacts-list').toggleClass('full-view').toggleClass('compact-view');
@@ -66,8 +152,73 @@
<content tag="mainClass">large</content>
<content tag="contactsMenuItemClass">active</content>
-<%@include file="contacts-filter.jsp"%>
+<s:form method="GET" id="contacts-filters-form" cssClass="filters-form">
+ <fieldset>
+
+ <s:textfield name="filter.periodFrom"
+ label="%{getText('wao.ui.form.periodFrom')}"
+ placeholder="%{getFilterPeriodFromPlaceholder()}"
+ cssClass="input-small"/>
+
+ <s:textfield name="filter.periodTo"
+ label="%{getText('wao.ui.form.period.to')}"
+ placeholder="%{getFilterPeriodToPlaceholder()}"
+ cssClass="input-small"/>
+
+ <s:checkbox name="filter.filterOnObservationBeginDate"
+ label="%{getText('wao.ui.form.filterOnObservationBeginDate')}"/>
+
+ </fieldset>
+
+ <fieldset class="extra-filters">
+
+ </fieldset>
+
+ <fieldset>
+
+ <s:checkbox name="filter.mammalsObservationOnly"
+ label="%{getText('wao.ui.misc.observations')}"/>
+
+ <s:checkbox name="filter.mammalsCaptureOnly"
+ label="%{getText('wao.ui.field.Contact.mammalsCapture')}"/>
+
+ <s:checkbox name="filter.commentDefinedOnly"
+ label="%{getText('wao.ui.field.Contact.comment')}"/>
+
+ <s:checkbox name="filter.commentCompanyDefinedOnly"
+ label="%{getText('wao.ui.field.Contact.commentCompany')}"/>
+
+ <s:checkbox name="filter.commentAdminDefinedOnly"
+ label="%{getText('wao.ui.field.Contact.commentAdmin')}"/>
+
+ </fieldset>
+
+ <fieldset>
+
+ <s:checkbox name="filter.sortedByBoardingDate"
+ label="%{getText('wao.ui.form.sortByTideBegin')}"/>
+
+ </fieldset>
+
+ <div class="form-actions">
+
+ <s:submit type="button" cssClass="btn btn-primary">
+ <i class="icon-filter"></i> <s:text name="wao.ui.action.filter"/>
+ </s:submit>
+
+ <s:submit action="reset-contacts-filter" type="button" cssClass="btn">
+ <i class="icon-reset"></i> <s:text name="wao.ui.action.reset"/>
+ </s:submit>
+
+ <s:submit action="export-contacts" type="button" cssClass="btn">
+ <i class="icon-download"></i> <s:text name="wao.ui.action.csvExport"/>
+ </s:submit>
+
+ </div>
+
+</s:form>
+
<h3>
<s:text name="wao.ui.contacts.title">
<s:param value="%{pagination.nbRecords}"/>
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 13:39:25 UTC (rev 2002)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 13:52:12 UTC (rev 2003)
@@ -45,6 +45,77 @@
$(document).ready(function() {
+ var contactsFilterMappings = [
+ <s:if test="authenticatedWaoUser.authorizedToViewOtherCompanies">
+ {
+ filterName: 'sampleRowFilter.companyIds',
+ filterLabel: "<s:text name="wao.ui.entity.Company"/>",
+ filterValuesField: 'sampleRowsFilterValues.companies',
+ },
+ </s:if>
+ {
+ filterName: 'sampleRowFilter.sampleRowCodes',
+ filterLabel: "<s:text name="wao.ui.field.SampleRow.code"/>",
+ filterValuesField: 'sampleRowsFilterValues.sampleRowCodes',
+ },
+ {
+ filterName: 'sampleRowFilter.programNames',
+ filterLabel: "<s:text name="wao.ui.field.SampleRow.programName"/>",
+ filterValuesField: 'sampleRowsFilterValues.programNames',
+ },
+ {
+ filterName: 'sampleRowFilter.fishingZoneFacadeNames',
+ filterLabel: "<s:text name="wao.ui.field.FishingZone.facadeName"/>",
+ filterValuesField: 'sampleRowsFilterValues.fishingZoneFacadeNames',
+ },
+ {
+ filterName: 'sampleRowFilter.fishingZoneSectorNames',
+ filterLabel: "<s:text name="wao.ui.field.FishingZone.sectorName"/>",
+ filterValuesField: 'sampleRowsFilterValues.fishingZoneSectorNames',
+ },
+ {
+ filterName: 'sampleRowFilter.fishingGearDcfIds',
+ filterLabel: "<s:text name="wao.ui.entity.fishingGearDCF"/>",
+ filterValuesField: 'sampleRowsFilterValues.fishingGearDcfs',
+ },
+ {
+ filterName: 'sampleRowFilter.targetSpeciesDcfIds',
+ filterLabel: "<s:text name="wao.ui.entity.targetSpeciesDCF"/>",
+ filterValuesField: 'sampleRowsFilterValues.targetSpeciesDcfs',
+ },
+ {
+ filterName: 'boatFilter.boatIds',
+ filterLabel: "<s:text name="wao.ui.entity.Boat"/>",
+ filterValuesField: 'boatsFilterValues.boats',
+ minimumInputLength: 3
+ },
+ {
+ filterName: 'boatFilter.districtIds',
+ filterLabel: "<s:text name="wao.ui.field.Boat.district"/>",
+ filterValuesField: 'boatsFilterValues.districts'
+ },
+ {
+ filterName: 'observerIds',
+ filterLabel: "<s:text name="wao.ui.misc.observer"/>",
+ filterValuesField: 'observers'
+ },
+ {
+ filterName: 'companyAcceptations',
+ filterLabel: "<s:text name="wao.ui.field.Contact.validationCompany"/>",
+ filterValuesField: 'companyAcceptations'
+ },
+ {
+ filterName: 'programAcceptations',
+ filterLabel: "<s:text name="wao.ui.field.Contact.validationProgram"/>",
+ filterValuesField: 'programAcceptations'
+ }
+ ];
+
+ filter = <s:property value="filter" escapeHtml="false"/>;
+
+ contactsFilterController2 = new FilterController2(contactsFilterMappings, filter, WAO.OBSMER_CONTACTS_FILTER_VALUES_JSON_URL, $('#synthesis-filters-form fieldset.extra-filters'));
+ contactsFilterController2.init();
+
$.jqplot('expected-vs-actual-observations-by-months-chart', <s:property value="synthesis.expectedVsActualObservationsByMonthsBarChartData" escapeHtml="false"/>);
$.jqplot('boarding-boats-chart', <s:property value="synthesis.boardingBoatsBarChartData" escapeHtml="false"/>);
@@ -55,8 +126,63 @@
<content tag="mainClass">large syntheses</content>
- <%@include file="contacts-filter.jsp"%>
+ <s:form method="GET" id="synthesis-filters-form" cssClass="filters-form">
+ <fieldset>
+
+ <s:textfield name="filter.periodFrom"
+ label="%{getText('wao.ui.form.periodFrom')}"
+ placeholder="%{getFilterPeriodFromPlaceholder()}"
+ cssClass="input-small"/>
+
+ <s:textfield name="filter.periodTo"
+ label="%{getText('wao.ui.form.period.to')}"
+ placeholder="%{getFilterPeriodToPlaceholder()}"
+ cssClass="input-small"/>
+
+ <s:checkbox name="filter.filterOnObservationBeginDate"
+ label="%{getText('wao.ui.form.filterOnObservationBeginDate')}"/>
+
+ </fieldset>
+
+ <fieldset class="extra-filters">
+
+ </fieldset>
+
+ <fieldset>
+
+ <s:checkbox name="filter.mammalsObservationOnly"
+ label="%{getText('wao.ui.misc.observations')}"/>
+
+ <s:checkbox name="filter.mammalsCaptureOnly"
+ label="%{getText('wao.ui.field.Contact.mammalsCapture')}"/>
+
+ <s:checkbox name="filter.commentDefinedOnly"
+ label="%{getText('wao.ui.field.Contact.comment')}"/>
+
+ <s:checkbox name="filter.commentCompanyDefinedOnly"
+ label="%{getText('wao.ui.field.Contact.commentCompany')}"/>
+
+ <s:checkbox name="filter.commentAdminDefinedOnly"
+ label="%{getText('wao.ui.field.Contact.commentAdmin')}"/>
+
+ </fieldset>
+
+ <div class="form-actions">
+
+ <s:submit type="button" cssClass="btn btn-primary">
+ <i class="icon-filter"></i> <s:text name="wao.ui.action.filter"/>
+ </s:submit>
+
+ <s:url action="reset-synthesis-filter" id="resetSynthesisFilterUrl" />
+ <s:a href="%{resetSynthesisFilterUrl}" cssClass="btn">
+ <i class="icon-reset"></i> <s:text name="wao.ui.action.reset"/>
+ </s:a>
+
+ </div>
+
+ </s:form>
+
<article>
<h2>
<s:text name="SynthesisId.GRAPH_SAMPLING"/>
Modified: trunk/wao-web/src/main/webapp/wao.css
===================================================================
--- trunk/wao-web/src/main/webapp/wao.css 2014-06-05 13:39:25 UTC (rev 2002)
+++ trunk/wao-web/src/main/webapp/wao.css 2014-06-05 13:52:12 UTC (rev 2003)
@@ -380,7 +380,8 @@
margin-right: 5px;
}
#sampling-plan-filters-form,
-#contacts-filters-form {
+#contacts-filters-form,
+#synthesis-filters-form {
padding-top:20px;
background:#f5f5f5 url(images/bg-filtres.jpg) repeat-x 0 bottom;
border-bottom:1px solid #CCC;
1
0
r2002 - in trunk/wao-web/src/main: java/fr/ifremer/wao/web webapp/WEB-INF/decorators
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 15:39:25 +0200 (Thu, 05 Jun 2014)
New Revision: 2002
Url: http://forge.codelutin.com/projects/wao/repository/revisions/2002
Log:
fix copyright year in layout
Modified:
trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java
trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java 2014-06-05 13:26:56 UTC (rev 2001)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java 2014-06-05 13:39:25 UTC (rev 2002)
@@ -111,7 +111,11 @@
}
public String getOneYearAgoDatePlaceHolder() {
- return formatDate(DateUtils.addYears(new Date(), -1));
+ return formatDate(DateUtils.addYears(getNow(), -1));
}
+ protected Date getNow() {
+ return new Date();
+ }
+
}
Modified: trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-06-05 13:26:56 UTC (rev 2001)
+++ trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-06-05 13:39:25 UTC (rev 2002)
@@ -235,7 +235,7 @@
</a>
</li>
<li>
- Copyright 2009-${currentYear}
+ Copyright 2009-2014
<a href="http://www.ifremer.fr" title="Ifremer" target="_blank">Ifremer</a>,
<a href="http://www.codelutin.com" title="Code Lutin" target="_blank">Code Lutin</a>
</li>
1
0
r2001 - in trunk/wao-web/src/main: java/fr/ifremer/wao/web/converter webapp webapp/WEB-INF/content/obsmer
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 15:26:56 +0200 (Thu, 05 Jun 2014)
New Revision: 2001
Url: http://forge.codelutin.com/projects/wao/repository/revisions/2001
Log:
refs #4493 a bit of layout
Modified:
trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/BarChartDataConverter.java
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
trunk/wao-web/src/main/webapp/wao.css
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/BarChartDataConverter.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/BarChartDataConverter.java 2014-06-05 13:14:00 UTC (rev 2000)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/BarChartDataConverter.java 2014-06-05 13:26:56 UTC (rev 2001)
@@ -53,13 +53,13 @@
options +=" barWidth: 10 \n";
options +=" } \n";
options +=" },\n";
- options +=" axesDefaults: {\n";
- options +=" tickRenderer: $.jqplot.CanvasAxisTickRenderer, \n";
- options +=" tickOptions: { \n";
- options +=" angle: -90, \n";
- options +=" fontSize: '10pt' \n";
- options +=" } \n";
- options +=" },\n";
+// options +=" axesDefaults: {\n";
+// options +=" tickRenderer: $.jqplot.CanvasAxisTickRenderer, \n";
+// options +=" tickOptions: { \n";
+// options +=" angle: -90, \n";
+// options +=" fontSize: '10pt' \n";
+// options +=" } \n";
+// options +=" },\n";
options +=" axes: {\n";
options +=" xaxis: {\n";
options +=" renderer: $.jqplot.CategoryAxisRenderer, \n";
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 13:14:00 UTC (rev 2000)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 13:26:56 UTC (rev 2001)
@@ -53,7 +53,7 @@
</script>
</head>
- <content tag="mainClass"></content>
+ <content tag="mainClass">large syntheses</content>
<%@include file="contacts-filter.jsp"%>
Modified: trunk/wao-web/src/main/webapp/wao.css
===================================================================
--- trunk/wao-web/src/main/webapp/wao.css 2014-06-05 13:14:00 UTC (rev 2000)
+++ trunk/wao-web/src/main/webapp/wao.css 2014-06-05 13:26:56 UTC (rev 2001)
@@ -783,3 +783,15 @@
main.form .form-wrapper .form-actions button.btn {
float: right;
}
+
+
+/**
+ * Synthèse
+ */
+
+.syntheses th,
+.syntheses td {
+ text-align: right;
+ white-space: nowrap;
+ max-width: 50%;
+}
1
0
r2000 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service wao-web/src/main/webapp/WEB-INF/content/obsmer
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 15:14:00 +0200 (Thu, 05 Jun 2014)
New Revision: 2000
Url: http://forge.codelutin.com/projects/wao/repository/revisions/2000
Log:
refs #4493 add data reliability
Modified:
trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
===================================================================
--- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 12:53:25 UTC (rev 1999)
+++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 13:14:00 UTC (rev 2000)
@@ -439,4 +439,18 @@
return result;
}
+
+ public Map<String, Long> getReliableObservationsCount(ContactsFilter filter) {
+
+ HqlAndParametersBuilder<Contact> hqlAndParametersBuilder = toContactHqlAndParametersBuilder(filter);
+
+ hqlAndParametersBuilder.addEquals(Contact.PROPERTY_STATE, ContactState.OBSERVATION_DONE.ordinal());
+ hqlAndParametersBuilder.addEquals(Contact.PROPERTY_DATA_RELIABILITY_ORDINAL, DataReliability.RELIABLE.ordinal());
+
+ Map<String, Long> dataReliabilitiesByCompany = countByCompany(hqlAndParametersBuilder);
+
+ return dataReliabilitiesByCompany;
+
+ }
+
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 12:53:25 UTC (rev 1999)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 13:14:00 UTC (rev 2000)
@@ -19,6 +19,10 @@
protected double dataInputDateReactivity;
+ protected double dataReliabilityRatio;
+
+ private Long reliableObservationsCount;
+
public String getCompanyId() {
return companyId;
}
@@ -71,4 +75,21 @@
return dataInputDateReactivity > 15.;
}
+ public double getDataReliabilityRatio() {
+ Long doneObservationsCount = getContactsStatesStatistics().get(ContactState.OBSERVATION_DONE);
+ double ratio = 0.;
+ if (doneObservationsCount != null && doneObservationsCount > 0) {
+ double reliableObservationsCount = (double) getReliableObservationsCount();
+ ratio = reliableObservationsCount / doneObservationsCount;
+ }
+ return ratio;
+ }
+
+ public void setReliableObservationsCount(Long reliableObservationsCount) {
+ this.reliableObservationsCount = reliableObservationsCount;
+ }
+
+ public Long getReliableObservationsCount() {
+ return reliableObservationsCount;
+ }
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 12:53:25 UTC (rev 1999)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 13:14:00 UTC (rev 2000)
@@ -69,6 +69,8 @@
setDataInputDateReactivity(obsMerSynthesis, filter);
+ setDataReliability(obsMerSynthesis, filter);
+
for (CompanySynthesis companySynthesis : obsMerSynthesis.getCompanySyntheses().values()) {
String companyId = companySynthesis.getCompanyId();
Company company = getCompanyDao().findByTopiaId(companyId);
@@ -83,6 +85,20 @@
}
+ protected void setDataReliability(ObsMerSynthesis obsMerSynthesis, ContactsFilter filter) {
+
+ ContactTopiaDao dao = getContactDao();
+
+ Map<String, Long> reliableObservationsCount = dao.getReliableObservationsCount(filter);
+
+ for (Map.Entry<String, Long> entry : reliableObservationsCount.entrySet()) {
+ String companyId = entry.getKey();
+ CompanySynthesis companySynthesis = obsMerSynthesis.getCompanySynthesis(companyId);
+ companySynthesis.setReliableObservationsCount(reliableObservationsCount.get(companyId));
+ }
+
+ }
+
protected void setDataInputDateReactivity(ObsMerSynthesis obsMerSynthesis, ContactsFilter filter) {
ContactTopiaDao dao = getContactDao();
@@ -111,7 +127,6 @@
}
-
}
protected void setContactStatesStatistics(ObsMerSynthesis obsMerSynthesis, ContactsFilter filter) {
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 12:53:25 UTC (rev 1999)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 13:14:00 UTC (rev 2000)
@@ -209,10 +209,36 @@
</article>
<article>
+
<h2>
<s:text name="SynthesisId.IND_DATA_RELIABILITY"/>
</h2>
+ <table class="table">
+ <thead>
+ <tr>
+ <th>
+ <s:text name="wao.ui.entity.Company"/>
+ </th>
+ <th>
+ <s:text name="wao.ui.synthesis.dataReliability.description"/>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <s:iterator value="synthesis.companySynthesesOrderedByName">
+ <tr>
+ <td>
+ <s:property value="companyName"/>
+ </td>
+ <td>
+ <s:property value="dataReliabilityRatio * 100"/> %
+ </td>
+ </tr>
+ </s:iterator>
+ </tbody>
+ </table>
+
</article>
1
0
r1999 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service wao-web/src/main/webapp/WEB-INF/content/obsmer
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 14:53:25 +0200 (Thu, 05 Jun 2014)
New Revision: 1999
Url: http://forge.codelutin.com/projects/wao/repository/revisions/1999
Log:
refs #4493 add data input reactivity
Modified:
trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
===================================================================
--- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 11:57:57 UTC (rev 1998)
+++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 12:53:25 UTC (rev 1999)
@@ -21,13 +21,17 @@
* #L%
*/
+import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
import com.google.common.collect.Sets;
import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.Range;
import org.apache.commons.lang3.time.DateUtils;
+import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.HqlAndParametersBuilder;
@@ -401,4 +405,38 @@
return contactStatesStatistics;
}
+ public Multimap<String, Pair<Date, Date>> getContactsDoneObservationBeginDateAndDateInputDate(ContactsFilter filter) {
+
+ HqlAndParametersBuilder<Contact> hqlAndParametersBuilder = toContactHqlAndParametersBuilder(filter);
+
+ hqlAndParametersBuilder.addEquals(Contact.PROPERTY_STATE, ContactState.OBSERVATION_DONE.ordinal());
+
+ String hql = "select c.sampleRow.company.topiaId, c.observationEndDate, c.dataInputDate " + hqlAndParametersBuilder.getHql();
+
+ List<Object[]> rows = findAll(hql, hqlAndParametersBuilder.getHqlParameters());
+
+ Multimap<String, Pair<Date, Date>> result =
+ Multimaps.newListMultimap(
+ new HashMap<String, Collection<Pair<Date, Date>>>(),
+ new Supplier<List<Pair<Date, Date>>>() {
+ @Override
+ public List<Pair<Date, Date>> get() {
+ return new LinkedList<>();
+ }
+ }
+ );
+
+ for (Object[] row : rows) {
+
+ String contactId = (String) row[0];
+ Date observationEndDate = (Date) row[1];
+ Date dataInputDate = (Date) row[2];
+
+ result.put(contactId, Pair.of(observationEndDate, dataInputDate));
+
+ }
+
+ return result;
+
+ }
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 11:57:57 UTC (rev 1998)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 12:53:25 UTC (rev 1999)
@@ -17,6 +17,8 @@
protected long contactsCount;
+ protected double dataInputDateReactivity;
+
public String getCompanyId() {
return companyId;
}
@@ -56,4 +58,17 @@
public void setContactsCount(long contactsCount) {
this.contactsCount = contactsCount;
}
+
+ public void setDataInputDateReactivity(double dataInputDateReactivity) {
+ this.dataInputDateReactivity = dataInputDateReactivity;
+ }
+
+ public double getDataInputDateReactivity() {
+ return dataInputDateReactivity;
+ }
+
+ public boolean isDataInputDateReactivityHigh() {
+ return dataInputDateReactivity > 15.;
+ }
+
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 11:57:57 UTC (rev 1998)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 12:53:25 UTC (rev 1999)
@@ -1,6 +1,7 @@
package fr.ifremer.wao.services.service;
import com.google.common.cache.Cache;
+import com.google.common.collect.Multimap;
import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.entity.Boat;
@@ -13,12 +14,14 @@
import fr.ifremer.wao.services.utils.BarChartData;
import fr.ifremer.wao.services.utils.ChartDataAxis;
import org.apache.commons.lang3.time.DateUtils;
+import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.i18n.I18n;
import org.nuiton.util.DateUtil;
import java.util.Calendar;
+import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -26,6 +29,7 @@
import java.util.Locale;
import java.util.Map;
import java.util.SortedMap;
+import java.util.TreeMap;
public class SynthesisService extends WaoServiceSupport {
@@ -63,6 +67,8 @@
setContactStatesStatistics(obsMerSynthesis, filter);
+ setDataInputDateReactivity(obsMerSynthesis, filter);
+
for (CompanySynthesis companySynthesis : obsMerSynthesis.getCompanySyntheses().values()) {
String companyId = companySynthesis.getCompanyId();
Company company = getCompanyDao().findByTopiaId(companyId);
@@ -77,6 +83,37 @@
}
+ protected void setDataInputDateReactivity(ObsMerSynthesis obsMerSynthesis, ContactsFilter filter) {
+
+ ContactTopiaDao dao = getContactDao();
+
+ Multimap<String, Pair<Date, Date>> contactsDoneObservationBeginDateAndDateInputDate
+ = dao.getContactsDoneObservationBeginDateAndDateInputDate(filter);
+
+ for (Map.Entry<String, Collection<Pair<Date, Date>>> entry :
+ contactsDoneObservationBeginDateAndDateInputDate.asMap().entrySet()) {
+
+ String companyId = entry.getKey();
+ CompanySynthesis companySynthesis = obsMerSynthesis.getCompanySynthesis(companyId);
+
+ Collection<Pair<Date, Date>> dates = entry.getValue();
+
+ int days = 0;
+ for (Pair<Date, Date> pair : dates) {
+ Date observationEndDate = pair.getLeft();
+ Date dataInputDate = pair.getRight();
+ days += DateUtil.getDifferenceInDays(observationEndDate, dataInputDate);
+ }
+
+ double dataInputDateReactivity = (double) days / dates.size();
+
+ companySynthesis.setDataInputDateReactivity(dataInputDateReactivity);
+
+ }
+
+
+ }
+
protected void setContactStatesStatistics(ObsMerSynthesis obsMerSynthesis, ContactsFilter filter) {
ContactTopiaDao dao = getContactDao();
@@ -191,7 +228,7 @@
Map<Boat, LinkedHashMap<String, List<Date>>> data = dao.getBoardingBoats(filter);
- Map<String, Integer> mapBoarding = new LinkedHashMap<>();
+ Map<Integer, Integer> mapBoarding = new TreeMap<>();
// Prepare map which contains for each entry the number of boardings
// for the key and the number of boats for the value.
@@ -246,14 +283,12 @@
}
// update mapBoarding
- String key = String.valueOf(boardingCount);
-
- Integer oldValue = mapBoarding.get(key);
+ Integer oldValue = mapBoarding.get(boardingCount);
if (oldValue == null) {
oldValue = 0;
}
// add one more boat for "key" number of boardings
- mapBoarding.put(key, oldValue + 1);
+ mapBoarding.put(boardingCount, oldValue + 1);
if (log.isTraceEnabled()) {
log.trace(boat + " made " + boardingCount + " boardings");
@@ -266,8 +301,8 @@
new BarChartData.BarChartDataSeries();
numberOfBoatsWithBoardingsBarChartDataSeries.setLabel(I18n.l(locale, "wao.ui.chart.numberOfBoatsWithBoardings"));
- for (Map.Entry<String, Integer> entry : mapBoarding.entrySet()) {
- numberOfBoatsWithBoardingsBarChartDataSeries.addValue(entry.getKey(), entry.getValue());
+ for (Map.Entry<Integer, Integer> entry : mapBoarding.entrySet()) {
+ numberOfBoatsWithBoardingsBarChartDataSeries.addValue(String.valueOf(entry.getKey()), entry.getValue());
}
BarChartData boardingBoatsBarChartData =
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 11:57:57 UTC (rev 1998)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 12:53:25 UTC (rev 1999)
@@ -177,6 +177,35 @@
<s:text name="SynthesisId.IND_ALLEGRO_REACTIVITY"/>
</h2>
+ <table class="table">
+ <thead>
+ <tr>
+ <th>
+ <s:text name="wao.ui.entity.Company"/>
+ </th>
+ <th>
+ <s:text name="wao.ui.synthesis.allegroReactivity.title"/>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <s:iterator value="synthesis.companySynthesesOrderedByName">
+ <tr>
+ <td>
+ <s:property value="companyName"/>
+ </td>
+ <td<s:if test="dataInputDateReactivityHigh"> class="lower-than-expected"</s:if>>
+ <s:property value="dataInputDateReactivity"/>
+ </td>
+ </tr>
+ </s:iterator>
+ </tbody>
+ </table>
+
+ <p>
+ <s:text name="wao.ui.synthesis.allegroReactivity.description"/>
+ </p>
+
</article>
<article>
1
0
r1998 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service wao-web/src/main/webapp/WEB-INF/content/obsmer
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 13:57:57 +0200 (Thu, 05 Jun 2014)
New Revision: 1998
Url: http://forge.codelutin.com/projects/wao/repository/revisions/1998
Log:
refs #4493 add contact state statistics percentages
Modified:
trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
===================================================================
--- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 11:46:30 UTC (rev 1997)
+++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 11:57:57 UTC (rev 1998)
@@ -331,6 +331,14 @@
return countByCompany;
}
+ public Map<String, Long> countByCompany(ContactsFilter filter) {
+
+ HqlAndParametersBuilder<Contact> hqlAndParametersBuilder = toContactHqlAndParametersBuilder(filter);
+
+ return countByCompany(hqlAndParametersBuilder);
+
+ }
+
public Map<String, Double> getComplianceBoardingIndicator(ContactsFilter filter) {
HqlAndParametersBuilder<Contact> hqlAndParametersBuilder = toContactHqlAndParametersBuilder(filter);
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 11:46:30 UTC (rev 1997)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 11:57:57 UTC (rev 1998)
@@ -15,6 +15,8 @@
protected Map<ContactState, Long> contactsStatesStatistics;
+ protected long contactsCount;
+
public String getCompanyId() {
return companyId;
}
@@ -46,4 +48,12 @@
public void setContactsStatesStatistics(Map<ContactState, Long> contactsStatesStatistics) {
this.contactsStatesStatistics = contactsStatesStatistics;
}
+
+ public long getContactsCount() {
+ return contactsCount;
+ }
+
+ public void setContactsCount(long contactsCount) {
+ this.contactsCount = contactsCount;
+ }
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 11:46:30 UTC (rev 1997)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 11:57:57 UTC (rev 1998)
@@ -81,11 +81,15 @@
ContactTopiaDao dao = getContactDao();
+ Map<String, Long> contactsCountsByCompany = dao.countByCompany(filter);
+
Map<String, Map<ContactState, Long>> contactStatesStatistics = dao.getContactStatesStatistics(filter);
for (Map.Entry<String, Map<ContactState, Long>> entry : contactStatesStatistics.entrySet()) {
- CompanySynthesis companySynthesis = obsMerSynthesis.getCompanySynthesis(entry.getKey());
+ String companyId = entry.getKey();
+ CompanySynthesis companySynthesis = obsMerSynthesis.getCompanySynthesis(companyId);
companySynthesis.setContactsStatesStatistics(entry.getValue());
+ companySynthesis.setContactsCount(contactsCountsByCompany.get(companyId));
}
}
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 11:46:30 UTC (rev 1997)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 11:57:57 UTC (rev 1998)
@@ -144,6 +144,9 @@
<s:text name="%{#contactState.i18nKey}"/>
</th>
</s:iterator>
+ <th>
+ <s:text name="wao.ui.misc.total"/>
+ </th>
</tr>
</thead>
<tbody>
@@ -155,8 +158,13 @@
<s:iterator value="contactsStatesStatistics">
<td>
<s:property value="value"/>
+ <s:set name="percentage" value="%{value.doubleValue() / contactsCount * 100}" />
+ (<s:property value="#percentage"/> %)
</td>
</s:iterator>
+ <td>
+ <s:property value="contactsCount"/>
+ </td>
</tr>
</s:iterator>
</tbody>
1
0
r1997 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service wao-web/src/main/webapp/WEB-INF/content/obsmer
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 13:46:30 +0200 (Thu, 05 Jun 2014)
New Revision: 1997
Url: http://forge.codelutin.com/projects/wao/repository/revisions/1997
Log:
refs #4493 add contact state statistics
Added:
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
Modified:
trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
===================================================================
--- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 08:42:00 UTC (rev 1996)
+++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 11:46:30 UTC (rev 1997)
@@ -315,10 +315,10 @@
String hql = hqlAndParametersBuilder.getHql();
- hql = "select c.sampleRow.company.name, count(c.topiaId) " + hql + " group by c.sampleRow.company.name order by c.sampleRow.company.name";
+ hql = "select c.sampleRow.company.topiaId, count(c.topiaId) " + hql + " group by c.sampleRow.company.topiaId";
if (log.isDebugEnabled()) {
- log.debug("query count by company" + hql);
+ log.debug("query count by company '" + hql + "'");
}
List<Object[]> findAll = findAll(hql, hqlAndParametersBuilder.getHqlParameters());
@@ -344,18 +344,53 @@
Map<String, Double> complianceBoardingIndicator = new LinkedHashMap<>();
for (Map.Entry<String, Long> entry : countContactsByCompany.entrySet()) {
- String companyName = entry.getKey();
+ String companyId = entry.getKey();
Long contactsCount = entry.getValue();
- Long contactsWithComplianceCount = countContactsWithComplianceByCompany.get(companyName);
+ Long contactsWithComplianceCount = countContactsWithComplianceByCompany.get(companyId);
if (contactsWithComplianceCount == null) {
contactsWithComplianceCount = 0l;
}
Double ratio = contactsWithComplianceCount.doubleValue() / contactsCount.doubleValue();
- complianceBoardingIndicator.put(companyName, ratio);
+ complianceBoardingIndicator.put(companyId, ratio);
}
return complianceBoardingIndicator;
}
+
+ public Map<String, Map<ContactState, Long>> getContactStatesStatistics(ContactsFilter filter) {
+
+ HqlAndParametersBuilder<Contact> hqlAndParametersBuilder = toContactHqlAndParametersBuilder(filter);
+
+ String hql = hqlAndParametersBuilder.getHql();
+
+ hql = "select c.sampleRow.company.topiaId, c.state, count(c.topiaId) " + hql + " group by c.sampleRow.company.topiaId, c.state";
+
+ List<Object[]> rows = findAll(hql, hqlAndParametersBuilder.getHqlParameters());
+
+ Map<String, Map<ContactState, Long>> contactStatesStatistics = new LinkedHashMap<>();
+
+ for (Object[] row : rows) {
+
+ String companyId = (String) row[0];
+ int contactStateOrdinal = (int) row[1];
+ Long count = (Long) row[2];
+
+ Map<ContactState, Long> companyStatistics = contactStatesStatistics.get(companyId);
+ if (companyStatistics == null) {
+ companyStatistics = new TreeMap<>();
+ for (ContactState aContactState : ContactState.getAllowedStates(filter.getSampleRowFilter().getObsProgram())) {
+ companyStatistics.put(aContactState, 0L);
+ }
+ contactStatesStatistics.put(companyId, companyStatistics);
+ }
+
+ ContactState contactState = ContactState.valueOf(contactStateOrdinal);
+ companyStatistics.put(contactState, count);
+ }
+
+ return contactStatesStatistics;
+ }
+
}
Added: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java (rev 0)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/CompanySynthesis.java 2014-06-05 11:46:30 UTC (rev 1997)
@@ -0,0 +1,49 @@
+package fr.ifremer.wao.services.service;
+
+import fr.ifremer.wao.entity.ContactState;
+
+import java.io.Serializable;
+import java.util.Map;
+
+public class CompanySynthesis implements Serializable {
+
+ protected String companyId;
+
+ protected String companyName;
+
+ protected Double complianceBoardingIndicator;
+
+ protected Map<ContactState, Long> contactsStatesStatistics;
+
+ public String getCompanyId() {
+ return companyId;
+ }
+
+ public void setCompanyId(String companyId) {
+ this.companyId = companyId;
+ }
+
+ public String getCompanyName() {
+ return companyName;
+ }
+
+ public void setCompanyName(String companyName) {
+ this.companyName = companyName;
+ }
+
+ public Double getComplianceBoardingIndicator() {
+ return complianceBoardingIndicator;
+ }
+
+ public void setComplianceBoardingIndicator(Double complianceBoardingIndicator) {
+ this.complianceBoardingIndicator = complianceBoardingIndicator;
+ }
+
+ public Map<ContactState, Long> getContactsStatesStatistics() {
+ return contactsStatesStatistics;
+ }
+
+ public void setContactsStatesStatistics(Map<ContactState, Long> contactsStatesStatistics) {
+ this.contactsStatesStatistics = contactsStatesStatistics;
+ }
+}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java 2014-06-05 08:42:00 UTC (rev 1996)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java 2014-06-05 11:46:30 UTC (rev 1997)
@@ -3,8 +3,11 @@
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.services.utils.BarChartData;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
public class ObsMerSynthesis {
@@ -22,10 +25,14 @@
protected int validBoardingsCount;
- protected Map<String, Double> complianceBoardingIndicator;
+ protected Map<String, CompanySynthesis> companySyntheses = new HashMap<>();
protected Set<String> sampleRowIds;
+ public Map<String, CompanySynthesis> getCompanySyntheses() {
+ return companySyntheses;
+ }
+
public BarChartData getExpectedVsActualObservationsByMonthsBarChartData() {
return expectedVsActualObservationsByMonthsBarChartData;
}
@@ -82,11 +89,13 @@
this.validBoardingsCount = validBoardingsCount;
}
- public void setComplianceBoardingIndicator(Map<String, Double> complianceBoardingIndicator) {
- this.complianceBoardingIndicator = complianceBoardingIndicator;
- }
-
public Map<String, Double> getComplianceBoardingIndicator() {
+ Map<String, Double> complianceBoardingIndicator = new TreeMap();
+ for (CompanySynthesis companySynthesis : companySyntheses.values()) {
+ complianceBoardingIndicator.put(
+ companySynthesis.getCompanyName(),
+ companySynthesis.getComplianceBoardingIndicator());
+ }
return complianceBoardingIndicator;
}
@@ -97,4 +106,25 @@
public Set<String> getSampleRowIds() {
return sampleRowIds;
}
+
+ public CompanySynthesis getCompanySynthesis(String companyId) {
+ CompanySynthesis companySynthesis = companySyntheses.get(companyId);
+ if (companySynthesis == null) {
+ companySynthesis = new CompanySynthesis();
+ companySynthesis.setCompanyId(companyId);
+ companySyntheses.put(companyId, companySynthesis);
+ }
+ return companySynthesis;
+ }
+
+ public Set<CompanySynthesis> getCompanySynthesesOrderedByName() {
+ Map<String, CompanySynthesis> companySynthesesOrderedByName = new TreeMap();
+ for (CompanySynthesis companySynthesis : companySyntheses.values()) {
+ companySynthesesOrderedByName.put(
+ companySynthesis.getCompanyName(),
+ companySynthesis);
+ }
+ return new LinkedHashSet<>(companySynthesesOrderedByName.values());
+ }
+
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 08:42:00 UTC (rev 1996)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 11:46:30 UTC (rev 1997)
@@ -4,6 +4,8 @@
import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.entity.Boat;
+import fr.ifremer.wao.entity.Company;
+import fr.ifremer.wao.entity.ContactState;
import fr.ifremer.wao.entity.ContactTopiaDao;
import fr.ifremer.wao.entity.SampleRowTopiaDao;
import fr.ifremer.wao.entity.SynthesisId;
@@ -59,6 +61,14 @@
setComplianceBoardingIndicator(obsMerSynthesis, filter);
+ setContactStatesStatistics(obsMerSynthesis, filter);
+
+ for (CompanySynthesis companySynthesis : obsMerSynthesis.getCompanySyntheses().values()) {
+ String companyId = companySynthesis.getCompanyId();
+ Company company = getCompanyDao().findByTopiaId(companyId);
+ companySynthesis.setCompanyName(company.getName());
+ }
+
cache.put(filter, obsMerSynthesis);
}
@@ -67,13 +77,29 @@
}
+ protected void setContactStatesStatistics(ObsMerSynthesis obsMerSynthesis, ContactsFilter filter) {
+
+ ContactTopiaDao dao = getContactDao();
+
+ Map<String, Map<ContactState, Long>> contactStatesStatistics = dao.getContactStatesStatistics(filter);
+
+ for (Map.Entry<String, Map<ContactState, Long>> entry : contactStatesStatistics.entrySet()) {
+ CompanySynthesis companySynthesis = obsMerSynthesis.getCompanySynthesis(entry.getKey());
+ companySynthesis.setContactsStatesStatistics(entry.getValue());
+ }
+
+ }
+
protected void setComplianceBoardingIndicator(ObsMerSynthesis obsMerSynthesis, ContactsFilter filter) {
ContactTopiaDao dao = getContactDao();
Map<String, Double> complianceBoardingIndicator = dao.getComplianceBoardingIndicator(filter);
- obsMerSynthesis.setComplianceBoardingIndicator(complianceBoardingIndicator);
+ for (Map.Entry<String, Double> entry : complianceBoardingIndicator.entrySet()) {
+ CompanySynthesis companySynthesis = obsMerSynthesis.getCompanySynthesis(entry.getKey());
+ companySynthesis.setComplianceBoardingIndicator(entry.getValue());
+ }
}
Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp
===================================================================
--- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 08:42:00 UTC (rev 1996)
+++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/synthesis.jsp 2014-06-05 11:46:30 UTC (rev 1997)
@@ -113,22 +113,19 @@
</tr>
</thead>
<tbody>
- <s:iterator value="synthesis.complianceBoardingIndicator">
+ <s:iterator value="synthesis.companySynthesesOrderedByName">
<tr>
<td>
- <s:property value="key"/>
+ <s:property value="companyName"/>
</td>
<td>
- <s:property value="value * 100"/> %
+ <s:property value="complianceBoardingIndicator * 100"/> %
</td>
</tr>
</s:iterator>
</tbody>
</table>
- <s:if test="authenticatedWaoUser.authorizedToViewOtherCompanies">
- </s:if>
-
</article>
<article>
@@ -136,6 +133,35 @@
<s:text name="SynthesisId.IND_CONTACT_STATE"/>
</h2>
+ <table class="table">
+ <thead>
+ <tr>
+ <th>
+ <s:text name="wao.ui.entity.Company"/>
+ </th>
+ <s:iterator value="synthesis.companySynthesesOrderedByName.iterator.next().contactsStatesStatistics.keySet()" var="contactState">
+ <th>
+ <s:text name="%{#contactState.i18nKey}"/>
+ </th>
+ </s:iterator>
+ </tr>
+ </thead>
+ <tbody>
+ <s:iterator value="synthesis.companySynthesesOrderedByName">
+ <tr>
+ <td>
+ <s:property value="companyName"/>
+ </td>
+ <s:iterator value="contactsStatesStatistics">
+ <td>
+ <s:property value="value"/>
+ </td>
+ </s:iterator>
+ </tr>
+ </s:iterator>
+ </tbody>
+ </table>
+
</article>
<article>
1
0
r1996 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services wao-services/src/main/java/fr/ifremer/wao/services/service wao-services/src/test/java/fr/ifremer/wao/services wao-web/src/main/java/fr/ifremer/wao/web
by bleny@users.forge.codelutin.com 05 Jun '14
by bleny@users.forge.codelutin.com 05 Jun '14
05 Jun '14
Author: bleny
Date: 2014-06-05 10:42:00 +0200 (Thu, 05 Jun 2014)
New Revision: 1996
Url: http://forge.codelutin.com/projects/wao/repository/revisions/1996
Log:
add cache for synthesis
Modified:
trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/DefaultWaoServiceContext.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoApplicationContext.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoServiceContext.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java
trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
trunk/wao-services/src/test/java/fr/ifremer/wao/services/FakeWaoApplicationContext.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/CacheInvalidationTopiaEntityListener.java
trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java
Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java
===================================================================
--- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -33,6 +33,7 @@
import org.nuiton.topia.persistence.HqlAndParametersBuilder;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep;
+import org.nuiton.topia.persistence.TopiaQueryBuilderRunQueryStep;
import org.nuiton.topia.persistence.pager.TopiaPagerBean;
import org.nuiton.util.PagerBeanUtil;
@@ -52,8 +53,10 @@
private static final Log log = LogFactory.getLog(ContactTopiaDao.class);
- public List<Contact> findAll(ContactsFilter filter, boolean sort) {
+ public static final String ALIAS = "c";
+ public TopiaQueryBuilderRunQueryStep<Contact> forFilter(ContactsFilter filter, boolean sort) {
+
HqlAndParametersBuilder<Contact> query = toContactHqlAndParametersBuilder(filter);
if (sort) {
@@ -64,28 +67,17 @@
}
}
- List<Contact> all = findAll(query.getHql(), query.getHqlParameters());
+ return forHql(query.getHql(), query.getHqlParameters());
- return all;
-
}
- public List<Contact> find(ContactsFilter filter, TopiaPagerBean pager) {
+ public List<String> getSampleRowsIds(ContactsFilter filter) {
HqlAndParametersBuilder<Contact> query = toContactHqlAndParametersBuilder(filter);
- // Note: pager alrady contains the sort
- List<Contact> boats = find(query.getHql(), query.getHqlParameters(), pager);
- return boats;
- }
+ List<String> sampleRowIds = findAll("select " + ALIAS + ".sampleRow.topiaId " + query.getHql(), query.getHqlParameters());
- public long count(ContactsFilter filter) {
-
- HqlAndParametersBuilder<Contact> query = toContactHqlAndParametersBuilder(filter);
-
- long count = count("select count(topiaId) " + query.getHql(), query.getHqlParameters());
-
- return count;
+ return sampleRowIds;
}
public TopiaPagerBean newPager(ContactsFilter filter,
@@ -111,7 +103,7 @@
HqlAndParametersBuilder<Contact> query = newHqlAndParametersBuilder();
- query.setAlias("c");
+ query.setAlias(ALIAS);
if (filter.getSampleRowFilter().isFilled()) {
SampleRowTopiaDao sampleRowTopiaDao =
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/DefaultWaoServiceContext.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/DefaultWaoServiceContext.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/DefaultWaoServiceContext.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -22,12 +22,14 @@
*/
import com.google.common.cache.Cache;
+import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoApplicationConfig;
import fr.ifremer.wao.WaoTechnicalException;
import fr.ifremer.wao.WaoTopiaPersistenceContext;
import fr.ifremer.wao.services.service.BoatsFilterValues;
import fr.ifremer.wao.services.service.BoatsFilterValuesCacheKey;
import fr.ifremer.wao.services.service.ObsMerSamplingPlan;
+import fr.ifremer.wao.services.service.ObsMerSynthesis;
import fr.ifremer.wao.services.service.SamplingPlanCacheKey;
import java.lang.reflect.Constructor;
@@ -130,4 +132,8 @@
return waoApplicationContext.getBoatsFilterValuesCache();
}
+ @Override
+ public Cache<ContactsFilter, ObsMerSynthesis> getSynthesesCache() {
+ return waoApplicationContext.getSynthesesCache();
+ }
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoApplicationContext.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoApplicationContext.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoApplicationContext.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -1,11 +1,13 @@
package fr.ifremer.wao.services;
import com.google.common.cache.Cache;
+import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoApplicationConfig;
import fr.ifremer.wao.WaoTopiaPersistenceContext;
import fr.ifremer.wao.services.service.BoatsFilterValues;
import fr.ifremer.wao.services.service.BoatsFilterValuesCacheKey;
import fr.ifremer.wao.services.service.ObsMerSamplingPlan;
+import fr.ifremer.wao.services.service.ObsMerSynthesis;
import fr.ifremer.wao.services.service.SamplingPlanCacheKey;
import java.util.Date;
@@ -31,10 +33,12 @@
WaoWebApplicationContext getWebApplicationContext();
+ void close();
+
Cache<SamplingPlanCacheKey,ObsMerSamplingPlan> getSamplingPlansCache();
Cache<BoatsFilterValuesCacheKey, BoatsFilterValues> getBoatsFilterValuesCache();
- void close();
+ Cache<ContactsFilter, ObsMerSynthesis> getSynthesesCache();
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoServiceContext.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoServiceContext.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoServiceContext.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -22,11 +22,13 @@
*/
import com.google.common.cache.Cache;
+import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoApplicationConfig;
import fr.ifremer.wao.WaoTopiaPersistenceContext;
import fr.ifremer.wao.services.service.BoatsFilterValues;
import fr.ifremer.wao.services.service.BoatsFilterValuesCacheKey;
import fr.ifremer.wao.services.service.ObsMerSamplingPlan;
+import fr.ifremer.wao.services.service.ObsMerSynthesis;
import fr.ifremer.wao.services.service.SamplingPlanCacheKey;
import java.util.Date;
@@ -58,4 +60,5 @@
Cache<BoatsFilterValuesCacheKey, BoatsFilterValues> getBoatsFilterValuesCache();
+ Cache<ContactsFilter,ObsMerSynthesis> getSynthesesCache();
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerBoatsService.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -191,7 +191,7 @@
filter.getSampleRowFilter().setObsProgram(obsProgram);
filter.getBoatFilter().setBoatIds(ImmutableSet.of(boatId));
filter.getSampleRowFilter().setCompanyIds(ImmutableSet.of(companyId));
- long contactsCount = getContactDao().count(filter);
+ long contactsCount = getContactDao().forFilter(filter, false).count();
Date now = serviceContext.getNow();
@@ -251,16 +251,16 @@
ContactTopiaDao dao = getContactDao();
- long contactsCount = dao.count(filter);
+ long contactsCount = dao.forFilter(filter, false).count();
filter.getSampleRowFilter().setCompanyIds(ImmutableSet.of(companyId));
- long contactsCompanyCount = dao.count(filter);
+ long contactsCompanyCount = dao.forFilter(filter, false).count();
filter.setContactStates(ImmutableSet.of(ContactState.OBSERVATION_DONE));
- long observationsCompanyCount = dao.count(filter);
+ long observationsCompanyCount = dao.forFilter(filter, false).count();
filter.getSampleRowFilter().setCompanyIds(null);
- long observationsCount = dao.count(filter);
+ long observationsCount = dao.forFilter(filter, false).count();
Preconditions.checkState(contactsCompanyCount <= contactsCount);
Preconditions.checkState(observationsCount <= contactsCount);
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerContactsService.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -91,7 +91,7 @@
public ContactsFilterValues getContactsFilterValues(AuthenticatedWaoUser authenticatedWaoUser, ContactsFilter filter) {
ContactTopiaDao dao = getContactDao();
- List<Contact> contacts = dao.findAll(filter, false);
+ List<Contact> contacts = dao.forFilter(filter, false).findAll();
Optional<String> optionalCompanyId = Optional.absent();
if (authenticatedWaoUser.isCoordinatorOrObserver()) {
@@ -116,7 +116,7 @@
queryPager.getPageSize(),
queryPager.getPageIndex());
- List<Contact> contacts = dao.find(filter, pager);
+ List<Contact> contacts = dao.forFilter(filter, false).find(pager);
PaginationBean paginationBean = new PaginationBean(pager, 10);
@@ -228,7 +228,7 @@
public InputStream exportContacts(ContactsFilter filter) {
ContactTopiaDao dao = getContactDao();
- List<Contact> contacts = dao.findAll(filter, true);
+ List<Contact> contacts = dao.forFilter(filter, true).findAll();
ExportModel<Contact> exportModel = ObsMerContactImportExportModel.forExport(getLocale(),
filter.getSampleRowFilter().getObsProgram());
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -677,7 +677,7 @@
// on exclue les contacts invalidés par la société
contactFilter.setCompanyAcceptations(Sets.newHashSet(true, null));
- Collection<Contact> contacts = getContactDao().findAll(contactFilter, false);
+ Collection<Contact> contacts = getContactDao().forFilter(contactFilter, false).findAll();
final double minutesPerDay = 24 * 60;
// Pour calculer le temps passé, on prend pour chaque observation
@@ -774,7 +774,7 @@
// on exclue les contacts invalidés par la société
contactFilter.setCompanyAcceptations(Sets.newHashSet(true, null));
- Collection<Contact> contacts = getContactDao().findAll(contactFilter, false);
+ Collection<Contact> contacts = getContactDao().forFilter(contactFilter, false).findAll();
//----
// Recalcul des tides
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSynthesis.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -4,6 +4,7 @@
import fr.ifremer.wao.services.utils.BarChartData;
import java.util.Map;
+import java.util.Set;
public class ObsMerSynthesis {
@@ -23,6 +24,8 @@
protected Map<String, Double> complianceBoardingIndicator;
+ protected Set<String> sampleRowIds;
+
public BarChartData getExpectedVsActualObservationsByMonthsBarChartData() {
return expectedVsActualObservationsByMonthsBarChartData;
}
@@ -86,4 +89,12 @@
public Map<String, Double> getComplianceBoardingIndicator() {
return complianceBoardingIndicator;
}
+
+ public void setSampleRowIds(Set<String> sampleRowIds) {
+ this.sampleRowIds = sampleRowIds;
+ }
+
+ public Set<String> getSampleRowIds() {
+ return sampleRowIds;
+ }
}
Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java
===================================================================
--- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -1,5 +1,6 @@
package fr.ifremer.wao.services.service;
+import com.google.common.cache.Cache;
import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.entity.Boat;
@@ -17,6 +18,7 @@
import java.util.Calendar;
import java.util.Date;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
@@ -39,14 +41,28 @@
public ObsMerSynthesis getObsMerSynthesis(ContactsFilter filter) {
- ObsMerSynthesis obsMerSynthesis = new ObsMerSynthesis();
+ Cache<ContactsFilter, ObsMerSynthesis> cache = serviceContext.getSynthesesCache();
- setExpectedVsActualObservationsByMonthsBarChartData(obsMerSynthesis, filter);
+ ObsMerSynthesis obsMerSynthesis = cache.getIfPresent(filter);
- setBoardingBoatsData(obsMerSynthesis, filter);
+ if (obsMerSynthesis == null) {
- setComplianceBoardingIndicator(obsMerSynthesis, filter);
+ obsMerSynthesis = new ObsMerSynthesis();
+ List<String> sampleRowsIds = getContactDao().getSampleRowsIds(filter);
+
+ obsMerSynthesis.setSampleRowIds(new HashSet<>(sampleRowsIds));
+
+ setExpectedVsActualObservationsByMonthsBarChartData(obsMerSynthesis, filter);
+
+ setBoardingBoatsData(obsMerSynthesis, filter);
+
+ setComplianceBoardingIndicator(obsMerSynthesis, filter);
+
+ cache.put(filter, obsMerSynthesis);
+
+ }
+
return obsMerSynthesis;
}
Modified: trunk/wao-services/src/test/java/fr/ifremer/wao/services/FakeWaoApplicationContext.java
===================================================================
--- trunk/wao-services/src/test/java/fr/ifremer/wao/services/FakeWaoApplicationContext.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-services/src/test/java/fr/ifremer/wao/services/FakeWaoApplicationContext.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -3,6 +3,7 @@
import com.google.common.base.Preconditions;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
+import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoApplicationConfig;
import fr.ifremer.wao.WaoTechnicalException;
import fr.ifremer.wao.WaoTopiaApplicationContext;
@@ -11,6 +12,7 @@
import fr.ifremer.wao.services.service.BoatsFilterValuesCacheKey;
import fr.ifremer.wao.services.service.InitWaoService;
import fr.ifremer.wao.services.service.ObsMerSamplingPlan;
+import fr.ifremer.wao.services.service.ObsMerSynthesis;
import fr.ifremer.wao.services.service.SamplingPlanCacheKey;
import org.apache.commons.lang3.SystemUtils;
import org.apache.commons.logging.Log;
@@ -50,6 +52,8 @@
protected Cache<BoatsFilterValuesCacheKey, BoatsFilterValues> boatsFilterValuesCache;
+ protected Cache<ContactsFilter, ObsMerSynthesis> synthesisCache;
+
public FakeWaoApplicationContext(String context, boolean initWithReferential) {
this.context = context;
this.initWithReferential = initWithReferential;
@@ -254,4 +258,13 @@
}
return boatsFilterValuesCache;
}
+
+ @Override
+ public Cache<ContactsFilter, ObsMerSynthesis> getSynthesesCache() {
+ if (synthesisCache == null) {
+ synthesisCache = CacheBuilder.newBuilder().build();
+ }
+ return synthesisCache;
+ }
+
}
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/CacheInvalidationTopiaEntityListener.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/CacheInvalidationTopiaEntityListener.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/CacheInvalidationTopiaEntityListener.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -1,6 +1,7 @@
package fr.ifremer.wao.web;
import com.google.common.cache.Cache;
+import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.ElligibleBoat;
@@ -8,6 +9,7 @@
import fr.ifremer.wao.services.service.BoatsFilterValues;
import fr.ifremer.wao.services.service.BoatsFilterValuesCacheKey;
import fr.ifremer.wao.services.service.ObsMerSamplingPlan;
+import fr.ifremer.wao.services.service.ObsMerSynthesis;
import fr.ifremer.wao.services.service.SamplingPlanCacheKey;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
@@ -34,19 +36,27 @@
protected Cache<BoatsFilterValuesCacheKey, BoatsFilterValues> boatsFilterValuesCache;
+ protected Cache<ContactsFilter, ObsMerSynthesis> synthesesCache;
+
protected Set<String> dirtySampleRowIds = new HashSet<>();
protected Set<String> dirtyBoatIds = new HashSet<>();
+ protected Set<String> dirtyContactIds = new HashSet<>();
+
protected boolean invalidateAllSampleRows = false;
protected boolean invalidateAllBoats = false;
+ protected boolean invalidateAllContacts = false;
+
public CacheInvalidationTopiaEntityListener(
Cache<SamplingPlanCacheKey, ObsMerSamplingPlan> samplingPlansCache,
- Cache<BoatsFilterValuesCacheKey, BoatsFilterValues> boatsFilterValuesCache) {
+ Cache<BoatsFilterValuesCacheKey, BoatsFilterValues> boatsFilterValuesCache,
+ Cache<ContactsFilter, ObsMerSynthesis> synthesesCache) {
this.samplingPlansCache = samplingPlansCache;
this.boatsFilterValuesCache = boatsFilterValuesCache;
+ this.synthesesCache = synthesesCache;
}
@Override
@@ -63,6 +73,7 @@
Contact contact = (Contact) entity;
dirtyBoatIds.add(contact.getBoat().getTopiaId());
dirtySampleRowIds.add(contact.getSampleRow().getTopiaId());
+ invalidateAllContacts = true;
}
}
@@ -76,12 +87,16 @@
TopiaEntity entity = event.getEntity();
if (entity instanceof SampleRow) {
dirtySampleRowIds.add(entity.getTopiaId());
+ } else if (entity instanceof ElligibleBoat) {
+ ElligibleBoat elligibleBoat = (ElligibleBoat) entity;
+ dirtyBoatIds.add(elligibleBoat.getBoat().getTopiaId());
} else if (entity instanceof Boat) {
dirtyBoatIds.add(entity.getTopiaId());
} else if (entity instanceof Contact) {
Contact contact = (Contact) entity;
dirtyBoatIds.add(contact.getBoat().getTopiaId());
dirtySampleRowIds.add(contact.getSampleRow().getTopiaId());
+ dirtyContactIds.add(contact.getTopiaId());
}
}
@@ -94,6 +109,7 @@
Contact contact = (Contact) entity;
dirtyBoatIds.add(contact.getBoat().getTopiaId());
dirtySampleRowIds.add(contact.getSampleRow().getTopiaId());
+ dirtyContactIds.add(contact.getTopiaId());
}
}
@@ -104,6 +120,7 @@
}
if (invalidateAllSampleRows || dirtySampleRowIds.size() > 20) {
samplingPlansCache.invalidateAll();
+ synthesesCache.invalidateAll();
} else {
Set<SamplingPlanCacheKey> samplingPlansCacheKeysToInvalidate = new HashSet<>();
for (Map.Entry<SamplingPlanCacheKey, ObsMerSamplingPlan> entry : samplingPlansCache.asMap().entrySet()) {
@@ -112,6 +129,13 @@
}
}
samplingPlansCache.invalidateAll(samplingPlansCacheKeysToInvalidate);
+ Set<ContactsFilter> synthesesCacheKeysToInvalidate = new HashSet<>();
+ for (Map.Entry<ContactsFilter, ObsMerSynthesis> entry : synthesesCache.asMap().entrySet()) {
+ if (CollectionUtils.containsAny(entry.getValue().getSampleRowIds(), dirtySampleRowIds)) {
+ synthesesCacheKeysToInvalidate.add(entry.getKey());
+ }
+ }
+ synthesesCache.invalidateAll(synthesesCacheKeysToInvalidate);
}
if (invalidateAllBoats || dirtyBoatIds.size() > 20) {
boatsFilterValuesCache.invalidateAll();
@@ -135,7 +159,9 @@
protected void clear() {
dirtySampleRowIds.clear();
dirtyBoatIds.clear();
+ dirtyContactIds.clear();
invalidateAllSampleRows = false;
invalidateAllBoats = false;
+ invalidateAllContacts = false;
}
}
Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java
===================================================================
--- trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java 2014-06-05 07:37:37 UTC (rev 1995)
+++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java 2014-06-05 08:42:00 UTC (rev 1996)
@@ -24,6 +24,7 @@
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.opensymphony.xwork2.util.LocalizedTextUtil;
+import fr.ifremer.wao.ContactsFilter;
import fr.ifremer.wao.WaoApplicationConfig;
import fr.ifremer.wao.WaoTopiaApplicationContext;
import fr.ifremer.wao.WaoTopiaPersistenceContext;
@@ -35,6 +36,7 @@
import fr.ifremer.wao.services.service.BoatsFilterValuesCacheKey;
import fr.ifremer.wao.services.service.InitWaoService;
import fr.ifremer.wao.services.service.ObsMerSamplingPlan;
+import fr.ifremer.wao.services.service.ObsMerSynthesis;
import fr.ifremer.wao.services.service.SamplingPlanCacheKey;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -69,6 +71,8 @@
protected Cache<BoatsFilterValuesCacheKey, BoatsFilterValues> boatsFilterValuesCache;
+ protected Cache<ContactsFilter, ObsMerSynthesis> synthesesCache;
+
@Override
public WaoApplicationConfig getApplicationConfig() {
if (applicationConfig == null) {
@@ -127,6 +131,14 @@
return boatsFilterValuesCache;
}
+ @Override
+ public Cache<ContactsFilter, ObsMerSynthesis> getSynthesesCache() {
+ if (synthesesCache == null) {
+ synthesesCache = newCacheBuilder(100).expireAfterAccess(30, TimeUnit.DAYS).build();
+ }
+ return synthesesCache;
+ }
+
protected <K, V> CacheBuilder<K, V> newCacheBuilder(int expectedMaximumCacheSize) {
int maximumCacheSize = applicationConfig.isCachingEnabled() ? expectedMaximumCacheSize : 0;
CacheBuilder<K, V> cacheBuilder = (CacheBuilder<K, V>) CacheBuilder.newBuilder().maximumSize(maximumCacheSize);
@@ -142,7 +154,10 @@
WaoTopiaPersistenceContext persistenceContext = getTopiaApplicationContext().newPersistenceContext();
CacheInvalidationTopiaEntityListener cacheInvalidationTopiaEntityListener =
- new CacheInvalidationTopiaEntityListener(getSamplingPlansCache(), getBoatsFilterValuesCache());
+ new CacheInvalidationTopiaEntityListener(
+ getSamplingPlansCache(),
+ getBoatsFilterValuesCache(),
+ getSynthesesCache());
persistenceContext.getTopiaFiresSupport().addTopiaEntityListener(cacheInvalidationTopiaEntityListener);
persistenceContext.getTopiaFiresSupport().addTopiaTransactionListener(cacheInvalidationTopiaEntityListener);
1
0