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] r183 - trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages
by fdesbois@users.labs.libre-entreprise.org 11 Jan '10
by fdesbois@users.labs.libre-entreprise.org 11 Jan '10
11 Jan '10
Author: fdesbois
Date: 2010-01-11 17:32:18 +0000 (Mon, 11 Jan 2010)
New Revision: 183
Modified:
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java
Log:
Ano #1989 and #1990 : Refactor validation to use onValidateForm method + resolve issue on changing dates period
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-01-11 15:18:44 UTC (rev 182)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-01-11 17:32:18 UTC (rev 183)
@@ -118,14 +118,6 @@
}
void setupRender() throws SuiviObsmerException {
- // load models for select
-// professionSelectModel = null;
-// getProfessionSelectModel();
-// programSelectModel = null;
-// getProgramSelectModel();
-// fishingZoneSelectModel = null;
-// getFishingZoneSelectModel();
- // load main sampleRow (use of sampleRowId in url)
sampleRow = null;
getSampleRow();
@@ -145,13 +137,6 @@
}
immatriculations = getSampleRow().getMainElligibleBoatsAsString();
- // Initialize fishingZones, programPeriod and sampleMonths for edition
-// fishingZones = null;
-// getFishingZones();
-// period = null;
-// getPeriod();
-// sampleMonths = null;
-// getSampleMonths();
}
/*************************** PROFESSION ***********************************/
@@ -172,10 +157,6 @@
@Inject
private ComponentResources resources;
- /** Field codeDCF5 for validation : must be provided **/
-// @InjectComponent
-// private BeanEditor professionEditor;
-
/**
* Get SelectModel for profession input Select. The select contains all existing professions.
*
@@ -317,6 +298,9 @@
private PeriodDates period;
+ @Persist
+ private List<Date> months;
+
private List<SampleMonth> sampleMonths;
@Property
@@ -346,7 +330,15 @@
}
public List<Date> getMonths() throws SuiviObsmerException {
- return getPeriod().getMonths();
+ if (months == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Reset months list");
+ }
+ months = getPeriod().getMonths();
+ sampleMonths = null;
+ getSampleMonths();
+ }
+ return months;
}
public Program getProgram() throws SuiviObsmerException {
@@ -385,25 +377,19 @@
* The program will be set from the one selected. If no selection, a new one will be set.
* @throws SuiviObsmerException
*/
+ @Log
void onSelectedFromSearchProgram() throws SuiviObsmerException {
Program sampleRowProgram = new ProgramImpl();
if (!StringUtils.isEmpty(programId)) {
sampleRowProgram = getProgramSelectModel().findObject(programId);
programName = null;
period = null;
- sampleMonths = null;
+ months = null;
// Period will be reinitialized from program params
getSampleRow().setProgram(sampleRowProgram);
-
- // Update sampleRowCode from program
- if (isCreateMode()) {
- String rowCode = sampleRowProgram.getNewSampleRowCode();
- getSampleRow().setCode(rowCode);
- }
-
- validateProgram();
+ //validateProgram();
}
- edited = true;
+ programChanged = true;
}
/**
@@ -421,62 +407,54 @@
sampleRowProgram.setName(programName);
getSampleRow().setProgram(sampleRowProgram);
programId = null;
- } else {
- sampleRowProgram = getSampleRow().getProgram();
}
- sampleRowProgram.setPeriodBegin(period.getFromDate());
- sampleRowProgram.setPeriodEnd(period.getThruDate());
-
- // Update sampleRowCode from program
- if (isCreateMode()) {
- String rowCode = sampleRowProgram.getNewSampleRowCode();
- getSampleRow().setCode(rowCode);
- }
- validateProgram();
- edited = true;
+ months = null;
+ getProgram().setPeriodBegin(period.getFromDate());
+ getProgram().setPeriodEnd(period.getThruDate());
+ programChanged = true;
}
- @Log
- protected boolean validateProgram() throws SuiviObsmerException {
- sampleRowForm.clearErrors();
- if (StringUtils.isEmpty(getProgram().getName())) {
- sampleRowForm.recordError(program,
- "Vous devez choisir un programme existant ou en créer un nouveau");
- }
+// @Log
+// protected boolean validateProgram() throws SuiviObsmerException {
+// sampleRowForm.clearErrors();
+// if (StringUtils.isEmpty(getProgram().getName())) {
+// sampleRowForm.recordError(program,
+// "Vous devez choisir un programme existant ou en créer un nouveau");
+// }
+//
+// Date periodBegin = getProgram().getPeriodBegin();
+// Date periodEnd = getProgram().getPeriodEnd();
+//
+// // Validation for period dates
+// if (periodBegin == null) {
+// sampleRowForm.recordError(programPeriodBegin,
+// "Vous ne pouvez pas rafraîchir les mois avec une date de début de programme vide");
+// }
+// if (periodEnd == null) {
+// sampleRowForm.recordError(programPeriodEnd,
+// "Vous ne pouvez pas rafraîchir les mois avec une date de fin de programme vide");
+// }
+//
+// if (periodBegin != null && periodEnd != null) {
+//
+// int size = getSampleMonths().size();
+//
+// SampleMonth firstMonth = getSampleMonths().get(0);
+// SampleMonth lastMonth = getSampleMonths().get(size-1);
+//
+// Date firstDate = DateUtils.createDate(
+// 1, firstMonth.getPeriodMonth(), firstMonth.getPeriodYear());
+//
+// if (periodBegin.after(firstDate) && firstMonth.getRealTidesValue() != 0) {
+// sampleRowForm.recordError(programPeriodBegin,
+// "Vous ne pouvez pas réduire la période du programme. " +
+// "Il existe des enregistrements de marées réels.");
+// }
+// }
+// return !sampleRowForm.getHasErrors();
+// }
- Date periodBegin = getProgram().getPeriodBegin();
- Date periodEnd = getProgram().getPeriodEnd();
-
- // Validation for period dates
- if (periodBegin == null) {
- sampleRowForm.recordError(programPeriodBegin,
- "Vous ne pouvez pas rafraîchir les mois avec une date de début de programme vide");
- }
- if (periodEnd == null) {
- sampleRowForm.recordError(programPeriodEnd,
- "Vous ne pouvez pas rafraîchir les mois avec une date de fin de programme vide");
- }
-
- if (periodBegin != null && periodEnd != null) {
-
- int size = getSampleMonths().size();
-
- SampleMonth firstMonth = getSampleMonths().get(0);
- SampleMonth lastMonth = getSampleMonths().get(size-1);
-
- Date firstDate = DateUtils.createDate(
- 1, firstMonth.getPeriodMonth(), firstMonth.getPeriodYear());
-
- if (periodBegin.after(firstDate) && firstMonth.getRealTidesValue() != 0) {
- sampleRowForm.recordError(programPeriodBegin,
- "Vous ne pouvez pas réduire la période du programme. " +
- "Il existe des enregistrements de marées réels.");
- }
- }
- return !sampleRowForm.getHasErrors();
- }
-
/*************************** SAMPLE ROW ***********************************/
private String sampleRowId;
@@ -498,6 +476,8 @@
@Property
private String companyId;
+ private List<Boat> boats;
+
private GenericSelectModel<Company> companySelectModel;
private boolean cancel;
@@ -547,78 +527,134 @@
}
@Log
+ void onValidateFormFromSampleRowForm() throws SuiviObsmerException {
+ sampleRowForm.clearErrors();
+ try {
+ // Only for save or programChanged (refreshMonths or searchProgram)
+ if (!cancel && !edited) {
+ if (StringUtils.isEmpty(getProgram().getName())) {
+ sampleRowForm.recordError(program,
+ "Vous devez choisir un programme existant ou en créer un nouveau");
+ }
+
+ Date periodBegin = getProgram().getPeriodBegin();
+ Date periodEnd = getProgram().getPeriodEnd();
+
+ // Validation for period dates
+ if (periodBegin == null) {
+ sampleRowForm.recordError(programPeriodBegin,
+ "Vous ne pouvez pas rafraîchir les mois avec une date de début de programme vide");
+ }
+ if (periodEnd == null) {
+ sampleRowForm.recordError(programPeriodEnd,
+ "Vous ne pouvez pas rafraîchir les mois avec une date de fin de programme vide");
+ }
+
+ if (periodBegin != null && periodEnd != null) {
+
+ int size = getSampleMonths().size();
+
+ SampleMonth firstMonth = getSampleMonths().get(0);
+ SampleMonth lastMonth = getSampleMonths().get(size-1);
+
+ Date firstDate = DateUtils.createDate(
+ 1, firstMonth.getPeriodMonth(), firstMonth.getPeriodYear());
+
+ if (periodBegin.after(firstDate) && firstMonth.getRealTidesValue() != 0) {
+ sampleRowForm.recordError(programPeriodBegin,
+ "Vous ne pouvez pas réduire la période du programme. " +
+ "Il existe des enregistrements de marées réels.");
+ }
+ }
+
+ // Save profession, fishingZone and boats (from immatriculations) if no programChanged
+ if (!programChanged) {
+
+ Profession profession = getSampleRow().getProfession();
+ if (StringUtils.isEmpty(profession.getCodeDCF5())) {
+ sampleRowForm.recordError(
+ "Le métier doit obligatoirement avoir un Code DCF niveau 5");
+ }
+ int nbZones = getSampleRow().sizeFishingZone();
+ if (nbZones == 0) {
+ sampleRowForm.recordError(fishingZoneSelect,
+ "Vous devez ajouter au moins une zone de pêche à la ligne");
+ }
+
+ boats = serviceBoat.getBoats(immatriculations);
+ // Update sampleRowCode from program only if changed
+ } else if (isCreateMode()) {
+ String rowCode = getProgram().getNewSampleRowCode();
+ getSampleRow().setCode(rowCode);
+ }
+ }
+ } catch (SuiviObsmerBusinessException eee) {
+ sampleRowForm.recordError(eee.getMessage());
+ log.error("BUSINESS ERROR : " + eee.getType() + " depuis " + eee.getServiceName() +
+ " : " + eee.getMessage());
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("SampleMonths : " + getSampleMonths());
+ }
+ }
+
+ @Log
Object onSuccessFromSampleRowForm() throws SuiviObsmerException {
if (cancel) {
return this;
}
- if (!edited) {
- if (validateProgram()) {
- sampleRowForm.clearErrors();
- Profession profession = getSampleRow().getProfession();
- if (StringUtils.isEmpty(profession.getCodeDCF5())) {
- sampleRowForm.recordError(
- "Le métier doit obligatoirement avoir un Code DCF niveau 5");
- }
- int nbZones = getSampleRow().sizeFishingZone();
- if (nbZones == 0) {
- sampleRowForm.recordError(fishingZoneSelect,
- "Vous devez ajouter au moins une zone de pêche à la ligne");
- }
- if (sampleRowForm.getHasErrors()) {
- return sampleRowForm;
- }
+ if (!edited && !programChanged) {
+// if (validateProgram()) {
+// sampleRowForm.clearErrors();
+// Profession profession = getSampleRow().getProfession();
+// if (StringUtils.isEmpty(profession.getCodeDCF5())) {
+// sampleRowForm.recordError(
+// "Le métier doit obligatoirement avoir un Code DCF niveau 5");
+// }
+// int nbZones = getSampleRow().sizeFishingZone();
+// if (nbZones == 0) {
+// sampleRowForm.recordError(fishingZoneSelect,
+// "Vous devez ajouter au moins une zone de pêche à la ligne");
+// }
+// if (sampleRowForm.getHasErrors()) {
+// return sampleRowForm;
+// }
// Save company
Company company = getCompanySelectModel().findObject(companyId);
getSampleRow().setCompany(company);
// Save sampleMonths
+
+ if (log.isDebugEnabled()) {
+ log.debug("SampleMonths : " + getSampleMonths());
+ }
+
getSampleRow().setSampleMonth(getSampleMonths());
- try {
- List<Boat> boats = serviceBoat.getBoats(immatriculations);
+// try {
+// List<Boat> boats = serviceBoat.getBoats(immatriculations);
- serviceSampling.createUpdateSampleRow(sampleRow, boats);
+ serviceSampling.createUpdateSampleRow(sampleRow, boats);
- return SamplingPlan.class;
- } catch (SuiviObsmerBusinessException eee) {
- sampleRowForm.recordError(eee.getMessage());
- log.error("BUSINESS ERROR : " + eee.getType() + " depuis " + eee.getServiceName());
- }
- }
- //sampleRow.setFishingZone(fishingZones); USEFUL ?
-
- // Save period dates
- //program = getSampleRow().getProgram();
- //program.setPeriodBegin(period.getFromDate());
- //program.setPeriodEnd(period.getThruDate());
- //return null;
-// Company company = getCompanySelectModel().findObject(companyId);
-// getSampleRow().setCompany(company);
-//
-// List<Boat> boats = serviceBoat.getBoats(immatriculations);
-//
-// serviceSampling.createUpdateSampleRow(sampleRow, boats);
-//
-// return SamplingPlan.class;
+ return SamplingPlan.class;
+// } catch (SuiviObsmerBusinessException eee) {
+// sampleRowForm.recordError(eee.getMessage());
+// log.error("BUSINESS ERROR : " + eee.getType() + " depuis " + eee.getServiceName());
+// }
+// }
} else {
// Reinitialize professionId for select to avoid selection from existing Profession
professionId = null;
-
-// String programTopiaId = program.getTopiaId();
-// // Reinitialize programId for select if it's not the current one
-// if (programTopiaId != null && !programTopiaId.equals(programId)) {
-// programId = null;
-// }
- // Reinitialize programName, period and sampleMonths if it's the one selected
-// } else {
-// programName = null;
-// period = null;
-// sampleMonths = null;
-// }
}
return sampleRowForm;
}
+ @Log
+ Object onFailureFromSampleRowForm() {
+ return sampleRowForm;
+ }
+
}
1
0
11 Jan '10
Author: fdesbois
Date: 2010-01-11 15:18:44 +0000 (Mon, 11 Jan 2010)
New Revision: 182
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ImportResultsImpl.java
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.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/pages/SamplingPlan.java
Log:
- Ano #1973 : Problem on SamplingPlan import
- Create ImportResults to simplify results managment in UI
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-08 19:06:06 UTC (rev 181)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -33,6 +33,7 @@
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DurationFormatUtils;
+import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
/**
@@ -53,6 +54,13 @@
int forContactCsv();
String name();
+
+ /**
+ * Pattern for Date parsing. This pattern can be null, if no format date is necessary.
+ *
+ * @return a String corresponding to the date pattern
+ */
+ String datePattern();
}
/**
@@ -88,6 +96,11 @@
public int forContactCsv() {
return contactHeader;
}
+
+ @Override
+ public String datePattern() {
+ return null;
+ }
}
/**
@@ -133,6 +146,15 @@
public int forContactCsv() {
return contactHeader;
}
+
+ @Override
+ public String datePattern() {
+ return defaultDatePattern();
+ }
+
+ public static String defaultDatePattern() {
+ return "MM/yyyy";
+ }
}
/**
@@ -156,6 +178,11 @@
public int forContactCsv() {
return contactHeader;
}
+
+ @Override
+ public String datePattern() {
+ return null;
+ }
}
/**
@@ -205,6 +232,11 @@
public int forContactCsv() {
return contactHeader;
}
+
+ @Override
+ public String datePattern() {
+ return "dd/MM/yyyy";
+ }
}
public static int CONTACT_NB_HEADERS = 33;
@@ -323,4 +355,19 @@
return Integer.parseInt(str);
}
+ 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;
+ }
+
+ public static Date readDate(CsvReader reader, ImportHeader header)
+ throws IOException, ParseException {
+ DateFormat dateFormat = new SimpleDateFormat(header.datePattern());
+ return dateFormat.parse(read(reader, header));
+ }
+
}
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ImportResultsImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ImportResultsImpl.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ImportResultsImpl.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -0,0 +1,44 @@
+
+package fr.ifremer.suiviobsmer.bean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * ImportResultsImpl
+ *
+ * Created: 11 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class ImportResultsImpl extends ImportResults {
+
+ @Override
+ public void addError(int rowNum, String msg) {
+ String str = "Ligne " + rowNum + " : " + msg;
+ getErrors().add(str);
+ }
+
+ @Override
+ public List<String> getErrors() {
+ if (errors == null) {
+ errors = new ArrayList<String>();
+ }
+ return errors;
+ }
+
+ @Override
+ public void incNbRefused() {
+ nbRowsRefused++;
+ }
+
+ @Override
+ public void incNbImported() {
+ nbRowsImported++;
+ }
+
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ImportResultsImpl.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java 2010-01-08 19:06:06 UTC (rev 181)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -53,6 +53,7 @@
private static final long serialVersionUID = 1L;
@Override
+ @Deprecated
public boolean isMonthAndYearIncluded(int month, int year) {
Calendar currentCal = new GregorianCalendar(year, month-1, 15, 0, 0, 0);
@@ -73,12 +74,14 @@
}
@Override
+ @Deprecated
public void setPeriodBegin(int month, int year) {
Calendar calendar = new GregorianCalendar(year, month-1, 1, 0, 0, 0);
setPeriodBegin(calendar.getTime());
}
@Override
+ @Deprecated
public void setPeriodEnd(int month, int year) {
Calendar calendar = new GregorianCalendar(year, month-1, 1, 0, 0, 0);
int max = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-08 19:06:06 UTC (rev 181)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -54,8 +54,10 @@
* @param month the month of the SampleMonth to get
* @param year the year of the SampleMonth to get
* @return the SampleMonth if it exists in the SampleMonth list or null either
+ * @deprecated since 0.0.4, use {@link #getSampleMonth(java.util.Date) } instead
*/
@Override
+ @Deprecated
public SampleMonth getSampleMonth(int month, int year) {
if (getSampleMonth() == null) {
return null;
@@ -80,9 +82,9 @@
}
Calendar ref = new GregorianCalendar();
ref.setTime(date);
- log.info("Ref : " + date);
+ //log.info("Ref : " + date);
for (SampleMonth curr : getSampleMonth()) {
- log.info("Curr month : " + curr.getPeriodDate() + " : " + curr.getPeriodMonth() + " / " + curr.getPeriodYear());
+ //log.info("Curr month : " + curr.getPeriodDate() + " : " + curr.getPeriodMonth() + " / " + curr.getPeriodYear());
if (ref.get(Calendar.MONTH) == (curr.getPeriodMonth()-1) && ref.get(Calendar.YEAR) == curr.getPeriodYear()) {
return curr;
}
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-08 19:06:06 UTC (rev 181)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -22,6 +22,7 @@
package fr.ifremer.suiviobsmer.impl;
import com.csvreader.CsvReader;
+import fr.ifremer.suiviobsmer.ImportHelper;
import fr.ifremer.suiviobsmer.ImportHelper.FISHING_ZONE;
import fr.ifremer.suiviobsmer.ImportHelper.SAMPLING;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
@@ -29,6 +30,8 @@
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
+import fr.ifremer.suiviobsmer.bean.ImportResults;
+import fr.ifremer.suiviobsmer.bean.ImportResultsImpl;
import fr.ifremer.suiviobsmer.dto.SamplingHistoricRow;
import fr.ifremer.suiviobsmer.entity.*;
import fr.ifremer.suiviobsmer.entity.SampleRow;
@@ -192,7 +195,7 @@
}
// Prepare period dates
- period.setDayOfMonthExtremities();
+ period.initDayOfMonthExtremities();
query.add("S.program.periodBegin", Op.LT, period.getThruDate()).
add("S.program.periodEnd", Op.GT, period.getFromDate());
@@ -335,11 +338,11 @@
return newProfession;
}
-
@Override
- public int[] importSamplingPlanCsv(InputStream input) throws SuiviObsmerException {
+ public ImportResults importSamplingPlanCsv(InputStream input) throws SuiviObsmerException {
TopiaContext transaction = null;
- int[] result = new int[3];
+ ImportResults result = new ImportResultsImpl();
+ //int[] result = new int[3];
int currRow = 0;
SampleRow row = null;
try {
@@ -350,8 +353,8 @@
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
- int nbImported = 0;
- int nbRefused = 0;
+ //int nbImported = 0;
+ //int nbRefused = 0;
while(reader.readRecord()) {
currRow++;
@@ -369,30 +372,33 @@
code = code.replaceFirst("_(\\d)$", "_0$1");
String programName = reader.get(SAMPLING.PROGRAMME_CODE.name()).trim();
- int[] programBegin = getMonthAndYear(reader.get(SAMPLING.PROGRAMME_DEBUT.name()).trim());
- int[] programEnd = getMonthAndYear(reader.get(SAMPLING.PROGRAMME_FIN.name()).trim());
+// int[] programBegin = getMonthAndYear(reader.get(SAMPLING.PROGRAMME_DEBUT.name()).trim());
+// int[] programEnd = getMonthAndYear(reader.get(SAMPLING.PROGRAMME_FIN.name()).trim());
+ PeriodDates period = ImportHelper.readPeriod(reader, SAMPLING.PROGRAMME_DEBUT, SAMPLING.PROGRAMME_FIN);
String districts = reader.get(FISHING_ZONE.PECHE_DIVISION.name());
row = dao.findByCode(code);
// Refuse existing SampleRow
if (row != null) {
- if (log.isInfoEnabled()) {
- log.info("Ligne " + currRow + " refusé [CODE = " + code + "] Code déjà existant : " +
- Arrays.asList(reader.getValues()));
- }
- nbRefused++;
- // Refuse Fishing zones empty
+// if (log.isInfoEnabled()) {
+// log.info("Ligne " + currRow + " refusé [CODE = " + code + "] Code déjà existant : " +
+// Arrays.asList(reader.getValues()));
+// }
+ result.addError(currRow, "[CODE = " + code + "] refusé : Code déjà existant");
+ result.incNbRefused(); //nbRefused++;
+
} else if (StringUtils.isEmpty(programName)) {
throw new SuiviObsmerBusinessException(Type.IMPORT_ERROR, this.getClass(),
"Erreur à la ligne " + currRow + " [CODE = " + code + "] : " +
"Cette ligne n'est lié à aucun programme !");
- //nbRefused++;
+ // Refuse Fishing zones empty
} else if (StringUtils.isEmpty(districts)) {
- if (log.isInfoEnabled()) {
- log.info("Ligne " + currRow + " refusé [CODE = " + code + "] Zone de pêche non renseigné : " +
- Arrays.asList(reader.getValues()));
- }
- nbRefused++;
+// if (log.isInfoEnabled()) {
+// log.info("Ligne " + currRow + " refusé [CODE = " + code + "] Zone de pêche non renseigné : " +
+// Arrays.asList(reader.getValues()));
+// }
+ result.addError(currRow, "[CODE = " + code + "] refusé : Zone de pêche non renseigné");
+ result.incNbRefused(); //nbRefused++;
} else {
row = dao.create(SampleRow.CODE, code);
@@ -406,12 +412,15 @@
throw new SuiviObsmerBusinessException(Type.IMPORT_ERROR, this.getClass(),
"Erreur à la ligne " + currRow + " [CODE = " + code + "] : " +
"La société portant le nom '" + companyName + "' n'existe pas dans l'application");
+// result.addError(currRow, "[CODE = " + code + "] refusé : La société '" + companyName + "' n'existe pas dans l'application");
+// result.incNbRefused();
+// continue;
}
row.setCompany(company);
}
// Import program. Creation if not exist
- Program program = importProgram(transaction, programName, programBegin, programEnd);
+ Program program = importProgram(transaction, programName, period);
row.setProgram(program);
// Import profession. Creation if not exist
@@ -423,7 +432,7 @@
importFishingZones(transaction, districts, currRow, row);
updateRow(transaction, row, reader);
- nbImported++;
+ result.incNbImported(); //nbImported++;
}
// Commit row by row
transaction.commitTransaction();
@@ -431,8 +440,8 @@
transaction.closeContext();
- result[0] = nbImported;
- result[1] = nbRefused;
+// result[0] = nbImported;
+// result[1] = nbRefused;
} catch (NumberFormatException eee) {
SuiviObsmerContext.serviceException(transaction,
@@ -444,8 +453,7 @@
"Le format des dates est incorrect, il doit être de la forme : MM/AAAA", eee);
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
- "Problème d'import du fichier CSV. Voir documentation pour plus de détails sur " +
- "les en-têtes autorisés et le format des données.",
+ "Erreur à la ligne " + currRow + " [CODE = " + row.getCode() + "]",
eee);
}
return result;
@@ -457,26 +465,34 @@
* Key value for the program : programName. If program already exists, update dates.
* @param transaction Topia transaction for using ProgramDAO
* @param programName the program name (key)
- * @param begin the program begin month and year
- * @param end the program end month and year
+ * @param period the program period
* @return an existing Program or a new one
* @throws TopiaException for dao errors
*/
- protected Program importProgram(TopiaContext transaction, String programName,
- int[] begin, int[] end) throws TopiaException {
+ protected Program importProgram(TopiaContext transaction, String programName, PeriodDates period) throws TopiaException {
ProgramDAO dao = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
Program program = dao.findByName(programName);
+ Date periodBegin = null, periodEnd = null;
if (program == null) {
if (log.isInfoEnabled()) {
- log.info("Ajout d'un nouveau programme : " + programName +
- "[ " + begin[0] + "/" + begin[1] + " , " + end[0] + "/" + end[1] + " ]");
+ log.info("Ajout d'un nouveau programme : " + programName + " - " + period);
}
program = dao.create(Program.NAME, programName);
+ } else {
+ periodBegin = program.getPeriodBegin();
+ periodEnd = program.getPeriodEnd();
}
- program.setPeriodBegin(begin[TAB_MONTH], begin[TAB_YEAR]);
- program.setPeriodEnd(end[TAB_MONTH], end[TAB_YEAR]);
+ if (periodBegin == null || periodBegin.after(period.getFromDate())) {
+ program.setPeriodBegin(period.getFromDate());
+ }
+ if (periodEnd == null || periodEnd.before(period.getThruDate())) {
+ program.setPeriodEnd(period.getThruDate());
+ }
+
+// program.setPeriodBegin(begin[TAB_MONTH], begin[TAB_YEAR]);
+// program.setPeriodEnd(end[TAB_MONTH], end[TAB_YEAR]);
return program;
}
@@ -578,6 +594,7 @@
averageStr = averageStr.replaceAll(",", ".");
double averageTideTime = Double.parseDouble(averageStr);
+ // Problem : not imported yet ??
sampleRow.setFishingZonesInfos(fishingZoneInfos);
sampleRow.setNbObservants(nbObservants);
sampleRow.setAverageTideTime(averageTideTime);
@@ -590,49 +607,56 @@
// Note : nbTotalColumns must be > nbFixedColumns
int lastMonthColumnId = firstMonthColumnId + nbTotalColumns - nbFixedColumns;
+ DateFormat dateFormat = new SimpleDateFormat(SAMPLING.defaultDatePattern());
+
for (int i = firstMonthColumnId; i < lastMonthColumnId; i++) {
- int[] monthAndYear = getMonthAndYear(reader.getHeader(i));
+ //int[] monthAndYear = getMonthAndYear();
+ Date monthDate = dateFormat.parse(reader.getHeader(i));
Integer monthValue = StringUtils.isEmpty(reader.get(i)) ? null : Integer.parseInt(reader.get(i));
+ Program program = sampleRow.getProgram();
- if (sampleRow.getProgram().isMonthAndYearIncluded(monthAndYear[TAB_MONTH], monthAndYear[TAB_YEAR])) {
-
+ //if (sampleRow.getProgram().isMonthAndYearIncluded(monthAndYear[TAB_MONTH], monthAndYear[TAB_YEAR])) {
+ if (DateUtils.between(monthDate, program.getPeriodBegin(), program.getPeriodEnd())) {
SampleMonthDAO dao = SuiviObsmerModelDAOHelper.getSampleMonthDAO(transaction);
- SampleMonth month = sampleRow.getSampleMonth(monthAndYear[TAB_MONTH], monthAndYear[TAB_YEAR]);
+ SampleMonth month = sampleRow.getSampleMonth(monthDate);
if (month == null) {
month = dao.create(
SampleMonth.SAMPLE_ROW, sampleRow,
- SampleMonth.PERIOD_MONTH, monthAndYear[TAB_MONTH],
- SampleMonth.PERIOD_YEAR, monthAndYear[TAB_YEAR]);
+ SampleMonth.PERIOD_DATE, monthDate);
sampleRow.addSampleMonth(month);
}
+ if (monthValue == null) {
+ monthValue = 0;
+ }
month.setExpectedTidesValue(monthValue);
} else if (monthValue != null) {
// exception, outOfBounds month
if (log.isErrorEnabled()) {
- log.error("Month out of bounds : value=" + monthValue + " _ monthAndYear=" + monthAndYear +
+ log.error("Month out of bounds : value=" + monthValue + " _ monthDate=" + monthDate +
" _ program=" + sampleRow.getProgram());
}
}
}
}
- protected static final int TAB_MONTH = 0;
- protected static final int TAB_YEAR = 1;
+// protected static final int TAB_MONTH = 0;
+// protected static final int TAB_YEAR = 1;
- protected int[] getMonthAndYear(String str) throws ParseException {
- DateFormat dateFormat = new SimpleDateFormat("MM/yyyy");
- int[] result = new int[2];
+// @Deprecated
+// protected int[] getMonthAndYear(String str) throws ParseException {
+// DateFormat dateFormat = new SimpleDateFormat("MM/yyyy");
+// int[] result = new int[2];
+//
+// Date date = dateFormat.parse(str);
+// Calendar calendar = new GregorianCalendar();
+// calendar.setTime(date);
+//
+// result[TAB_MONTH] = calendar.get(Calendar.MONTH) + 1;
+// result[TAB_YEAR] = calendar.get(Calendar.YEAR);
+// return result;
+// }
- Date date = dateFormat.parse(str);
- Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
-
- result[TAB_MONTH] = calendar.get(Calendar.MONTH) + 1;
- result[TAB_YEAR] = calendar.get(Calendar.YEAR);
- return result;
- }
-
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java 2010-01-08 19:06:06 UTC (rev 181)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -22,6 +22,8 @@
package fr.ifremer.suiviobsmer.mock;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.bean.ImportResults;
+import fr.ifremer.suiviobsmer.bean.ImportResultsImpl;
import fr.ifremer.suiviobsmer.dto.SamplingHistoricRow;
import fr.ifremer.suiviobsmer.dto.SampleRowDTO;
import fr.ifremer.suiviobsmer.entity.Boat;
@@ -230,8 +232,8 @@
}
@Override
- public int[] importSamplingPlanCsv(InputStream input) throws SuiviObsmerException {
- return new int[]{0, 0, 0};
+ public ImportResults importSamplingPlanCsv(InputStream input) throws SuiviObsmerException {
+ return new ImportResultsImpl();
}
@Override
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-08 19:06:06 UTC (rev 181)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -25,6 +25,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerRunner;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
+import fr.ifremer.suiviobsmer.bean.ImportResults;
import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Company;
@@ -459,12 +460,12 @@
/** EXEC METHOD **/
InputStream input = getClass().getResourceAsStream("/import/echantillonnage.csv");
- int[] result = service.importSamplingPlanCsv(input);
+ ImportResults result = service.importSamplingPlanCsv(input);
// total imported
- assertEquals(10, result[0]);
+ assertEquals(10, result.getNbRowsImported());
// total refused
- assertEquals(1, result[1]);
+ assertEquals(1, result.getNbRowsRefused());
/** CHECK VALUES **/
transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-08 19:06:06 UTC (rev 181)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-11 15:18:44 UTC (rev 182)
@@ -24,6 +24,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.bean.ImportResults;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.SampleMonth;
@@ -107,9 +108,12 @@
@Log
void onSuccessFromImportSamplingPlan() throws SuiviObsmerException {
try {
- int[] result = serviceSampling.importSamplingPlanCsv(samplingPlanCsvFile.getStream());
- layout.getFeedBack().addInfo(result[0] + " lignes du plan importés, " +
- result[1] + " refusés (voir documentation)");
+ ImportResults result = serviceSampling.importSamplingPlanCsv(samplingPlanCsvFile.getStream());
+ layout.getFeedBack().addInfo(result.getNbRowsImported() + " lignes du plan importés, " +
+ result.getNbRowsRefused() + " refusés.");
+ for (String error : result.getErrors()) {
+ layout.getFeedBack().addInfo(error);
+ }
} catch (SuiviObsmerBusinessException eee) {
layout.getFeedBack().addError(eee.getMessage());
}
1
0
[Suiviobsmer-commits] r181 - in trunk: suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/test/resources/import suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
08 Jan '10
Author: fdesbois
Date: 2010-01-08 19:06:06 +0000 (Fri, 08 Jan 2010)
New Revision: 181
Added:
trunk/suiviobsmer-business/src/test/resources/import/activity.csv.gz
Modified:
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
Log:
Evol #1978 : manage a gzip file for ActivityCalendar import
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java 2010-01-08 18:00:37 UTC (rev 180)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java 2010-01-08 19:06:06 UTC (rev 181)
@@ -26,11 +26,14 @@
import fr.ifremer.suiviobsmer.SuiviObsmerRunner;
import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest;
import fr.ifremer.suiviobsmer.services.ServiceBoat;
+import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.LineNumberReader;
+import java.util.zip.GZIPInputStream;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
@@ -91,8 +94,9 @@
InputStream input = getClass().getResourceAsStream("/import/navires.csv");
serviceBoat.importBoatCsv(input);
- input = getClass().getResourceAsStream("/import/activity.csv");
-
+ input = getClass().getResourceAsStream("/import/activity.csv.gz");
+ input = new GZIPInputStream(input);
+
ActivityCalendarImport instance = new ActivityCalendarImport(input);
Thread t = new Thread(instance);
@@ -104,19 +108,12 @@
File file = new File(filename);
Assert.assertTrue(file.exists());
- FileReader reader = new FileReader(file);
- LineNumberReader numberReader = new LineNumberReader(reader);
-
- String line;
-// while ((line = numberReader.readLine()) != null) {
-// if (numberReader.getLineNumber() == 26) {
-// String lastChar = line.substring(line.length()-1);
-// Assert.assertEquals(8, Integer.parseInt(lastChar));
-// }
-// }
-// Assert.assertEquals(27, numberReader.getLineNumber());
-
- //InputStream input = getClass().getResourceAsStream("/target/activity.csv");
+
+ BufferedReader reader = new BufferedReader(new FileReader(file));
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ log.info(line);
+ }
}
}
Added: trunk/suiviobsmer-business/src/test/resources/import/activity.csv.gz
===================================================================
(Binary files differ)
Property changes on: trunk/suiviobsmer-business/src/test/resources/import/activity.csv.gz
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
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-08 18:00:37 UTC (rev 180)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-08 19:06:06 UTC (rev 181)
@@ -56,6 +56,7 @@
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;
import org.apache.tapestry5.Block;
@@ -195,6 +196,8 @@
private InputStream activityCalendarLogFile;
+ protected static String GZIP_MIMETYPE = "application/x-gzip";
+
InputStream getActivityCalendarLogFile() throws FileNotFoundException {
if (activityCalendarLogFile == null) {
if (log.isInfoEnabled()) {
@@ -218,8 +221,18 @@
}
@Log
- void onSuccessFromImportActivityCalendarsForm() throws SuiviObsmerException {
- serviceBoat.importActivityCalendarCsv(activityCalendarsCsvFile.getStream());
+ void onSuccessFromImportActivityCalendarsForm() throws SuiviObsmerException, IOException {
+ InputStream input = activityCalendarsCsvFile.getStream();
+ if (log.isDebugEnabled()) {
+ log.debug("Content type : " + activityCalendarsCsvFile.getContentType());
+ }
+ if (activityCalendarsCsvFile.getContentType().equals(GZIP_MIMETYPE)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Gzip file");
+ }
+ input = new GZIPInputStream(input);
+ }
+ serviceBoat.importActivityCalendarCsv(input);
companyBoatInfos = null;
}
1
0
[Suiviobsmer-commits] r180 - trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
08 Jan '10
Author: fdesbois
Date: 2010-01-08 18:00:37 +0000 (Fri, 08 Jan 2010)
New Revision: 180
Modified:
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java
Log:
Comment bad binding for User class
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java 2010-01-08 17:35:36 UTC (rev 179)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java 2010-01-08 18:00:37 UTC (rev 180)
@@ -57,8 +57,8 @@
binder.bind(ServiceBoat.class, ServiceBoatImpl.class);
binder.bind(ServiceContact.class, ServiceContactImpl.class);
binder.bind(ContactModelFactory.class);
- binder.bind(SuiviObsmerModelDAOHelper.getContractClass(User.class),
- SuiviObsmerModelDAOHelper.getImplementationClass(User.class));
+// binder.bind(SuiviObsmerModelDAOHelper.getContractClass(User.class),
+// SuiviObsmerModelDAOHelper.getImplementationClass(User.class));
}
public static void contributeApplicationDefaults(
1
0
[Suiviobsmer-commits] r179 - trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
08 Jan '10
Author: fdesbois
Date: 2010-01-08 17:35:36 +0000 (Fri, 08 Jan 2010)
New Revision: 179
Modified:
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java
Log:
Ano #1988 : Add clean session on exit
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-08 15:02:58 UTC (rev 178)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java 2010-01-08 17:35:36 UTC (rev 179)
@@ -35,6 +35,7 @@
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Session;
import org.slf4j.Logger;
/**
@@ -164,7 +165,7 @@
if (userForm != null) {
currentUser = userForm;
} else {
- connexionFeedback.addError("Connexion failed (user/password)");
+ connexionFeedback.addError("Erreur de connexion, identifiant ou mot de passe incorrect !");
}
} catch (SuiviObsmerException eee) {
// db error, others, ...
@@ -175,6 +176,7 @@
@Log
Object onActionFromExit() {
setCurrentUser(null);
+ request.getSession(false).invalidate();
return Index.class;
}
1
0
[Suiviobsmer-commits] r178 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
by fdesbois@users.labs.libre-entreprise.org 08 Jan '10
08 Jan '10
Author: fdesbois
Date: 2010-01-08 15:02:58 +0000 (Fri, 08 Jan 2010)
New Revision: 178
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
Log:
- Add validation for contact (on dataInputDate)
- Improve Imports with helper (using enums)
- Add synthese service first method to have data on realTides and expectedTides
- WARNING !! Add periodDate field in SampleMonth entity (put deprecated periodMonth and periodYear)
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-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-08 15:02:58 UTC (rev 178)
@@ -21,6 +21,8 @@
package fr.ifremer.suiviobsmer;
+import com.csvreader.CsvReader;
+import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -46,10 +48,17 @@
*/
public class ImportHelper {
+ public interface ImportHeader {
+
+ int forContactCsv();
+
+ String name();
+ }
+
/**
* CSV headers for Boat
*/
- public static enum BOAT {
+ public static enum BOAT implements ImportHeader {
/** Boat immatriculation **/
NAVS_COD(20),
/** Boat name **/
@@ -75,6 +84,7 @@
this.contactHeader = index;
}
+ @Override
public int forContactCsv() {
return contactHeader;
}
@@ -83,7 +93,7 @@
/**
* CSV headers for SamplingPlan
*/
- public static enum SAMPLING {
+ public static enum SAMPLING implements ImportHeader {
/** SampleRow code **/
PLAN_CODE(6),
/** Company name **/
@@ -119,6 +129,7 @@
this.contactHeader = index;
}
+ @Override
public int forContactCsv() {
return contactHeader;
}
@@ -127,7 +138,7 @@
/**
* CSV headers for FishingZone
*/
- public static enum FISHING_ZONE {
+ public static enum FISHING_ZONE implements ImportHeader {
/** FishingZone facade **/
PECHE_FACADE(10),
/** FishingZone sector **/
@@ -141,6 +152,7 @@
this.contactHeader = index;
}
+ @Override
public int forContactCsv() {
return contactHeader;
}
@@ -149,7 +161,7 @@
/**
* CSV headers for Contact
*/
- public static enum CONTACT {
+ public static enum CONTACT implements ImportHeader {
/** Contact code (create date time for existing contact) **/
CONT_CODE(0),
/** Contact create date **/
@@ -189,6 +201,7 @@
this.contactHeader = index;
}
+ @Override
public int forContactCsv() {
return contactHeader;
}
@@ -245,7 +258,8 @@
return mammals ? "X" : "";
}
- public static boolean parseContactMammals(String mammals) {
+ public static boolean parseContactMammals(CsvReader reader, ImportHeader header) throws IOException {
+ String mammals = read(reader, header);
return mammals.equals("X");
}
@@ -300,4 +314,13 @@
return System.currentTimeMillis();
}
+ public static String read(CsvReader reader, ImportHeader header) throws IOException {
+ return reader.get(header.name().trim());
+ }
+
+ public static int readInt(CsvReader reader, ImportHeader header) throws IOException {
+ String str = read(reader, header);
+ return Integer.parseInt(str);
+ }
+
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java 2010-01-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java 2010-01-08 15:02:58 UTC (rev 178)
@@ -50,14 +50,73 @@
private static final long serialVersionUID = 1L;
@Override
+ @Deprecated
public void setPeriod(Date date) {
+ setPeriodDate(date);
+ }
+
+// @Override
+// public void setPeriodDate(Date date) {
+// periodDate = date;
+// periodMonth = getCalendar().get(Calendar.MONTH) +1;
+// periodYear = getCalendar().get(Calendar.YEAR);
+// }
+
+ protected Calendar getCalendar() {
Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
- setPeriodMonth(calendar.get(Calendar.MONTH));
- setPeriodYear(calendar.get(Calendar.YEAR));
+ if (getPeriodDate() != null) {
+ calendar.setTime(getPeriodDate());
+ }
+ return calendar;
}
/**
+ * @since 0.0.3 new attribute periodDate
+ * @deprecated
+ */
+ @Override
+ @Deprecated
+ public int getPeriodMonth() {
+ return getCalendar().get(Calendar.MONTH) + 1;
+ }
+
+ /**
+ * @since 0.0.3 new attribute periodDate
+ * @deprecated
+ */
+ @Override
+ @Deprecated
+ public int getPeriodYear() {
+ return getCalendar().get(Calendar.YEAR);
+ }
+
+ /**
+ * @since 0.0.3 new attribute periodDate
+ * @param month
+ * @deprecated
+ */
+ @Override
+ @Deprecated
+ public void setPeriodMonth(int month) {
+ Calendar calendar = getCalendar();
+ calendar.set(Calendar.MONTH, month - 1);
+ setPeriodDate(calendar.getTime());
+ }
+
+ /**
+ * @since 0.0.3 new attribute periodDate
+ * @param year
+ * @deprecated
+ */
+ @Override
+ @Deprecated
+ public void setPeriodYear(int year) {
+ Calendar calendar = getCalendar();
+ calendar.set(Calendar.YEAR, year);
+ setPeriodDate(calendar.getTime());
+ }
+
+ /**
* Method could be use to add some time for realTidesValue or
* remove time with a negative nbDays.
* If nbDays is negative and superior to the current value,
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-08 15:02:58 UTC (rev 178)
@@ -80,7 +80,9 @@
}
Calendar ref = new GregorianCalendar();
ref.setTime(date);
+ log.info("Ref : " + date);
for (SampleMonth curr : getSampleMonth()) {
+ log.info("Curr month : " + curr.getPeriodDate() + " : " + curr.getPeriodMonth() + " / " + curr.getPeriodYear());
if (ref.get(Calendar.MONTH) == (curr.getPeriodMonth()-1) && ref.get(Calendar.YEAR) == curr.getPeriodYear()) {
return curr;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java 2010-01-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java 2010-01-08 15:02:58 UTC (rev 178)
@@ -49,7 +49,9 @@
*/
@Override
public String getFullName() {
- return getFirstName() + " " + getLastName();
+ String name = getFirstName() != null ? getFirstName() : "";
+ name += getLastName() != null ? " " + getLastName() : "";
+ return name;
}
/**
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-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-08 15:02:58 UTC (rev 178)
@@ -368,8 +368,8 @@
while(reader.readRecord()) {
currRow++;
- String observerId = reader.get(CONTACT.OBSERV_ID.name());
- String state = reader.get(CONTACT.CONT_ETAT.name());
+ String observerId = ImportHelper.read(reader, CONTACT.OBSERV_ID);
+ String state = ImportHelper.read(reader, CONTACT.CONT_ETAT);
ContactState contactState = ContactState.createContactStateEnum(state);
@@ -395,12 +395,12 @@
}
if (company != null) {
- String rowCode = reader.get(SAMPLING.PLAN_CODE.name().trim());
+ String rowCode = ImportHelper.read(reader, SAMPLING.PLAN_CODE);
SampleRow row = rowDAO.findByProperties(SampleRow.CODE, rowCode, SampleRow.COMPANY, company);
if (row != null) {
- int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name().trim()));
+ int boatImmatriculation = ImportHelper.readInt(reader, BOAT.NAVS_COD);
Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
@@ -439,10 +439,10 @@
Contact contact = null;
// Check if createDate exist
- String createDateString = reader.get(CONTACT.CONT_CREATION.name().trim());
+ String createDateString = ImportHelper.read(reader, CONTACT.CONT_CREATION);
//Date createDate = !StringUtils.isEmpty(createDateString) ? dateFormat.parse(createDateString) : null;
- String contactCode = reader.get(CONTACT.CONT_CODE.name().trim());
+ String contactCode = ImportHelper.read(reader, CONTACT.CONT_CODE);
Date createDate = ImportHelper.parseContactCreateDate(contactCode, createDateString);
if (log.isDebugEnabled()) {
log.debug("Ligne " + currRow + " : Create date : " + createDate);
@@ -467,17 +467,17 @@
Contact.BOAT, boat);
}
- String tideBeginString = reader.get(CONTACT.CONT_DEBUT_MAREE.name().trim());
- String tideEndString = reader.get(CONTACT.CONT_FIN_MAREE.name().trim());
- String nbObservantsString = reader.get(CONTACT.CONT_NB_OBSERV.name().trim());
+ 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);
Date tideBegin = !StringUtils.isEmpty(tideBeginString) ? dateFormat.parse(tideBeginString) : null;
Date tideEnd = !StringUtils.isEmpty(tideEndString) ? dateFormat.parse(tideEndString) : null;
int nbObservants = !StringUtils.isEmpty(nbObservantsString) ? Integer.parseInt(nbObservantsString) : 0;
boolean mammalsCapture =
- ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_CAPT.name().trim()));
+ ImportHelper.parseContactMammals(reader, CONTACT.CONT_MAM_CAPT);
boolean mammalsObsv =
- ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_OBS.name().trim()));
+ ImportHelper.parseContactMammals(reader, CONTACT.CONT_MAM_OBS);
contact.setState(state);
contact.setTideBeginDate(tideBegin);
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-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-08 15:02:58 UTC (rev 178)
@@ -1,12 +1,24 @@
package fr.ifremer.suiviobsmer.impl;
+import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
+import fr.ifremer.suiviobsmer.entity.SampleMonth;
+import fr.ifremer.suiviobsmer.entity.SampleRow;
+import fr.ifremer.suiviobsmer.entity.SampleRowDAO;
import fr.ifremer.suiviobsmer.services.ServiceSynthesis;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
-import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery.Op;
import org.nuiton.util.PeriodDates;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* ServiceSynthesisImpl
@@ -21,9 +33,59 @@
*/
public class ServiceSynthesisImpl implements ServiceSynthesis {
+ private static final Logger log = LoggerFactory.getLogger(ServiceSynthesisImpl.class);
+
+ protected TopiaContext rootContext;
+
+ public ServiceSynthesisImpl() throws SuiviObsmerException {
+ rootContext = SuiviObsmerContext.getTopiaRootContext();
+ }
+
@Override
- public List<Map<Date, Integer>> getDataSampling(PeriodDates period) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public List<SortedMap<Date, Integer>> getDataSampling(PeriodDates period) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ List<SortedMap<Date, Integer>> results = new ArrayList<SortedMap<Date, Integer>>();
+ try {
+ transaction = rootContext.beginTransaction();
+
+ if (period.getFromDate() == null || period.getThruDate() == null) {
+ return results;
+ }
+
+ SortedMap<Date, Integer> serie1 = new TreeMap<Date,Integer>();
+ SortedMap<Date, Integer> serie2 = new TreeMap<Date,Integer>();
+ results.add(serie1);
+ results.add(serie2);
+
+ // Prepare results
+ for (Date month : period.getMonths()) {
+ serie1.put(month, 0);
+ serie2.put(month, 0);
+ }
+
+ SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+ TopiaQuery<SampleRow> query = dao.createQuery("S").
+ addFrom(SampleMonth.class.getName() + " M").add("M IN elements(S)").
+ add("M.periodDate", Op.GE, period.getFromDate()).
+ add("M.periodDate", Op.LE, period.getThruDate()).
+ addGroup("M.periodDate").addOrder("M.periodDate");
+
+ List<Object[]> res =
+ (List<Object[]>)query.setSelect("M.periodDate, SUM(M.realTidesValue), SUM(M.expectedTidesValue)").execute();
+
+ for (Object[] tab : res) {
+ Date date = (Date)tab[0];
+ int sumReal = (Integer)tab[1];
+ int sumExpected = (Integer)tab[2];
+ serie1.put(date, sumExpected);
+ serie2.put(date, sumReal);
+ }
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+
+ }
+ return results;
}
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
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-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-08 15:02:58 UTC (rev 178)
@@ -227,7 +227,7 @@
@Log
public Object onChangeFromFacadeName(String value) throws SuiviObsmerException {
- if (!StringUtils.isEmpty(value)) {
+ if (!StringUtils.isEmpty(value.trim())) {
// Reset contactFilter to avoid strange behavior (cause of no form submit)
contactFilter = null;
// set facadeName selected in contactFilter
@@ -527,6 +527,9 @@
@InjectComponent
private Field comment;
+ @InjectComponent
+ private Field inputDate;
+
@Log
void onValidateFormFromContactsForm() {
contactsForm.clearErrors();
@@ -538,6 +541,7 @@
Date begin = contact.getTideBeginDate();
Date end = contact.getTideEndDate();
+ Date input = contact.getDataInputDate();
Program program = contact.getSampleRow().getProgram();
DateFormat dateFormat = new SimpleDateFormat("MM/yyyy");
@@ -563,6 +567,14 @@
contactsForm.recordError(endDate, "La date de fin de la marée ne peut pas être postérieure à la date du jour");
}
+ if (end != null && input != null && end.after(input)) {
+ contactsForm.recordError(inputDate, "La date de saisie des données ne peut pas être antérieure à la date de fin de la marée");
+ }
+
+ if (input != null && input.after(current)) {
+ contactsForm.recordError(inputDate, "La date de saisie des données ne peut pas être postérieure à la date du jour");
+ }
+
// Non abouti, Refus ou Refus Définitif
if (contactState.isUnfinishedState()) {
if (!StringUtils.isEmpty(contact.getComment())) {
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-07 16:15:13 UTC (rev 177)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-08 15:02:58 UTC (rev 178)
@@ -54,11 +54,11 @@
<input t:type="checkbox" t:id="companyAccepted" value="contactFilter.companyAccepted" />
<t:label t:for="companyAccepted">
<img src="${asset:context:}/img/true-22px.png" title="Accepté par la société" />
- </t:label>
+ </t:label>
<input t:type="checkbox" t:id="companyRefused" value="contactFilter.companyRefused" />
<t:label t:for="companyRefused">
<img src="${asset:context:}/img/false-22px.png" title="Refusé par la société" />
- </t:label>
+ </t:label>
<input t:type="checkbox" t:id="companyUndefined" value="contactFilter.companyUndefined" />
<t:label t:for="companyUndefined">
<img src="${asset:context:}/img/help-22px.png" title="Non validé par la société" />
@@ -68,11 +68,11 @@
<input t:type="checkbox" t:id="programAccepted" value="contactFilter.programAccepted" />
<t:label t:for="programAccepted">
<img src="${asset:context:}/img/true-22px.png" title="Accepté par le programme" />
- </t:label>
+ </t:label>
<input t:type="checkbox" t:id="programRefused" value="contactFilter.programRefused" />
<t:label t:for="programRefused">
<img src="${asset:context:}/img/false-22px.png" title="Refusé par le programme" />
- </t:label>
+ </t:label>
<input t:type="checkbox" t:id="programUndefined" value="contactFilter.programUndefined" />
<t:label t:for="programUndefined">
<img src="${asset:context:}/img/help-22px.png" title="Non validé par le programme" />
1
0
[Suiviobsmer-commits] r177 - trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages
by fdesbois@users.labs.libre-entreprise.org 07 Jan '10
by fdesbois@users.labs.libre-entreprise.org 07 Jan '10
07 Jan '10
Author: fdesbois
Date: 2010-01-07 16:15:13 +0000 (Thu, 07 Jan 2010)
New Revision: 177
Modified:
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
Log:
missing
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-07 16:14:09 UTC (rev 176)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-07 16:15:13 UTC (rev 177)
@@ -44,9 +44,9 @@
return false;
}
- public JFreeChart getTestChart() {
-
- }
+// public JFreeChart getTestChart() {
+//
+// }
}
1
0
07 Jan '10
Author: fdesbois
Date: 2010-01-07 16:14:09 +0000 (Thu, 07 Jan 2010)
New Revision: 176
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java
Modified:
trunk/pom.xml
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.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/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
Log:
- Change filters hierarchy
- Create service for Synthesis
- Add Chart component in UI
- Use snapshots for EUGene (error on generated type) and Nuiton-utils (PeriodDates)
- The company is now considerated in SamplingPlan import
- The elligibleBoat for a contact is automatically created from a contact import
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-07 11:15:49 UTC (rev 175)
+++ trunk/pom.xml 2010-01-07 16:14:09 UTC (rev 176)
@@ -238,11 +238,11 @@
<labs.id>154</labs.id>
<!-- libraries version -->
- <nuitonutils.version>1.1.2</nuitonutils.version>
+ <nuitonutils.version>1.1.3-SNAPSHOT</nuitonutils.version>
<topia.version>2.3.0-beta-4-SNAPSHOT</topia.version>
<license.version>2.0.0</license.version>
<helper.version>1.1.0</helper.version>
- <eugene.version>2.0.0-beta-2</eugene.version>
+ <eugene.version>2.0.0-beta-3-SNAPSHOT</eugene.version>
<tapestry.version>5.1.0.5</tapestry.version>
<!-- default license to use -->
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-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -86,6 +86,8 @@
public static enum SAMPLING {
/** SampleRow code **/
PLAN_CODE(6),
+ /** Company name **/
+ SOCIETE_NOM(5),
/** Program code **/
PROGRAMME_CODE(7),
/** Program period begin **/
@@ -160,8 +162,6 @@
OBSERV_NOM(4),
/** Company id **/
//SOCIETE_ID,
- /** Company nom **/
- SOCIETE_NOM(5),
/** Contact state **/
CONT_ETAT(23),
/** Contact tide begin **/
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-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -43,6 +43,7 @@
import fr.ifremer.suiviobsmer.entity.ContactDAO;
import fr.ifremer.suiviobsmer.entity.ContactImpl;
import fr.ifremer.suiviobsmer.entity.ElligibleBoat;
+import fr.ifremer.suiviobsmer.entity.ElligibleBoatDAO;
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.Program;
@@ -292,7 +293,7 @@
record[CONTACT.OBSERV_ID.forContactCsv()] = observer.getLogin();
record[CONTACT.OBSERV_PRENOM.forContactCsv()] = observer.getFirstName();
record[CONTACT.OBSERV_NOM.forContactCsv()] = observer.getLastName();
- record[CONTACT.SOCIETE_NOM.forContactCsv()] = company.getName();
+ record[SAMPLING.SOCIETE_NOM.forContactCsv()] = company.getName();
// SampleRow part
SampleRow row = contact.getSampleRow();
@@ -394,36 +395,54 @@
}
if (company != null) {
- String rowCode = reader.get(SAMPLING.PLAN_CODE.name());
+ String rowCode = reader.get(SAMPLING.PLAN_CODE.name().trim());
SampleRow row = rowDAO.findByProperties(SampleRow.CODE, rowCode, SampleRow.COMPANY, company);
if (row != null) {
- int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name()));
+ int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name().trim()));
- // The boat must be elligible for the row
- TopiaQuery<Boat> boatQuery = boatDAO.createQuery("B").
- addFrom(ElligibleBoat.class.getName() + " E").
- add("E.sampleRow", row).add("E.boat = B").
- add(Boat.IMMATRICULATION, boatImmatriculation);
+ Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
- if (!user.getAdmin()) {
- // Constraint on companyActive for elligibleBoat for a simple user
- boatQuery.add("E.companyActive = :booleanTrue OR (E.companyActive IS NULL AND E.globalActive = :booleanTrue)").
- addParam("booleanTrue", Boolean.TRUE);
- }
+ if (boat != null) {
- Boat boat = boatQuery.executeToEntity();
+ ElligibleBoatDAO elligibleDAO = SuiviObsmerModelDAOHelper.getElligibleBoatDAO(transaction);
+ ElligibleBoat elligible = elligibleDAO.findByProperties(
+ ElligibleBoat.BOAT, boat, ElligibleBoat.SAMPLE_ROW, row);
- if (boat != null) {
+ if (elligible == null) {
+ // Create new elligible boat not active in a global way
+ elligible = elligibleDAO.create(
+ ElligibleBoat.BOAT, boat, ElligibleBoat.SAMPLE_ROW, row);
+ }
+ elligible.setCompanyActive(Boolean.TRUE);
+ // The boat must be elligible for the row
+// TopiaQuery<Boat> boatQuery = boatDAO.createQuery("B").
+// addFrom(ElligibleBoat.class.getName() + " E").
+// add("E.sampleRow", row).add("E.boat = B").
+// add(Boat.IMMATRICULATION, boatImmatriculation);
+//
+// if (!user.getAdmin()) {
+// // Constraint on companyActive for elligibleBoat for a simple user
+// boatQuery.add("E.companyActive = :booleanTrue OR (E.companyActive IS NULL AND E.globalActive = :booleanTrue)").
+// addParam("booleanTrue", Boolean.TRUE);
+// }
+//
+// Boat boat = boatQuery.executeToEntity();
+//
+// if (boat == null) {
+// ElligibleBoatDAO elligibleDAO = SuiviObsmerModelDAOHelper.getElligibleBoatDAO(transaction);
+//
+// }
+
Contact contact = null;
// Check if createDate exist
- String createDateString = reader.get(CONTACT.CONT_CREATION.name());
+ String createDateString = reader.get(CONTACT.CONT_CREATION.name().trim());
//Date createDate = !StringUtils.isEmpty(createDateString) ? dateFormat.parse(createDateString) : null;
- String contactCode = reader.get(CONTACT.CONT_CODE.name());
+ String contactCode = reader.get(CONTACT.CONT_CODE.name().trim());
Date createDate = ImportHelper.parseContactCreateDate(contactCode, createDateString);
if (log.isDebugEnabled()) {
log.debug("Ligne " + currRow + " : Create date : " + createDate);
@@ -440,25 +459,25 @@
}
// new contact to import
- if (contact == null) {
+ if (contact == null) {
contact = dao.create(
TopiaEntity.TOPIA_CREATE_DATE, createDate,
Contact.USER, observer,
Contact.SAMPLE_ROW, row,
Contact.BOAT, boat);
}
-
- String tideBeginString = reader.get(CONTACT.CONT_DEBUT_MAREE.name());
- String tideEndString = reader.get(CONTACT.CONT_FIN_MAREE.name());
- String nbObservantsString = reader.get(CONTACT.CONT_NB_OBSERV.name());
+ String tideBeginString = reader.get(CONTACT.CONT_DEBUT_MAREE.name().trim());
+ String tideEndString = reader.get(CONTACT.CONT_FIN_MAREE.name().trim());
+ String nbObservantsString = reader.get(CONTACT.CONT_NB_OBSERV.name().trim());
+
Date tideBegin = !StringUtils.isEmpty(tideBeginString) ? dateFormat.parse(tideBeginString) : null;
Date tideEnd = !StringUtils.isEmpty(tideEndString) ? dateFormat.parse(tideEndString) : null;
int nbObservants = !StringUtils.isEmpty(nbObservantsString) ? Integer.parseInt(nbObservantsString) : 0;
boolean mammalsCapture =
- ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_CAPT.name()));
+ ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_CAPT.name().trim()));
boolean mammalsObsv =
- ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_OBS.name()));
+ ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_OBS.name().trim()));
contact.setState(state);
contact.setTideBeginDate(tideBegin);
@@ -471,8 +490,7 @@
} else if (log.isWarnEnabled()) {
log.warn("Import contact ligne " + currRow + " : " +
- "Navire inexistant ou incompatible avec la ligne d'échantillon " +
- "pour l'immatriculation : " + boatImmatriculation);
+ "Navire inexistant avec l'immatriculation : " + boatImmatriculation);
}
} else if (log.isWarnEnabled()) {
log.warn("Import contact ligne " + currRow + " : " +
@@ -490,16 +508,6 @@
if (result % 1000 == 0) {
transaction.commitTransaction();
tic = ImportHelper.logTimeAndMemory(log, tic, "contacts ligne " + currRow);
-// if (log.isInfoEnabled()) {
-// log.info("RUNNING... Import contacts ligne " + currRow);
-// Runtime runtime = Runtime.getRuntime();
-// long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
-// //long memMega = mem / 1024 / 1024;
-// log.info("Memory : " + mem + " Mo");
-// tic2 = System.currentTimeMillis();
-// log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic2 - tic1));
-// tic1 = System.currentTimeMillis();
-// }
}
}
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-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -24,6 +24,8 @@
import com.csvreader.CsvReader;
import fr.ifremer.suiviobsmer.ImportHelper.FISHING_ZONE;
import fr.ifremer.suiviobsmer.ImportHelper.SAMPLING;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException.Type;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
@@ -53,6 +55,7 @@
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.util.EntityLoador;
import org.nuiton.util.DateUtils;
+import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -170,11 +173,11 @@
}
@Override
- public List<SampleRow> getSampleRowsOrderedByFishingZone(Date periodBegin, Date periodEnd, Company company) throws SuiviObsmerException {
+ public List<SampleRow> getSampleRowsOrderedByFishingZone(PeriodDates period, Company company) throws SuiviObsmerException {
TopiaContext transaction = null;
List<SampleRow> results = new ArrayList<SampleRow>();
try {
- if (periodBegin == null || periodEnd == null) {
+ if (period.getFromDate() == null || period.getThruDate() == null) {
throw new IllegalArgumentException("PeriodBegin date and/or PeriodEnd date can't be null !");
}
transaction = rootContext.beginTransaction();
@@ -189,9 +192,9 @@
}
// Prepare period dates
- periodBegin = DateUtils.setFirstDayOfMonth(periodBegin);
- periodEnd = DateUtils.setLastDayOfMonth(periodEnd);
- query.add("S.program.periodBegin", Op.LT, periodEnd).add("S.program.periodEnd", Op.GT, periodBegin);
+ period.setDayOfMonthExtremities();
+ query.add("S.program.periodBegin", Op.LT, period.getThruDate()).
+ add("S.program.periodEnd", Op.GT, period.getFromDate());
// Order By facade, sector, districtCode, sampleRowCode
String zoneOrder = "F.facadeName, F.sectorName, F.districtCode";
@@ -369,7 +372,7 @@
int[] programBegin = getMonthAndYear(reader.get(SAMPLING.PROGRAMME_DEBUT.name()).trim());
int[] programEnd = getMonthAndYear(reader.get(SAMPLING.PROGRAMME_FIN.name()).trim());
String districts = reader.get(FISHING_ZONE.PECHE_DIVISION.name());
-
+
row = dao.findByCode(code);
// Refuse existing SampleRow
if (row != null) {
@@ -380,8 +383,8 @@
nbRefused++;
// Refuse Fishing zones empty
} else if (StringUtils.isEmpty(programName)) {
- throw new SuiviObsmerException(
- "Erreur à la ligne " + currRow + " [CODE = " + row.getCode() + "] : " +
+ throw new SuiviObsmerBusinessException(Type.IMPORT_ERROR, this.getClass(),
+ "Erreur à la ligne " + currRow + " [CODE = " + code + "] : " +
"Cette ligne n'est lié à aucun programme !");
//nbRefused++;
} else if (StringUtils.isEmpty(districts)) {
@@ -393,6 +396,20 @@
} else {
row = dao.create(SampleRow.CODE, code);
+ String companyName = reader.get(SAMPLING.SOCIETE_NOM.name()).trim();
+
+ // Create link with company if set in file
+ if (!StringUtils.isEmpty(companyName)) {
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ Company company = companyDAO.findByName(companyName);
+ if (company == null) {
+ throw new SuiviObsmerBusinessException(Type.IMPORT_ERROR, this.getClass(),
+ "Erreur à la ligne " + currRow + " [CODE = " + code + "] : " +
+ "La société portant le nom '" + companyName + "' n'existe pas dans l'application");
+ }
+ row.setCompany(company);
+ }
+
// Import program. Creation if not exist
Program program = importProgram(transaction, programName, programBegin, programEnd);
row.setProgram(program);
@@ -530,7 +547,7 @@
for (String districtCode : districtList) {
FishingZone zone = dao.findByDistrictCode(districtCode.trim());
if (zone == null) {
- throw new SuiviObsmerException(
+ throw new SuiviObsmerBusinessException(Type.IMPORT_ERROR, this.getClass(),
"Erreur à la ligne " + currRow + " [CODE = " + row.getCode() + "] : " +
"Cette ligne est lié à une zone inexistante : " + districtCode);
}
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -0,0 +1,29 @@
+
+package fr.ifremer.suiviobsmer.impl;
+
+import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.services.ServiceSynthesis;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import org.nuiton.util.PeriodDates;
+
+/**
+ * ServiceSynthesisImpl
+ *
+ * Created: 7 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class ServiceSynthesisImpl implements ServiceSynthesis {
+
+ @Override
+ public List<Map<Date, Integer>> getDataSampling(PeriodDates period) throws SuiviObsmerException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java 2010-01-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -38,6 +38,7 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
+import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,7 +58,7 @@
private static final Logger log = LoggerFactory.getLogger(ServiceSamplingMock.class);
@Override
- public List<SampleRow> getSampleRowsOrderedByFishingZone(Date periodBegin, Date periodEnd, Company company) throws SuiviObsmerException {
+ public List<SampleRow> getSampleRowsOrderedByFishingZone(PeriodDates period, Company company) throws SuiviObsmerException {
return new ArrayList<SampleRow>();
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java 2010-01-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -180,6 +180,9 @@
FishingZone zoneIId = zoneDAO.create(FishingZone.DISTRICT_CODE, "IId");
FishingZone zoneIV = zoneDAO.create(FishingZone.DISTRICT_CODE, "IV");
FishingZone zoneI = zoneDAO.create(FishingZone.DISTRICT_CODE, "I");
+
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ companyDAO.create(Company.NAME, "TARTANPION");
transaction.commitTransaction();
ServiceSampling serviceSampling = new ServiceSamplingImpl();
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-01-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -209,18 +209,17 @@
InputStream input = getClass().getResourceAsStream("/import/zonesPeche.csv");
serviceReferential.importFishingZoneCsv(input);
- ServiceSampling serviceSampling = new ServiceSamplingImpl();
- input = getClass().getResourceAsStream("/import/echantillonnage.csv");
- serviceSampling.importSamplingPlanCsv(input);
-
- // Import doesn't set company
TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
-
// Create a company
CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
SuiviObsmerContext.prepareTopiaId(Company.class, company);
companyDAO.update(company);
+ transaction.commitTransaction();
+ ServiceSampling serviceSampling = new ServiceSamplingImpl();
+ input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+ serviceSampling.importSamplingPlanCsv(input);
+
// Get two SampleRows : 2009_3 & 2010_4
SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
SampleRow row1 = rowDAO.findByCode("2009_03");
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-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -60,6 +60,7 @@
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.*;
@@ -237,7 +238,8 @@
// NO COMPANY (= null)
Calendar begin = new GregorianCalendar(2000, 0, 1, 0, 0, 0);
Calendar end = new GregorianCalendar(2020, 11, 31, 0, 0, 0);
- List<SampleRow> rows = service.getSampleRowsOrderedByFishingZone(begin.getTime(), end.getTime(), null);
+ PeriodDates period = new PeriodDates(begin, end);
+ List<SampleRow> rows = service.getSampleRowsOrderedByFishingZone(period, null);
assertEquals(4, rows.size());
SampleRow resultRow0 = rows.get(0);
assertEquals("2010_02", resultRow0.getCode());
@@ -264,7 +266,8 @@
// NO COMPANY (= null)
begin = new GregorianCalendar(2009, 0, 1, 0, 0, 0);
end = new GregorianCalendar(2020, 11, 31, 0, 0, 0);
- rows = service.getSampleRowsOrderedByFishingZone(begin.getTime(), end.getTime(), null);
+ period = new PeriodDates(begin, end);
+ rows = service.getSampleRowsOrderedByFishingZone(period, null);
assertEquals(3, rows.size());
resultRow0 = rows.get(0);
assertEquals("2010_02", resultRow0.getCode());
@@ -401,7 +404,9 @@
FishingZone zoneIId = zoneDAO.create(FishingZone.DISTRICT_CODE, "IId");
FishingZone zoneIV = zoneDAO.create(FishingZone.DISTRICT_CODE, "IV");
FishingZone zoneI = zoneDAO.create(FishingZone.DISTRICT_CODE, "I");
-
+
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ companyDAO.create(Company.NAME, "TARTANPION");
transaction.commitTransaction();
@@ -446,7 +451,9 @@
FishingZone zoneIId = zoneDAO.create(FishingZone.DISTRICT_CODE, "IId");
FishingZone zoneIV = zoneDAO.create(FishingZone.DISTRICT_CODE, "IV");
FishingZone zoneI = zoneDAO.create(FishingZone.DISTRICT_CODE, "I");
-
+
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ companyDAO.create(Company.NAME, "TARTANPION");
transaction.commitTransaction();
transaction.closeContext();
Added: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java (rev 0)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -0,0 +1,167 @@
+/* *##% Pollen
+ * Copyright (C) 2009 CodeLutin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. ##%*/
+
+package fr.ifremer.suiviobsmer.ui.components;
+
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.StreamResponse;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.dom.Element;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.services.Response;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.nuiton.util.ArrayUtil;
+
+/**
+ * Composant qui affiche un graphe de type PieChart.
+ *
+ * <pre>
+ * Utilisation :
+ * <t:chart width="210" height="190" values="choice" title="title" type="1"/>
+ * - choice est une liste de chaînes représentant les labels et leur valeurs respectives. ({"val1", "20", "val2", "10"}...)
+ * - type est le type de représentation du diagramme (1:PIE, 2:PIE3D...)
+ * Pour généraliser à d'autres types de graphes il faudrait passer un JFreeChart :
+ * Persist Parameter(required=true)
+ * private JFreeChart _chart;
+ * </pre>
+ *
+ * @author rannou
+ * @version $Id$
+ */
+public class Chart {
+
+// /** diagramme de type PIE */
+// public static final int PIE = 1;
+// /** diagramme de type PIE3D */
+// public static final int PIE3D = 2;
+// /** diagramme de type RING */
+// public static final int RING = 3;
+
+ /** titre du diagramme */
+ @Parameter
+ private String _title = "";
+
+ @Parameter(required = true)
+ private JFreeChart _chart;
+
+ /** type de représentation du diagramme */
+// @Parameter(required = true)
+// private int _type;
+
+ @Parameter(required = true)
+ private int _width;
+
+ @Parameter(required = true)
+ private int _height;
+
+ @Persist
+ private JFreeChart currentChart;
+
+ /**
+ * list(array) of paired values(label,value):
+ * [String,Number,String,Number,...]
+ */
+// @Parameter(required = true)
+// private List<Object> _values;
+
+ @Inject
+ private ComponentResources _resources;
+
+ void beginRender(MarkupWriter writer) {
+
+ // event link params
+ Object[] params = new Object[] { _title, _width, _height };
+// params = ArrayUtil.concat(params, _values.toArray());
+
+ // generate event link
+ Link link = _resources.createEventLink("chart", params);
+ Element img = writer.element("img", "src", link);
+
+ _resources.renderInformalParameters(writer);
+ }
+
+ void afterRender(MarkupWriter writer) {
+ writer.end();
+ }
+
+ public StreamResponse onChart(final String title,
+ final int width, final int height) {
+// DefaultKeyedValues values = new DefaultKeyedValues();
+// for (int i = 4; i < rest.length; i += 2) {
+// values.addValue(rest[i].toString(), Double.valueOf(rest[i + 1]
+// .toString()));
+// }
+// values.sortByValues(SortOrder.DESCENDING);
+// PieDataset data = new DefaultPieDataset(values);
+//
+// // create the chart look according to the type
+// PiePlot plot = null;
+// switch (type) {
+// case PIE:
+// plot = new PiePlot(data);
+// break;
+// case PIE3D:
+// plot = new PiePlot3D(data);
+// break;
+// case RING:
+// plot = new RingPlot(data);
+// break;
+// default:
+// plot = new PiePlot(data);
+// break;
+// }
+
+ //plot.setForegroundAlpha(0.7f);
+// plot.setCircular(true);
+// plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {2}"));
+// plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
+// "{0} = {1}"));
+// plot.setNoDataMessage("No Data");
+//
+// final JFreeChart chart = new JFreeChart(plot);
+// chart.setTitle(new TextTitle(title, new Font(Font.SANS_SERIF,
+// Font.BOLD, 12)));
+// chart.setBackgroundPaint(new Color(255, 255, 255));
+
+ // return the image
+ return new StreamResponse() {
+ public String getContentType() {
+ return "image/png";
+ }
+
+ public InputStream getStream() throws IOException {
+ BufferedImage image = currentChart.createBufferedImage(width, height);
+ ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
+ ChartUtilities.writeBufferedImageAsPNG(byteArray, image);
+ return new ByteArrayInputStream(byteArray.toByteArray());
+ }
+
+ public void prepareResponse(Response response) {
+ }
+ };
+ }
+}
\ No newline at end of file
Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -22,6 +22,7 @@
package fr.ifremer.suiviobsmer.ui.pages;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.FishingZone;
@@ -104,12 +105,12 @@
private UploadedFile samplingPlanCsvFile;
@Log
- void onSuccessFromImportSamplingPlan() {
+ void onSuccessFromImportSamplingPlan() throws SuiviObsmerException {
try {
int[] result = serviceSampling.importSamplingPlanCsv(samplingPlanCsvFile.getStream());
layout.getFeedBack().addInfo(result[0] + " lignes du plan importés, " +
result[1] + " refusés (voir documentation)");
- } catch (SuiviObsmerException eee) {
+ } catch (SuiviObsmerBusinessException eee) {
layout.getFeedBack().addError(eee.getMessage());
}
}
@@ -179,8 +180,7 @@
if (!user.getAdmin()) {
company = user.getCompany();
}
- data = serviceSampling.getSampleRowsOrderedByFishingZone(
- getPeriod().getFromDate(), getPeriod().getThruDate(), company);
+ data = serviceSampling.getSampleRowsOrderedByFishingZone(getPeriod(), company);
}
return data;
}
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-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -23,6 +23,7 @@
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
import org.apache.tapestry5.annotations.IncludeStylesheet;
+import org.jfree.chart.JFreeChart;
/**
* Synthesis
@@ -42,5 +43,10 @@
public boolean isOnlyForAdmin() {
return false;
}
+
+ public JFreeChart getTestChart() {
+ }
+
+
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java 2010-01-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java 2010-01-07 16:14:09 UTC (rev 176)
@@ -19,6 +19,8 @@
package fr.ifremer.suiviobsmer.ui.services;
+import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
+import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.mock.*;
import fr.ifremer.suiviobsmer.services.*;
import fr.ifremer.suiviobsmer.impl.*;
@@ -55,6 +57,8 @@
binder.bind(ServiceBoat.class, ServiceBoatImpl.class);
binder.bind(ServiceContact.class, ServiceContactImpl.class);
binder.bind(ContactModelFactory.class);
+ binder.bind(SuiviObsmerModelDAOHelper.getContractClass(User.class),
+ SuiviObsmerModelDAOHelper.getImplementationClass(User.class));
}
public static void contributeApplicationDefaults(
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-07 11:15:49 UTC (rev 175)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-07 16:14:09 UTC (rev 176)
@@ -41,4 +41,6 @@
lectus nunc. Proin molestie molestie augue aliquet suscipit. Sed id enim diam,
sed rutrum libero. </p>
</div>
+
+ <t:chart t:width="300" t:height="250" t:chart="testChart" />
</t:layout>
1
0
[Suiviobsmer-commits] r175 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-ui/src/main/webapp/img
by fdesbois@users.labs.libre-entreprise.org 07 Jan '10
by fdesbois@users.labs.libre-entreprise.org 07 Jan '10
07 Jan '10
Author: fdesbois
Date: 2010-01-07 11:15:49 +0000 (Thu, 07 Jan 2010)
New Revision: 175
Modified:
trunk/pom.xml
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-ui/src/main/webapp/img/fishing-net-22px.png
Log:
- Use last topia SNAPSHOT
- Uncomment query for sampleRows
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-07 10:40:03 UTC (rev 174)
+++ trunk/pom.xml 2010-01-07 11:15:49 UTC (rev 175)
@@ -239,7 +239,7 @@
<!-- libraries version -->
<nuitonutils.version>1.1.2</nuitonutils.version>
- <topia.version>2.3.0-beta-3</topia.version>
+ <topia.version>2.3.0-beta-4-SNAPSHOT</topia.version>
<license.version>2.0.0</license.version>
<helper.version>1.1.0</helper.version>
<eugene.version>2.0.0-beta-2</eugene.version>
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-07 10:40:03 UTC (rev 174)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-07 11:15:49 UTC (rev 175)
@@ -157,8 +157,8 @@
query.addLoad("user.company", "sampleRow.program", "sampleRow.profession", "sampleRow.company");
- if (log.isInfoEnabled()) {
- log.info("Query : " + query);
+ if (log.isDebugEnabled()) {
+ log.debug("Query : " + query);
}
results = query.executeToEntityMap();
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-07 10:40:03 UTC (rev 174)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-07 11:15:49 UTC (rev 175)
@@ -179,54 +179,32 @@
}
transaction = rootContext.beginTransaction();
- // uncomment the query for Topia 2.3.0-beta-4 (manage order and multiple select results, need addSelect method)
+ SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
-// SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
-//
-// TopiaQuery<SampleRow> query = dao.createQuery("S").addDistinct().
-// addFrom(FishingZone.class.getName() + " F").add("S IN elements(F.sampleRow)");
-//
-// if (company != null) {
-// query.add("S.company", company);
-// }
-//
-// // Prepare period dates
-// periodBegin = DateUtils.setFirstDayOfMonth(periodBegin);
-// periodEnd = DateUtils.setLastDayOfMonth(periodEnd);
-// query.add("S.program.periodBegin", Op.LT, periodEnd).add("S.program.periodEnd", Op.GT, periodBegin);
-//
-// String zoneOrder = "F.facadeName, F.sectorName, F.districtCode";
-// query.addOrder(zoneOrder).addOrder("S.code").addSelect(zoneOrder);
-//
-// query.addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM, SampleRow.COMPANY);
-// results = query.executeToEntityList();
+ TopiaQuery<SampleRow> query = dao.createQuery("S").addDistinct().
+ addFrom(FishingZone.class.getName() + " F").add("S IN elements(F.sampleRow)");
- FishingZoneDAO zoneDAO = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
- List<FishingZone> list = zoneDAO.findAllWithOrder(
- FishingZone.FACADE_NAME,
- FishingZone.SECTOR_NAME,
- FishingZone.DISTRICT_CODE);
+ if (company != null) {
+ query.add("S.company", company);
+ }
- for (FishingZone zone : list) {
- if (log.isTraceEnabled()) {
- log.trace("Zone : " + zone);
- }
- for (SampleRow row : zone.getSampleRow()) {
- if (!results.contains(row)) {
- Company rowCompany = row.getCompany();
- Program rowProgram = row.getProgram();
- if (rowProgram.isValid(periodBegin, periodEnd) && (company == null || company.equals(rowCompany))) {
- if (log.isTraceEnabled()) {
- log.trace("Code : " + row.getCode());
- }
- // load data
- row.getProfession();
- results.add(row);
- }
- }
- }
+ // Prepare period dates
+ periodBegin = DateUtils.setFirstDayOfMonth(periodBegin);
+ periodEnd = DateUtils.setLastDayOfMonth(periodEnd);
+ query.add("S.program.periodBegin", Op.LT, periodEnd).add("S.program.periodEnd", Op.GT, periodBegin);
+
+ // Order By facade, sector, districtCode, sampleRowCode
+ String zoneOrder = "F.facadeName, F.sectorName, F.districtCode";
+ query.addOrder(zoneOrder).addOrder("S.code").addSelect(zoneOrder);
+ // Load data
+ query.addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM, SampleRow.COMPANY);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Query : " + query);
}
+ results = query.executeToEntityList();
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
Modified: trunk/suiviobsmer-ui/src/main/webapp/img/fishing-net-22px.png
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r174 - in trunk: . suiviobsmer-business suiviobsmer-ui
by fdesbois@users.labs.libre-entreprise.org 07 Jan '10
by fdesbois@users.labs.libre-entreprise.org 07 Jan '10
07 Jan '10
Author: fdesbois
Date: 2010-01-07 10:40:03 +0000 (Thu, 07 Jan 2010)
New Revision: 174
Modified:
trunk/pom.xml
trunk/suiviobsmer-business/pom.xml
trunk/suiviobsmer-ui/pom.xml
Log:
[maven-release-plugin] prepare for next development iteration
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-07 10:40:00 UTC (rev 173)
+++ trunk/pom.xml 2010-01-07 10:40:03 UTC (rev 174)
@@ -15,7 +15,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.3</version>
+ <version>0.0.4-SNAPSHOT</version>
<modules>
<module>suiviobsmer-ui</module>
@@ -256,9 +256,9 @@
<scm>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.3</connection>
- <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.3</developerConnection>
- <url>http://labs.libre-entreprise.org/scm/viewvc.php/tags/suiviobsmer-0.0.3?root…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk</connection>
+ <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk</developerConnection>
+ <url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/?root=suiviobsmer</url>
</scm>
<build>
Modified: trunk/suiviobsmer-business/pom.xml
===================================================================
--- trunk/suiviobsmer-business/pom.xml 2010-01-07 10:40:00 UTC (rev 173)
+++ trunk/suiviobsmer-business/pom.xml 2010-01-07 10:40:03 UTC (rev 174)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.3</version>
+ <version>0.0.4-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.suiviobsmer</groupId>
@@ -120,9 +120,9 @@
</build>
<scm>
- <url>http://labs.libre-entreprise.org/scm/viewvc.php/tags/suiviobsmer-0.0.3/suiv…</url>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.3/suivio…</connection>
- <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.3/suivio…</developerConnection>
+ <url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/suiviobsmer-business/…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-business</connection>
+ <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-business</developerConnection>
</scm>
</project>
Modified: trunk/suiviobsmer-ui/pom.xml
===================================================================
--- trunk/suiviobsmer-ui/pom.xml 2010-01-07 10:40:00 UTC (rev 173)
+++ trunk/suiviobsmer-ui/pom.xml 2010-01-07 10:40:03 UTC (rev 174)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.3</version>
+ <version>0.0.4-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.suiviobsmer</groupId>
@@ -122,9 +122,9 @@
</build>
<scm>
- <url>http://labs.libre-entreprise.org/scm/viewvc.php/tags/suiviobsmer-0.0.3/suiv…</url>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.3/suivio…</connection>
- <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.3/suivio…</developerConnection>
+ <url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/suiviobsmer-ui/?root=…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-ui</connection>
+ <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-ui</developerConnection>
</scm>
</project>
1
0