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] r243 - trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
19 Jan '10
Author: fdesbois
Date: 2010-01-19 18:47:57 +0000 (Tue, 19 Jan 2010)
New Revision: 243
Modified:
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java
Log:
Keep login when error (to use it in forgetPassword)
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java 2010-01-19 18:02:46 UTC (rev 242)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java 2010-01-19 18:47:57 UTC (rev 243)
@@ -30,10 +30,12 @@
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
import fr.ifremer.suiviobsmer.ui.pages.Index;
import org.apache.tapestry5.BindingConstants;
+import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.InjectContainer;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Parameter;
+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;
@@ -113,6 +115,7 @@
@Property
private String password;
+ @Persist(PersistenceConstants.FLASH)
@Property
private String email;
@@ -174,6 +177,7 @@
} catch (SuiviObsmerBusinessException eee) {
if (eee.getType().equals(Type.BAD_CONNECTION)) {
connexionFeedback.addError(eee.getMessage());
+ email = login;
} else if (eee.getType().equals(Type.ILLEGAL_CONNECTION)) {
connexionFeedback.addInfo(eee.getMessage());
}
1
0
[Suiviobsmer-commits] r242 - in trunk/suiviobsmer-business/src/main: java/fr/ifremer/suiviobsmer java/fr/ifremer/suiviobsmer/impl xmi
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
19 Jan '10
Author: fdesbois
Date: 2010-01-19 18:02:46 +0000 (Tue, 19 Jan 2010)
New Revision: 242
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
Log:
Evol #2025 : Some fields in Csv file are "NA" but not reading correctly in ActivityCalendar import
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-19 16:20:59 UTC (rev 241)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-19 18:02:46 UTC (rev 242)
@@ -66,7 +66,7 @@
/**
* CSV headers for Boat
*/
- public static enum BOAT implements ImportHeader {
+ public enum BOAT implements ImportHeader {
/** Boat immatriculation **/
NAVS_COD(20),
/** Boat name **/
@@ -106,7 +106,7 @@
/**
* CSV headers for SamplingPlan
*/
- public static enum SAMPLING implements ImportHeader {
+ public enum SAMPLING implements ImportHeader {
/** SampleRow code **/
PLAN_CODE(6),
/** Company name **/
@@ -160,7 +160,7 @@
/**
* CSV headers for FishingZone
*/
- public static enum FISHING_ZONE implements ImportHeader {
+ public enum FISHING_ZONE implements ImportHeader {
/** FishingZone facade **/
PECHE_FACADE(10),
/** FishingZone sector **/
@@ -188,7 +188,7 @@
/**
* CSV headers for Contact
*/
- public static enum CONTACT implements ImportHeader {
+ public enum CONTACT implements ImportHeader {
/** Contact code (create date time for existing contact) **/
CONT_CODE(0),
/** Contact create date **/
@@ -239,6 +239,55 @@
}
}
+ public enum ACTIVITY_CALENDAR implements ImportHeader {
+ /** ActivityCalendar year **/
+ SYNA_AN,
+ /** ActivityCalendar fiability **/
+ INDQ_COD,
+ /** ActivityMonth month **/
+ SYNA_MOI,
+ /** ActivityMonth harbourCode **/
+ SYNA_POR_COD,
+ /** ActivityMonth nbSeaDays **/
+ SYNA_NOMJDM,
+ /** ActivityMonth nbFishingDays **/
+ SYNA_NOMJDP,
+ /** ActivityMonth nbBoardingPersons **/
+ SYNA_NOMHE,
+ /** ActivityMonth harbourId **/
+ SYNA_TPOR_COD,
+ /** ActivityMonth harbourLibelle **/
+ SYNA_POR_LIB,
+ /** ActivityProfession professionOrder **/
+ META_ORDRE,
+ /** ActivityProfession code **/
+ MET_COD,
+ /** ActivityProfession id **/
+ MET_ID,
+ /** ActivityProfession libelle **/
+ MET_LIB,
+ /** ActivityZone code **/
+ SECT_COD,
+ /** ActivityZone gradiantCode **/
+ GRA_COD,
+ /** ActivityZone gradiantLibelle **/
+ GRA_LIB,
+ /** ActivityZone zoneId **/
+ TSECT_COD,
+ /** ActivityZone zoneLibelle **/
+ SECT_LIB;
+
+ @Override
+ public int forContactCsv() {
+ return -1;
+ }
+
+ @Override
+ public String datePattern() {
+ return "";
+ }
+ }
+
public static int CONTACT_NB_HEADERS = 33;
public static String getHeaderForContactCsv(int index) {
@@ -276,15 +325,6 @@
}
return valid;
}
-//
-// public static Boolean parseContactValidation(String validation) {
-// if (validation.equals("A")) {
-// return Boolean.TRUE;
-// } else if (validation.equals("R")) {
-// return Boolean.FALSE;
-// }
-// return null;
-// }
public static String formatContactMammals(boolean mammals) {
return mammals ? "X" : "";
@@ -346,28 +386,96 @@
return System.currentTimeMillis();
}
+ /**
+ * Read a string value in CsvReader from {@code header} column.
+ * In ActivityCalendarImport the result value can be null if the read value is "NA".
+ *
+ * @param reader CsvReader used to read the value
+ * @param header Column header in the CsvReader
+ * @return the String value read or null if set to "NA" in ActivityCalendar import.
+ * @throws IOException
+ */
public static String read(CsvReader reader, ImportHeader header) throws IOException {
- return reader.get(header.name()).trim();
+ String result = reader.get(header.name()).trim();
+ if (header instanceof ACTIVITY_CALENDAR && result.equals("NA")) {
+ return null;
+ }
+ return result;
}
+ /**
+ * Read an int value in CsvReader from {@code header} column.
+ *
+ * @param reader CsvReader used to read the value
+ * @param header Column header in the CsvReader
+ * @return the int value or -1 if the value read is null
+ * @throws IOException
+ * @see ImportHelper#read(CsvReader, ImportHeader)
+ */
public static int readInt(CsvReader reader, ImportHeader header) throws IOException {
String str = read(reader, header);
+ if (str == null) {
+ return -1;
+ }
return Integer.parseInt(str);
}
+ /**
+ * Read an Integer value in CsvReader from {@code header} column.
+ *
+ * @param reader CsvReader used to read the value
+ * @param header Column header in the CsvReader
+ * @return the Integer value or null if the value read is null
+ * @throws IOException
+ * @see ImportHelper#readInt(CsvReader, ImportHeader)
+ */
+ public static Integer readInteger(CsvReader reader, ImportHeader header) throws IOException {
+ int result = readInt(reader, header);
+ return result != -1 ? result : null;
+ }
+
+ /**
+ * Read two values in CsvReader corresponding to a period from {@code headerBegin} and {@code headEnd} column.
+ *
+ * @param reader CsvReader used to read the value
+ * @param headerBegin Column header in the CsvReader for periodBegin
+ * @param headerEnd Column header in the CsvReader for periodEnd
+ * @return the PeriodDates created from periodBegin and periodEnd read from Csv file
+ * @throws IOException
+ * @throws ParseException
+ * @throws IllegalArgumentException
+ * @see ImportHelper#readDate(CsvReader, ImportHeader)
+ */
public static PeriodDates readPeriod(CsvReader reader, ImportHeader headerBegin, ImportHeader headerEnd)
throws IOException, ParseException, IllegalArgumentException {
Date end = readDate(reader, headerEnd);
Date begin = readDate(reader, headerBegin);
- PeriodDates period = new PeriodDates(begin, end);
- period.initDayOfMonthExtremities();
- return period;
+ if (begin != null && end != null) {
+ PeriodDates period = new PeriodDates(begin, end);
+ period.initDayOfMonthExtremities();
+ return period;
+ }
+ return null;
}
+ /**
+ * Read a Date value in CsvReader from {@code header} column.
+ *
+ * @param reader CsvReader used to read the value
+ * @param header Column header in the CsvReader
+ * @return the Date value or null if the value read is null
+ * @throws IOException
+ * @throws ParseException
+ * @see ImportHelper#read(CsvReader, ImportHeader)
+ */
public static Date readDate(CsvReader reader, ImportHeader header)
throws IOException, ParseException {
DateFormat dateFormat = new SimpleDateFormat(header.datePattern());
- return dateFormat.parse(read(reader, header));
+ String str = read(reader, header);
+ if (str == null) {
+ return null;
+ }
+ return dateFormat.parse(str);
}
}
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-01-19 16:20:59 UTC (rev 241)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-19 18:02:46 UTC (rev 242)
@@ -23,6 +23,7 @@
import fr.ifremer.suiviobsmer.*;
import com.csvreader.CsvReader;
+import fr.ifremer.suiviobsmer.ImportHelper.ACTIVITY_CALENDAR;
import fr.ifremer.suiviobsmer.ImportHelper.BOAT;
import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
import fr.ifremer.suiviobsmer.entity.ActivityCalendarDAO;
@@ -161,39 +162,26 @@
while(reader.readRecord()) {
currRow++;
- //long firstTic = System.currentTimeMillis();
int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name()).trim());
-// long tic1 = System.currentTimeMillis();
-
- //Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
-// TopiaContextImplementor topia = (TopiaContextImplementor)transaction;
-// SQLQuery query = topia.getHibernate().createSQLQuery(
-// "SELECT * FROM boat WHERE immatriculation = " + boatImmatriculation);
-//
-// Boat boat = (Boat)query.addEntity(BoatImpl.class).uniqueResult();
- Boat boat = boatDAO.findByImmatriculation(boatImmatriculation); //.add(Boat.IMMATRICULATION, boatImmatriculation).executeToEntity(transaction);
+ Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
-// long tic2 = System.currentTimeMillis();
-// log.info("findByImmatriculation : " + (tic2 - tic1));
if (boat != null) {
- int year = Integer.parseInt(reader.get("SYNA_AN").trim());
+// int year = Integer.parseInt(reader.get("SYNA_AN").trim());
+ int year = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.SYNA_AN);
+ if (year == -1) {
+ error("Ligne non sauvegardé car l'année (SYNA_AN) n'est pas renseigné", currRow);
+ continue;
+ }
ActivityCalendarKey key = new ActivityCalendarKey(boat, year);
ActivityCalendar calendar = availableCalendars.get(key);
-// tic1 = System.currentTimeMillis();
-
// If not available select it from Database
if (calendar == null) {
-// TopiaContextImplementor topia = (TopiaContextImplementor)transaction;
-// SQLQuery query = topia.getHibernate().createSQLQuery(
-// "SELECT * FROM activityCalendar WHERE boat = '" + key.boatId() + "' AND year = " + key.year());
-//
-// calendar = (ActivityCalendar)query.addEntity(ActivityCalendarImpl.class).uniqueResult();
calendar = calendarDAO.findByProperties(
ActivityCalendar.BOAT, boat,
@@ -201,7 +189,9 @@
// Create it if not exist in Database
if (calendar == null) {
- int fiability = Integer.parseInt(reader.get("INDQ_COD").trim());
+ //int fiability = Integer.parseInt(reader.get("INDQ_COD").trim());
+ // fiability can be -1 if NA is set in CSV file
+ int fiability = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.INDQ_COD);
calendar = calendarDAO.create(
ActivityCalendar.BOAT, key.boat(),
@@ -218,21 +208,17 @@
availableCalendars.put(key, calendar);
}
-// ActivityCalendar calendar = calendarDAO.findByProperties(
-// ActivityCalendar.BOAT, boat,
-// ActivityCalendar.YEAR, year);
+ //int monthNum = Integer.parseInt(reader.get("SYNA_MOI").trim());
+ int monthNum = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.SYNA_MOI);
+ if (monthNum == -1) {
+ error("Ligne non sauvegardé car le mois (SYNA_MOI) n'est pas renseigné", currRow);
+ continue;
+ }
-// tic2 = System.currentTimeMillis();
-// log.info("calendar.findByProperties : " + (tic2 - tic1));
+ //String harbourCode = reader.get("SYNA_POR_COD").trim();
+ String harbourCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.SYNA_POR_COD);
+ boolean active = harbourCode != null && !harbourCode.equals("INA");
-
- String calendarCode = "[ calendrier " + year + ", navire " + boatImmatriculation + " ]";
-
- int monthNum = Integer.parseInt(reader.get("SYNA_MOI").trim());
-
- String harbourCode = reader.get("SYNA_POR_COD").trim();
- boolean active = !harbourCode.equals("INA");
-
ActivityMonth month = calendar.getActivityMonth(monthNum);
if (month == null) {
@@ -242,34 +228,37 @@
month.setActivityProfession(new ArrayList<ActivityProfession>());
-// if (log.isDebugEnabled()) {
-// info("Création du mois " + monthNum + " actif(" + active + ") " + calendarCode, currRow);
-// }
-
calendar.addActivityMonth(month);
}
month.setActive(active);
if (active) {
- String nbSeaDaysString = reader.get("SYNA_NOMJDM").trim();
- Integer nbSeaDays = !nbSeaDaysString.equals("NA") ?
- Integer.valueOf(nbSeaDaysString) : null;
+// String nbSeaDaysString = reader.get("SYNA_NOMJDM").trim();
+// Integer nbSeaDays = !nbSeaDaysString.equals("NA") ?
+// Integer.valueOf(nbSeaDaysString) : null;
+//
+// String nbFishingDaysString = reader.get("SYNA_NOMJDP").trim();
+// Integer nbFishingDays = !nbFishingDaysString.equals("NA") ?
+// Integer.valueOf(nbFishingDaysString) : null;
+//
+// String nbBoardingPersonsString = reader.get("SYNA_NOMHE").trim();
+// Integer nbBoardingPersons = !nbBoardingPersonsString.equals("NA") ?
+// Integer.valueOf(nbBoardingPersonsString) : null;
+//
+// String harbourIdString = reader.get("SYNA_TPOR_COD").trim();
+// int harbourId = !harbourIdString.equals("NA") ? Integer.parseInt(harbourIdString) : -1;
+// String harbourLibelle = reader.get("SYNA_POR_LIB").trim();
+// harbourLibelle = !harbourLibelle.equals("NA") ? harbourLibelle : null;
+// harbourCode = !harbourCode.equals("NA") ? harbourCode : null;
- String nbFishingDaysString = reader.get("SYNA_NOMJDP").trim();
- Integer nbFishingDays = !nbFishingDaysString.equals("NA") ?
- Integer.valueOf(nbFishingDaysString) : null;
+ Integer nbSeaDays = ImportHelper.readInteger(reader, ACTIVITY_CALENDAR.SYNA_NOMJDM);
+ Integer nbFishingDays = ImportHelper.readInteger(reader, ACTIVITY_CALENDAR.SYNA_NOMJDP);
+ Integer nbBoardingPersons = ImportHelper.readInteger(reader, ACTIVITY_CALENDAR.SYNA_NOMHE);
+
+ int harbourId = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.SYNA_TPOR_COD);
+ String harbourLibelle = ImportHelper.read(reader, ACTIVITY_CALENDAR.SYNA_POR_LIB);
- String nbBoardingPersonsString = reader.get("SYNA_NOMHE").trim();
- Integer nbBoardingPersons = !nbBoardingPersonsString.equals("NA") ?
- Integer.valueOf(nbBoardingPersonsString) : null;
-
- String harbourIdString = reader.get("SYNA_TPOR_COD").trim();
- int harbourId = !harbourIdString.equals("NA") ? Integer.parseInt(harbourIdString) : -1;
- String harbourLibelle = reader.get("SYNA_POR_LIB").trim();
- harbourLibelle = !harbourLibelle.equals("NA") ? harbourLibelle : null;
- harbourCode = !harbourCode.equals("NA") ? harbourCode : null;
-
month.setHarbourId(harbourId);
month.setHarbourCode(harbourCode);
month.setHarbourLibelle(harbourLibelle);
@@ -277,10 +266,17 @@
month.setNbFishingDays(nbFishingDays);
month.setNbSeaDays(nbSeaDays);
- int professionOrder = Integer.parseInt(reader.get("META_ORDRE").trim());
- String professionCode = reader.get("MET_COD").trim();
- int professionId = Integer.parseInt(reader.get("MET_ID").trim());
- String professionLibelle = reader.get("MET_LIB").trim();
+// int professionOrder = Integer.parseInt(reader.get("META_ORDRE").trim()); // NA
+// String professionCode = reader.get("MET_COD").trim();
+// int professionId = Integer.parseInt(reader.get("MET_ID").trim());
+// String professionLibelle = reader.get("MET_LIB").trim();
+
+ // Can be equals to -1 if set to NA in Csv File (not a problem for ordering Profession)
+ int professionOrder = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.META_ORDRE);
+ String professionCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.MET_COD);
+ int professionId = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.MET_ID);
+ String professionLibelle = ImportHelper.read(reader, ACTIVITY_CALENDAR.MET_LIB);
+
ActivityProfession profession = month.getActivityProfession(professionOrder);
if (profession == null) {
@@ -291,12 +287,6 @@
profession.setActivityZone(new ArrayList<ActivityZone>());
-// if (log.isDebugEnabled()) {
-// info("Création du métier " + professionOrder + " code(" + professionCode + ") " +
-// "[ mois " + monthNum + " ] " +
-// calendarCode, currRow);
-// }
-
month.addActivityProfession(profession);
}
@@ -304,12 +294,18 @@
profession.setCode(professionCode);
profession.setLibelle(professionLibelle);
- String zoneCode = reader.get("SECT_COD").trim();
- int gradiantCode = Integer.parseInt(reader.get("GRA_COD").trim());
- String gradiantLibelle = reader.get("GRA_LIB").trim();
- int zoneId = Integer.parseInt(reader.get("TSECT_COD").trim());
- String zoneLibelle = reader.get("SECT_LIB").trim();
+// String zoneCode = reader.get("SECT_COD").trim();
+// int gradiantCode = Integer.parseInt(reader.get("GRA_COD").trim());
+// String gradiantLibelle = reader.get("GRA_LIB").trim();
+// int zoneId = Integer.parseInt(reader.get("TSECT_COD").trim());
+// String zoneLibelle = reader.get("SECT_LIB").trim();
+ String zoneCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.SECT_COD);
+ int gradiantCode = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.GRA_COD);
+ String gradiantLibelle = ImportHelper.read(reader, ACTIVITY_CALENDAR.GRA_LIB);
+ int zoneId = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.TSECT_COD);
+ String zoneLibelle = ImportHelper.read(reader, ACTIVITY_CALENDAR.SECT_LIB);
+
ActivityZone zone = profession.getActivityZone(zoneCode);
if (zone == null) {
@@ -317,19 +313,7 @@
ActivityZone.ZONE_CODE, zoneCode,
ActivityZone.ACTIVITY_PROFESSION, profession);
-// if (log.isDebugEnabled()) {
-// info("Création de la zone " + zoneCode + " [ mois " + monthNum + " ] " +
-// calendarCode, currRow);
-// }
-
profession.addActivityZone(zone);
-
- } else {
-// if (log.isDebugEnabled()) {
-// info("Ecrasement de la zone " + zoneCode + " [ mois " + monthNum + " ] " +
-// calendarCode, currRow);
-// }
- //warn("Zone déjà existante [" + zoneCode + "] ! :: " + Arrays.toString(reader.getValues()), currRow);
}
zone.setZoneId(zoneId);
@@ -344,11 +328,6 @@
warn("Navire inexistant dans le référentiel : " + boatImmatriculation, currRow);
}
-// if (log.isDebugEnabled()) {
-// long tic = System.currentTimeMillis();
-// log.debug("Time : " + DurationFormatUtils.formatDurationHMS(tic - firstTic));
-// }
-
if (result % 1000 == 0) {
tic1 = System.currentTimeMillis();
@@ -360,16 +339,6 @@
log.debug("commit : " + (tic2 - tic1));
}
firstTic = ImportHelper.logTimeAndMemory(log, firstTic, "calendrier d'activité ligne " + currRow);
-// if (log.isInfoEnabled()) {
-// log.info("RUNNING... Import calendrier d'activité ligne " + currRow);
-// Runtime runtime = Runtime.getRuntime();
-// long mem = runtime.totalMemory() - runtime.freeMemory();
-// long memMega = mem / 1024 / 1024;
-// log.info("Memory : " + memMega + " Mo");
-// long tic = System.currentTimeMillis();
-// log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic - firstTic));
-// firstTic = System.currentTimeMillis();
-// }
}
}
@@ -378,16 +347,9 @@
long stopTime = System.currentTimeMillis();
- Runtime runtime = Runtime.getRuntime();
+ // Force garbage collector
+ System.gc();
- long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
- log.info("Memory before gc : " + mem + " Mo");
-
- System.gc();
-
- mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
- log.info("Memory after gc : " + mem + " Mo");
-
String execTime = DurationFormatUtils.formatDurationHMS(stopTime - startTime);
info("Nombre de ligne ajouté : " + result, -1);
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r241 - in trunk/suiviobsmer-ui/src/main: resources/fr/ifremer/suiviobsmer/ui/pages webapp
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
19 Jan '10
Author: fdesbois
Date: 2010-01-19 16:20:59 +0000 (Tue, 19 Jan 2010)
New Revision: 241
Modified:
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.properties
trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
Log:
Evol #2023: Correct mistake on elligible
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.properties 2010-01-19 15:58:08 UTC (rev 240)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.properties 2010-01-19 16:20:59 UTC (rev 241)
@@ -18,7 +18,7 @@
# OTHER
code-label: Code de la ligne
company-label: Soci\u00E9t\u00E9
-boats-label: Navires elligibles
+boats-label: Navires \u00E9ligibles
nbObservants-label: Nombre d'observateurs
averageTideTime-label: Dur\u00E9e moyenne d'une mar\u00E9e
comment-label: Commentaire sur la ligne
Modified: trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-19 15:58:08 UTC (rev 240)
+++ trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-19 16:20:59 UTC (rev 241)
@@ -145,7 +145,7 @@
<td class="${actionsClass} bright">
<t:unless t:test="row.isFinished()">
<a t:type="pagelink" t:page="boats" t:context="row.topiaId">
- <img src="${asset:context:}/img/boat.png" alt="Navire" title="Voir les navires elligibles pour cette ligne"/>
+ <img src="${asset:context:}/img/boat.png" alt="Navire" title="Voir les navires éligibles pour cette ligne"/>
</a>
<p:else>
<img src="${asset:context:}/img/boat-unavailable-22px.png" alt="Navire impossible" title="Accès aux navires impossible, ligne terminée"/>
1
0
[Suiviobsmer-commits] r240 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
19 Jan '10
Author: fdesbois
Date: 2010-01-19 15:58:08 +0000 (Tue, 19 Jan 2010)
New Revision: 240
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java
Log:
Evol #1991 : Add orderBy for Boats list
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-01-19 15:36:37 UTC (rev 239)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-19 15:58:08 UTC (rev 240)
@@ -88,6 +88,10 @@
query = createQueryForBoatFilter(query, filter);
+ if (StringUtils.isNotEmpty(filter.getOrderBy())) {
+ query.addOrder("B." + filter.getOrderBy());
+ }
+
results = query.executeToEntityMap(Boat.IMMATRICULATION, Integer.class);
transaction.closeContext();
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java 2010-01-19 15:36:37 UTC (rev 239)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java 2010-01-19 15:58:08 UTC (rev 240)
@@ -53,6 +53,10 @@
if (sort.equals(ColumnSort.DESCENDING)) {
filterOrder += " desc";
}
+
+ if (log.isDebugEnabled()) {
+ log.debug("Order : " + filterOrder);
+ }
filter.setOrderBy(filterOrder);
}
1
0
[Suiviobsmer-commits] r239 - trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
19 Jan '10
Author: fdesbois
Date: 2010-01-19 15:36:37 +0000 (Tue, 19 Jan 2010)
New Revision: 239
Modified:
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml
Log:
Evol #2020 : Link on DPMA
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml 2010-01-19 14:57:51 UTC (rev 238)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml 2010-01-19 15:36:37 UTC (rev 239)
@@ -81,12 +81,10 @@
<a href="http://www.gnu.org/licenses/gpl.html" title="License GPL v3" target="blank">
GPLv3
</a> - Copyright 2009-2010
- <!--<a href="http://www.codelutin.com" title="Code Lutin">-->
- DPMA,
- <!--</a>-->
+ <a href="http://agriculture.gouv.fr/sections/thematiques/peche-aquaculture" title="Direction des Pêches Maritimes et de l'Aquaculture" target="blank">
+ DPMA</a>,
<a href="http://www.ifremer.fr" title="Ifremer" target="blank">
- Ifremer
- </a>,
+ Ifremer</a>,
<a href="http://www.codelutin.com" title="Code Lutin" target="blank">
Code Lutin
</a>
1
0
[Suiviobsmer-commits] r238 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/webapp/img
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
by fdesbois@users.labs.libre-entreprise.org 19 Jan '10
19 Jan '10
Author: fdesbois
Date: 2010-01-19 14:57:51 +0000 (Tue, 19 Jan 2010)
New Revision: 238
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ContactDataSource.java
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.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/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java
trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/img/chart-area.png
Log:
Evol #1991 : Manage query for retrieve boats and contacts from Tapestry Grid (using GridDataSource). TODO orderBy for contacts (maybe revert and new evol for next version) and orderBy for Boats (Ok for 0.1.1 version)
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -40,10 +40,11 @@
public class BoatFilterImpl extends BoatFilter {
@Override
- public TopiaQuery prepareQueryForBoat(TopiaQuery query, String main) {
+ public TopiaQuery prepareQueryForBoat(TopiaQuery query, String boat) {
- String boat = main + ".boat";
-
+ // Limit
+ query = prepareQueryForLimit(query);
+
if (!StringUtils.isEmpty(getBoatName())) {
query.add(boat + ".name", Op.LIKE, getBoatName() + "%");
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -52,7 +52,7 @@
}
query = prepareQueryForSampling(query, query.getMainAlias() + "." + Contact.SAMPLE_ROW);
- query = prepareQueryForBoat(query, query.getMainAlias());
+ query = prepareQueryForBoat(query, query.getMainAlias() + "." + Contact.BOAT);
if (getMammalsObservation() && getMammalsCapture()) {
query.add(contact + ".mammalsObservation = :mammals OR " + contact + ".mammalsCapture = :mammals").
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -0,0 +1,27 @@
+
+package fr.ifremer.suiviobsmer.bean;
+
+import org.nuiton.topia.framework.TopiaQuery;
+
+/**
+ * UserFilterImpl
+ *
+ * Created: 18 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class UserFilterImpl extends UserFilter {
+
+ @Override
+ public TopiaQuery prepareQueryForLimit(TopiaQuery query) {
+ if (getStartIndex() != null && getEndIndex() != null) {
+ query.setLimit(getStartIndex(), getEndIndex());
+ }
+ return query;
+ }
+
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
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-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -86,56 +86,71 @@
BoatDAO dao = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
TopiaQuery<Boat> query = dao.createQuery("B");
- // Immatriculation
- if (filter.getBoatImmatriculation() != null) {
- query.add("B.immatriculation", filter.getBoatImmatriculation());
- }
+ query = createQueryForBoatFilter(query, filter);
- // Name
- if (!StringUtils.isEmpty(filter.getBoatName())) {
- query.add("B.name", Op.LIKE, filter.getBoatName() + "%");
- }
+ results = query.executeToEntityMap(Boat.IMMATRICULATION, Integer.class);
- // DistrictCode
- if (!StringUtils.isEmpty(filter.getBoatDistrictCode())) {
- query.add("B.districtCode", filter.getBoatDistrictCode());
- }
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction, "Impossible de filtrer la liste des navires", eee);
+ }
+ return results;
+ }
+
+ protected TopiaQuery<Boat> createQueryForBoatFilter(TopiaQuery<Boat> query, BoatFilter filter) {
+ String main = query.getMainAlias();
+ query = filter.prepareQueryForBoat(query, main);
- boolean sampleRowCodeFiltered = !StringUtils.isEmpty(filter.getSampleRowCode());
- boolean professionFiltered = filter.getProfession() != null;
- boolean fishingZoneFiltered = filter.getFishingZone() != null;
- boolean sampleRowFiltered = sampleRowCodeFiltered || professionFiltered || fishingZoneFiltered;
+ boolean sampleRowCodeFiltered = !StringUtils.isEmpty(filter.getSampleRowCode());
+ boolean professionFiltered = filter.getProfession() != null;
+ boolean fishingZoneFiltered = filter.getFishingZone() != null;
+ boolean sampleRowFiltered = sampleRowCodeFiltered || professionFiltered || fishingZoneFiltered;
- // Add join for ElligibleBoat
- if (sampleRowFiltered) {
- String elligibleBoatClassName = ElligibleBoat.class.getName();
- query.addFrom(elligibleBoatClassName + " E").add("E.boat = B");
- }
- // SampleRowCode
- if (sampleRowCodeFiltered) {
- query.add("E.sampleRow.code", filter.getSampleRowCode());
- }
- // Profession
- if (professionFiltered) {
- query.add("E.sampleRow.profession", filter.getProfession());
- }
+ // Add join for ElligibleBoat
+ if (sampleRowFiltered) {
+ String elligibleBoatClassName = ElligibleBoat.class.getName();
+ query.addFrom(elligibleBoatClassName + " E").add("E.boat = " + main);
+ }
+ // SampleRowCode
+ if (sampleRowCodeFiltered) {
+ query.add("E.sampleRow.code", filter.getSampleRowCode());
+ }
+ // Profession
+ if (professionFiltered) {
+ query.add("E.sampleRow.profession", filter.getProfession());
+ }
- // TODO FishingZone
-
- // Company : only if an other filter is set for the sampleRow
- if (filter.getCompany() != null && sampleRowFiltered) {
- query.add("E.sampleRow.company", filter.getCompany());
- query.add("E.companyActive = :booleanTrue OR (E.companyActive IS NULL AND E.globalActive = :booleanTrue)").
- addParam("booleanTrue", Boolean.TRUE);
- }
+ // TODO FishingZone
- results = query.executeToEntityMap(Boat.IMMATRICULATION, Integer.class);
+ // Company : only if an other filter is set for the sampleRow
+ if (filter.getCompany() != null && sampleRowFiltered) {
+ query.add("E.sampleRow.company", filter.getCompany());
+ query.add("E.companyActive = :booleanTrue OR (E.companyActive IS NULL AND E.globalActive = :booleanTrue)").
+ addParam("booleanTrue", Boolean.TRUE);
+ }
+ return query;
+ }
+
+ @Override
+ public int countBoatsByFilter(BoatFilter filter) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ int result = 0;
+ try {
+ transaction = rootContext.beginTransaction();
+
+ BoatDAO dao = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+ TopiaQuery<Boat> query = dao.createQuery("B");
+
+ query = createQueryForBoatFilter(query, filter);
+
+ result = query.executeCount();
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction, "Impossible de filtrer la liste des navires", eee);
}
- return results;
+ return result;
}
/**
@@ -186,7 +201,7 @@
SampleRow sampleRow = elligible.getSampleRow();
// SampleRow non closed only
- if (!sampleRow.isFinished()) {
+ //if (!sampleRow.isFinished()) {
String companyId = sampleRow.getCompany() != null ?
sampleRow.getCompany().getTopiaId() : "";
@@ -194,7 +209,7 @@
if (companyId.equals(company.getTopiaId())) {
elligibleBoats.put(sampleRow.getCode(), elligible);
}
- }
+ //}
}
// Last contact
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -101,68 +101,14 @@
ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
- TopiaQuery<Contact> query = dao.createQuery("C").addOrderDesc("C." + TopiaEntity.TOPIA_CREATE_DATE);
+ TopiaQuery<Contact> query = dao.createQuery("C");
-// if (filter.getSampleRow() != null) {
-// query.add("C." + Contact.SAMPLE_ROW, filter.getSampleRow());
-// } else if (!StringUtils.isEmpty(filter.getSectorName())) {
-// query.addFrom(FishingZone.class.getName() + " F");
-// query.add("F.sectorName", filter.getSectorName()).add("C.sampleRow IN elements(F.sampleRow)");
-// } else if (!StringUtils.isEmpty(filter.getFacadeName())) {
-// query.addFrom(FishingZone.class.getName() + " F");
-// query.add("F.facadeName", filter.getFacadeName()).add("C.sampleRow IN elements(F.sampleRow)");
-// }
-//
-// if (!StringUtils.isEmpty(filter.getBoatName())) {
-// query.add("C.boat.name", Op.LIKE, filter.getBoatName() + "%");
-// }
-//
-// if (!StringUtils.isEmpty(filter.getBoatDistrictCode())) {
-// query.add("C.boat.districtCode", filter.getBoatDistrictCode());
-// }
-//
-// if (filter.getBoatImmatriculation() != null) {
-// query.add("C.boat.immatriculation", filter.getBoatImmatriculation());
-// }
-
query = filter.prepareQueryForContact(query);
-// if (filter.getObserver() != null) {
-// query.add(Contact.USER, filter.getObserver());
-// } else if (filter.getCompany() != null) {
-// query.add("C.user.company", filter.getCompany());
-// }
+ query.addOrderDesc("C." + TopiaEntity.TOPIA_CREATE_DATE).addLoad(Contact.USER + "." + User.COMPANY);
-// if (filter.getMammalsObservation() && filter.getMammalsCapture()) {
-// query.add("C.mammalsObservation = :mammals OR C.mammalsCapture = :mammals").addParam("mammals", Boolean.TRUE);
-// } else if (filter.getMammalsObservation()) {
-// query.add("C." + Contact.MAMMALS_OBSERVATION, Boolean.TRUE);
-// } else if (filter.getMammalsCapture()) {
-// query.add("C." + Contact.MAMMALS_CAPTURE, Boolean.TRUE);
-// }
-//
-// List<Object> programValidValues = new ArrayList<Object>();
-// if (filter.getProgramAccepted()) {
-// programValidValues.add(Boolean.TRUE);
-// }
-// if (filter.getProgramRefused()) {
-// programValidValues.add(Boolean.FALSE);
-// }
-// query.add("C." + Contact.VALIDATION_PROGRAM, programValidValues, filter.getProgramUndefined());
-//
-// List<Object> companyValidValues = new ArrayList<Object>();
-// if (filter.getCompanyAccepted()) {
-// companyValidValues.add(Boolean.TRUE);
-// }
-// if (filter.getCompanyRefused()) {
-// companyValidValues.add(Boolean.FALSE);
-// }
-// query.add("C." + Contact.VALIDATION_COMPANY, companyValidValues, filter.getCompanyUndefined());
-
- query.addLoad("user.company");
-
if (log.isDebugEnabled()) {
- log.debug("Query : " + query);
+ log.debug("Query : " + query);
}
results = query.executeToEntityMap();
@@ -406,6 +352,9 @@
// Create new elligible boat not active in a global way
elligible = elligibleDAO.create(
ElligibleBoat.BOAT, boat, ElligibleBoat.SAMPLE_ROW, row);
+ if (log.isDebugEnabled()) {
+ log.debug("Create elligibleBoat for : " + boat.getImmatriculation() + " - " + row.getCode());
+ }
}
elligible.setCompanyActive(Boolean.TRUE);
@@ -462,9 +411,11 @@
String tideBeginString = ImportHelper.read(reader, CONTACT.CONT_DEBUT_MAREE);
String tideEndString = ImportHelper.read(reader, CONTACT.CONT_FIN_MAREE);
String nbObservantsString = ImportHelper.read(reader, CONTACT.CONT_NB_OBSERV);
+ String dataInputString = ImportHelper.read(reader, CONTACT.CONT_ALLEGRO);
Date tideBegin = !StringUtils.isEmpty(tideBeginString) ? dateFormat.parse(tideBeginString) : null;
Date tideEnd = !StringUtils.isEmpty(tideEndString) ? dateFormat.parse(tideEndString) : null;
+ Date dataInput = !StringUtils.isEmpty(dataInputString) ? dateFormat.parse(dataInputString) : null;
int nbObservants = !StringUtils.isEmpty(nbObservantsString) ? Integer.parseInt(nbObservantsString) : 0;
boolean mammalsCapture =
ImportHelper.parseContactMammals(reader, CONTACT.CONT_MAM_CAPT);
@@ -477,6 +428,7 @@
contact.setNbObservants(nbObservants);
contact.setMammalsCapture(mammalsCapture);
contact.setMammalsObservation(mammalsObsv);
+ contact.setDataInputDate(dataInput);
result.incNbImported();
@@ -518,4 +470,25 @@
return result;
}
+ @Override
+ public int countContactsByFilter(ContactFilter filter) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ int result = 0;
+ try {
+ transaction = rootContext.beginTransaction();
+
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ TopiaQuery<Contact> query = dao.createQuery("C");
+ query = filter.prepareQueryForContact(query);
+
+ result = query.executeCount();
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible de compter le nombre de contacts filtrés", eee);
+ }
+ return result;
+ }
+
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -543,7 +543,7 @@
} else {
row = dao.create(SampleRow.CODE, code);
- String companyName = reader.get(SAMPLING.SOCIETE_NOM.name()).trim();
+ String companyName = ImportHelper.read(reader, SAMPLING.SOCIETE_NOM);
// Create link with company if set in file
if (!StringUtils.isEmpty(companyName)) {
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Added: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java (rev 0)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -0,0 +1,178 @@
+
+package fr.ifremer.suiviobsmer.ui.data;
+
+import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.grid.ColumnSort;
+import org.apache.tapestry5.grid.GridDataSource;
+import org.apache.tapestry5.grid.SortConstraint;
+import org.apache.tapestry5.ioc.internal.util.TapestryException;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * ContactDataSource
+ *
+ * Created: 18 janv. 2010
+ *
+ * @param <K> Type of the map key
+ * @param <E> Type of the map value
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public abstract class AbstractMappedGridDataSource<K, E extends TopiaEntity> implements GridDataSource {
+
+// @Inject
+// private ServiceContact serviceContact;
+
+ private Logger log = LoggerFactory.getLogger(AbstractMappedGridDataSource.class);
+
+// private UserFilter filter;
+
+ private Map<K, E> mapResults;
+
+ private List<E> listResults;
+
+ private int nbRows = -1;
+
+ private int nbRowsPerPage;
+
+// public AbstractMappedGridDataSource(UserFilter filter) {
+// this.filter = filter;
+// }
+
+ @Override
+ public int getAvailableRows() {
+ if (nbRows < 0) {
+ try {
+ nbRows = count();
+ if (log.isDebugEnabled()) {
+ log.debug("Count : " + nbRows);
+ }
+ } catch (SuiviObsmerException eee) {
+ throw new TapestryException("", eee);
+ }
+ }
+ return nbRows;
+ }
+
+ @Override
+ public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints) {
+ if (log.isDebugEnabled()) {
+ log.debug("Prepare results : " + startIndex + ", " + endIndex);
+ }
+ nbRowsPerPage = endIndex - startIndex + 1;
+ try {
+ mapResults = execute(startIndex, endIndex, getSortConstraint(sortConstraints));
+ listResults = new ArrayList<E>(mapResults.values());
+
+ // FIXME manage sort columns in execute ???? obvious
+ sortResults(sortConstraints);
+ } catch (SuiviObsmerException eee) {
+ throw new TapestryException("", eee);
+ }
+ }
+
+ protected abstract Map<K, E> execute(int startIndex, int endIndex, SortConstraint orderBy) throws SuiviObsmerException;
+
+ protected abstract int count() throws SuiviObsmerException;
+
+ protected SortConstraint getSortConstraint(List<SortConstraint> sortConstraints) {
+ for (SortConstraint constraint : sortConstraints)
+ {
+ final ColumnSort sort = constraint.getColumnSort();
+
+ if (sort != ColumnSort.UNSORTED) {
+ return constraint;
+ }
+ }
+ return null;
+ }
+
+ protected void sortResults(List<SortConstraint> sortConstraints) {
+
+ for (SortConstraint constraint : sortConstraints)
+ {
+ final ColumnSort sort = constraint.getColumnSort();
+
+ if (sort == ColumnSort.UNSORTED) continue;
+
+ final PropertyConduit conduit = constraint.getPropertyModel().getConduit();
+
+ final Comparator valueComparator = new Comparator<Comparable>()
+ {
+ public int compare(Comparable o1, Comparable o2)
+ {
+ // Simplify comparison, and handle case where both are nulls.
+
+ if (o1 == o2) return 0;
+
+ if (o2 == null) return 1;
+
+ if (o1 == null) return -1;
+
+ return o1.compareTo(o2);
+ }
+ };
+
+ final Comparator rowComparator = new Comparator()
+ {
+ public int compare(Object row1, Object row2)
+ {
+ Comparable value1 = (Comparable) conduit.get(row1);
+ Comparable value2 = (Comparable) conduit.get(row2);
+
+ return valueComparator.compare(value1, value2);
+ }
+ };
+
+ final Comparator reverseComparator = new Comparator()
+ {
+ public int compare(Object o1, Object o2)
+ {
+ int modifier = sort == ColumnSort.ASCENDING ? 1 : -1;
+
+ return modifier * rowComparator.compare(o1, o2);
+ }
+ };
+
+ // We can freely sort this list because its just a copy.
+
+ Collections.sort(listResults, reverseComparator);
+ }
+ }
+
+ @Override
+ public Object getRowValue(int index) {
+ index = index % nbRowsPerPage;
+ if (index >= listResults.size()) {
+ if (log.isErrorEnabled()) {
+ log.error("Size error : " + index + " / " + listResults.size());
+ }
+ return null;
+ }
+ return CollectionUtils.get(listResults, index);
+ }
+
+ @Override
+ public abstract Class getRowType();
+
+ public E get(K key) {
+ return mapResults.get(key);
+ }
+
+ public List<E> values() {
+ return listResults;
+ }
+
+}
Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java (rev 0)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -0,0 +1,75 @@
+
+package fr.ifremer.suiviobsmer.ui.data;
+
+import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.bean.BoatFilter;
+import fr.ifremer.suiviobsmer.entity.Boat;
+import fr.ifremer.suiviobsmer.services.ServiceBoat;
+import java.util.Map;
+import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.grid.ColumnSort;
+import org.apache.tapestry5.grid.SortConstraint;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * BoatDataSource
+ *
+ * Created: 19 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class BoatDataSource extends AbstractMappedGridDataSource<Integer, Boat> {
+
+ private static Logger log = LoggerFactory.getLogger(BoatDataSource.class);
+
+ private BoatFilter filter;
+
+ private ServiceBoat service;
+
+ public BoatDataSource(BoatFilter filter, ServiceBoat service) {
+ this.filter = filter;
+ this.service = service;
+ }
+
+
+ @Override
+ protected Map<Integer, Boat> execute(int startIndex, int endIndex, SortConstraint orderBy) throws SuiviObsmerException {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getBoatsByFilter]");
+ }
+ filter.setStartIndex(startIndex);
+ filter.setEndIndex(endIndex);
+
+ if (orderBy != null) {
+ PropertyModel property = orderBy.getPropertyModel();
+ String filterOrder = property.getPropertyName();
+
+ ColumnSort sort = orderBy.getColumnSort();
+ if (sort.equals(ColumnSort.DESCENDING)) {
+ filterOrder += " desc";
+ }
+ filter.setOrderBy(filterOrder);
+ }
+
+ return service.getBoatsByFilter(filter);
+ }
+
+ @Override
+ protected int count() throws SuiviObsmerException {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [countBoatsByFilter]");
+ }
+ return service.countBoatsByFilter(filter);
+ }
+
+ @Override
+ public Class<?> getRowType() {
+ return Boat.class;
+ }
+
+}
Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BoatDataSource.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ContactDataSource.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ContactDataSource.java (rev 0)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ContactDataSource.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -0,0 +1,60 @@
+
+package fr.ifremer.suiviobsmer.ui.data;
+
+import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.bean.ContactFilter;
+import fr.ifremer.suiviobsmer.entity.Contact;
+import fr.ifremer.suiviobsmer.services.ServiceContact;
+import java.util.Map;
+import org.apache.tapestry5.grid.SortConstraint;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * ContactDataSource
+ *
+ * Created: 18 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class ContactDataSource extends AbstractMappedGridDataSource<String, Contact> {
+
+ private static Logger log = LoggerFactory.getLogger(ContactDataSource.class);
+
+ private ContactFilter filter;
+
+ private ServiceContact serviceContact;
+
+ public ContactDataSource(ContactFilter filter, ServiceContact service) {
+ this.filter = filter;
+ serviceContact = service;
+ }
+
+ @Override
+ public Class<?> getRowType() {
+ return Contact.class;
+ }
+
+ @Override
+ protected Map<String, Contact> execute(int startIndex, int endIndex, SortConstraint orderBy) throws SuiviObsmerException {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getContactsByFilter]");
+ }
+ filter.setStartIndex(startIndex);
+ filter.setEndIndex(endIndex);
+ return serviceContact.getContactsByFilter(filter);
+ }
+
+ @Override
+ protected int count() throws SuiviObsmerException {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [countContactsByFilter]");
+ }
+ return serviceContact.countContactsByFilter(filter);
+ }
+
+}
Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ContactDataSource.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
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-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -46,6 +46,7 @@
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
import fr.ifremer.suiviobsmer.ui.components.FeedBack;
import fr.ifremer.suiviobsmer.ui.components.Layout;
+import fr.ifremer.suiviobsmer.ui.data.BoatDataSource;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -55,7 +56,6 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
-import java.util.Map;
import java.util.zip.GZIPInputStream;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
@@ -415,7 +415,8 @@
/**************************** Boats List *****************************************/
@Persist
- private Map<Integer, Boat> boats;
+// private Map<Integer, Boat> boats;
+ private BoatDataSource boats;
@Property
@Persist
@@ -429,15 +430,22 @@
@InjectComponent
private Zone boatsZone;
- public Map<Integer, Boat> getBoats() throws SuiviObsmerException {
+ public BoatDataSource getBoats() throws SuiviObsmerException {
if (boats == null) {
- if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getBoatsByFilter]");
- }
- boats = serviceBoat.getBoatsByFilter(boatFilter);
+ boats = new BoatDataSource(getBoatFilter(), serviceBoat);
}
return boats;
}
+
+// public Map<Integer, Boat> getBoats() throws SuiviObsmerException {
+// if (boats == null) {
+// if (log.isInfoEnabled()) {
+// log.info("BUSINESS REQUEST [getBoatsByFilter]");
+// }
+// boats = serviceBoat.getBoatsByFilter(boatFilter);
+// }
+// return boats;
+// }
public String getRowClass() {
String result = "";
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-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -35,9 +35,9 @@
import fr.ifremer.suiviobsmer.entity.User;
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 fr.ifremer.suiviobsmer.ui.base.AbstractFilteredPage;
+import fr.ifremer.suiviobsmer.ui.data.ContactDataSource;
import fr.ifremer.suiviobsmer.ui.data.BusinessUtils;
import fr.ifremer.suiviobsmer.ui.base.GenericSelectModel;
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
@@ -47,7 +47,6 @@
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -55,8 +54,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.Field;
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.SelectModel;
+import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -67,8 +65,6 @@
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.corelib.components.Form;
import org.apache.tapestry5.corelib.components.Zone;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.SelectModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.PropertyAccess;
import org.apache.tapestry5.services.BeanModelSource;
@@ -114,11 +110,11 @@
@Inject
private ServiceBoat serviceBoat;
- @Persist("flash")
+ @Persist(PersistenceConstants.FLASH)
private String editableContactId;
void setupRender() throws SuiviObsmerException {
- initFilter();
+ //initFilter();
contacts = null;
getContacts();
contactsForm.clearErrors();
@@ -136,7 +132,8 @@
private Zone importExportZone;
@Property
- @Persist("flash")
+// @Persist(PersistenceConstants.FLASH)
+ @Persist
private boolean filtersVisible;
private boolean reset;
@@ -144,6 +141,7 @@
public ContactFilter getContactFilter() throws SuiviObsmerException {
if (contactFilter == null) {
contactFilter = new ContactFilterImpl();
+ initFilter();
// if (!user.getAdmin()) {
// contactFilter.setCompany(user.getCompany());
// }
@@ -159,6 +157,7 @@
@Override
protected void resetFilter() {
contactFilter = null;
+ filtersVisible = false;
}
// @Override
@@ -197,6 +196,7 @@
void onSuccessFromFiltersForm() throws SuiviObsmerException {
if (reset) {
contactFilter = null;
+ filtersVisible = false;
} else {
filtersVisible = true;
}
@@ -262,7 +262,8 @@
private ContactModelFactory contactModelFactory;
@Persist
- private Map<String, Contact> contacts;
+ private ContactDataSource contacts;
+// private Map<String, Contact> contacts;
@Property
private Contact contact;
@@ -275,23 +276,33 @@
private GenericSelectModel<User> userSelectModel;
@Property
- @Persist("flash")
+ @Persist(PersistenceConstants.FLASH)
private String contactUserId;
private ContactState contactState;
private boolean even = true;
- public Map<String, Contact> getContacts() throws SuiviObsmerException {
+ public ContactDataSource getContacts() throws SuiviObsmerException {
if (contacts == null) {
if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getContactsByFilter]");
+ log.info("Create DataSource");
}
- contacts = serviceContact.getContactsByFilter(getContactFilter());
+ contacts = new ContactDataSource(getContactFilter(), serviceContact);
}
return contacts;
}
+// public Map<String, Contact> getContacts() throws SuiviObsmerException {
+// if (contacts == null) {
+// if (log.isInfoEnabled()) {
+// log.info("Create DataSource");
+// }
+// contacts = serviceContact.getContactsByFilter(getContactFilter());
+// }
+// return contacts;
+// }
+
public BeanModel<Contact> getContactModel() {
if (contactModel == null) {
contactModel = user.getAdmin() ?
@@ -391,7 +402,7 @@
}
void onSelectedFromAcceptContact(String contactId) throws SuiviObsmerException {
- contact = getContacts().get(contactId);
+ contact = getContacts().get(contactId);
if (user.getAdmin()) {
contact.setValidationProgram(Boolean.TRUE);
} else {
@@ -464,7 +475,7 @@
/**************************** CONTACT SAVE ********************************/
- @Persist("flash")
+ @Persist(PersistenceConstants.FLASH)
private String contactSelectedId;
@InjectComponent
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -32,6 +32,7 @@
import java.util.ArrayList;
import java.util.List;
import org.apache.tapestry5.Asset2;
+import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Path;
@@ -78,7 +79,7 @@
private DateFormat dateFormat;
- @Persist("flash")
+ @Persist(PersistenceConstants.FLASH)
private String editedId;
@Property
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java 2010-01-19 14:57:51 UTC (rev 238)
@@ -23,12 +23,14 @@
import fr.ifremer.suiviobsmer.entity.Contact;
import fr.ifremer.suiviobsmer.entity.FishingZone;
+import fr.ifremer.suiviobsmer.entity.User;
import java.lang.annotation.Annotation;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.PropertyConduit;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.beaneditor.RelativePosition;
import org.apache.tapestry5.services.BeanModelSource;
+import org.nuiton.topia.persistence.TopiaEntity;
/**
* ContactModelFactory
@@ -53,24 +55,24 @@
// New properties for contactModel
contactModel.add("createdBy", null);
- contactModel.add("sampleRow", getSampleRowPropertyConduit());
- contactModel.add("boat", getBoatPropertyConduit());
+ contactModel.add(Contact.SAMPLE_ROW, getSampleRowPropertyConduit());
+ contactModel.add(Contact.BOAT, getBoatPropertyConduit());
contactModel.add("mammals", null);
contactModel.add("validation", null);
contactModel.add("actions", null);
contactModel.include(
"createdBy",
- "topiaCreateDate",
- "sampleRow",
- "boat",
- "state",
- "tideBeginDate",
- "tideEndDate",
- "nbObservants",
+ TopiaEntity.TOPIA_CREATE_DATE,
+ Contact.SAMPLE_ROW,
+ Contact.BOAT,
+ Contact.STATE,
+ Contact.TIDE_BEGIN_DATE,
+ Contact.TIDE_END_DATE,
+ Contact.NB_OBSERVANTS,
"mammals",
- "dataInputDate",
- "comment",
+ Contact.DATA_INPUT_DATE,
+ Contact.COMMENT,
"validation",
"actions");
@@ -80,16 +82,16 @@
public BeanModel<Contact> buildAdminContactModel(BeanModelSource beanModelSource, ComponentResources resources) {
BeanModel<Contact> contactModel = buildContactModel(beanModelSource, resources);
contactModel.exclude("createdBy");
- contactModel.add(RelativePosition.AFTER,"topiaCreateDate", "observer", getUserPropertyConduit());
- contactModel.add(RelativePosition.AFTER, "observer", "company", getCompanyPropertyConduit());
- contactModel.add(RelativePosition.AFTER, "sampleRow", "program", getProgramPropertyConduit());
+ contactModel.add(RelativePosition.AFTER, TopiaEntity.TOPIA_CREATE_DATE, "observer", getUserPropertyConduit());
+ contactModel.add(RelativePosition.AFTER, "observer", User.COMPANY, getCompanyPropertyConduit());
+ contactModel.add(RelativePosition.AFTER, Contact.SAMPLE_ROW, "program", getProgramPropertyConduit());
contactModel.add(RelativePosition.AFTER, "program", "professionCode", getProfessionCodePropertyConduit());
contactModel.add(RelativePosition.AFTER, "professionCode", "professionLibelle", getProfessionLibellePropertyConduit());
contactModel.add(RelativePosition.AFTER, "professionLibelle", "professionSpecies", getProfessionSpeciesPropertyConduit());
contactModel.add(RelativePosition.AFTER, "professionSpecies", "fishingZoneFacade", getFishingZoneFacadePropertyConduit());
contactModel.add(RelativePosition.AFTER, "fishingZoneFacade", "fishingZoneSector", getFishingZoneSectorPropertyConduit());
contactModel.add(RelativePosition.AFTER, "fishingZoneSector", "fishingZoneDivision", getFishingZoneDivisionPropertyConduit());
- contactModel.add(RelativePosition.AFTER, "boat", "boatImmatriculation", getBoatImmatriculationPropertyConduit());
+ contactModel.add(RelativePosition.AFTER, Contact.BOAT, "boatImmatriculation", getBoatImmatriculationPropertyConduit());
contactModel.add(RelativePosition.AFTER, "boatImmatriculation", "boatDistrictCode", getBoatDistrictCodePropertyConduit());
return contactModel;
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-19 14:57:51 UTC (rev 238)
@@ -107,7 +107,7 @@
<!-- BOATLIST:: -->
<div class="fleft" id="so-boats-list">
<h1>Liste des navires</h1>
- <div t:type="grid" t:source="boats.values()" t:row="boat"
+ <div t:type="grid" t:source="boats" t:row="boat"
t:include="name, immatriculation, districtCode, boatLength, buildYear" t:rowClass="prop:rowClass" t:rowsPerPage="20">
<p:nameCell>
<t:if t:test="canCreateNewContactFromList()">
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-18 19:27:24 UTC (rev 237)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-19 14:57:51 UTC (rev 238)
@@ -112,7 +112,7 @@
<t:zone t:id="gridZone" t:update="show">
<form t:type="form" t:id="contactsForm" t:zone="gridZone">
<t:errors id="so-contact-form-errors" t:banner="message:contactsForm-errors-banner"/>
- <div t:type="grid" t:source="contacts.values()" t:row="contact" class="t-data-grid ${gridClass}" t:model="contactModel" t:rowClass="prop:rowClass"
+ <div t:type="grid" t:source="contacts" t:row="contact" class="t-data-grid ${gridClass}" t:model="contactModel" t:rowClass="prop:rowClass"
t:rowsPerPage="20">
<p:createdByCell>
<t:if t:test="editionMode">
Modified: trunk/suiviobsmer-ui/src/main/webapp/img/chart-area.png
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r237 - in trunk: . suiviobsmer-business/src/main/xmi
by fdesbois@users.labs.libre-entreprise.org 18 Jan '10
by fdesbois@users.labs.libre-entreprise.org 18 Jan '10
18 Jan '10
Author: fdesbois
Date: 2010-01-18 19:27:24 +0000 (Mon, 18 Jan 2010)
New Revision: 237
Modified:
trunk/pom.xml
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
Log:
Evol #1993 : Create automatic index on some properties (use topia and <<unique>> stereotype to manage hibernate mapping)
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-18 17:13:43 UTC (rev 236)
+++ trunk/pom.xml 2010-01-18 19:27:24 UTC (rev 237)
@@ -211,7 +211,7 @@
<!-- libraries version -->
<nuitonutils.version>1.1.3</nuitonutils.version>
- <topia.version>2.3.0-beta-4</topia.version>
+ <topia.version>2.3.0-beta-5-SNAPSHOT</topia.version>
<eugene.version>2.0.0-beta-3</eugene.version>
<tapestry.version>5.1.0.5</tapestry.version>
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r236 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean 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/base 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 18 Jan '10
by fdesbois@users.labs.libre-entreprise.org 18 Jan '10
18 Jan '10
Author: fdesbois
Date: 2010-01-18 17:13:43 +0000 (Mon, 18 Jan 2010)
New Revision: 236
Modified:
trunk/changelog.txt
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.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/impl/ServiceSamplingImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.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/Boats.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
Log:
Evol #1975 : Improve graphic view + filter on sampleRows
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-01-18 15:24:24 UTC (rev 235)
+++ trunk/changelog.txt 2010-01-18 17:13:43 UTC (rev 236)
@@ -1,6 +1,18 @@
Release note
============
+0.1.1
+-----
+
+- [fdesbois] Evol #1975 : Amélioration de l'affichage (marges) + dynamisme sur la liste déroulante des métiers (codes lignes du plan)
+- [fdesbois] Evol #1972 : Envoi d'un email pour la modification du password de l'utilisateur
+- [fdesbois] Ano #2015 : Un utilisateur inactif ne doit pas pouvoir se connecter à l'application
+- [fdesbois] Evol #2008 : Renommer état "Embarquement prévu" par "Embarquement programmé"
+- [fdesbois] Evol #1945 : Mise à jour du pied de page : ajout d'un lien vers Ifremer SIH (en plus de celui vers le site d'Ifremer)
+- [fdesbois] Ano #2010 : L'icône d'ajout d'une news est présente pour un utilisateur
+- [fdesbois] Ano #2014 : La data de saisie des données n'est pas supprimé lors du passage à un état refusé
+- [fdesbois] Ano #2009 : Les icônes de validation apparaissent lors de la modification d'une ligne de contact
+
0.1.0
-----
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -51,7 +51,7 @@
query.add(contact + "." + Contact.USER + "." + User.COMPANY, getCompany());
}
- query = prepareQueryForSampling(query, query.getMainAlias());
+ query = prepareQueryForSampling(query, query.getMainAlias() + "." + Contact.SAMPLE_ROW);
query = prepareQueryForBoat(query, query.getMainAlias());
if (getMammalsObservation() && getMammalsCapture()) {
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-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -21,11 +21,13 @@
package fr.ifremer.suiviobsmer.bean;
+import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.entity.FishingZone;
-import fr.ifremer.suiviobsmer.entity.SampleMonth;
+import fr.ifremer.suiviobsmer.entity.SampleRow;
+import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.framework.TopiaQuery.Op;
/**
* SamplingFilterImpl
@@ -44,18 +46,30 @@
public TopiaQuery prepareQueryForSampling(TopiaQuery query, String main) {
//query = super.prepareQuery(query);
- String sampleRow = main + ".sampleRow";
+ //String sampleRow = main + ".sampleRow";
if (getSampleRow() != null) {
- query.add(sampleRow, getSampleRow());
+ query.add(main, getSampleRow());
} else if (!StringUtils.isEmpty(getSectorName())) {
query.addFrom(FishingZone.class.getName() + " F");
- query.add("F.sectorName", getSectorName()).add(sampleRow + " IN elements(F.sampleRow)");
+ query.add("F." + FishingZone.SECTOR_NAME, getSectorName()).add(main + " IN elements(F." + FishingZone.SAMPLE_ROW + ")");
} else if (!StringUtils.isEmpty(getFacadeName())) {
query.addFrom(FishingZone.class.getName() + " F");
- query.add("F.facadeName", getFacadeName()).add(sampleRow + " IN elements(F.sampleRow)");
+ query.add("F." + FishingZone.FACADE_NAME, getFacadeName()).add(main + " IN elements(F." + FishingZone.SAMPLE_ROW + ")");
}
+ if (getPeriod() != null) {
+ getPeriod().initDayOfMonthExtremities();
+ query.add(main + "." + SampleRow.PERIOD_BEGIN, Op.LT, getPeriod().getThruDate()).
+ add(main + "." + SampleRow.PERIOD_END, Op.GT, getPeriod().getFromDate());
+ }
+
+ if (getUnfinishedRowsOnly()) {
+ // Only rows which are not finished will be kept
+ Date current = SuiviObsmerContext.getCurrentDate();
+ query.add(main + "." + SampleRow.PERIOD_END, Op.GE, current);
+ }
+
return query;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -32,6 +32,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.bean.ImportResults;
import fr.ifremer.suiviobsmer.bean.ImportResultsImpl;
+import fr.ifremer.suiviobsmer.bean.SamplingFilter;
import fr.ifremer.suiviobsmer.entity.*;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.services.ServiceSampling;
@@ -54,7 +55,6 @@
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.framework.TopiaQuery.Op;
-import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.util.EntityLoador;
import org.nuiton.util.DateUtils;
import org.nuiton.util.PeriodDates;
@@ -333,7 +333,7 @@
}
@Override
- public List<SampleRow> getSampleRowsForUser(User user, boolean finished) throws SuiviObsmerException {
+ public List<SampleRow> getSampleRowsByFilter(SamplingFilter filter) throws SuiviObsmerException {
TopiaContext transaction = null;
List<SampleRow> results = new ArrayList<SampleRow>();
try {
@@ -343,16 +343,18 @@
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
- TopiaQuery<SampleRow> query = dao.createQuery();
+ TopiaQuery<SampleRow> query = dao.createQuery("S");
- if (finished) {
- // Only rows which are not finished will be kept
- Date current = SuiviObsmerContext.getCurrentDate();
- query.add(SampleRow.PERIOD_END, Op.GE, current);
- }
+ query = filter.prepareQueryForSampling(query, "S");
- if (!user.getAdmin()) {
- query.add(SampleRow.COMPANY, user.getCompany());
+// if (finished) {
+// // Only rows which are not finished will be kept
+// Date current = SuiviObsmerContext.getCurrentDate();
+// query.add(SampleRow.PERIOD_END, Op.GE, current);
+// }
+
+ if (filter.getCompany() != null) {
+ query.add("S." + SampleRow.COMPANY, filter.getCompany());
}
results = query.executeToEntityList();
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-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -94,7 +94,7 @@
addParam("fromDate", period.getFromDate()).addParam("thruDate", period.getThruDate()).
addGroup("M.periodDate").addOrder("M.periodDate");
- query = filter.prepareQueryForSampling(query, "M");
+ query = filter.prepareQueryForSampling(query, "M." + SampleMonth.SAMPLE_ROW);
// if (filter.isBoatFiltered() || filter.getObserver() != null) {
// // Check boat on finished contact (validate + Boarding_Done) and same month/year as SampleMonth
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
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-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -26,6 +26,8 @@
import fr.ifremer.suiviobsmer.SuiviObsmerRunner;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.bean.ImportResults;
+import fr.ifremer.suiviobsmer.bean.SamplingFilter;
+import fr.ifremer.suiviobsmer.bean.SamplingFilterImpl;
import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Company;
@@ -334,15 +336,19 @@
service.importSamplingPlanCsv(input);
/** EXEC METHOD **/
- User admin = new UserImpl();
- admin.setAdmin(true);
- List<SampleRow> results = service.getSampleRowsForUser(admin, true);
+ SamplingFilter filter = new SamplingFilterImpl();
+// User admin = new UserImpl();
+// admin.setAdmin(true);
+// filter.setCompany()
+ filter.setUnfinishedRowsOnly(true);
+ List<SampleRow> results = service.getSampleRowsByFilter(filter);
// total in file : 11, 1 refused, 1 finished
assertEquals(9, results.size());
- User user = new UserImpl();
- user.setCompany(company);
- results = service.getSampleRowsForUser(user, true);
+// User user = new UserImpl();
+// user.setCompany(company);
+ filter.setCompany(company);
+ results = service.getSampleRowsByFilter(filter);
assertEquals(1, results.size());
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -191,7 +191,7 @@
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getSampleRowsForUser]");
}
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsForUser(user, getAvailableDataForFiltersOnly());
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter());
sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class,
"code", "topiaId", propertyAccess);
}
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-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -56,12 +56,15 @@
public class ChartUtils {
public enum ChartType {
- BAR(BarRenderer.class), LINE(LineAndShapeRenderer.class), AREA(AreaRenderer.class);
+ BAR(BarRenderer.class, false), LINE(LineAndShapeRenderer.class, true), AREA(AreaRenderer.class, true);
protected Class<? extends AbstractCategoryItemRenderer> rendererClass;
- ChartType(Class<? extends AbstractCategoryItemRenderer> rendererClass) {
+ protected boolean noCategoryMargin;
+
+ ChartType(Class<? extends AbstractCategoryItemRenderer> rendererClass, boolean noCategoryMargin) {
this.rendererClass = rendererClass;
+ this.noCategoryMargin = noCategoryMargin;
}
public AbstractCategoryItemRenderer createRenderer() {
@@ -93,7 +96,11 @@
// Axises
CategoryAxis categoryAxis = new CategoryAxis("Mois");
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ if (type.noCategoryMargin) {
+ categoryAxis.setCategoryMargin(0);
+ }
ValueAxis valueAxis = new NumberAxis(axisName);
+ valueAxis.setUpperMargin(0.15);
// Renderer for Category
AbstractCategoryItemRenderer renderer = type.createRenderer();
@@ -102,10 +109,6 @@
renderer.setBaseItemLabelsVisible(Boolean.TRUE);
CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer);
-// AxisSpace space = new AxisSpace();
-// space.setLeft(0);
-// space.setRight(0);
-// plot.setFixedRangeAxisSpace(space);
plot.setOrientation(PlotOrientation.VERTICAL);
plot.setAxisOffset(RectangleInsets.ZERO_INSETS);
return new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
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-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -27,7 +27,8 @@
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.bean.BoatFilter;
import fr.ifremer.suiviobsmer.bean.CompanyBoatInfos;
-import fr.ifremer.suiviobsmer.bean.ContactState;
+import fr.ifremer.suiviobsmer.bean.SamplingFilter;
+import fr.ifremer.suiviobsmer.bean.SamplingFilterImpl;
import fr.ifremer.suiviobsmer.entity.BoatInfos;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.Contact;
@@ -318,12 +319,13 @@
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getSampleRowsForUser]");
}
- /*List<OptionModel> options = new ArrayList<OptionModel>();
- for (String code : serviceSampling.getSampleRowCodesForUser(getUser())) {
- options.add(new OptionModelImpl(code,code));
+ // FIXME-FD20100118 Refactor filter system using AbstractFilteredPage
+ SamplingFilter filter = new SamplingFilterImpl();
+ filter.setUnfinishedRowsOnly(true);
+ if (!user.getAdmin()) {
+ filter.setCompany(user.getCompany());
}
- sampleRowSelectModel = new SelectModelImpl(null, options);*/
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsForUser(user, true);
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(filter);
sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class,
"code", "code", propertyAccess);
}
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-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-18 17:13:43 UTC (rev 236)
@@ -78,6 +78,7 @@
void setupRender() throws SuiviObsmerException {
initFilter();
+ //getFilter().setUnfinishedRowsOnly(false);
}
/********************* DYNAMICAL GRAPH : DATASAMPLING *********************/
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-18 17:13:43 UTC (rev 236)
@@ -268,7 +268,8 @@
</form>
</t:zone>
<script type="text/javascript">
- Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
+ Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
+ Event.observe('sectorName', 'change', function() { $('filtersForm').submit(); } );
</script>
<t:if t:test="user.admin">
<script type="text/javascript">
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-18 15:24:24 UTC (rev 235)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-18 17:13:43 UTC (rev 236)
@@ -107,9 +107,10 @@
<img src="${asset:context:}/img/chart-line.png" alt="Diagramme linéaire (courbe)" title="Diagramme linéaire (courbe)" />
</a>
</p>
- <t:chart t:width="550" t:height="350" t:chart="dataSamplingChart" />
+ <t:chart t:width="600" t:height="400" t:chart="dataSamplingChart" />
</div>
<script type="text/javascript">
Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
+ Event.observe('sectorName', 'change', function() { $('filtersForm').submit(); } );
</script>
</t:layout>
1
0
[Suiviobsmer-commits] r235 - 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/data suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages
by fdesbois@users.labs.libre-entreprise.org 18 Jan '10
by fdesbois@users.labs.libre-entreprise.org 18 Jan '10
18 Jan '10
Author: fdesbois
Date: 2010-01-18 15:24:24 +0000 (Mon, 18 Jan 2010)
New Revision: 235
Modified:
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/data/BusinessUtils.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
Log:
Evol #1975 : dynamic title for dataSampling synthesis
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-01-18 14:57:57 UTC (rev 234)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-18 15:24:24 UTC (rev 235)
@@ -24,9 +24,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
-import fr.ifremer.suiviobsmer.bean.BoatFilter;
-import fr.ifremer.suiviobsmer.bean.ContactState;
-import fr.ifremer.suiviobsmer.entity.Contact;
+import fr.ifremer.suiviobsmer.bean.SamplingFilter;
import fr.ifremer.suiviobsmer.entity.SampleMonth;
import fr.ifremer.suiviobsmer.entity.SampleMonthDAO;
import fr.ifremer.suiviobsmer.entity.SampleRow;
@@ -66,7 +64,7 @@
}
@Override
- public List<SortedMap<Date, Integer>> getDataSampling(BoatFilter filter) throws SuiviObsmerException {
+ public List<SortedMap<Date, Integer>> getDataSampling(SamplingFilter filter) throws SuiviObsmerException {
TopiaContext transaction = null;
List<SortedMap<Date, Integer>> results = new ArrayList<SortedMap<Date, Integer>>();
try {
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java 2010-01-18 14:57:57 UTC (rev 234)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java 2010-01-18 15:24:24 UTC (rev 235)
@@ -22,6 +22,7 @@
package fr.ifremer.suiviobsmer.ui.data;
import fr.ifremer.suiviobsmer.bean.ContactState;
+import fr.ifremer.suiviobsmer.bean.SamplingFilter;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Contact;
import fr.ifremer.suiviobsmer.entity.FishingZone;
@@ -84,6 +85,41 @@
return result;
}
+ public static String getDataSamplingTitle(SamplingFilter filter) {
+ String result = "Données des marées";
+ boolean filtered = false;
+ if (filter.getCompany() != null) {
+ //result += !filtered ? " : " : ", ";
+ result += " :\nSociété " + filter.getCompany().getName();
+ filtered = true;
+ }
+ if (filter.getSampleRow() != null) {
+ Profession profession = filter.getSampleRow().getProfession();
+ result += !filtered ? " : " : ", ";
+ result += "\nMétier " + profession.getCode();
+ result += !StringUtils.isEmpty(profession.getLibelle()) ? " - " + profession.getLibelle() : "";
+ result += !StringUtils.isEmpty(profession.getSpecies()) ? "\nEspèces (" + profession.getSpecies() + ")" : "";
+ result += "\nZones de pêche (";
+ for (FishingZone zone : filter.getSampleRow().getFishingZone()) {
+ result += zone.getDistrictCode() + " ";
+ }
+ result += ")";
+ filtered = true;
+ } else {
+ if (filter.getFacadeName() != null) {
+ result += !filtered ? " : " : ", ";
+ result += "\nFaçade " + filter.getFacadeName();
+ filtered = true;
+ }
+ if (filter.getSectorName() != null) {
+ result += !filtered ? " : " : ", ";
+ result += "\nZone " + filter.getSectorName();
+ //filtered = true;
+ }
+ }
+ return result;
+ }
+
public static String getCSSColorClassForContact(Contact contact, boolean admin) {
String result = "";
ContactState state = ContactState.createContactStateEnum(contact.getState());
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-01-18 14:57:57 UTC (rev 234)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-18 15:24:24 UTC (rev 235)
@@ -28,6 +28,7 @@
import fr.ifremer.suiviobsmer.services.ServiceSynthesis;
import fr.ifremer.suiviobsmer.ui.base.AbstractFilteredPage;
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
+import fr.ifremer.suiviobsmer.ui.data.BusinessUtils;
import fr.ifremer.suiviobsmer.ui.data.ChartUtils;
import fr.ifremer.suiviobsmer.ui.data.ChartUtils.ChartType;
import java.util.Date;
@@ -139,7 +140,8 @@
Map<String, SortedMap<Date, Integer>> data = new HashMap<String, SortedMap<Date, Integer>>();
data.put("Données prévus", res.get(0));
data.put("Données réels", res.get(1));
- return ChartUtils.createCategoryChart("Données des marées", "Nb marées", getDataSamplingChartType(), data);
+ String title = BusinessUtils.getDataSamplingTitle(getFilter());
+ return ChartUtils.createCategoryChart(title, "Nb marées", getDataSamplingChartType(), data);
}
public ChartType getDataSamplingChartType() {
1
0
[Suiviobsmer-commits] r234 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components
by fdesbois@users.labs.libre-entreprise.org 18 Jan '10
by fdesbois@users.labs.libre-entreprise.org 18 Jan '10
18 Jan '10
Author: fdesbois
Date: 2010-01-18 14:57:57 +0000 (Mon, 18 Jan 2010)
New Revision: 234
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java
Log:
- Evol #1972 : Send a mail for password modification
- Ano #2015 : An inactive user can't connect to the application (use of SuiviObsmerBusinessException type)
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java 2010-01-18 14:52:19 UTC (rev 233)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java 2010-01-18 14:57:57 UTC (rev 234)
@@ -52,7 +52,7 @@
}
public static enum Type {
- IMPORT_ERROR, NOT_EXISTS, ALREADY_EXISTS, SYNTAX, CONNECTION;
+ IMPORT_ERROR, NOT_EXISTS, ALREADY_EXISTS, SYNTAX, BAD_CONNECTION, ILLEGAL_CONNECTION;
}
public Type getType() {
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-18 14:52:19 UTC (rev 233)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-18 14:57:57 UTC (rev 234)
@@ -71,11 +71,14 @@
String passwordEncoded = SuiviObsmerContext.encodeString(password);
user = dao.findByProperties(User.LOGIN, login, User.PASSWORD, passwordEncoded);
- if (user != null) {
+ if (user != null && user.getActive()) {
// load company entity
user.getCompany();
+ } else if (user != null && !user.getActive()) {
+ throw new SuiviObsmerBusinessException(Type.ILLEGAL_CONNECTION, this.getClass(),
+ "Vous n'avez plus les droits nécessaires pour vous connecter. Veuillez contacter un administrateur.");
} else {
- throw new SuiviObsmerBusinessException(Type.CONNECTION, this.getClass(),
+ throw new SuiviObsmerBusinessException(Type.BAD_CONNECTION, this.getClass(),
"Identifiant ou mot de passe incorrects, veuillez réessayer.");
}
@@ -112,7 +115,7 @@
String subject = "[WAO] Mot de passe oublié";
String msg = "Bonjour,\n\n" +
"\tUn nouveau mot de passe a été généré pour votre identifiant " + login + " :\n" +
- "\t\t - mot de passe = " + password + "\n\n" +
+ "\t\t * mot de passe = " + password + "\n\n" +
"Vous pouvez modifier votre password en accédant à la page de gestion de votre profile utilisateur.\n\n" +
"Cordialement,\n\n" +
"L'Equipe WAO";
@@ -157,9 +160,9 @@
if (generatePassword) {
password = SuiviObsmerContext.createRandomString(8);
user.setPasswordChanged(true);
- if (log.isDebugEnabled()) {
- log.debug("show generated password : " + password);
- }
+// if (log.isDebugEnabled()) {
+// log.debug("show generated password : " + password);
+// }
}
// For a password set manually by user or generated
if (user.isPasswordChanged()) {
@@ -169,20 +172,28 @@
dao.update(user);
- if (newUser && user.getLogin().contains("@")) {
- String subject = "[WAO] Création de votre compte";
- String msg = "Bonjour,\n\n" +
- "\tVous avez été inscris sur le site WAO : Web Applicatif Obsmer. Vos identifiants de connexion sont :\n" +
- "\t\t - identifiant = " + user.getLogin() + "\n" +
- "\t\t - mot de passe = " + password + "\n\n" +
- "Vous pouvez modifier votre mot de passe en accédant à la page de gestion de votre profile utilisateur.\n\n" +
- "Cordialement,\n\n" +
- "L'Equipe WAO";
+ if (user.getLogin().contains("@") && user.isPasswordChanged()) {
+ String subject = "[WAO] ";
+ String msg = "Bonjour,\n\n";
+ if (newUser) {
+ subject += "Création de votre compte";
+ msg += "\tVous avez été inscris sur le site WAO : Web Applicatif Obsmer. Vos identifiants de connexion sont :\n" +
+ "\t\t * identifiant = " + user.getLogin() + "\n" +
+ "\t\t * mot de passe = " + password + "\n\n" +
+ "Vous pouvez modifier votre mot de passe en accédant à la page de gestion de votre profil utilisateur.\n\n";
+ } else {
+ subject += "Modification de votre compte";
+ msg += "\tVos identifiants de connexion à l'application WAO ont été modifiés :\n" +
+ "\t\t * identifiant = " + user.getLogin() + "\n" +
+ "\t\t * mot de passe = " + password + "\n\n";
+ }
+ msg += "Cordialement,\n\n" +
+ "L'Equipe WAO";
SuiviObsmerContext.sendEmail(user.getLogin(), subject, msg);
- if (log.isDebugEnabled()) {
- log.debug("send email to : " + user.getLogin());
- }
+// if (log.isDebugEnabled()) {
+// log.debug("send email to : " + user.getLogin());
+// }
}
transaction.commitTransaction();
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java 2010-01-18 14:52:19 UTC (rev 233)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java 2010-01-18 14:57:57 UTC (rev 234)
@@ -22,6 +22,7 @@
package fr.ifremer.suiviobsmer.ui.components;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException.Type;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.entity.User;
@@ -171,7 +172,11 @@
try {
currentUser = serviceUser.connect(login, password);
} catch (SuiviObsmerBusinessException eee) {
- connexionFeedback.addError(eee.getMessage());
+ if (eee.getType().equals(Type.BAD_CONNECTION)) {
+ connexionFeedback.addError(eee.getMessage());
+ } else if (eee.getType().equals(Type.ILLEGAL_CONNECTION)) {
+ connexionFeedback.addInfo(eee.getMessage());
+ }
}
return null;
}
1
0