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
[Suiviobsmer-commits] r323 - in trunk: . suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
04 Feb '10
Author: fdesbois
Date: 2010-02-04 19:45:08 +0000 (Thu, 04 Feb 2010)
New Revision: 323
Modified:
trunk/changelog.txt
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
Log:
Evo #2075 : Add comment column in samplingPlan
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-02-04 19:17:51 UTC (rev 322)
+++ trunk/changelog.txt 2010-02-04 19:45:08 UTC (rev 323)
@@ -7,14 +7,15 @@
Evolutions
++++++++++
+- [fdesbois] Evo #2075 : Plan d'échantillonnage : Ajouter colonne commentaire
- [fdesbois] Evo #2085 : Navires : Changement texte confidentialité dans page
navire.
-- [fdesbois] Evo #2078 : Synthèse nombre de sollicitation : affichage du + près
- de la valeur maximum.
+- [fdesbois] Evo #2078 : Synthèse : nombre de sollicitation des navires :
+ affichage du + près de la valeur maximum et navire le plus sollicité.
- [fdesbois] Evo #1964 : Calendrier d'activité : Log des accès à la page.
-- [fdesbois] Evo #2081 : Log des changement sur plan : manque ancienne valeur
- effort si modifiée.
-- [fdesbois] Evo #2077 : Export CSV des navires sélectionnés.
+- [fdesbois] Evo #2081 : Plan d'échantillonnage : Log des changement sur plan :
+ manque ancienne valeur effort si modifiée.
+- [fdesbois] Evo #2077 : Navires : Export CSV des navires sélectionnés.
Anomalies
+++++++++
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-02-04 19:17:51 UTC (rev 322)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-02-04 19:45:08 UTC (rev 323)
@@ -310,7 +310,7 @@
}
public int getNbColumnsForOther() {
- return 3;
+ return 4;
}
public int getNbColumnsTotal() {
Modified: trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-02-04 19:17:51 UTC (rev 322)
+++ trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-02-04 19:45:08 UTC (rev 323)
@@ -75,8 +75,9 @@
</t:loop>
<td class="width50 bright">total</td>
<td class="width60">Durée moyenne d'une marée (J.)</td>
- <td class="width60 bright">Nb. d'observateurs</td>
- <td> </td>
+ <td class="width60">Nb. d'observateurs</td>
+ <td class="width60 bright">Commentaire</td>
+ <td class="bright">Actions</td>
</tr>
</thead>
<tbody>
@@ -145,7 +146,14 @@
</span>
</td>
<td class="width60 acenter"><t:output t:value="row.averageTideTime" t:format="numberFormat" /></td>
- <td class="width60 acenter bright">${row.nbObservants}</td>
+ <td class="width60 acenter">${row.nbObservants}</td>
+ <td class="width60 acenter bright">
+ <t:if t:test="row.comment">
+ <span t:type="ck/Tooltip" title="Commentaire" t:value="prop:row.comment" t:effect="appear">
+ <img src="${asset:context:}/img/comment-22px.png" alt="comment" />
+ </span>
+ </t:if>
+ </td>
<!-- Actions -->
<td class="${actionsClass} bright">
<t:if t:test="canAccessBoats()">
1
0
[Suiviobsmer-commits] r322 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/webapp/img
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
04 Feb '10
Author: fdesbois
Date: 2010-02-04 19:17:51 +0000 (Thu, 04 Feb 2010)
New Revision: 322
Added:
trunk/suiviobsmer-ui/src/main/webapp/img/text-access-32px.png
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
Log:
Add link for admin to see log access file for activity calendars
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-02-04 18:58:44 UTC (rev 321)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-02-04 19:17:51 UTC (rev 322)
@@ -615,11 +615,17 @@
@Override
public InputStream getActivityCalendarLogFile() throws FileNotFoundException {
- InputStream result = null;
String filename = SuiviObsmerContext.getProperty(
SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_IMPORT);
File file = new File(filename);
- result = new FileInputStream(file);
- return result;
+ return new FileInputStream(file);
}
+
+ @Override
+ public InputStream getActivityCalendarLogAccessFile() throws FileNotFoundException {
+ String filename = SuiviObsmerContext.getProperty(
+ SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_ACCESS);
+ File file = new File(filename);
+ return new FileInputStream(file);
+ }
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-02-04 18:58:44 UTC (rev 321)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-02-04 19:17:51 UTC (rev 322)
@@ -189,6 +189,8 @@
private InputStream activityCalendarLogFile;
+ private InputStream activityCalendarLogAccessFile;
+
protected static final String GZIP_MIMETYPE = "application/x-gzip";
InputStream getActivityCalendarLogFile() throws FileNotFoundException {
@@ -213,6 +215,30 @@
}
}
+ InputStream getActivityCalendarLogAccessFile() throws FileNotFoundException {
+ if (activityCalendarLogAccessFile == null) {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getActivityCalendarLogAccessFile]");
+ }
+ activityCalendarLogAccessFile =
+ serviceBoat.getActivityCalendarLogAccessFile();
+ }
+ return activityCalendarLogAccessFile;
+ }
+
+ public boolean isLogAccessFileExists() {
+ try {
+ getActivityCalendarLogAccessFile();
+ return true;
+ } catch (FileNotFoundException eee) {
+ if (log.isInfoEnabled()) {
+ log.info("Aucun fichier de log existant pour les accès " +
+ "utilisateurs aux calendriers d'activité");
+ }
+ return false;
+ }
+ }
+
@Log
void onSuccessFromImportActivityCalendarsForm() throws SuiviObsmerException, IOException {
InputStream input = activityCalendarsCsvFile.getStream();
@@ -248,6 +274,25 @@
};
}
+ public StreamResponse onActionFromShowActivityCalendarLogAccessFile() {
+ return new StreamResponse() {
+
+ @Override
+ public String getContentType() {
+ return "text/plain;charset=utf-8";
+ }
+
+ @Override
+ public InputStream getStream() throws IOException {
+ return getActivityCalendarLogAccessFile();
+ }
+
+ @Override
+ public void prepareResponse(Response response) {
+ }
+ };
+ }
+
/**************************** Filters Form *****************************************/
/** Filters to apply on boats list */
Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-02-04 18:58:44 UTC (rev 321)
+++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-02-04 19:17:51 UTC (rev 322)
@@ -27,11 +27,19 @@
<input t:type="submit" class="ico import" value="OK"
title="Importer les calendriers d'activité des navires (format CSV avec encodage UTF-8)" />
</form>
+ <t:if t:test="logAccessFileExists">
+ <div class="fright">
+ <a t:type="actionlink" t:id="showActivityCalendarLogAccessFile">
+ <img src="${asset:context:}/img/text-access-32px.png"
+ title="Afficher le fichier de log des accès utilisateurs aux calendriers d'activité"/>
+ </a>
+ </div>
+ </t:if>
<t:if t:test="logFileExists">
<div class="fright">
<a t:type="actionlink" t:id="showActivityCalendarLogFile">
<img src="${asset:context:}/img/text-32px.png"
- title="Afficher le fichier de log"/>
+ title="Afficher le fichier de log de l'import des calendriers d'activité"/>
</a>
</div>
</t:if>
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-04 18:58:44 UTC (rev 321)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-04 19:17:51 UTC (rev 322)
@@ -110,7 +110,7 @@
<t:chart t:width="600" t:height="400" t:chart="boardingBoatsChart" />
<t:if t:test="boardingResult.maxBoardingBoat">
<p>
- Navire le plus sollicité avec ${boardingResult.maxBoardingValue} :
+ Navire le plus sollicité avec ${boardingResult.maxBoardingValue} embarquements :
${boardingResult.maxBoardingBoat.name} (${boardingResult.maxBoardingBoat.immatriculation})
</p>
</t:if>
Added: trunk/suiviobsmer-ui/src/main/webapp/img/text-access-32px.png
===================================================================
(Binary files differ)
Property changes on: trunk/suiviobsmer-ui/src/main/webapp/img/text-access-32px.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
1
0
[Suiviobsmer-commits] r321 - in trunk: . suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
04 Feb '10
Author: fdesbois
Date: 2010-02-04 18:58:44 +0000 (Thu, 04 Feb 2010)
New Revision: 321
Modified:
trunk/changelog.txt
trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
Log:
Evo #2085 : Change confidentiality user message
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-02-04 18:49:52 UTC (rev 320)
+++ trunk/changelog.txt 2010-02-04 18:58:44 UTC (rev 321)
@@ -7,12 +7,14 @@
Evolutions
++++++++++
+- [fdesbois] Evo #2085 : Navires : Changement texte confidentialité dans page
+ navire.
- [fdesbois] Evo #2078 : Synthèse nombre de sollicitation : affichage du + près
- de la valeur maximum
-- [fdesbois] Evo #1964 : Calendrier d'activité : Log des accès à la page
+ de la valeur maximum.
+- [fdesbois] Evo #1964 : Calendrier d'activité : Log des accès à la page.
- [fdesbois] Evo #2081 : Log des changement sur plan : manque ancienne valeur
- effort si modifiée
-- [fdesbois] Evo #2077 : Export CSV des navires sélectionnés
+ effort si modifiée.
+- [fdesbois] Evo #2077 : Export CSV des navires sélectionnés.
Anomalies
+++++++++
Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-02-04 18:49:52 UTC (rev 320)
+++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-02-04 18:58:44 UTC (rev 321)
@@ -161,8 +161,9 @@
<!-- FOOTER For user -->
<t:unless t:test="user.admin">
<div id="so-boats-boat-infos-message">
- Les informations saisies sont confidentielles et propriété de la société. <br />
- Elles sont néanmoins consultables par un administrateur
+ Les données saisies dans cette page sont la propriété exclusive de la société. <br />
+ En dehors de la société, seul l'administrateur peut les consulter pour des questions de maintenance sur le site.<br />
+ L'administrateur est une personne de l'Ifremer.
</div>
</t:unless>
<p:else>
1
0
[Suiviobsmer-commits] r320 - in trunk: . suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
by fdesbois@users.labs.libre-entreprise.org 04 Feb '10
04 Feb '10
Author: fdesbois
Date: 2010-02-04 18:49:52 +0000 (Thu, 04 Feb 2010)
New Revision: 320
Modified:
trunk/changelog.txt
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
Log:
Ano #2073 : Error on popup comment, if null, the form stay in place
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-02-03 20:50:00 UTC (rev 319)
+++ trunk/changelog.txt 2010-02-04 18:49:52 UTC (rev 320)
@@ -17,6 +17,8 @@
Anomalies
+++++++++
+- [fdesbois] Ano #2073 : Contacts : Erreur tableau contact sur commentaire refus
+
0.4.0
-----
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-02-03 20:50:00 UTC (rev 319)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-02-04 18:49:52 UTC (rev 320)
@@ -573,7 +573,8 @@
// Non abouti, Refus ou Refus Définitif
if (contactState.isUnfinishedState()) {
- if (oldComment != null && StringUtils.isNotEmpty(contactEdited.getComment()) && !oldComment.equals(contactEdited.getComment())) {
+ String newComment = contactEdited.getComment();
+ if (StringUtils.isNotEmpty(newComment) && !newComment.equals(oldComment)) {
// RAZ des champs
contactEdited.setTideBeginDate(null);
contactEdited.setTideEndDate(null);
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-02-03 20:50:00 UTC (rev 319)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-02-04 18:49:52 UTC (rev 320)
@@ -227,7 +227,7 @@
<textarea t:type="textarea" t:id="comment" class="hidden contact-comment" value="contactEdited.comment" />
<div t:type="ck/Window" t:id="windowComment" show="false" modal="true"
- title="literal:Ajouter un commentaire" width="488" height="210">
+ title="literal:Ajouter un commentaire" width="500" height="215">
<p>
<textarea id="commentPopup" cols="50" rows="7" />
</p>
@@ -235,7 +235,7 @@
<p class="aright">
<a onclick="closeCommentWindow(windowComment, 'commentPopup', 'contact-comment', ${contactstate.isUnfinishedState()}, 'commentImg', '${asset:context:}')" class="save">
<img src="${asset:context:}/img/save-22px.png" alt="Save comment" title="Enregistrer le commentaire"/>
- </a>
+ </a>
</p>
</div>
1
0
[Suiviobsmer-commits] r319 - trunk/suiviobsmer-business/src/main/xmi
by fdesbois@users.labs.libre-entreprise.org 03 Feb '10
by fdesbois@users.labs.libre-entreprise.org 03 Feb '10
03 Feb '10
Author: fdesbois
Date: 2010-02-03 20:50:00 +0000 (Wed, 03 Feb 2010)
New Revision: 319
Modified:
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
Log:
- Evo #1984 : non compliance boarding indicator (only business)
- Add an other company in samplingPlan csv for tests
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r318 - in trunk/suiviobsmer-business/src: main/java/fr/ifremer/suiviobsmer/bean main/java/fr/ifremer/suiviobsmer/impl test/java/fr/ifremer/suiviobsmer/entity test/java/fr/ifremer/suiviobsmer/impl test/resources/import
by fdesbois@users.labs.libre-entreprise.org 03 Feb '10
by fdesbois@users.labs.libre-entreprise.org 03 Feb '10
03 Feb '10
Author: fdesbois
Date: 2010-02-03 20:17:06 +0000 (Wed, 03 Feb 2010)
New Revision: 318
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java
trunk/suiviobsmer-business/src/test/resources/import/echantillonnage.csv
Log:
- Evo #1984 : non compliance boarding indicator (only business)
- Add an other company in samplingPlan csv for tests
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-02-02 23:48:45 UTC (rev 317)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-02-03 20:17:06 UTC (rev 318)
@@ -25,7 +25,6 @@
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import java.util.Calendar;
-import java.util.Date;
import java.util.GregorianCalendar;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.framework.TopiaQuery;
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-02-02 23:48:45 UTC (rev 317)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-02-03 20:17:06 UTC (rev 318)
@@ -39,6 +39,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -234,4 +235,93 @@
return result;
}
+ @Override
+ public Map<Company, Double> getNonComplianceBoardingIndicator(Company company) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ // Carefull with results, the company may not be present in the map :
+ // only if there is no unfinished sampleRow or no contact done
+ Map<Company, Double> results = new HashMap<Company, Double>();
+ try {
+ transaction = rootContext.beginTransaction();
+
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+
+ // Only for done contacts with no constraint
+ TopiaQuery<Contact> query =
+ dao.createQueryDoneContactsFromDate(null, null);
+
+ String contactKey = query.getMainAlias();
+ String sampleRowKey = contactKey + "." + Contact.SAMPLE_ROW;
+ String companyKey = sampleRowKey + "." + SampleRow.COMPANY;
+
+ // Only for unfinished sampleRows
+ Date current = SuiviObsmerContext.getCurrentDate();
+ query.add(sampleRowKey + "." + SampleRow.PERIOD_END, Op.GE, current);
+
+ if (company != null) {
+ query.add(companyKey, company);
+ }
+
+ // Prepare results
+ query.setSelect(companyKey).
+ addSelect("COUNT(*)").
+ addGroup(companyKey);
+
+ if (log.isTraceEnabled()) {
+ log.trace("Exec query for total : " + query);
+ }
+
+ List<Object[]> totalResults = query.execute();
+
+ // Use the same query and add the constraint of non compliance
+ //i.e. nbObservantsReal (contact) < nbObservantsExpected (sampleRow)
+ query.add(contactKey + "." + Contact.NB_OBSERVANTS + " < " +
+ sampleRowKey + "." + SampleRow.NB_OBSERVANTS);
+
+ if (log.isTraceEnabled()) {
+ log.trace("Exec query for result : " + query);
+ }
+
+ List<Object[]> diffResults = query.execute();
+
+ // Use the map to set the number of non compliance results
+ for (Object[] row : diffResults) {
+ Company rowCompany = (Company)row[0];
+ Long rowCount = (Long)row[1];
+ if (log.isTraceEnabled()) {
+ log.trace("result row : " + rowCompany.getName() + " = " + rowCount);
+ }
+ results.put(rowCompany, rowCount.doubleValue());
+ }
+
+ // Get the previous value from the map and make the division to have
+ // the result percent of non compliance. Put 0 in the map if no
+ // previous result is set
+ for (Object[] row : totalResults) {
+ Company rowCompany = (Company)row[0];
+ Long rowCount = (Long)row[1];
+ if (log.isTraceEnabled()) {
+ log.trace("total row : " + rowCompany.getName() + " = " + rowCount);
+ }
+ Double value = results.get(rowCompany);
+ if (value == null) {
+ results.put(rowCompany, 0.);
+ } else {
+ results.put(rowCompany, value / rowCount);
+ }
+ }
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ String msgEnd = "";
+ if (company != null) {
+ msgEnd = " pour la société " + company.getName();
+ }
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible de récupérer l'indicateur de non respect du " +
+ "nombre d'observateurs embarqués" + msgEnd, eee);
+ }
+ return results;
+ }
+
}
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-02-02 23:48:45 UTC (rev 317)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-02-03 20:17:06 UTC (rev 318)
@@ -98,6 +98,10 @@
Company company = new CompanyImpl();
company.setName("TARTANPION");
serviceUser.createUpdateCompany(company);
+ Company company2 = new CompanyImpl();
+ company2.setName("BIS");
+ serviceUser.createUpdateCompany(company2);
+
WaoUser user = new WaoUserImpl();
user.setLogin("user");
user.setFirstName("Jean");
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-02-02 23:48:45 UTC (rev 317)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-02-03 20:17:06 UTC (rev 318)
@@ -218,6 +218,7 @@
CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
SuiviObsmerContext.prepareTopiaId(Company.class, company);
companyDAO.update(company);
+ companyDAO.create(Company.NAME, "BIS");
transaction.commitTransaction();
ServiceSampling serviceSampling = new ServiceSamplingImpl();
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-02-02 23:48:45 UTC (rev 317)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-02-03 20:17:06 UTC (rev 318)
@@ -424,6 +424,7 @@
CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
companyDAO.create(Company.NAME, "TARTANPION");
+ companyDAO.create(Company.NAME, "BIS");
transaction.commitTransaction();
@@ -470,6 +471,7 @@
CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
companyDAO.create(Company.NAME, "TARTANPION");
+ companyDAO.create(Company.NAME, "BIS");
transaction.commitTransaction();
transaction.closeContext();
@@ -526,6 +528,7 @@
CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
companyDAO.create(Company.NAME, "TARTANPION");
+ companyDAO.create(Company.NAME, "BIS");
transaction.commitTransaction();
transaction.closeContext();
@@ -552,6 +555,7 @@
CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
companyDAO.create(Company.NAME, "TARTANPION");
+ companyDAO.create(Company.NAME, "BIS");
transaction.commitTransaction();
ServiceSampling serviceSampling = new ServiceSamplingImpl();
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java 2010-02-02 23:48:45 UTC (rev 317)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java 2010-02-03 20:17:06 UTC (rev 318)
@@ -23,6 +23,7 @@
import java.io.InputStream;
import java.util.Date;
import java.util.List;
+import java.util.Map;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -82,7 +83,7 @@
*/
@Test
public void testGetBoardingBoats() throws Exception {
- System.out.println("getBoardingBoats");
+ log.info("getBoardingBoats");
/** PREPARE DATA **/
InputStream input = getClass().getResourceAsStream("/import/navires.csv");
ServiceBoat serviceBoat = new ServiceBoatImpl();
@@ -155,6 +156,7 @@
contact3.setValidationCompany(Boolean.TRUE);
serviceContact.saveContact(contact3, false);
+ /** EXEC METHOD **/
BoardingResult result = service.getBoardingBoats(null, null);
// one boat with one boarding (177474)
assertEquals(1, result.getData().get("1").intValue());
@@ -164,4 +166,111 @@
assertEquals(174258, result.getMaxBoardingBoat().getImmatriculation());
}
+ /**
+ * Test of getBoardingBoats method, of class ServiceSynthesisImpl.
+ */
+ @Test
+ public void testGetNonComplianceBoardingIndicator() throws Exception {
+ log.info("getNonComplianceBoardingIndicator");
+ /** PREPARE DATA **/
+ InputStream input = getClass().getResourceAsStream("/import/navires.csv");
+ ServiceBoat serviceBoat = new ServiceBoatImpl();
+ serviceBoat.importBoatCsv(input);
+ List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
+ Boat boat = boats.get(0);
+
+ List<Boat> boats2 = serviceBoat.getBoatsByImmatriculations("177474");
+ Boat boat2 = boats2.get(0);
+
+ TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ Company company = companyDAO.create(Company.NAME, "TARTANPION");
+ Company company2 = companyDAO.create(Company.NAME, "BIS");
+
+ WaoUserDAO userDAO = SuiviObsmerModelDAOHelper.getWaoUserDAO(transaction);
+ WaoUser user = userDAO.create(WaoUser.FIRST_NAME,"Jean", WaoUser.LAST_NAME, "Michmuche",
+ WaoUser.COMPANY, company);
+ company.addWaoUser(user);
+ WaoUser user2 = userDAO.create(WaoUser.FIRST_NAME,"Bill", WaoUser.LAST_NAME, "Murray",
+ WaoUser.COMPANY, company2);
+ company2.addWaoUser(user2);
+
+ transaction.commitTransaction();
+
+ input = getClass().getResourceAsStream("/import/zonesPeche.csv");
+ ServiceReferential serviceReferential = new ServiceReferentialImpl();
+ serviceReferential.importFishingZoneCsv(input);
+
+ input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+ ServiceSampling serviceSampling = new ServiceSamplingImpl();
+ serviceSampling.importSamplingPlanCsv(input);
+
+ SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+ SampleRow row = rowDAO.findByCode("2010_0001");
+ SampleRow row2 = rowDAO.findByCode("2009_0006");
+
+ transaction.closeContext();
+
+
+ ServiceContact serviceContact = new ServiceContactImpl();
+ // First contact : OK
+ Contact contact1 = new ContactImpl();
+ contact1.setBoat(boat);
+ contact1.setObserver(user);
+ contact1.setSampleRow(row);
+ // 1 real observer over 1
+ contact1.setNbObservants(1);
+ contact1.setState(ContactState.BOARDING_DONE.toString());
+ Date begin = DateUtils.createDate(3, 3, 2009);
+ contact1.setTideBeginDate(begin);
+ contact1.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact1, false);
+
+ Contact contact2 = new ContactImpl();
+ contact2.setBoat(boat);
+ contact2.setObserver(user);
+ contact2.setSampleRow(row);
+ // 2 real observer over 1
+ contact2.setNbObservants(2);
+ contact2.setState(ContactState.BOARDING_DONE.toString());
+ begin = DateUtils.createDate(3, 3, 2009);
+ contact2.setTideBeginDate(begin);
+ contact2.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact2, false);
+
+ Contact contact3 = new ContactImpl();
+ contact3.setBoat(boat2);
+ contact3.setObserver(user2);
+ contact3.setSampleRow(row2);
+ // 1 real observer over 2
+ contact3.setNbObservants(1);
+ contact3.setState(ContactState.BOARDING_DONE.toString());
+ begin = DateUtils.createDate(3, 3, 2009);
+ contact3.setTideBeginDate(begin);
+ contact3.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact3, false);
+
+ /** EXEC METHOD **/
+
+ // result for company TARTANPION
+ Map<Company, Double> results =
+ service.getNonComplianceBoardingIndicator(company);
+
+ assertEquals(1, results.size());
+
+ // 0% of non compliance
+ Double value = results.get(company);
+ assertEquals(0., value, 0);
+
+ // result for company BIS using admin mode (no company filtered)
+ results = service.getNonComplianceBoardingIndicator(null);
+
+ assertEquals(2, results.size());
+
+ // 100% of non compliance
+ value = results.get(company2);
+ assertEquals(1., value, 0);
+ }
+
}
\ No newline at end of file
Modified: trunk/suiviobsmer-business/src/test/resources/import/echantillonnage.csv
===================================================================
--- trunk/suiviobsmer-business/src/test/resources/import/echantillonnage.csv 2010-02-02 23:48:45 UTC (rev 317)
+++ trunk/suiviobsmer-business/src/test/resources/import/echantillonnage.csv 2010-02-03 20:17:06 UTC (rev 318)
@@ -7,6 +7,6 @@
"2009_3",TARTANPION,"IV",,"GTR_DF et GNS_DP",,,,"Fileyages à baleines à bosse","chameaux","PPP2010",12/2009,10/2010,2,2,2,2,2,2,2,2,2,2,4,,,,,,1,1,
"2009_4",,"IId",,"B_DEF",">=190",">18",,"Chalutage de fond machiavélique","gadidés, divers","PPP2010",12/2009,10/2010,1,1,1,1,1,1,1,1,1,1,2,,,,,,3,2,
"2009_5",,"IId",,"OP_DEF","70-1100",">1140",,"Plongeur de fond sous-marin","gadidés, divers","PPP2010",12/2009,10/2010,1,1,1,1,1,1,1,1,1,1,2,,,,,,3,2,
-"2009_6",,"I / IV",,"OP_DEF","70-1100",">1140",,"Leon","poissons plats","PPP2010",12/2009,10/2010,0,1,0,1,0,1,2,2,2,2,1,,,,,,3,2,
+"2009_6",BIS,"I / IV",,"OP_DEF","70-1100",">1140",,"Leon","poissons plats","PPP2010",12/2009,10/2010,0,1,0,1,0,1,2,2,2,2,1,,,,,,3,2,
"2010_4",TARTANPION,"IId / IV",,"OTB_TEF et OTB_U et OL",,,,"Chalutage de fond","gadidés, poissons plats, divers","BLOB",01/2010,12/2010,,3,0,0,3,0,0,3,0,0,3,0,0,,,,3,1,
"2010_5",,,,"OTB_TEF et OTB_U et OL",,,,"Kamoulox","merlu, poissons cerises, divers","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
1
0
[Suiviobsmer-commits] r317 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
02 Feb '10
Author: fdesbois
Date: 2010-02-02 23:48:45 +0000 (Tue, 02 Feb 2010)
New Revision: 317
Added:
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java
Modified:
trunk/changelog.txt
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
Log:
- Use a new BoardingResult bean to simplify result for boardingsBoat synthesis
- Return boat from query and order by count to easily get max boarding boat find + add junit test
- Use contact alias in doneContactsFromDate query
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-02-02 21:01:46 UTC (rev 316)
+++ trunk/changelog.txt 2010-02-02 23:48:45 UTC (rev 317)
@@ -7,6 +7,8 @@
Evolutions
++++++++++
+- [fdesbois] Evo #2078 : Synthèse nombre de sollicitation : affichage du + près
+ de la valeur maximum
- [fdesbois] Evo #1964 : Calendrier d'activité : Log des accès à la page
- [fdesbois] Evo #2081 : Log des changement sur plan : manque ancienne valeur
effort si modifiée
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-02-02 21:01:46 UTC (rev 316)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-02-02 23:48:45 UTC (rev 317)
@@ -76,18 +76,18 @@
*/
@Override
public TopiaQuery<E> createQueryDoneContactsFromDate(Boat boat, Date fromDate) {
- TopiaQuery<E> query = createQuery().
- add(Contact.STATE, ContactState.BOARDING_DONE.toString()).
- add(Contact.VALIDATION_COMPANY, Boolean.TRUE).
- add(Contact.VALIDATION_PROGRAM + " IS NULL OR " + Contact.VALIDATION_PROGRAM + " = :booleanTrue").
+ TopiaQuery<E> query = createQuery("C").
+ add("C." + Contact.STATE, ContactState.BOARDING_DONE.toString()).
+ add("C." + Contact.VALIDATION_COMPANY, Boolean.TRUE).
+ add("C." + Contact.VALIDATION_PROGRAM + " IS NULL OR " + "C." + Contact.VALIDATION_PROGRAM + " = :booleanTrue").
addParam("booleanTrue", Boolean.TRUE);
if (boat != null) {
- query.add(Contact.BOAT, boat);
+ query.add("C." + Contact.BOAT, boat);
}
if (fromDate != null) {
- query.add(Contact.TIDE_BEGIN_DATE, Op.GE, fromDate);
+ query.add("C." + Contact.TIDE_BEGIN_DATE, Op.GE, fromDate);
}
return query;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-02-02 21:01:46 UTC (rev 316)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-02-02 23:48:45 UTC (rev 317)
@@ -24,6 +24,8 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
+import fr.ifremer.suiviobsmer.bean.BoardingResult;
+import fr.ifremer.suiviobsmer.bean.BoardingResultImpl;
import fr.ifremer.suiviobsmer.bean.SamplingFilter;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Company;
@@ -34,7 +36,6 @@
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.services.ServiceSynthesis;
import java.text.DateFormat;
-import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -132,104 +133,105 @@
return results;
}
- protected static final int MAX_BOARDINGS = 12;
- public static final String MAX_BOARDINGS_KEY = MAX_BOARDINGS + " +";
-
+ /**
+ * We need to select the boats and for each one, the number of boardings
+ * done. The number of boardings is calculated with the number of contacts
+ * finished linked with each boat. The {@code fromDate} is used to filter
+ * results since this date. For observer view, only results for his
+ * company is needed.
+ *
+ * @param company the company used to filter results
+ * @param fromDate the since date used to filter contact results
+ * @return a BoardingResult which contains the number of boats for boardings
+ * from 1 to {@link MAX_BOARDINGS}, the boat with the max boarding and its
+ * value.
+ * @throws SuiviObsmerException
+ */
@Override
- public Map<String, Integer> getBoardingBoats(Company company, Date fromDate) throws SuiviObsmerException {
+ public BoardingResult getBoardingBoats(Company company, Date fromDate)
+ throws SuiviObsmerException {
TopiaContext transaction = null;
- //Pair<SortedMap<String, Integer>, Boat> result = null;
Map<String, Integer> map = new LinkedHashMap<String, Integer>();
+ BoardingResult result = new BoardingResultImpl();
+ result.setData(map);
try {
transaction = rootContext.beginTransaction();
- //SortedMap<String, Integer> map = new TreeMap<String, Integer>();
+ // Initialiaze max boardings and its max key value
+ final int MAX_BOARDINGS = 12;
+ final String MAX_BOARDINGS_KEY = MAX_BOARDINGS + " +";
-// NumberFormat numberFormat = NumberFormat.getNumberInstance();
-// numberFormat.setMinimumIntegerDigits(
-// String.valueOf(MAX_BOARDINGS).length());
-
+ // Prepare map which contains for each entry the number of boardings
+ // for the key and the number of boats for the value.
for (int i = 1; i < MAX_BOARDINGS; i++) {
map.put(String.valueOf(i), 0);
}
map.put(MAX_BOARDINGS_KEY, 0);
- ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
- TopiaQuery<Contact> query = dao.createQueryDoneContactsFromDate(null, fromDate);
+ ContactDAO dao =
+ SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ // The number of boardings is the number of finished contacts
+ // Use fromDate to filter contacts finished from this date
+ // No need to use boat filter for this method
+ TopiaQuery<Contact> query =
+ dao.createQueryDoneContactsFromDate(null, fromDate);
+
+ String contact = query.getMainAlias();
+ String sampleRow = contact + "." + Contact.SAMPLE_ROW;
// Only for sampleRows with averageTideTime less or equals to 2 days
- String countAlias = "nbElmts";
- query.add(Contact.SAMPLE_ROW + "." + SampleRow.AVERAGE_TIDE_TIME, Op.LE, 2.).
- addGroup(Contact.BOAT).
- setSelect("COUNT(*)");
- //setSelect("COUNT(*) AS " + countAlias + ", " + Contact.BOAT).
- //addOrderDesc(countAlias);
+ query.add(sampleRow + "." + SampleRow.AVERAGE_TIDE_TIME, Op.LE, 2.);
+ // Add filter on sampleRow company if needed
if (company != null) {
- query.add(Contact.SAMPLE_ROW + "." + SampleRow.COMPANY, company);
+ query.add(sampleRow + "." + SampleRow.COMPANY, company);
}
+ // Prepare aliases for mapping results in select part
+ String countAlias = "nbBoardings";
+ String boatAlias = "boat";
+ // Use a map for each result with boat and its number of boardings
+ // Order by number of boardings to easily find the max value (the
+ // first result)
+ query.setSelect("new map(" + contact + "." + Contact.BOAT + " as " +
+ boatAlias + ", COUNT(*) as " + countAlias + ")").
+ addGroup(contact + "." + Contact.BOAT).
+ addOrderDesc("COUNT(*)");
+
if (log.isTraceEnabled()) {
log.trace("Exec query : " + query);
}
- //List<Object[]> nbBoardingsByBoat = (List<Object[]>)query.execute();
- List<Long> nbBoardingsByBoat = (List<Long>)query.execute();
+ List<Map<String, Object>> nbBoardingsByBoat = query.execute();
- Boat maxBoat = null;
if (!nbBoardingsByBoat.isEmpty()) {
- for (Long boardings : nbBoardingsByBoat) {
- //int intValue = ((Long)boardings[0]).intValue();
- int intValue = boardings.intValue();
- String value = boardings.toString();
+ for (Map<String, Object> row : nbBoardingsByBoat) {
+ Long count = (Long)row.get(countAlias);
+ int intValue = count.intValue();
+ String value = count.toString();
if (intValue >= MAX_BOARDINGS) {
value = MAX_BOARDINGS_KEY;
}
+ // Increment the number of boats for the current number of
+ // boardings
Integer nbBoats = map.get(value);
map.put(value, nbBoats + 1);
}
-// Object[] first = nbBoardingsByBoat.get(0);
-// maxBoat = (Boat)first[1];
+ // Set the max boat and its number of boardings value
+ Map<String, Object> max = nbBoardingsByBoat.get(0);
+ result.setMaxBoardingBoat((Boat)max.get(boatAlias));
+ Long maxValue = (Long)max.get(countAlias);
+ result.setMaxBoardingValue(maxValue.intValue());
}
- //result = new Pair<SortedMap<String, Integer>, Boat>(map, maxBoat);
-
- //Entry<String, Integer> plop = new SimpleEntry<String, Integer>("bol", 3);
- //Pair<String, Integer> plop = new Pair<String, Integer>("bol",3);
- //Pair<Boat, Integer> maxBoardingsBoat =
-
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
- "Impossible de récupérer les données pour le graphique dynamique des efforts de marées", eee);
+ "Impossible de récupérer les données pour le graphique " +
+ "dynamique des efforts de marées", eee);
}
- return map;
+ return result;
}
-// @Override
-// public Boat getBoatWithMaxBoardings(Date fromDate) {
-// TopiaContext transaction = null;
-// Boat result = null;
-// try {
-// transaction = rootContext.beginTransaction();
-//
-//
-// BoatDAO dao = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
-// TopiaQuery<Boat> query = dao.createQuery();
-// //result = query.setSelect(Contact.BOAT).
-//
-// ContactDAO contactDAO = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
-// TopiaQuery<Contact> subquery = contactDAO.
-// createQueryDoneContactsFromDate(null, fromDate).
-// setSelect(Contact.BOAT);
-//
-// transaction.closeContext();
-// } catch (Exception eee) {
-// SuiviObsmerContext.serviceException(transaction,
-// "Impossible de récupérer le navire ayant le plus de sollicitations", eee);
-// }
-// return result;
-// }
-
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Added: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java (rev 0)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java 2010-02-02 23:48:45 UTC (rev 317)
@@ -0,0 +1,167 @@
+
+package fr.ifremer.suiviobsmer.impl;
+
+import fr.ifremer.suiviobsmer.SuiviObsmerContext;
+import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
+import fr.ifremer.suiviobsmer.SuiviObsmerRunner;
+import fr.ifremer.suiviobsmer.SuiviObsmerRunnerTest;
+import fr.ifremer.suiviobsmer.bean.BoardingResult;
+import fr.ifremer.suiviobsmer.bean.ContactState;
+import fr.ifremer.suiviobsmer.entity.Boat;
+import fr.ifremer.suiviobsmer.entity.Company;
+import fr.ifremer.suiviobsmer.entity.CompanyDAO;
+import fr.ifremer.suiviobsmer.entity.Contact;
+import fr.ifremer.suiviobsmer.entity.ContactImpl;
+import fr.ifremer.suiviobsmer.entity.SampleRow;
+import fr.ifremer.suiviobsmer.entity.SampleRowDAO;
+import fr.ifremer.suiviobsmer.entity.WaoUser;
+import fr.ifremer.suiviobsmer.entity.WaoUserDAO;
+import fr.ifremer.suiviobsmer.services.ServiceBoat;
+import fr.ifremer.suiviobsmer.services.ServiceContact;
+import fr.ifremer.suiviobsmer.services.ServiceReferential;
+import fr.ifremer.suiviobsmer.services.ServiceSampling;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.util.DateUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author fdesbois
+ */
+public class ServiceSynthesisImplTest {
+
+ private static SuiviObsmerRunner runner;
+
+ private static final Logger log = LoggerFactory.getLogger(ServiceSynthesisImplTest.class);
+
+ private ServiceSynthesisImpl service;
+
+ public ServiceSynthesisImplTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ runner = new SuiviObsmerRunnerTest();
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ runner.start();
+ service = new ServiceSynthesisImpl();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ runner.stop();
+ }
+
+ /**
+ * Test of getDataSampling method, of class ServiceSynthesisImpl.
+ */
+ //@Test
+ public void testGetDataSampling() throws Exception {
+ System.out.println("getDataSampling");
+ }
+
+ /**
+ * Test of getBoardingBoats method, of class ServiceSynthesisImpl.
+ */
+ @Test
+ public void testGetBoardingBoats() throws Exception {
+ System.out.println("getBoardingBoats");
+ /** PREPARE DATA **/
+ InputStream input = getClass().getResourceAsStream("/import/navires.csv");
+ ServiceBoat serviceBoat = new ServiceBoatImpl();
+ serviceBoat.importBoatCsv(input);
+ List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
+ Boat boat = boats.get(0);
+
+ List<Boat> boats2 = serviceBoat.getBoatsByImmatriculations("177474");
+ Boat boat2 = boats2.get(0);
+
+ TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ Company company = companyDAO.create(Company.NAME, "TARTANPION");
+ Company company2 = companyDAO.create(Company.NAME, "BIS");
+
+ WaoUserDAO userDAO = SuiviObsmerModelDAOHelper.getWaoUserDAO(transaction);
+ WaoUser user = userDAO.create(WaoUser.FIRST_NAME,"Jean", WaoUser.LAST_NAME, "Michmuche",
+ WaoUser.COMPANY, company);
+ company.addWaoUser(user);
+ WaoUser user2 = userDAO.create(WaoUser.FIRST_NAME,"Bill", WaoUser.LAST_NAME, "Murray",
+ WaoUser.COMPANY, company2);
+ company2.addWaoUser(user2);
+
+ transaction.commitTransaction();
+
+ input = getClass().getResourceAsStream("/import/zonesPeche.csv");
+ ServiceReferential serviceReferential = new ServiceReferentialImpl();
+ serviceReferential.importFishingZoneCsv(input);
+
+ input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+ ServiceSampling serviceSampling = new ServiceSamplingImpl();
+ serviceSampling.importSamplingPlanCsv(input);
+
+ SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+ SampleRow row = rowDAO.findByCode("2010_0001");
+
+ transaction.closeContext();
+
+
+ ServiceContact serviceContact = new ServiceContactImpl();
+ // First contact : OK
+ Contact contact1 = new ContactImpl();
+ contact1.setBoat(boat);
+ contact1.setObserver(user);
+ contact1.setSampleRow(row);
+ contact1.setState(ContactState.BOARDING_DONE.toString());
+ Date begin = DateUtils.createDate(3, 3, 2009);
+ contact1.setTideBeginDate(begin);
+ contact1.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact1, false);
+
+ Contact contact2 = new ContactImpl();
+ contact2.setBoat(boat);
+ contact2.setObserver(user);
+ contact2.setSampleRow(row);
+ contact2.setState(ContactState.BOARDING_DONE.toString());
+ begin = DateUtils.createDate(3, 3, 2009);
+ contact2.setTideBeginDate(begin);
+ contact2.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact2, false);
+
+ Contact contact3 = new ContactImpl();
+ contact3.setBoat(boat2);
+ contact3.setObserver(user);
+ contact3.setSampleRow(row);
+ contact3.setState(ContactState.BOARDING_DONE.toString());
+ begin = DateUtils.createDate(3, 3, 2009);
+ contact3.setTideBeginDate(begin);
+ contact3.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact3, false);
+
+ BoardingResult result = service.getBoardingBoats(null, null);
+ // one boat with one boarding (177474)
+ assertEquals(1, result.getData().get("1").intValue());
+ // one boat with two boardings (174258)
+ assertEquals(1, result.getData().get("2").intValue());
+ assertEquals(2, result.getMaxBoardingValue());
+ assertEquals(174258, result.getMaxBoardingBoat().getImmatriculation());
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImplTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-02-02 21:01:46 UTC (rev 316)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-02-02 23:48:45 UTC (rev 317)
@@ -22,9 +22,9 @@
package fr.ifremer.suiviobsmer.ui.pages;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.bean.BoardingResult;
import fr.ifremer.suiviobsmer.bean.BoatFilter;
import fr.ifremer.suiviobsmer.bean.BoatFilterImpl;
-import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.WaoUser;
import fr.ifremer.suiviobsmer.services.ServiceSynthesis;
import fr.ifremer.suiviobsmer.ui.base.AbstractFilteredPage;
@@ -176,26 +176,13 @@
/********************* STATIC GRAPH : BOARDINGBOAT ************************/
- @Property
- private Boat maxBoat;
+ private BoardingResult boardingResult;
public JFreeChart getBoardingBoatsChart() throws SuiviObsmerException {
- if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getBoardingBoats]");
- }
- //Company company = user.getAdmin() ? null : user.getCompany();
- //Date fromDate = DateUtils.createDateAfterToday(0, -12, 0);
- Map<String, Integer> result =
- serviceSynthesis.getBoardingBoats(
- getFilter().getCompany(),
- getFromDate());
-
Map<String, Map<?, Integer>> data =
new HashMap<String, Map<?, Integer>>();
- data.put("Navires", result);
+ data.put("Navires", getBoardingResult().getData());
- //maxBoat = result.getSecond();
-
String title = "Sollicitations des navires depuis le " +
getDateFormat().format(getFromDate());
@@ -203,6 +190,17 @@
"Nb embarquements", ChartType.BAR, data);
}
+ public BoardingResult getBoardingResult() throws SuiviObsmerException {
+ if (boardingResult == null) {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getBoardingBoats]");
+ }
+ boardingResult = serviceSynthesis.getBoardingBoats(
+ getFilter().getCompany(), getFromDate());
+ }
+ return boardingResult;
+ }
+
public Date getFromDate() {
return DateUtils.createDateAfterToday(0, -12, 0);
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-02 21:01:46 UTC (rev 316)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-02 23:48:45 UTC (rev 317)
@@ -108,6 +108,11 @@
</div>
<div class="acenter">
<t:chart t:width="600" t:height="400" t:chart="boardingBoatsChart" />
- <!--<p>Navire le plus sollicité avec ${maxBoat.getNbBoarding(fromDate)} : ${maxBoat.name}</p>-->
+ <t:if t:test="boardingResult.maxBoardingBoat">
+ <p>
+ Navire le plus sollicité avec ${boardingResult.maxBoardingValue} :
+ ${boardingResult.maxBoardingBoat.name} (${boardingResult.maxBoardingBoat.immatriculation})
+ </p>
+ </t:if>
</div>
</t:layout>
1
0
[Suiviobsmer-commits] r316 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
02 Feb '10
Author: fdesbois
Date: 2010-02-02 21:01:46 +0000 (Tue, 02 Feb 2010)
New Revision: 316
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
Log:
- Evo #2078 : add + for max value in boardingsBoat synthesis
- Prepare change for get maxBoat from boardingsBoat query
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2010-02-02 21:01:46 UTC (rev 316)
@@ -26,7 +26,9 @@
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.bean.ContactState;
import java.io.Serializable;
+import java.util.Date;
import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.framework.TopiaQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -86,5 +88,36 @@
return result;
}
+ /**
+ * Calculate the number of boarding done on the boat since the
+ * {@code fromDate}. Only validated contacts by company will be counted.
+ *
+ * @param fromDate the date to start calcul
+ * @return a number of boarding done on the boat for all companies
+ * @throws SuiviObsmerException
+ * @see fr.ifremer.suiviobsmer.entity.ContactDAO#createQueryDoneContactsFromDate(Boat, Date)
+ */
+ @Override
+ public int getNbBoarding(Date fromDate) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ int result = 0;
+ try {
+ transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+
+ TopiaQuery<Contact> query = dao.createQueryDoneContactsFromDate(this, fromDate);
+ result = query.executeCount(transaction);
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible de récupérer le nombre d'embarquements réels depuis le " +
+ "'" + fromDate + "'",
+ eee);
+ }
+ return result;
+ }
+
+
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2010-02-02 21:01:46 UTC (rev 316)
@@ -48,41 +48,7 @@
private static final long serialVersionUID = 1L;
- protected int nbBoarding;
- protected int nbBoardingForCompany;
-
/**
- * Calculate the number of boarding done on the boat since the
- * {@code fromDate}. Only validated contacts by company will be counted.
- *
- * @param fromDate the date to start calcul
- * @return a number of boarding done on the boat for all companies
- * @throws SuiviObsmerException
- * @see fr.ifremer.suiviobsmer.entity.ContactDAO#createQueryDoneContactsFromDate(Boat, Date)
- */
- @Override
- public int getNbBoarding(Date fromDate) throws SuiviObsmerException {
- TopiaContext transaction = null;
- int result = 0;
- try {
- transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
-
- ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
-
- TopiaQuery<Contact> query = dao.createQueryDoneContactsFromDate(getBoat(), fromDate);
- result = query.executeCount(transaction);
-
- transaction.closeContext();
- } catch (Exception eee) {
- SuiviObsmerContext.serviceException(transaction,
- "Impossible de récupérer le nombre d'embarquements réels depuis le " +
- "'" + fromDate + "'",
- eee);
- }
- return result;
- }
-
- /**
* Calculate the number of boarding done on the boat since the
* {@code fromDate}. Only validated contacts by company will be counted.
*
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-02-02 21:01:46 UTC (rev 316)
@@ -25,6 +25,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.bean.SamplingFilter;
+import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.Contact;
import fr.ifremer.suiviobsmer.entity.ContactDAO;
@@ -33,10 +34,13 @@
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.services.ServiceSynthesis;
import java.text.DateFormat;
+import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import org.nuiton.topia.TopiaContext;
@@ -128,23 +132,38 @@
return results;
}
+ protected static final int MAX_BOARDINGS = 12;
+ public static final String MAX_BOARDINGS_KEY = MAX_BOARDINGS + " +";
+
@Override
- public SortedMap<Integer, Integer> getBoardingBoats(Company company, Date fromDate) throws SuiviObsmerException {
+ public Map<String, Integer> getBoardingBoats(Company company, Date fromDate) throws SuiviObsmerException {
TopiaContext transaction = null;
- SortedMap<Integer, Integer> results = new TreeMap<Integer, Integer>();
+ //Pair<SortedMap<String, Integer>, Boat> result = null;
+ Map<String, Integer> map = new LinkedHashMap<String, Integer>();
try {
transaction = rootContext.beginTransaction();
- for (int i = 1; i <= 12; i++) {
- results.put(i, 0);
+ //SortedMap<String, Integer> map = new TreeMap<String, Integer>();
+
+// NumberFormat numberFormat = NumberFormat.getNumberInstance();
+// numberFormat.setMinimumIntegerDigits(
+// String.valueOf(MAX_BOARDINGS).length());
+
+ for (int i = 1; i < MAX_BOARDINGS; i++) {
+ map.put(String.valueOf(i), 0);
}
+ map.put(MAX_BOARDINGS_KEY, 0);
ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
TopiaQuery<Contact> query = dao.createQueryDoneContactsFromDate(null, fromDate);
// Only for sampleRows with averageTideTime less or equals to 2 days
+ String countAlias = "nbElmts";
query.add(Contact.SAMPLE_ROW + "." + SampleRow.AVERAGE_TIDE_TIME, Op.LE, 2.).
- addGroup(Contact.BOAT).setSelect("COUNT(*)");
+ addGroup(Contact.BOAT).
+ setSelect("COUNT(*)");
+ //setSelect("COUNT(*) AS " + countAlias + ", " + Contact.BOAT).
+ //addOrderDesc(countAlias);
if (company != null) {
query.add(Contact.SAMPLE_ROW + "." + SampleRow.COMPANY, company);
@@ -154,23 +173,63 @@
log.trace("Exec query : " + query);
}
+ //List<Object[]> nbBoardingsByBoat = (List<Object[]>)query.execute();
List<Long> nbBoardingsByBoat = (List<Long>)query.execute();
- for (Long boardings : nbBoardingsByBoat) {
- int value = boardings.intValue();
- if (value >= 12) {
- value = 12;
+ Boat maxBoat = null;
+ if (!nbBoardingsByBoat.isEmpty()) {
+ for (Long boardings : nbBoardingsByBoat) {
+ //int intValue = ((Long)boardings[0]).intValue();
+ int intValue = boardings.intValue();
+ String value = boardings.toString();
+ if (intValue >= MAX_BOARDINGS) {
+ value = MAX_BOARDINGS_KEY;
+ }
+ Integer nbBoats = map.get(value);
+ map.put(value, nbBoats + 1);
}
- Integer nbBoats = results.get(value);
- results.put(value, nbBoats + 1);
+
+// Object[] first = nbBoardingsByBoat.get(0);
+// maxBoat = (Boat)first[1];
}
+ //result = new Pair<SortedMap<String, Integer>, Boat>(map, maxBoat);
+
+ //Entry<String, Integer> plop = new SimpleEntry<String, Integer>("bol", 3);
+ //Pair<String, Integer> plop = new Pair<String, Integer>("bol",3);
+ //Pair<Boat, Integer> maxBoardingsBoat =
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
"Impossible de récupérer les données pour le graphique dynamique des efforts de marées", eee);
}
- return results;
+ return map;
}
+// @Override
+// public Boat getBoatWithMaxBoardings(Date fromDate) {
+// TopiaContext transaction = null;
+// Boat result = null;
+// try {
+// transaction = rootContext.beginTransaction();
+//
+//
+// BoatDAO dao = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+// TopiaQuery<Boat> query = dao.createQuery();
+// //result = query.setSelect(Contact.BOAT).
+//
+// ContactDAO contactDAO = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+// TopiaQuery<Contact> subquery = contactDAO.
+// createQueryDoneContactsFromDate(null, fromDate).
+// setSelect(Contact.BOAT);
+//
+// transaction.closeContext();
+// } catch (Exception eee) {
+// SuiviObsmerContext.serviceException(transaction,
+// "Impossible de récupérer le navire ayant le plus de sollicitations", eee);
+// }
+// return result;
+// }
+
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-02-02 21:01:46 UTC (rev 316)
@@ -35,6 +35,7 @@
import fr.ifremer.suiviobsmer.services.ServiceSampling;
import fr.ifremer.suiviobsmer.services.ServiceUser;
import java.io.InputStream;
+import java.util.Date;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
@@ -43,6 +44,7 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
+import org.nuiton.util.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -171,4 +173,100 @@
Assert.assertTrue(result);
}
+ /**
+ * Test of getNbBoarding method, of class BoatInfosImpl.
+ */
+ @Test
+ public void testGetNbBoarding() throws Exception {
+ log.info("getNbBoarding");
+
+ /** PREPARE DATA **/
+ InputStream input = getClass().getResourceAsStream("/import/navires.csv");
+ ServiceBoat serviceBoat = new ServiceBoatImpl();
+ serviceBoat.importBoatCsv(input);
+ List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
+ Boat boat = boats.get(0);
+
+ TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ Company company = companyDAO.create(Company.NAME, "TARTANPION");
+ Company company2 = companyDAO.create(Company.NAME, "BIS");
+
+ WaoUserDAO userDAO = SuiviObsmerModelDAOHelper.getWaoUserDAO(transaction);
+ WaoUser user = userDAO.create(WaoUser.FIRST_NAME,"Jean", WaoUser.LAST_NAME, "Michmuche",
+ WaoUser.COMPANY, company);
+ company.addWaoUser(user);
+ WaoUser user2 = userDAO.create(WaoUser.FIRST_NAME,"Bill", WaoUser.LAST_NAME, "Murray",
+ WaoUser.COMPANY, company2);
+ company2.addWaoUser(user2);
+
+// BoatInfosDAO boatInfosDAO = SuiviObsmerModelDAOHelper.getBoatInfosDAO(transaction);
+// BoatInfos boatInfos = boatInfosDAO.create(BoatInfos.BOAT, boat, BoatInfos.COMPANY, company);
+
+ transaction.commitTransaction();
+ transaction.closeContext();
+
+ ServiceContact serviceContact = new ServiceContactImpl();
+ // First contact : OK
+ Contact contact1 = new ContactImpl();
+ contact1.setBoat(boat);
+ contact1.setObserver(user);
+ contact1.setState(ContactState.BOARDING_DONE.toString());
+ Date begin = DateUtils.createDate(3, 3, 2009);
+ contact1.setTideBeginDate(begin);
+ contact1.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact1, false);
+
+ /** EXEC METHOD **/
+
+ Date fromDate = DateUtils.createDate(1, 1, 2009);
+ int result = boat.getNbBoarding(fromDate);
+ Assert.assertEquals(1, result);
+
+ Contact contact2 = new ContactImpl();
+ // Second contact with ValidationProgram = FALSE
+ contact2.setBoat(boat);
+ contact2.setObserver(user);
+ contact2.setState(ContactState.BOARDING_DONE.toString());
+ begin = DateUtils.createDate(3, 8, 2009);
+ contact2.setTideBeginDate(begin);
+ contact2.setValidationCompany(Boolean.TRUE);
+ contact2.setValidationProgram(Boolean.FALSE);
+ serviceContact.saveContact(contact2, false);
+
+ result = boat.getNbBoarding(fromDate);
+ Assert.assertEquals(1, result);
+
+ Contact contact3 = new ContactImpl();
+ // Third contact with tideBeginDate < fromDate
+ contact3.setBoat(boat);
+ contact3.setObserver(user);
+ contact3.setState(ContactState.BOARDING_DONE.toString());
+ begin = DateUtils.createDate(3, 8, 2008);
+ contact3.setTideBeginDate(begin);
+ contact3.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact3, false);
+
+ result = boat.getNbBoarding(fromDate);
+ Assert.assertEquals(1, result);
+
+ Contact contact4 = new ContactImpl();
+ // Fourth contact : OK with an other company
+ contact4.setBoat(boat);
+ contact4.setObserver(user2);
+ contact4.setState(ContactState.BOARDING_DONE.toString());
+ begin = DateUtils.createDate(3, 4, 2009);
+ contact4.setTideBeginDate(begin);
+ contact4.setValidationCompany(Boolean.TRUE);
+ serviceContact.saveContact(contact4, false);
+
+ result = boat.getNbBoarding(fromDate);
+ Assert.assertEquals(2, result);
+
+ // Calcul with a fromDate null
+ result = boat.getNbBoarding(null);
+ Assert.assertEquals(3, result);
+ }
+
}
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java 2010-02-02 21:01:46 UTC (rev 316)
@@ -84,105 +84,9 @@
}
/**
- * Test of getNbBoarding method, of class BoatInfosImpl.
- */
- @Test
- public void testGetNbBoarding() throws Exception {
- log.info("getNbBoarding");
-
- /** PREPARE DATA **/
- InputStream input = getClass().getResourceAsStream("/import/navires.csv");
- ServiceBoat serviceBoat = new ServiceBoatImpl();
- serviceBoat.importBoatCsv(input);
- List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
- Boat boat = boats.get(0);
-
- TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
-
- CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
- Company company = companyDAO.create(Company.NAME, "TARTANPION");
- Company company2 = companyDAO.create(Company.NAME, "BIS");
-
- WaoUserDAO userDAO = SuiviObsmerModelDAOHelper.getWaoUserDAO(transaction);
- WaoUser user = userDAO.create(WaoUser.FIRST_NAME,"Jean", WaoUser.LAST_NAME, "Michmuche",
- WaoUser.COMPANY, company);
- company.addWaoUser(user);
- WaoUser user2 = userDAO.create(WaoUser.FIRST_NAME,"Bill", WaoUser.LAST_NAME, "Murray",
- WaoUser.COMPANY, company2);
- company2.addWaoUser(user2);
-
- BoatInfosDAO boatInfosDAO = SuiviObsmerModelDAOHelper.getBoatInfosDAO(transaction);
- BoatInfos boatInfos = boatInfosDAO.create(BoatInfos.BOAT, boat, BoatInfos.COMPANY, company);
-
- transaction.commitTransaction();
- transaction.closeContext();
-
- ServiceContact serviceContact = new ServiceContactImpl();
- // First contact : OK
- Contact contact1 = new ContactImpl();
- contact1.setBoat(boat);
- contact1.setObserver(user);
- contact1.setState(ContactState.BOARDING_DONE.toString());
- Date begin = DateUtils.createDate(3, 3, 2009);
- contact1.setTideBeginDate(begin);
- contact1.setValidationCompany(Boolean.TRUE);
- serviceContact.saveContact(contact1, false);
-
- /** EXEC METHOD **/
-
- Date fromDate = DateUtils.createDate(1, 1, 2009);
- int result = boatInfos.getNbBoarding(fromDate);
- Assert.assertEquals(1, result);
-
- Contact contact2 = new ContactImpl();
- // Second contact with ValidationProgram = FALSE
- contact2.setBoat(boat);
- contact2.setObserver(user);
- contact2.setState(ContactState.BOARDING_DONE.toString());
- begin = DateUtils.createDate(3, 8, 2009);
- contact2.setTideBeginDate(begin);
- contact2.setValidationCompany(Boolean.TRUE);
- contact2.setValidationProgram(Boolean.FALSE);
- serviceContact.saveContact(contact2, false);
-
- result = boatInfos.getNbBoarding(fromDate);
- Assert.assertEquals(1, result);
-
- Contact contact3 = new ContactImpl();
- // Third contact with tideBeginDate < fromDate
- contact3.setBoat(boat);
- contact3.setObserver(user);
- contact3.setState(ContactState.BOARDING_DONE.toString());
- begin = DateUtils.createDate(3, 8, 2008);
- contact3.setTideBeginDate(begin);
- contact3.setValidationCompany(Boolean.TRUE);
- serviceContact.saveContact(contact3, false);
-
- result = boatInfos.getNbBoarding(fromDate);
- Assert.assertEquals(1, result);
-
- Contact contact4 = new ContactImpl();
- // Fourth contact : OK with an other company
- contact4.setBoat(boat);
- contact4.setObserver(user2);
- contact4.setState(ContactState.BOARDING_DONE.toString());
- begin = DateUtils.createDate(3, 4, 2009);
- contact4.setTideBeginDate(begin);
- contact4.setValidationCompany(Boolean.TRUE);
- serviceContact.saveContact(contact4, false);
-
- result = boatInfos.getNbBoarding(fromDate);
- Assert.assertEquals(2, result);
-
- // Calcul with a fromDate null
- result = boatInfos.getNbBoarding(null);
- Assert.assertEquals(3, result);
- }
-
- /**
* Test of getNbBoardingForCompany method, of class BoatInfosImpl.
*/
- //@Test
+ @Test
public void testGetNbBoardingForCompany() {
System.out.println("getNbBoardingForCompany");
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java 2010-02-02 21:01:46 UTC (rev 316)
@@ -79,7 +79,7 @@
public static JFreeChart createCategoryChart(String title, String axisName, String categoryName, ChartType type,
- Map<String, SortedMap<?, Integer>> input) {
+ Map<String, Map<?, Integer>> input) {
DateFormat format = new SimpleDateFormat("MM/yyyy");
boolean dateType = false;
@@ -87,7 +87,7 @@
// Fill data in dataset
int i = 0;
- for (Map.Entry<String, SortedMap<?, Integer>> map : input.entrySet()) {
+ for (Map.Entry<String, Map<?, Integer>> map : input.entrySet()) {
for (Map.Entry<?, Integer> data : map.getValue().entrySet()) {
Object dataKey = data.getKey();
String columnKey = "";
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-02-02 21:01:46 UTC (rev 316)
@@ -24,7 +24,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.bean.BoatFilter;
import fr.ifremer.suiviobsmer.bean.BoatFilterImpl;
-import fr.ifremer.suiviobsmer.entity.Company;
+import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.WaoUser;
import fr.ifremer.suiviobsmer.services.ServiceSynthesis;
import fr.ifremer.suiviobsmer.ui.base.AbstractFilteredPage;
@@ -130,7 +130,7 @@
log.info("BUSINESS REQUEST [getDataSampling]");
}
List<SortedMap<Date, Integer>> res = serviceSynthesis.getDataSampling(getFilter());
- Map<String, SortedMap<?, Integer>> data = new HashMap<String, SortedMap<?, Integer>>();
+ Map<String, Map<?, Integer>> data = new HashMap<String, Map<?, Integer>>();
data.put("Planifié", res.get(0));
data.put("Réalisé", res.get(1));
String title = BusinessUtils.getDataSamplingTitle(getFilter());
@@ -176,19 +176,38 @@
/********************* STATIC GRAPH : BOARDINGBOAT ************************/
+ @Property
+ private Boat maxBoat;
+
public JFreeChart getBoardingBoatsChart() throws SuiviObsmerException {
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getBoardingBoats]");
}
//Company company = user.getAdmin() ? null : user.getCompany();
- Date fromDate = DateUtils.createDateAfterToday(0, -12, 0);
- SortedMap<Integer, Integer> res = serviceSynthesis.getBoardingBoats(getFilter().getCompany(), fromDate);
- Map<String, SortedMap<?, Integer>> data = new HashMap<String, SortedMap<?, Integer>>();
- data.put("Navires", res);
+ //Date fromDate = DateUtils.createDateAfterToday(0, -12, 0);
+ Map<String, Integer> result =
+ serviceSynthesis.getBoardingBoats(
+ getFilter().getCompany(),
+ getFromDate());
- DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
+ Map<String, Map<?, Integer>> data =
+ new HashMap<String, Map<?, Integer>>();
+ data.put("Navires", result);
- String title = "Sollicitations des navires depuis le " + dateFormat.format(fromDate);
- return ChartUtils.createCategoryChart(title, "Nb navires", "Nb embarquements", ChartType.BAR, data);
+ //maxBoat = result.getSecond();
+
+ String title = "Sollicitations des navires depuis le " +
+ getDateFormat().format(getFromDate());
+
+ return ChartUtils.createCategoryChart(title, "Nb navires",
+ "Nb embarquements", ChartType.BAR, data);
}
+
+ public Date getFromDate() {
+ return DateUtils.createDateAfterToday(0, -12, 0);
+ }
+
+ public DateFormat getDateFormat() {
+ return new SimpleDateFormat("dd/MM/yyyy");
+ }
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-02-02 21:01:46 UTC (rev 316)
@@ -244,7 +244,7 @@
</form>
</p>
<p>
- <strong>${boatInfos.getNbBoarding(boardingFromDate)}</strong> embarquement(s)
+ <strong>${boatInfos.boat.getNbBoarding(boardingFromDate)}</strong> embarquement(s)
dont <strong>${boatInfos.getNbBoardingForCompany(boardingFromDate)}</strong> dans votre société
</p>
<t:if t:test="companyBoatInfos.elligibleBoatsValues.size()">
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-02 17:25:18 UTC (rev 315)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-02 21:01:46 UTC (rev 316)
@@ -108,5 +108,6 @@
</div>
<div class="acenter">
<t:chart t:width="600" t:height="400" t:chart="boardingBoatsChart" />
+ <!--<p>Navire le plus sollicité avec ${maxBoat.getNbBoarding(fromDate)} : ${maxBoat.name}</p>-->
</div>
</t:layout>
1
0
[Suiviobsmer-commits] r315 - in trunk: . suiviobsmer-business suiviobsmer-business/src/main/filters suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/test/resources suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/resources
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
02 Feb '10
Author: fdesbois
Date: 2010-02-02 17:25:18 +0000 (Tue, 02 Feb 2010)
New Revision: 315
Modified:
trunk/changelog.txt
trunk/pom.xml
trunk/suiviobsmer-business/pom.xml
trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java
trunk/suiviobsmer-ui/src/main/resources/log4j.properties
Log:
Evo #1964 : Add log access for activity calendars (only for non admin)
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/changelog.txt 2010-02-02 17:25:18 UTC (rev 315)
@@ -7,6 +7,7 @@
Evolutions
++++++++++
+- [fdesbois] Evo #1964 : Calendrier d'activité : Log des accès à la page
- [fdesbois] Evo #2081 : Log des changement sur plan : manque ancienne valeur
effort si modifiée
- [fdesbois] Evo #2077 : Export CSV des navires sélectionnés
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/pom.xml 2010-02-02 17:25:18 UTC (rev 315)
@@ -102,6 +102,11 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.10</version>
@@ -127,7 +132,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.2.125</version>
+ <version>1.2.128</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
Modified: trunk/suiviobsmer-business/pom.xml
===================================================================
--- trunk/suiviobsmer-business/pom.xml 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/pom.xml 2010-02-02 17:25:18 UTC (rev 315)
@@ -43,6 +43,10 @@
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
</dependency>
@@ -161,7 +165,7 @@
</plugin>
</plugins>
</build>
-
+
<scm>
<url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/suiviobsmer-business/…</url>
<connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-business</connection>
@@ -169,3 +173,4 @@
</scm>
</project>
+
Modified: trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties
===================================================================
--- trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties 2010-02-02 17:25:18 UTC (rev 315)
@@ -6,14 +6,15 @@
hibernate.connection.username=sa
hibernate.connection.password=
hibernate.connection.driver_class=org.h2.Driver
-hibernate.connection.url=jdbc:h2:file:~/.suiviobsmer/h2data
+hibernate.connection.url=jdbc:h2:file:~/.local/wao/h2data
-suiviobsmer.log.activityCalendar=${user.home}/.suiviobsmer/log/activity.log
+suiviobsmer.log.activityCalendar.access=${user.home}/.local/wao/log/activity-access.log
+suiviobsmer.log.activityCalendar.import=${user.home}/.local/wao/log/activity.log
## Config for sending Email
suiviobsmer.email.host=smtp.free.fr
suiviobsmer.email.port=25
-suiviobsmer.email.from=admin at suiviobsmer.org
+suiviobsmer.email.from=admin at wao.org
## Version
suiviobsmer.version=0.4.0
\ No newline at end of file
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java 2010-02-02 17:25:18 UTC (rev 315)
@@ -23,12 +23,18 @@
package fr.ifremer.suiviobsmer;
+import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
+import java.io.File;
+import java.io.IOException;
import java.util.Date;
import java.util.Properties;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
+import org.apache.log4j.Level;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.RollingFileAppender;
import org.hibernate.exception.SQLGrammarException;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaContextFactory;
@@ -54,7 +60,10 @@
private static final Logger log = LoggerFactory.getLogger(SuiviObsmerContext.class);
- public static final String PROP_FILENAME_LOG_ACTIVITY = "suiviobsmer.log.activityCalendar";
+ public static final String PROP_FILENAME_LOG_ACTIVITY_IMPORT =
+ "suiviobsmer.log.activityCalendar.import";
+ public static final String PROP_FILENAME_LOG_ACTIVITY_ACCESS =
+ "suiviobsmer.log.activityCalendar.access";
public static final String PROP_EMAIL_HOST = "suiviobsmer.email.host";
public static final String PROP_EMAIL_PORT = "suiviobsmer.email.port";
public static final String PROP_EMAIL_FROM = "suiviobsmer.email.from";
@@ -65,6 +74,8 @@
private static boolean activityCalendarImport;
+ private static org.apache.log4j.Logger activityCalendarAccessLogger;
+
public static void setRunner(SuiviObsmerRunner run) {
if (log.isDebugEnabled()) {
log.debug("set runner in context");
@@ -101,6 +112,37 @@
return activityCalendarImport;
}
+ public static void addActivityCalendarAccessLog(String message) throws IOException {
+ if (activityCalendarAccessLogger == null) {
+ // Define appender configuration only once
+ String filename = getProperty(PROP_FILENAME_LOG_ACTIVITY_ACCESS);
+
+ PatternLayout layout = new PatternLayout();
+ layout.setConversionPattern("%d %m%n");
+ RollingFileAppender appender = new RollingFileAppender();
+ appender.setName("ActivityCalendarAccess");
+ appender.setFile(filename);
+ appender.setImmediateFlush(true);
+ appender.setMaxFileSize("2MB");
+ appender.setMaxBackupIndex(10);
+ appender.setAppend(true);
+ appender.setThreshold(Level.INFO);
+ appender.setLayout(layout);
+ appender.activateOptions();
+
+ activityCalendarAccessLogger =
+ org.apache.log4j.Logger.getLogger(ActivityCalendar.class);
+
+ activityCalendarAccessLogger.addAppender(appender);
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("message : " + message);
+ }
+
+ activityCalendarAccessLogger.info(message);
+ }
+
public static void serviceException(TopiaContext transaction, String message, Exception eee) throws SuiviObsmerException {
if (log.isDebugEnabled()) {
log.debug("An error occured",eee);
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-02-02 17:25:18 UTC (rev 315)
@@ -121,8 +121,8 @@
public ActivityCalendarImport(InputStream input) throws IOException {
super();
this.input = input;
- String filename =
- SuiviObsmerContext.getProperty(SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY);
+ String filename = SuiviObsmerContext.getProperty(
+ SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_IMPORT);
File file = new File(filename);
file.getParentFile().mkdirs();
if (file.exists()) {
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-02-02 17:25:18 UTC (rev 315)
@@ -53,6 +53,8 @@
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DurationFormatUtils;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.RollingFileAppender;
import org.nuiton.topia.TopiaContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -561,7 +563,7 @@
}
@Override
- public ActivityCalendar getLastActivityCalendar(Boat boat) throws SuiviObsmerException {
+ public ActivityCalendar getLastActivityCalendar(WaoUser user, Boat boat) throws SuiviObsmerException {
TopiaContext transaction = null;
ActivityCalendar result = null;
try {
@@ -592,7 +594,15 @@
}
}
- // TODO-EVO#1964 : Create logging, need user in argument
+ // Log ActivityCalendar access only for non admin user
+ if (!user.getAdmin()) {
+ Company company = user.getCompany();
+ SuiviObsmerContext.addActivityCalendarAccessLog(
+ "Calendrier " + result.getYear() + " du navire " +
+ boat.getName() + " (" + boat.getImmatriculation() + ") vu " +
+ "par " + user.getFullName() + " de la société " +
+ company.getName());
+ }
transaction.closeContext();
} catch (Exception eee) {
@@ -606,7 +616,8 @@
@Override
public InputStream getActivityCalendarLogFile() throws FileNotFoundException {
InputStream result = null;
- String filename = SuiviObsmerContext.getProperty(SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY);
+ String filename = SuiviObsmerContext.getProperty(
+ SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_IMPORT);
File file = new File(filename);
result = new FileInputStream(file);
return result;
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java 2010-02-02 17:25:18 UTC (rev 315)
@@ -103,8 +103,8 @@
t.start();
t.join();
- String filename =
- SuiviObsmerContext.getProperty(SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY);
+ String filename = SuiviObsmerContext.getProperty(
+ SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_IMPORT);
File file = new File(filename);
Assert.assertTrue(file.exists());
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-02-02 17:25:18 UTC (rev 315)
@@ -49,6 +49,9 @@
import fr.ifremer.suiviobsmer.services.ServiceReferential;
import fr.ifremer.suiviobsmer.services.ServiceSampling;
import fr.ifremer.suiviobsmer.services.ServiceUser;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
@@ -380,10 +383,29 @@
transaction.closeContext();
/** EXEC METHOD **/
+ WaoUser user = new WaoUserImpl();
+ user.setFirstName("Jean");
+ user.setLastName("Michmuche");
+ Company company = new CompanyImpl();
+ company.setName("TARTANPION");
+ user.setCompany(company);
- ActivityCalendar result = service.getLastActivityCalendar(boat);
+ ActivityCalendar result = service.getLastActivityCalendar(user, boat);
Assert.assertNotNull(result);
Assert.assertEquals(2009, result.getYear());
+
+ String filename = SuiviObsmerContext.getProperty(
+ SuiviObsmerContext.PROP_FILENAME_LOG_ACTIVITY_ACCESS);
+
+ File file = new File(filename);
+ Assert.assertTrue(file.exists());
+
+ BufferedReader reader = new BufferedReader(new FileReader(file));
+ String line = reader.readLine();
+ Assert.assertTrue(line.contains("Jean Michmuche"));
+ Assert.assertTrue(line.contains("TARTANPION"));
+ Assert.assertTrue(line.contains("TESTBOAT"));
+ Assert.assertTrue(line.contains("174592"));
}
}
Modified: trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties
===================================================================
--- trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-business/src/test/resources/TopiaContextSuiviObsmer.properties 2010-02-02 17:25:18 UTC (rev 315)
@@ -8,4 +8,5 @@
hibernate.connection.driver_class=org.h2.Driver
hibernate.connection.url=jdbc:h2:file:target/db/h2data
-suiviobsmer.log.activityCalendar=target/log/activity.log
+suiviobsmer.log.activityCalendar.import=target/log/activity.log
+suiviobsmer.log.activityCalendar.access=target/log/activity-access.log
\ No newline at end of file
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-02-02 17:25:18 UTC (rev 315)
@@ -27,6 +27,7 @@
import fr.ifremer.suiviobsmer.entity.ActivityProfession;
import fr.ifremer.suiviobsmer.entity.ActivityZone;
import fr.ifremer.suiviobsmer.entity.Boat;
+import fr.ifremer.suiviobsmer.entity.WaoUser;
import fr.ifremer.suiviobsmer.services.ServiceBoat;
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
import java.util.Collections;
@@ -35,6 +36,7 @@
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.nuiton.util.DateUtils;
import org.slf4j.Logger;
@@ -59,6 +61,9 @@
@Inject
private ServiceBoat serviceBoat;
+ @SessionState
+ private WaoUser user;
+
private ActivityCalendar activityCalendar;
// @Property
@@ -102,7 +107,7 @@
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getLastActivityCalendar]");
}
- this.activityCalendar = serviceBoat.getLastActivityCalendar(getBoat());
+ this.activityCalendar = serviceBoat.getLastActivityCalendar(user, getBoat());
}
return activityCalendar;
}
Modified: trunk/suiviobsmer-ui/src/main/resources/log4j.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2010-02-02 15:23:17 UTC (rev 314)
+++ trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2010-02-02 17:25:18 UTC (rev 315)
@@ -8,7 +8,7 @@
log4j.appender.console.Threshold=INFO
log4j.appender.globalfile=org.apache.log4j.RollingFileAppender
-log4j.appender.globalfile.File=/var/log/suiviobsmer/suiviobsmer.log
+log4j.appender.globalfile.File=/var/log/wao/wao.log
log4j.appender.globalfile.MaxFileSize=500KB
log4j.appender.globalfile.Append=true
log4j.appender.globalfile.MaxBackupIndex=10
1
0
[Suiviobsmer-commits] r314 - trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
by fdesbois@users.labs.libre-entreprise.org 02 Feb '10
02 Feb '10
Author: fdesbois
Date: 2010-02-02 15:23:17 +0000 (Tue, 02 Feb 2010)
New Revision: 314
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
Log:
Change header text for boats export
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-02-02 15:12:18 UTC (rev 313)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-02-02 15:23:17 UTC (rev 314)
@@ -68,15 +68,15 @@
*/
public enum BOAT implements ImportHeader {
/** Boat immatriculation **/
- NAVS_COD(1, 20),
+ NAVS_COD(1, "Immatriculation", 20),
/** Boat name **/
- CARN_NOM(2, 21),
+ CARN_NOM(2, "Nom", 21),
/** Boat length **/
- CARN_LONGUEUR_HT(3),
+ CARN_LONGUEUR_HT(3, "Longueur (m)"),
/** Boat build year **/
- CARN_ANNEE(4),
+ CARN_ANNEE(4, "Année de construction"),
/** Boat district code **/
- QUARTIER_IMMA(5, 22),
+ QUARTIER_IMMA(5, "Code quartier", 22),
/** ShipOwner code **/
PER_COD,
/** ShipOwner last name **/
@@ -84,36 +84,41 @@
/** ShipOwner first name **/
PER_PRENOM,
/** Boat active **/
- NAVS_ACTIVE(0),
+ NAVS_ACTIVE(0, "Actif/Inactif"),
/** BoatInfos contactFirstName **/
- CONT_PRENOM(6),
+ CONT_PRENOM(6, "Prénom du contact"),
/** BoatInfos contactLastName **/
- CONT_NOM(7),
+ CONT_NOM(7, "Nom du contact"),
/** BoatInfos contactEmail **/
- CONT_EMAIL(8),
+ CONT_EMAIL(8, "Email du contact"),
/** BoatInfos contactPhoneNumber **/
- CONT_TEL(9),
+ CONT_TEL(9, "Tél du contact"),
/** BoatInfos dup **/
- NAVS_DUP(10),
+ NAVS_DUP(10, "Capacité d'accueil du navire en personnels spécialisés"),
/** BoatInfos comment **/
- NAVS_COMMENT(11);
+ NAVS_COMMENT(11, "Commentaire");
int contactHeader;
int boatHeader;
- BOAT(int indexBoat, int indexContact) {
+ String title;
+
+ BOAT(int indexBoat, String title, int indexContact) {
contactHeader = indexContact;
boatHeader = indexBoat;
+ this.title = title;
}
- BOAT(int indexBoat) {
+ BOAT(int indexBoat, String title) {
boatHeader = indexBoat;
+ this.title = title;
}
BOAT() {
contactHeader = -1;
boatHeader = -1;
+ title = name();
}
@Override
@@ -129,6 +134,11 @@
public String datePattern() {
return null;
}
+
+ @Override
+ public String toString() {
+ return title;
+ }
}
/**
@@ -355,7 +365,7 @@
public static String getHeaderForBoatCsv(int index) {
for (BOAT boatEnum : BOAT.values()) {
if (boatEnum.forBoatCsv() == index) {
- return boatEnum.name();
+ return boatEnum.toString();
}
}
return "";
1
0