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
- 2357 discussions
[Suiviobsmer-commits] r188 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 12 Jan '10
by fdesbois@users.labs.libre-entreprise.org 12 Jan '10
12 Jan '10
Author: fdesbois
Date: 2010-01-12 16:58:54 +0000 (Tue, 12 Jan 2010)
New Revision: 188
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java
trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml
Log:
Fix some errors on SampleRow creation
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-12 16:38:23 UTC (rev 187)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-12 16:58:54 UTC (rev 188)
@@ -362,9 +362,12 @@
log.debug("Max code found : " + maxCode);
}
- String[] part = maxCode.split("_");
- int inc = Integer.parseInt(part[1]) + 1;
- String str = StringUtils.leftPad("" + inc, 2, "0");
+ int num = 1;
+ if (!StringUtils.isEmpty(maxCode)) {
+ String[] part = maxCode.split("_");
+ num = Integer.parseInt(part[1]) + 1;
+ }
+ String str = StringUtils.leftPad("" + num, 2, "0");
result = year + "_" + str;
transaction.closeContext();
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-12 16:38:23 UTC (rev 187)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-01-12 16:58:54 UTC (rev 188)
@@ -372,7 +372,7 @@
sampleMonths.add(curr);
// If an other period is set
} else if (periodChanged) {
- if (curr != null) {
+ if (curr == null) {
curr = serviceSampling.getNewSampleMonth(currMonth, getSampleRow());
}
sampleMonths.add(curr);
@@ -528,13 +528,15 @@
SampleMonth firstMonth = getSampleMonths().get(0);
SampleMonth lastMonth = getSampleMonths().get(size-1);
- Date firstDate = DateUtils.createDate(
- 1, firstMonth.getPeriodMonth(), firstMonth.getPeriodYear());
+ if (firstMonth != null) {
+ 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.");
+ 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.");
+ }
}
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-12 16:38:23 UTC (rev 187)
+++ trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-12 16:58:54 UTC (rev 188)
@@ -133,7 +133,7 @@
<strong>${sampleRow.code}</strong>
<p:else>
<span class="code-missing">
- Date de début du programme manquante pour générer le code de la ligne !
+ Date de début manquante pour générer le code de la ligne !
</span>
</p:else>
</t:if>
1
0
[Suiviobsmer-commits] r187 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/webapp/css suiviobsmer-ui/src/main/webapp/img
by fdesbois@users.labs.libre-entreprise.org 12 Jan '10
by fdesbois@users.labs.libre-entreprise.org 12 Jan '10
12 Jan '10
Author: fdesbois
Date: 2010-01-12 16:38:23 +0000 (Tue, 12 Jan 2010)
New Revision: 187
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowLogImpl.java
trunk/suiviobsmer-ui/src/main/webapp/img/suppr-16px.png
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java
trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml
trunk/suiviobsmer-ui/src/main/webapp/css/common.css
Log:
- Resolve constraint on null SampleMonth inside a SampleRow period (month can be deleted in SampleRowForm)
- Begin SampleRowLog (only for SampleMonth : create, update, delete)
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowLogImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowLogImpl.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowLogImpl.java 2010-01-12 16:38:23 UTC (rev 187)
@@ -0,0 +1,37 @@
+
+package fr.ifremer.suiviobsmer.entity;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * SampleRowLogImpl
+ *
+ * Created: 12 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class SampleRowLogImpl extends SampleRowLogAbstract implements SampleRowLog {
+
+ //private static final Logger log = LoggerFactory.getLogger(SampleRowLogImpl.class);
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void addChange(String text) {
+ String log = getLogText();
+ if (!StringUtils.isEmpty(log)) {
+ log += "\n";
+ } else {
+ log = "";
+ }
+ log += text;
+ setLogText(log);
+ }
+
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowLogImpl.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
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-12 14:57:02 UTC (rev 186)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-12 16:38:23 UTC (rev 187)
@@ -88,8 +88,28 @@
try {
transaction = rootContext.beginTransaction();
+ SampleRowLogDAO logDAO = SuiviObsmerModelDAOHelper.getSampleRowLogDAO(transaction);
+ SampleRowLog rowLog = logDAO.create(SampleRowLog.COMMENT, row.getComment());
+
boolean newRow = SuiviObsmerContext.prepareTopiaId(SampleRow.class, row);
+ DateFormat dateFormat = new SimpleDateFormat("MM/yyyy");
+
+ SampleRow oldRow = null;
+ Map<String, SampleMonth> oldMonths = new HashMap<String, SampleMonth>();
+ if (!newRow) {
+ // Prepare data for logging or deleting oldMonths
+ TopiaContext transaction2 = rootContext.beginTransaction();
+ SampleRowDAO oldDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction2);
+ oldRow = oldDAO.findByTopiaId(row.getTopiaId());
+ oldRow.getCompany();
+ oldRow.getProfession();
+ for (SampleMonth month : oldRow.getSampleMonth()) {
+ oldMonths.put(month.getTopiaId(), month);
+ }
+ transaction2.closeContext();
+ }
+
if (log.isDebugEnabled()) {
log.debug("new sampleRow : " + newRow);
log.debug("samplRow topiaId : " + row.getTopiaId());
@@ -106,21 +126,33 @@
professionDAO.update(row.getProfession());
}
- // Save program : can't be create if row already exist
- // TODO check program.topiaId exist for an update
-// ProgramDAO programDAO = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
-// boolean newProgram = SuiviObsmerContext.prepareTopiaId(Program.class, row.getProgram());
-// if (log.isDebugEnabled()) {
-// log.debug("create or update program : " + row.getProgram());
-// }
-// programDAO.update(row.getProgram());
+ // Save sampleMonth
+ SampleMonthDAO monthDAO = SuiviObsmerModelDAOHelper.getSampleMonthDAO(transaction);
- // Save sampleMonth : create or update
- SampleMonthDAO monthDAO = SuiviObsmerModelDAOHelper.getSampleMonthDAO(transaction);
+ List<SampleMonth> newMonths = row.getSampleMonth();
+
+ for (SampleMonth oldMonth : oldMonths.values()) {
+ if (!newMonths.contains(oldMonth)) {
+ String date = dateFormat.format(oldMonth.getPeriodDate());
+ // Delete old month : add to log
+ monthDAO.delete(oldMonth);
+ rowLog.addChange("Le mois " + date + " a été supprimé");
+ }
+ }
+
for (SampleMonth month : row.getSampleMonth()) {
- SuiviObsmerContext.prepareTopiaId(SampleMonth.class, month);
- if (log.isDebugEnabled()) {
- log.debug("create or update month : " + month);
+ boolean monthCreated = SuiviObsmerContext.prepareTopiaId(SampleMonth.class, month);
+ String date = dateFormat.format(month.getPeriodDate());
+ if (monthCreated) {
+ // log create month
+ rowLog.addChange("Le mois " + date + " a été créé avec un nombre de marées de " + month.getExpectedTidesValue());
+ } else {
+ SampleMonth oldMonth = oldMonths.get(month.getTopiaId());
+ if (oldMonth.getExpectedTidesValue() != month.getExpectedTidesValue()) {
+ // log change month value
+ rowLog.addChange("Le nombre de marées du mois " + date + " est passé de " +
+ oldMonth.getExpectedTidesValue() + " à " + month.getExpectedTidesValue());
+ }
}
monthDAO.update(month);
}
@@ -141,7 +173,6 @@
// Save sampleRow : create or update
- // TODO check fishingZones must not have change for an update
SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
if (log.isDebugEnabled()) {
log.debug("update row : " + row);
@@ -164,6 +195,7 @@
}
if (log.isDebugEnabled()) {
+ log.debug("Change log : " + rowLog.getLogText());
log.debug("commit transaction !");
}
transaction.commitTransaction();
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
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-12 14:57:02 UTC (rev 186)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-01-12 16:38:23 UTC (rev 187)
@@ -121,6 +121,8 @@
void setupRender() throws SuiviObsmerException {
sampleRow = null;
getSampleRow();
+ sampleMonths = null;
+ getSampleMonths();
professionId = null;
sampleRowForm.clearErrors();
@@ -294,17 +296,21 @@
@Property
private String programId;
- @Property
- private Date month;
+// @Property
+// private Date month;
private PeriodDates period;
+// @Persist
+// private List<Date> months;
+
@Persist
- private List<Date> months;
-
private List<SampleMonth> sampleMonths;
@Property
+ private int monthIndex;
+
+ @Property
private SampleMonth sampleMonth;
@InjectComponent
@@ -316,7 +322,7 @@
@InjectComponent
private Field program;
- private boolean programChanged;
+ private boolean periodChanged;
public SelectModel getProgramSelectModel() throws SuiviObsmerException {
if (programSelectModel == null) {
@@ -332,17 +338,17 @@
return programSelectModel;
}
- public List<Date> getMonths() throws SuiviObsmerException {
- if (months == null) {
- if (log.isDebugEnabled()) {
- log.debug("Reset months list");
- }
- months = getPeriod().getMonths();
- sampleMonths = null;
- getSampleMonths();
- }
- return months;
- }
+// public List<Date> getMonths() throws SuiviObsmerException {
+// if (months == null) {
+// if (log.isDebugEnabled()) {
+// log.debug("Reset months list");
+// }
+// months = getPeriod().getMonths();
+// sampleMonths = null;
+// getSampleMonths();
+// }
+// return months;
+// }
// public Program getProgram() throws SuiviObsmerException {
// return getSampleRow().getProgram();
@@ -360,12 +366,17 @@
public List<SampleMonth> getSampleMonths() throws SuiviObsmerException {
if (sampleMonths == null) {
sampleMonths = new ArrayList<SampleMonth>();
- for (Date currMonth : getMonths()) {
+ for (Date currMonth : getPeriod().getMonths()) {
SampleMonth curr = getSampleRow().getSampleMonth(currMonth);
- if (curr == null) {
- curr = serviceSampling.getNewSampleMonth(currMonth, getSampleRow());
+ if (curr != null) {
+ sampleMonths.add(curr);
+ // If an other period is set
+ } else if (periodChanged) {
+ if (curr != null) {
+ curr = serviceSampling.getNewSampleMonth(currMonth, getSampleRow());
+ }
+ sampleMonths.add(curr);
}
- sampleMonths.add(curr);
}
}
return sampleMonths;
@@ -382,18 +393,15 @@
*/
@Log
void onSelectedFromSearchProgram() throws SuiviObsmerException {
- //Program sampleRowProgram = new ProgramImpl();
if (!StringUtils.isEmpty(programId)) {
- //sampleRowProgram = getProgramSelectModel().findObject(programId);
programName = null;
- period = null;
- months = null;
+// period = null;
+// months = null;
getSampleRow().setProgramName(programId);
- //validateProgram();
// No period in this case ?!?
}
- programChanged = true;
+ edited = true;
}
/**
@@ -404,20 +412,20 @@
*/
@Log
void onSelectedFromRefreshMonths() throws SuiviObsmerException {
- //Program sampleRowProgram = null;
- if (!StringUtils.isEmpty(programName)) {
- // New program
- //sampleRowProgram = new ProgramImpl();
- //sampleRowProgram.setName(programName);
- getSampleRow().setProgramName(programName);
- programId = null;
- }
-
- months = null;
getSampleRow().setPeriod(period);
- programChanged = true;
+ periodChanged = true;
+ // Reset sampleMonths for new period
+ sampleMonths = null;
+ getSampleMonths();
}
+
+ @Log
+ void onSelectedFromDeleteMonth(int index) throws SuiviObsmerException {
+ getSampleMonths().remove(index);
+ edited = true;
+ }
+
/*************************** SAMPLE ROW ***********************************/
private String sampleRowId;
@@ -493,7 +501,7 @@
void onValidateFormFromSampleRowForm() throws SuiviObsmerException {
sampleRowForm.clearErrors();
try {
- // Only for save or programChanged (refreshMonths or searchProgram)
+ // Only for save or periodChanged (refreshMonth)
if (!cancel && !edited) {
if (StringUtils.isEmpty(getSampleRow().getProgramName())) {
sampleRowForm.recordError(program,
@@ -530,8 +538,8 @@
}
}
- // Save profession, fishingZone and boats (from immatriculations) if no programChanged
- if (!programChanged) {
+ // Validate profession, fishingZone and boats (from immatriculations) if no programChanged
+ if (!periodChanged) {
Profession profession = getSampleRow().getProfession();
if (StringUtils.isEmpty(profession.getCodeDCF5())) {
@@ -567,7 +575,12 @@
if (cancel) {
return this;
}
- if (!edited && !programChanged) {
+ if (!edited && !periodChanged) {
+ // Save programName
+ if (!StringUtils.isEmpty(programName)) {
+ getSampleRow().setProgramName(programName);
+ programId = null;
+ }
// Save company
Company company = getCompanySelectModel().findObject(companyId);
Modified: trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-12 14:57:02 UTC (rev 186)
+++ trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-12 16:38:23 UTC (rev 187)
@@ -104,9 +104,14 @@
<div id="so-samplerow-form-months" class="acenter">
<table>
<tr class="firstRow">
- <td t:type="loop" t:source="months" t:value="month" volatile="true">
+ <td t:type="loop" class="acenter" volatile="true" t:source="sampleMonths" t:value="sampleMonth" t:index="monthIndex">
+ <t:output value="sampleMonth.periodDate" format="dateFormat" />
+ <input t:type="submitContext" class="ico16px suppr" t:id="deleteMonth" value="Delete" t:context="monthIndex"
+ title="Supprimer ce mois"/>
+ </td>
+<!-- <td t:type="loop" t:source="months" t:value="month" volatile="true">
<t:output value="month" format="dateFormat" />
- </td>
+ </td>-->
</tr>
<tr>
<td t:type="loop" class="acenter" volatile="true" t:source="sampleMonths" t:value="sampleMonth">
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/common.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-12 14:57:02 UTC (rev 186)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-12 16:38:23 UTC (rev 187)
@@ -113,6 +113,15 @@
vertical-align: top;
}
+input.ico16px {
+ border: 0 none;
+ font-size: 0;
+ width: 16px;
+ height: 16px;
+ cursor: pointer;
+ vertical-align: top;
+}
+
input.save {
background: url(../img/save.png) no-repeat center center;
}
@@ -125,6 +134,10 @@
background: url(../img/add-32px.png) no-repeat center center;
}
+input.suppr {
+ background: url(../img/suppr-16px.png) no-repeat center center;
+}
+
input.search-32px {
background: url(../img/search-32px.png) no-repeat center center;
}
Added: trunk/suiviobsmer-ui/src/main/webapp/img/suppr-16px.png
===================================================================
(Binary files differ)
Property changes on: trunk/suiviobsmer-ui/src/main/webapp/img/suppr-16px.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
1
0
[Suiviobsmer-commits] r186 - 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
by fdesbois@users.labs.libre-entreprise.org 12 Jan '10
by fdesbois@users.labs.libre-entreprise.org 12 Jan '10
12 Jan '10
Author: fdesbois
Date: 2010-01-12 14:57:02 +0000 (Tue, 12 Jan 2010)
New Revision: 186
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/UserProfile.java
Log:
Resolve issue on password managment
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java 2010-01-12 14:33:15 UTC (rev 185)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java 2010-01-12 14:57:02 UTC (rev 186)
@@ -52,7 +52,7 @@
}
public static enum Type {
- IMPORT_ERROR, SELECT_PROBLEM, NOT_EXISTS, OTHER, CONNECTION;
+ IMPORT_ERROR, NOT_EXISTS, ALREADY_EXISTS, SYNTAX, CONNECTION;
}
public Type getType() {
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-12 14:33:15 UTC (rev 185)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java 2010-01-12 14:57:02 UTC (rev 186)
@@ -43,6 +43,8 @@
private static final long serialVersionUID = 1L;
+ protected boolean passwordChanged;
+
/**
* Return the fullName of the user, i.e. fisrtName + lastName.
* @return a String for the user fullName
@@ -64,4 +66,14 @@
return SuiviObsmerContext.convertId(getTopiaId());
}
+ @Override
+ public void setPasswordChanged(boolean changed) {
+ this.passwordChanged = changed;
+ }
+
+ @Override
+ public boolean isPasswordChanged() {
+ return this.passwordChanged;
+ }
+
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-12 14:33:15 UTC (rev 185)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-12 14:57:02 UTC (rev 186)
@@ -90,7 +90,7 @@
TopiaContext transaction = null;
try {
if (!login.contains("@")) {
- throw new SuiviObsmerBusinessException(Type.OTHER, this.getClass(), "Votre identifiant n'est pas un email valide, " +
+ throw new SuiviObsmerBusinessException(Type.SYNTAX, this.getClass(), "Votre identifiant n'est pas un email valide, " +
"veuillez contacter un administrateur pour qu'il puisse changer votre mot de passe.");
}
@@ -138,21 +138,34 @@
transaction = rootContext.beginTransaction();
+ UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
+
+ boolean newUser = SuiviObsmerContext.prepareTopiaId(User.class, user);
+
+ // Check for a new user if login already exists
+ if (newUser) {
+ User existUser = dao.findByLogin(user.getLogin());
+ if (existUser != null) {
+ throw new SuiviObsmerBusinessException(Type.ALREADY_EXISTS, this.getClass(),
+ "Un utilisateur existe déjà avec ce login " + user.getLogin());
+ }
+ }
+
String password = user.getPassword();
if (generatePassword) {
password = SuiviObsmerContext.createRandomString(8);
+ user.setPasswordChanged(true);
if (log.isDebugEnabled()) {
- log.debug("show password : " + password);
+ log.debug("show generated password : " + password);
}
}
+ // For a password set manually by user or generated
+ if (user.isPasswordChanged()) {
+ String passwordEncoded = SuiviObsmerContext.encodeString(password);
+ user.setPassword(passwordEncoded);
+ }
- String passwordEncoded = SuiviObsmerContext.encodeString(password);
- user.setPassword(passwordEncoded);
-
- UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
-
- boolean newUser = SuiviObsmerContext.prepareTopiaId(User.class, user);
dao.update(user);
if (newUser && user.getLogin().contains("@")) {
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-12 14:33:15 UTC (rev 185)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-12 14:57:02 UTC (rev 186)
@@ -21,8 +21,8 @@
package fr.ifremer.suiviobsmer.ui.pages;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.CompanyImpl;
import fr.ifremer.suiviobsmer.entity.User;
@@ -257,11 +257,15 @@
}
if (!StringUtils.isEmpty(password)) {
- String encodedPassword = SuiviObsmerContext.encodeString(password);
- user.setPassword(encodedPassword);
+ user.setPassword(password);
+ user.setPasswordChanged(true);
}
- serviceUser.createUpdateUser(user, generatePassword);
- userId = user.getId();
+ try {
+ serviceUser.createUpdateUser(user, generatePassword);
+ userId = user.getId();
+ } catch (SuiviObsmerBusinessException eee) {
+ layout.getFeedBack().addError(eee.getMessage());
+ }
}
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/UserProfile.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/UserProfile.java 2010-01-12 14:33:15 UTC (rev 185)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/UserProfile.java 2010-01-12 14:57:02 UTC (rev 186)
@@ -21,6 +21,7 @@
package fr.ifremer.suiviobsmer.ui.pages;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceUser;
@@ -84,7 +85,7 @@
return userEditable;
}
- void onSuccessFromUserForm() {
+ void onSuccessFromUserForm() throws SuiviObsmerException {
if (password != null && !password.equals(password2)) {
userForm.recordError("Les deux password ne sont pas identiques, vérifiez la saisie !");
@@ -92,14 +93,15 @@
try {
if (!StringUtils.isEmpty(password)) {
userEditable.setPassword(password);
+ userEditable.setPasswordChanged(true);
}
serviceUser.createUpdateUser(userEditable, false);
layout.getFeedBack().addInfo("Modifications enregistrées avec succès !");
- } catch (SuiviObsmerException eee) {
+ } catch (SuiviObsmerBusinessException eee) {
userForm.recordError(eee.getMessage());
- if (log.isErrorEnabled()) {
- log.error("Error during user save", eee);
- }
+// if (log.isErrorEnabled()) {
+// log.error("Error during user save", eee);
+// }
}
}
}
1
0
12 Jan '10
Author: fdesbois
Date: 2010-01-12 14:33:15 +0000 (Tue, 12 Jan 2010)
New Revision: 185
Removed:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceBoatMock.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceReferentialMock.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingHistoric.java
trunk/suiviobsmer-ui/src/main/webapp/SamplingHistoric.tml
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobal.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/impl/ActivityCalendarImport.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceNewsMock.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.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/base/BusinessUtils.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java
trunk/suiviobsmer-ui/src/main/webapp/Index.tml
trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml
trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
Log:
- Big refactor : Suppress program, all attributes is directly set in SampleRow
- Clean mock : suppress SampleHistoric and add News entity
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobal.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobal.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobal.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -44,6 +44,11 @@
private static final Logger log = LoggerFactory.getLogger(SuiviObsmerGlobal.class);
+ // CREATE UNIQUE INDEX boat_immatriculation_idx ON BOAT(IMMATRICULATION)
+ // CREATE UNIQUE INDEX activitycalendar_idx ON ACTIVITYCALENDAR (BOAT, YEAR)
+ // CREATE UNIQUE INDEX shipowner_idx ON SHIPOWNER (CODE)
+ // CREATE UNIQUE INDEX samplerow_idx ON SAMPLEROW (CODE)
+
/**
* Create a default admin user if no user already exist.
* @throws SuiviObsmerException
Deleted: 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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,153 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-package fr.ifremer.suiviobsmer.entity;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerContext;
-import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.framework.TopiaQuery.Op;
-import java.io.Serializable;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.topia.TopiaContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ProgramImpl
- *
- * Created: 30 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class ProgramImpl extends ProgramAbstract implements Serializable, Program {
-
- private static final Logger log = LoggerFactory.getLogger(ProgramImpl.class);
-
- 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);
-
- return (currentCal.after(getCalendarBegin()) || currentCal.equals(getCalendarBegin())) &&
- (currentCal.before(getCalendarEnd()) || currentCal.equals(getCalendarEnd()));
- }
-
- @Override
- public boolean isStarted() {
- Date current = SuiviObsmerContext.getCurrentDate();
- return current.after(getPeriodBegin()) || current.equals(getPeriodBegin());
- }
-
- @Override
- public boolean isFinished() {
- Date current = SuiviObsmerContext.getCurrentDate();
- return current.after(getPeriodEnd());
- }
-
- @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);
- calendar.set(Calendar.DAY_OF_MONTH, max);
- setPeriodEnd(calendar.getTime());
- }
-
- @Override
- public boolean isValid(Date begin, Date end) {
- Calendar refBegin = new GregorianCalendar();
- refBegin.setTime(begin);
- refBegin.set(Calendar.DAY_OF_MONTH, 1);
-
- Calendar refEnd = new GregorianCalendar();
- refEnd.setTime(end);
- int max = refEnd.getActualMaximum(Calendar.DAY_OF_MONTH);
- refEnd.set(Calendar.DAY_OF_MONTH, max);
-
- return ! (refEnd.before(getCalendarBegin()) || refBegin.after(getCalendarEnd()));
- }
-
- protected Calendar getCalendarBegin() {
- Calendar beginCal = new GregorianCalendar();
- beginCal.setTime(getPeriodBegin());
- return beginCal;
- }
-
- protected Calendar getCalendarEnd() {
- Calendar endCal = new GregorianCalendar();
- endCal.setTime(getPeriodEnd());
- return endCal;
- }
-
- @Override
- public String getNewSampleRowCode() throws SuiviObsmerException {
- TopiaContext transaction = null;
- String result = null;
- if (getPeriodBegin() == null) {
- return result;
- }
- try {
- transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
-
- Calendar begin = getCalendarBegin();
- int year = begin.get(Calendar.YEAR);
-
- SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
- TopiaQuery<SampleRow> query = dao.createQuery().add(SampleRow.CODE, Op.LIKE, year + "_%");
-
- String maxCode = query.executeToString("MAX(" + SampleRow.CODE + ")");
-
- if (log.isDebugEnabled()) {
- log.debug("Max code found : " + maxCode);
- }
-
- String[] part = maxCode.split("_");
- int inc = Integer.parseInt(part[1]) + 1;
- String str = StringUtils.leftPad("" + inc, 2, "0");
- result = year + "_" + str;
-
- transaction.closeContext();
- } catch (Exception eee) {
- SuiviObsmerContext.serviceException(transaction,
- "Impossible de récupérer un nouveau code pour une ligne d'échantillonnage",
- eee);
- }
- return result;
- }
-}
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -54,13 +54,6 @@
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();
@@ -134,10 +127,6 @@
try {
transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
- // sux this.setTopiaContext(transaction) not allowed...
-// this.setTopiaContext(transaction);
-// setRealTidesValue(result);
-
SampleMonthDAO dao = SuiviObsmerModelDAOHelper.getSampleMonthDAO(transaction);
SampleMonth month = dao.findByTopiaId(this.getTopiaId());
month.setRealTidesValue(result);
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -21,6 +21,7 @@
package fr.ifremer.suiviobsmer.entity;
+import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import java.io.Serializable;
import java.util.Calendar;
@@ -28,7 +29,7 @@
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
-import org.nuiton.util.DateUtils;
+import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,27 +51,6 @@
private static final long serialVersionUID = 1L;
/**
- * Get a SampleMonth from the month and year paramater.
- * @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;
- }
- for (SampleMonth curr : getSampleMonth()) {
- if (curr.getPeriodMonth() == month && curr.getPeriodYear() == year) {
- return curr;
- }
- }
- return null;
- }
-
- /**
* Get a SampleMonth from a date. The month and year of the date must correspond to the SampleMonth to get.
* @param date a Date
* @return the SampleMonth if it exists in the SampleMonth list or null either
@@ -205,4 +185,35 @@
month.addRealTideTime(-nbDays);
}
+ @Override
+ public void setPeriod(PeriodDates period) {
+ period.initDayOfMonthExtremities();
+ setPeriodBegin(period.getFromDate());
+ setPeriodEnd(period.getThruDate());
+ }
+
+ @Override
+ public boolean isStarted() {
+ Date current = SuiviObsmerContext.getCurrentDate();
+ return current.after(getPeriodBegin()) || current.equals(getPeriodBegin());
+ }
+
+ @Override
+ public boolean isFinished() {
+ Date current = SuiviObsmerContext.getCurrentDate();
+ return current.after(getPeriodEnd());
+ }
+
+ /**
+ * Check if a SampleMonth is valid for the date in argument.
+ *
+ * @param begin date for testing SampleMonth existence
+ * @return true if a SampleMonth exist for this begin date, false either
+ */
+ @Override
+ public boolean isValid(Date begin) {
+ SampleMonth month = getSampleMonth(begin);
+ return month != null;
+ }
+
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -75,10 +75,6 @@
private static final boolean DISABLED = false;
- // CREATE UNIQUE INDEX boat_immatriculation_idx ON BOAT(IMMATRICULATION)
- // CREATE UNIQUE INDEX activitycalendar_idx ON ACTIVITYCALENDAR (BOAT, YEAR)
- // CREATE UNIQUE INDEX shipowner_idx ON SHIPOWNER (CODE)
-
public class ActivityCalendarKey {
private Boat _boat;
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -186,7 +186,7 @@
SampleRow sampleRow = elligible.getSampleRow();
// SampleRow non closed only
- if (!sampleRow.getProgram().isFinished()) {
+ if (!sampleRow.isFinished()) {
String companyId = sampleRow.getCompany() != null ?
sampleRow.getCompany().getTopiaId() : "";
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -46,7 +46,6 @@
import fr.ifremer.suiviobsmer.entity.ElligibleBoatDAO;
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.Profession;
-import fr.ifremer.suiviobsmer.entity.Program;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.SampleRowDAO;
import fr.ifremer.suiviobsmer.entity.User;
@@ -156,7 +155,7 @@
}
query.add("C." + Contact.VALIDATION_COMPANY, companyValidValues, filter.getCompanyUndefined());
- query.addLoad("user.company", "sampleRow.program", "sampleRow.profession", "sampleRow.company");
+ query.addLoad("user.company", "sampleRow.profession", "sampleRow.company");
if (log.isDebugEnabled()) {
log.debug("Query : " + query);
@@ -173,16 +172,6 @@
}
@Override
- public List<Contact> getAllContacts() throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public List<String> getContactStates() throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
public Contact getNewContact(User user, SampleRow row, Boat boat) {
Contact result = new ContactImpl();
result.setUser(user);
@@ -297,11 +286,10 @@
// SampleRow part
SampleRow row = contact.getSampleRow();
- Program program = row.getProgram();
record[SAMPLING.PLAN_CODE.forContactCsv()] = row.getCode();
- record[SAMPLING.PROGRAMME_CODE.forContactCsv()] = program.getName();
- record[SAMPLING.PROGRAMME_DEBUT.forContactCsv()] = dateFormat.format(program.getPeriodBegin());
- record[SAMPLING.PROGRAMME_FIN.forContactCsv()] = dateFormat.format(program.getPeriodEnd());
+ record[SAMPLING.PROGRAMME_CODE.forContactCsv()] = row.getProgramName();
+ record[SAMPLING.PROGRAMME_DEBUT.forContactCsv()] = dateFormat.format(row.getPeriodBegin());
+ record[SAMPLING.PROGRAMME_FIN.forContactCsv()] = dateFormat.format(row.getPeriodEnd());
record[SAMPLING.PECHE_AUTRE.forContactCsv()] = row.getFishingZonesInfos();
// FishingZone part
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -30,8 +30,6 @@
import fr.ifremer.suiviobsmer.entity.FishingZoneDAO;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.ProfessionDAO;
-import fr.ifremer.suiviobsmer.entity.Program;
-import fr.ifremer.suiviobsmer.entity.ProgramDAO;
import fr.ifremer.suiviobsmer.services.ServiceReferential;
import java.io.InputStream;
import java.nio.charset.Charset;
@@ -125,25 +123,6 @@
}
@Override
- public List<Program> getPrograms() throws SuiviObsmerException {
- TopiaContext transaction = null;
- List<Program> results = new ArrayList<Program>();
- try {
- transaction = rootContext.beginTransaction();
-
- ProgramDAO dao = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
-
- results = dao.findAll();
-
- transaction.closeContext();
- } catch (Exception eee) {
- SuiviObsmerContext.serviceException(transaction,
- "Impossible de charger la liste des programmes", eee);
- }
- return results;
- }
-
- @Override
public List<FishingZone> getFishingZones() throws SuiviObsmerException {
TopiaContext transaction = null;
List<FishingZone> results = new ArrayList<FishingZone>();
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -32,7 +32,6 @@
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;
import fr.ifremer.suiviobsmer.services.ServiceSampling;
@@ -109,12 +108,12 @@
// Save program : can't be create if row already exist
// TODO check program.topiaId exist for an update
- ProgramDAO programDAO = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
- boolean newProgram = SuiviObsmerContext.prepareTopiaId(Program.class, row.getProgram());
- if (log.isDebugEnabled()) {
- log.debug("create or update program : " + row.getProgram());
- }
- programDAO.update(row.getProgram());
+// ProgramDAO programDAO = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
+// boolean newProgram = SuiviObsmerContext.prepareTopiaId(Program.class, row.getProgram());
+// if (log.isDebugEnabled()) {
+// log.debug("create or update program : " + row.getProgram());
+// }
+// programDAO.update(row.getProgram());
// Save sampleMonth : create or update
SampleMonthDAO monthDAO = SuiviObsmerModelDAOHelper.getSampleMonthDAO(transaction);
@@ -196,14 +195,14 @@
// Prepare period dates
period.initDayOfMonthExtremities();
- query.add("S.program.periodBegin", Op.LT, period.getThruDate()).
- add("S.program.periodEnd", Op.GT, period.getFromDate());
+ query.add("S.periodBegin", Op.LT, period.getThruDate()).
+ add("S.periodEnd", Op.GT, period.getFromDate());
// 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);
+ query.addLoad(SampleRow.PROFESSION, SampleRow.COMPANY);
if (log.isDebugEnabled()) {
log.debug("Query : " + query);
@@ -220,6 +219,24 @@
}
@Override
+ public List<String> getPrograms() throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ List<String> results = new ArrayList<String>();
+ try {
+ transaction = rootContext.beginTransaction();
+
+ SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+ results = (List<String>)dao.createQuery().setSelect("DISTINCT " + SampleRow.PROGRAM_NAME).execute();
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible de charger la liste des programmes", eee);
+ }
+ return results;
+ }
+
+ @Override
public List<SampleRow> getSampleRowsForUser(User user) throws SuiviObsmerException {
TopiaContext transaction = null;
List<SampleRow> results = new ArrayList<SampleRow>();
@@ -232,13 +249,13 @@
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
// Only rows which are not finished will be kept
- TopiaQuery<SampleRow> query = dao.createQuery().add("program.periodEnd", Op.GE, current);
+ TopiaQuery<SampleRow> query = dao.createQuery().add(SampleRow.PERIOD_END, Op.GE, current);
if (!user.getAdmin()) {
query.add(SampleRow.COMPANY, user.getCompany());
}
- results = query.addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM).executeToEntityList();
+ results = query.addLoad(SampleRow.PROFESSION).executeToEntityList();
transaction.closeContext();
} catch (Exception eee) {
@@ -249,11 +266,6 @@
}
@Override
- public List<SamplingHistoricRow> getHistoric() throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
public SampleRow getSampleRow(String sampleRowId) throws SuiviObsmerException {
TopiaContext transaction = null;
SampleRow result = null;
@@ -263,16 +275,8 @@
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
result = dao.createQuery().add(TopiaEntity.TOPIA_ID, sampleRowId).
- addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM, SampleRow.COMPANY).
- executeToEntity();
+ addLoad(SampleRow.PROFESSION, SampleRow.COMPANY).executeToEntity();
-// result = dao.findByTopiaId(sampleRowId);
-//
-// // load data
-// result.getCompany();
-// result.getProgram();
-// result.getProfession();
-
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
@@ -304,11 +308,48 @@
}
@Override
+ public String getNewSampleRowCode(Date beginDate) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ String result = null;
+ if (beginDate == null) {
+ return result;
+ }
+ try {
+ transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+
+ Calendar begin = new GregorianCalendar();
+ begin.setTime(beginDate);
+ int year = begin.get(Calendar.YEAR);
+
+ SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+ TopiaQuery<SampleRow> query = dao.createQuery().add(SampleRow.CODE, Op.LIKE, year + "_%");
+
+ String maxCode = query.executeToString("MAX(" + SampleRow.CODE + ")");
+
+ if (log.isDebugEnabled()) {
+ log.debug("Max code found : " + maxCode);
+ }
+
+ String[] part = maxCode.split("_");
+ int inc = Integer.parseInt(part[1]) + 1;
+ String str = StringUtils.leftPad("" + inc, 2, "0");
+ result = year + "_" + str;
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible de récupérer un nouveau code pour une ligne d'échantillonnage",
+ eee);
+ }
+ return result;
+ }
+
+ @Override
public SampleRow getNewSampleRow() {
SampleRow row = new SampleRowImpl();
row.setProfession(new ProfessionImpl());
row.setFishingZone(new ArrayList<FishingZone>());
- row.setProgram(new ProgramImpl());
+ //row.setProgram(new ProgramImpl());
row.setElligibleBoat(new ArrayList<ElligibleBoat>());
row.setSampleMonth(new ArrayList<SampleMonth>());
return row;
@@ -371,10 +412,6 @@
// Replace single number after year by a double one : 2010_1 -> 2010_01
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());
- PeriodDates period = ImportHelper.readPeriod(reader, SAMPLING.PROGRAMME_DEBUT, SAMPLING.PROGRAMME_FIN);
String districts = reader.get(FISHING_ZONE.PECHE_DIVISION.name());
row = dao.findByCode(code);
@@ -387,10 +424,10 @@
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 !");
+// } 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 !");
// Refuse Fishing zones empty
} else if (StringUtils.isEmpty(districts)) {
// if (log.isInfoEnabled()) {
@@ -419,10 +456,6 @@
row.setCompany(company);
}
- // Import program. Creation if not exist
- Program program = importProgram(transaction, programName, period);
- row.setProgram(program);
-
// Import profession. Creation if not exist
Profession profession = importProfession(transaction, reader);
row.setProfession(profession);
@@ -439,9 +472,6 @@
}
transaction.closeContext();
-
-// result[0] = nbImported;
-// result[1] = nbRefused;
} catch (NumberFormatException eee) {
SuiviObsmerContext.serviceException(transaction,
@@ -460,43 +490,6 @@
}
/**
- * Import a program from CSV File from importSamplingPlanCsv method.
- * This program is imported for a new SampleRow line.
- * 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 period the program period
- * @return an existing Program or a new one
- * @throws TopiaException for dao errors
- */
- 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 + " - " + period);
- }
- program = dao.create(Program.NAME, programName);
- } else {
- periodBegin = program.getPeriodBegin();
- periodEnd = program.getPeriodEnd();
- }
-
- 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;
- }
-
- /**
* Import a profession from CSV File from importSamplingPlanCsv method.
* This profession is imported for a new SampleRow line.
* Key value for the profession : codeDCF5, meshSize, size, other.
@@ -593,11 +586,16 @@
String averageStr = reader.get(SAMPLING.PLAN_DUREE_MOY.name()).trim();
averageStr = averageStr.replaceAll(",", ".");
double averageTideTime = Double.parseDouble(averageStr);
+ String programName = reader.get(SAMPLING.PROGRAMME_CODE.name()).trim();
+ PeriodDates period = ImportHelper.readPeriod(reader, SAMPLING.PROGRAMME_DEBUT, SAMPLING.PROGRAMME_FIN);
// Problem : not imported yet ??
sampleRow.setFishingZonesInfos(fishingZoneInfos);
sampleRow.setNbObservants(nbObservants);
sampleRow.setAverageTideTime(averageTideTime);
+ sampleRow.setProgramName(programName);
+ sampleRow.setPeriodBegin(period.getFromDate());
+ sampleRow.setPeriodEnd(period.getThruDate());
// 16 fixed columns : 13 before months and 3 after
final int nbFixedColumns = 16;
@@ -611,13 +609,10 @@
for (int i = firstMonthColumnId; i < lastMonthColumnId; 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 (DateUtils.between(monthDate, program.getPeriodBegin(), program.getPeriodEnd())) {
+ if (monthValue != null && DateUtils.between(monthDate, sampleRow.getPeriodBegin(), sampleRow.getPeriodEnd())) {
SampleMonthDAO dao = SuiviObsmerModelDAOHelper.getSampleMonthDAO(transaction);
SampleMonth month = sampleRow.getSampleMonth(monthDate);
@@ -628,17 +623,15 @@
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 + " _ monthDate=" + monthDate +
- " _ program=" + sampleRow.getProgram());
- }
}
+// else if (monthValue != null) {
+// // exception, outOfBounds month
+// if (log.isErrorEnabled()) {
+// log.error("Month out of bounds : value=" + monthValue + " _ monthDate=" + monthDate +
+// " _ periode=" + sampleRow.getPeriodBegin() + " au " + sampleRow.getPeriodEnd());
+// }
+// }
}
}
Deleted: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceBoatMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceBoatMock.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceBoatMock.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,260 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-package fr.ifremer.suiviobsmer.mock;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.bean.BoatFilter;
-import fr.ifremer.suiviobsmer.bean.CompanyBoatInfos;
-import fr.ifremer.suiviobsmer.entity.*;
-import fr.ifremer.suiviobsmer.services.ServiceBoat;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ServiceBoatMock
- *
- * Created: 16 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class ServiceBoatMock implements ServiceBoat {
-
- protected List<Boat> boats;
-
- private static final Logger log = LoggerFactory.getLogger(ServiceBoatMock.class);
-
- public ServiceBoatMock() {
- loadData();
- }
-
- @Override
- public List<Boat> getAllBoats() throws SuiviObsmerException {
- return boats;
- }
-
- @Override
- public Map<Integer, Boat> getBoatsByFilter(BoatFilter filter) throws SuiviObsmerException {
- Map<Integer, Boat> results = new HashMap<Integer, Boat>();
-
-// // Sector and Facade
-// // 3 -> Cherbourg
-// if (filter.getSectorNum() != null && filter.getSectorNum() == 3) {
-// results.put(898467, boats.get(2));
-// results.put(730818, boats.get(3));
-// // 2 -> Mer Celtique
-// } else if (filter.getSectorNum() != null && filter.getSectorNum() == 2) {
-// results.put(667404, boats.get(4));
-// } else if (!StringUtils.isEmpty(filter.getFacadeName()) &&
-// filter.getFacadeName().equals("Atlantique")) {
-// results.put(898467, boats.get(2));
-// results.put(730818, boats.get(3));
-// } else if (!StringUtils.isEmpty(filter.getFacadeName()) &&
-// filter.getFacadeName().equals("Manche - mer du nord")) {
-// results.put(683423, boats.get(0));
-// results.put(721230, boats.get(1));
-// results.put(667404, boats.get(4));
-// } else {
-// for (Boat boat : boats) {
-// results.put(boat.getImmatriculation(), boat);
-// }
-// }
-
- /*Iterator<Boat> it = results.iterator();
-
- while (it.hasNext()) {
- Boat boat = it.next();
- int imma = boat.getImmatriculation();
-
- if (!StringUtils.isEmpty(boat.getDistrictCode()) && !boat.getDistrictCode().equals(filter.getBoatDistrictCode())) {
- it.remove();
- continue;
- }
- if (imma != 0 && imma != filter.getBoatImmatriculation()) {
- it.remove();
- continue;
- }
- if (!StringUtils.isEmpty(boat.getName()) && !boat.getName().startsWith(filter.getBoatName())) {
- it.remove();
- continue;
- }
-
- // Profession
- if (!StringUtils.isEmpty(filter.getProfessionLibelle()) &&
- filter.getProfessionLibelle().equals("OTB DEF80-90 - Chalutage de fond côtier")) {
- // On éjecte les boat 1, 2 et 3
- if (imma == 721230 || imma == 898467 || imma == 730818) {
- it.remove();
- }
- //results.add(boats.get(0));
- //results.add(boats.get(4));
- } else if (!StringUtils.isEmpty(filter.getProfessionLibelle()) &&
- filter.getProfessionLibelle().equals("PTM DEF - Chalutage pélagique en bœuf à bar")) {
- } else if (!StringUtils.isEmpty(filter.getProfessionLibelle()) &&
- filter.getProfessionLibelle().equals("PTM DEF - Chalutage pélagique en bœuf à poissons")) {
- // On éjecte les boat 0, 2 et 4
- if (imma == 683423 || imma == 898467 || imma == 667404) {
- it.remove();
- }
- //results.add(boats.get(1));
- //results.add(boats.get(3));
- }
- }*/
-
- if (log.isDebugEnabled()) {
- for (Boat boat : results.values()) {
- log.debug("boat : " + boat.getImmatriculation());
- }
- }
-
- return results;
- }
-
- protected void loadData() {
- boats = new ArrayList<Boat>();
-
- // Manche / Brest
- Boat boat0 = new BoatImpl();
- boat0.setName("Auglya");
- boat0.setImmatriculation(683423);
- boat0.setDistrictCode("PL");
- boats.add(boat0);
-
- // Manche / Brest
- Boat boat1 = new BoatImpl();
- boat1.setName("Aventur vad");
- boat1.setImmatriculation(721230);
- boat1.setDistrictCode("PL");
- boats.add(boat1);
-
- // Atlantique / Mer Celtique
- Boat boat2 = new BoatImpl();
- boat2.setName("Ar Laeres");
- boat2.setImmatriculation(898467);
- boat2.setDistrictCode("GV");
- boats.add(boat2);
-
- // Atlantique / Mer Celtique
- Boat boat3 = new BoatImpl();
- boat3.setName("Bara Zur");
- boat3.setImmatriculation(730818);
- boat3.setDistrictCode("GV");
- boats.add(boat3);
-
- // Manche / Cherbourg
- Boat boat4 = new BoatImpl();
- boat4.setName("Le Bel Espoir");
- boat4.setImmatriculation(667404);
- boat4.setDistrictCode("CH");
- boats.add(boat4);
-
- for (int i=0; i<15; i++) {
- Boat boat = new BoatImpl();
- boat.setName("Test pagination " + i);
- boat.setImmatriculation(667405+i);
- boat.setDistrictCode("CH");
- boats.add(boat);
- }
-
- }
-
-// @Override
-// public BoatInfos getBoatInfos(Boat boat, String companyId) throws SuiviObsmerException {
-// BoatInfos infos = new BoatInfosImpl();
-// infos.setBoat(boat);
-//
-// infos.setContactFirstName("Philippe");
-// infos.setContactLastName("Dupond");
-// infos.setContactPhoneNumber("02 41 41 41 41");
-// infos.setDup(1);
-// //infos.setFirstBoardingDate(new Date());
-// //infos.setNbBoarding(18);
-// //infos.setNbBoardingForCompany(5);
-//
-// List<String> professions = new ArrayList<String>();
-// professions.add("PTM DEF - Chalutage pélagique en bœuf à bar");
-// professions.add("OTB DEF80-90 - Chalutage de fond côtier");
-// //infos.setProfessionLibelles(professions);
-//
-// infos.setComment("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis sapien sed nisi consequat tempus. " +
-// "Donec interdum egestas erat, varius viverra nisi sollicitudin ut. Aenean viverra luctus urna. Fusce et erat " +
-// "ut sem ornare pretium. Phasellus sit amet est erat. Donec fringilla auctor elit ac aliquet. Maecenas quis orci " +
-// "dolor, et semper turpis. Suspendisse sit amet euismod libero. Duis in lorem augue, at feugiat est. Aliquam ");
-//
-// return infos;
-// }
-
- @Override
- public int[] importBoatCsv(InputStream input) throws SuiviObsmerException {
- return new int[]{0,0};
- }
-
- @Override
- public List<Boat> getBoats(String immatriculations) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public CompanyBoatInfos getCompanyBoatInfos(int boatImmatriculation, Company company) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Boat getBoat(String boatId) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void createUpdateCompanyBoatInfos(CompanyBoatInfos elligibleBoatsCompany) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void importActivityCalendarCsv(InputStream input) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public ActivityCalendar getLastActivityCalendar(Boat boat) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public InputStream getActivityCalendarLogFile() throws FileNotFoundException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public List<String> getBoatNamesStartWith(String input) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
-}
Deleted: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,276 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-package fr.ifremer.suiviobsmer.mock;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.bean.ContactFilter;
-import fr.ifremer.suiviobsmer.entity.Boat;
-import fr.ifremer.suiviobsmer.entity.Contact;
-import fr.ifremer.suiviobsmer.entity.ContactImpl;
-import fr.ifremer.suiviobsmer.entity.SampleRow;
-import fr.ifremer.suiviobsmer.entity.User;
-import fr.ifremer.suiviobsmer.services.ServiceContact;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * ServiceContactMock
- *
- * Created: 18 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class ServiceContactMock implements ServiceContact {
-
- private List<Contact> contacts;
-
- public ServiceContactMock() {
- loadData();
- }
-
- @Override
- public Map<String, Contact> getContactsByFilter(ContactFilter filter) throws SuiviObsmerException {
- Map<String, Contact> results = new HashMap<String, Contact>();
- for (Contact contact : contacts) {
- results.put(contact.getTopiaId(), contact);
- }
- return results;
- }
-
- @Override
- public List<Contact> getAllContacts() throws SuiviObsmerException {
- return contacts;
- }
-
- @Override
- public List<String> getContactStates() throws SuiviObsmerException {
- List<String> states = new ArrayList<String>();
-
- states.add("Contact pris");
- states.add("Embarquement prévu");
- states.add("Embarquement réalisé");
- states.add("Injoignable/Indisponible");
- states.add("Refus");
- states.add("Refus définitif");
-
- return states;
- }
-
- private void loadData() {
- contacts = new ArrayList<Contact>();
-//
-// /*Boat boat0 = new BoatImpl();
-// boat0.setName("Auglya");
-// boat0.setImmatriculation(683423);
-// boat0.setDistrictCode("PL");*/
-//
-// // Atlantique / Mer Celtique
-// /*Boat boat2 = new BoatImpl();
-// boat2.setName("Ar Laeres");
-// boat2.setImmatriculation(898467);
-// boat2.setDistrictCode("GV");*/
-//
-// Facade atlantique = new Facade();
-// atlantique.setName("Atlantique");
-// atlantique.setSector(new ArrayList<Sector>());
-// Facade nord = new Facade();
-// nord.setName("Manche - mer du nord");
-// nord.setSector(new ArrayList<Sector>());
-//
-// Sector sector3 = new Sector();
-// sector3.setNum(3);
-// sector3.setName("Secteur Mer Celtique et Ouest Irlande centré Pays bigouden");
-// sector3.setFacade(atlantique);
-// atlantique.addSector(sector3);
-//
-// /** CONTACT1 **/
-// Contact contact1 = new ContactImpl();
-// Calendar cal = new GregorianCalendar();
-// cal.set(2009, 6, 18);
-// contact1.setCreationDate(cal.getTime());
-// contact1.setId("contact1");
-//
-// ContactHistoric historic = new ContactHistoric();
-// historic.setState("Contact pris");
-// historic.setComment("begin");
-// historic.setUpdateDate(cal.getTime());
-// historic.setContact(contact1);
-// contact1.setContactHistoric(new ArrayList<ContactHistoric>());
-// contact1.addContactHistoric(historic);
-// contact1.setCurrentState(historic);
-//
-// contact1.setBoatName("Auglya");
-// contact1.setBoatImmatriculation(683423);
-// contact1.setBoatDistrictCode("PL");
-// contact1.setProgramName("DCR");
-// contact1.setSector(sector3);
-// contact1.setCompanyName("COFREPECHE");
-//
-// cal.set(2009, 6, 24);
-// contact1.setBeginTideDate(cal.getTime());
-// contact1.setEndTideDate(cal.getTime());
-// contact1.setNbObservants(1);
-// contact1.setNbReports(2);
-// contact1.setValidationCompany(true);
-// contact1.setValidationIfremer(false);
-// contact1.setMammalsObservation(true);
-// contact1.setCreatedBy("Jean Michmuche");
-//
-// contacts.add(contact1);
-//
-// /** CONTACT2 **/
-// Contact contact2 = new Contact();
-// cal = new GregorianCalendar();
-// cal.set(2009, 6, 18);
-// contact2.setCreationDate(cal.getTime());
-// contact2.setId("contact2");
-//
-// historic = new ContactHistoric();
-// historic.setState("Embarquement réalisé");
-// historic.setComment("plop");
-// historic.setUpdateDate(cal.getTime());
-// historic.setContact(contact2);
-// contact2.setContactHistoric(new ArrayList<ContactHistoric>());
-// contact2.addContactHistoric(historic);
-// contact2.setCurrentState(historic);
-//
-// contact2.setBoatName("Ar Laeres");
-// contact2.setBoatImmatriculation(898467);
-// contact2.setBoatDistrictCode("GV");
-// contact2.setProgramName("DCR");
-// contact2.setSector(sector3);
-// contact2.setCompanyName("COFREPECHE");
-//
-// cal.set(2009, 6, 24);
-// contact2.setBeginTideDate(cal.getTime());
-// contact2.setEndTideDate(cal.getTime());
-// contact2.setNbObservants(2);
-// contact2.setEditable(true);
-// contact2.setValidationCompany(false);
-// contact2.setCreatedBy("Bart Simpson");
-//
-// contacts.add(contact2);
-//
-// Sector sector1 = new Sector();
-// sector1.setNum(1);
-// sector1.setName("Secteur du Havre à Dunkerque centré sur Boulogne");
-// sector1.setFacade(nord);
-// nord.addSector(sector1);
-//
-// /** CONTACT3 **/
-// Contact contact3 = new Contact();
-// cal = new GregorianCalendar();
-// cal.set(2009, 6, 18);
-// contact3.setCreationDate(cal.getTime());
-// contact3.setId("contact3");
-//
-// historic = new ContactHistoric();
-// historic.setState("Contact pris");
-// historic.setComment("begin");
-// historic.setUpdateDate(cal.getTime());
-// historic.setContact(contact3);
-// contact3.setContactHistoric(new ArrayList<ContactHistoric>());
-// contact3.addContactHistoric(historic);
-// contact3.setCurrentState(historic);
-//
-// contact3.setBoatName("Ar Laeres");
-// contact3.setBoatImmatriculation(898467);
-// contact3.setBoatDistrictCode("GV");
-// contact3.setProgramName("DCR");
-// contact3.setSector(sector1);
-// contact2.setCompanyName("Océanic Développement");
-// contact3.setValidationCompany(true);
-// contact3.setValidationIfremer(true);
-// contact3.setMammalsCapture(true);
-// contact3.setMammalsObservation(true);
-//
-// contact3.setNbObservants(1);
-// contact3.setEditable(true);
-// contact3.setCreatedBy("Homer Simpson");
-//
-// contacts.add(contact3);
-//
-// /** 40 others CONTACT **/
-// for (int i=0; i < 40; i++) {
-// ContactHistoric historic1 = new ContactHistoric();
-// historic1.setState("Contact pris");
-// historic1.setComment("begin");
-// Contact contact = new Contact();
-// cal = new GregorianCalendar();
-// cal.set(2009, 6, 18);
-// contact.setCreationDate(cal.getTime());
-// contact.setId("contact-"+i);
-// historic1.setUpdateDate(cal.getTime());
-// historic1.setContact(contact);
-// contact.setContactHistoric(new ArrayList<ContactHistoric>());
-// contact.addContactHistoric(historic1);
-// contact.setCurrentState(historic1);
-// contact.setBoatName("Auglya");
-// contact.setBoatImmatriculation(683423);
-// contact.setBoatDistrictCode("PL");
-// contact.setProgramName("DCR");
-// contact.setCompanyName("COFREPECHE");
-// contact.setSector(sector3);
-// contact.setNbObservants(1);
-// contact.setCreatedBy("Jean Michmuche");
-// contacts.add(contact);
-// }
- }
-
- @Override
- public Contact getNewContact(User user, SampleRow row, Boat boat) {
-// Contact contact = new Contact();
-// ContactHistoric historic = new ContactHistoric();
-// contact.setCurrentState(historic);
-// historic.setContact(contact);
-// contact.setContactHistoric(new ArrayList<ContactHistoric>());
-// contact.addContactHistoric(historic);
-// return contact;
- return new ContactImpl();
- }
-
- @Override
- public void saveContact(Contact contact, boolean delete) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public InputStream exportContactCsv(User user, Collection<Contact> contacts) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public int importContactCsv(User user, InputStream input) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
-
-
-}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceNewsMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceNewsMock.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceNewsMock.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -22,7 +22,8 @@
package fr.ifremer.suiviobsmer.mock;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.dto.News;
+import fr.ifremer.suiviobsmer.entity.News;
+import fr.ifremer.suiviobsmer.entity.NewsImpl;
import fr.ifremer.suiviobsmer.services.ServiceNews;
import java.util.ArrayList;
import java.util.Date;
@@ -51,8 +52,8 @@
Integer[] tab = new Integer[12];
- News news = new News();
- news.setDate(new Date());
+ News news = new NewsImpl();
+ news.setTopiaCreateDate(new Date());
news.setTitle("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis sapien sed nisi consequat tempus");
news.setContent("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis sapien sed nisi consequat tempus. " +
"Donec interdum egestas erat, varius viverra nisi sollicitudin ut. Aenean viverra luctus urna. Fusce et erat " +
@@ -74,8 +75,8 @@
results.add(news);
- news = new News();
- news.setDate(new Date());
+ news = new NewsImpl();
+ news.setTopiaCreateDate(new Date());
news.setTitle("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis sapien sed nisi consequat tempus");
news.setContent("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis sapien sed nisi consequat tempus. " +
"Donec interdum egestas erat, varius viverra nisi sollicitudin ut. Aenean viverra luctus urna. Fusce et erat " +
Deleted: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceReferentialMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceReferentialMock.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceReferentialMock.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,170 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-package fr.ifremer.suiviobsmer.mock;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.dto.Facade;
-import fr.ifremer.suiviobsmer.dto.Sector;
-import fr.ifremer.suiviobsmer.entity.FishingZone;
-import fr.ifremer.suiviobsmer.entity.FishingZoneImpl;
-import fr.ifremer.suiviobsmer.entity.Profession;
-import fr.ifremer.suiviobsmer.entity.ProfessionImpl;
-import fr.ifremer.suiviobsmer.entity.Program;
-import fr.ifremer.suiviobsmer.services.ServiceReferential;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ServiceReferentialMock
- *
- * Created: 16 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class ServiceReferentialMock implements ServiceReferential {
-
-
- @Override
- public List<FishingZone> getFishingZones() throws SuiviObsmerException {
- List<FishingZone> results = new ArrayList<FishingZone>();
-
- FishingZone fishingZone = new FishingZoneImpl();
- fishingZone.setFacadeName("Manche - mer du nord");
- fishingZone.setSectorName("Secteur du Havre à Dunkerque centré sur Boulogne");
- fishingZone.setDistrictCode("VII");
- fishingZone.setTopiaId("fishingZone1");
- results.add(fishingZone);
-
- fishingZone = new FishingZoneImpl();
- fishingZone.setFacadeName("Manche - mer du nord");
- fishingZone.setSectorName("Secteur Cherbourg Honfleur centré sur Port-en-Bessin");
- fishingZone.setDistrictCode("VIId");
- fishingZone.setTopiaId("fishingZone2");
- results.add(fishingZone);
-
- fishingZone = new FishingZoneImpl();
- fishingZone.setFacadeName("Atlantique");
- fishingZone.setSectorName("Secteur Mer Celtique et Ouest Irlande centré Pays bigouden");
- fishingZone.setDistrictCode("VIIe");
- fishingZone.setTopiaId("fishingZone3");
- results.add(fishingZone);
-
- return results;
- }
-
- @Override
- public List<String> getFacades() throws SuiviObsmerException {
- List<Facade> facades = new ArrayList<Facade>();
-
-// Facade nord = new Facade();
-// nord.setName("Manche - mer du nord");
-// facades.add(nord);
-//
-// Facade atlantique = new Facade();
-// atlantique.setName("Atlantique");
-// facades.add(atlantique);
-//
-// List<Sector> nordSectors = new ArrayList<Sector>();
-// nord.setSector(nordSectors);
-// Sector sector1 = new Sector();
-// sector1.setNum(1);
-// sector1.setName("Secteur du Havre à Dunkerque centré sur Boulogne");
-// //sector1.setCompanyName("Océanic Développement");
-// nordSectors.add(sector1);
-//
-// Sector sector2 = new Sector();
-// sector2.setNum(2);
-// sector2.setName("Secteur Cherbourg Honfleur centré sur Port-en-Bessin");
-// //sector2.setCompanyName("COFREPECHE");
-// nordSectors.add(sector2);
-//
-// List<Sector> atlantiqueSectors = new ArrayList<Sector>();
-// atlantique.setSector(atlantiqueSectors);
-//
-// Sector sector3 = new Sector();
-// sector3.setNum(3);
-// sector3.setName("Secteur Mer Celtique et Ouest Irlande centré Pays bigouden");
-// //sector3.setCompanyName("COFREPECHE");
-// atlantiqueSectors.add(sector3);
-//
-// return facades;
- return new ArrayList<String>();
- }
-
- @Override
- public List<Profession> getProfessions() throws SuiviObsmerException {
- List<Profession> results = new ArrayList<Profession>();
-
- Profession profession = new ProfessionImpl();
- profession.setCodeDCF5("OTB DEF");
- profession.setMeshSize("<18m");
- profession.setLibelle("Chalutage de fond côtier");
- profession.setTopiaId("profession1");
- results.add(profession);
-
- profession = new ProfessionImpl();
- profession.setCodeDCF5("PTM DEF");
- profession.setLibelle("Chalutage pélagique en bœuf à poissons");
- profession.setTopiaId("profession2");
- results.add(profession);
-
- profession = new ProfessionImpl();
- // other code for name already exist for other profession
- profession.setCodeDCF5("OTB DEF");
- profession.setSize("80-90");
- profession.setLibelle("Chalutage de fond côtier");
- profession.setTopiaId("profession3");
- results.add(profession);
-
- profession = new ProfessionImpl();
- // other name for code already exist for other profession
- profession.setCodeDCF5("PTM DEF");
- profession.setLibelle("Chalutage pélagique en bœuf à bar");
- profession.setTopiaId("profession4");
- results.add(profession);
-
-
- return results;
- }
-
-
- @Override
- public int importFishingZoneCsv(InputStream input) throws SuiviObsmerException {
- return 0;
- }
-
- @Override
- public List<Program> getPrograms() throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public List<String> getSectors(String facadeName) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
-}
Deleted: 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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,269 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-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;
-import fr.ifremer.suiviobsmer.entity.Company;
-import fr.ifremer.suiviobsmer.entity.Profession;
-import fr.ifremer.suiviobsmer.entity.SampleMonth;
-import fr.ifremer.suiviobsmer.entity.SampleRow;
-import fr.ifremer.suiviobsmer.entity.SampleRowImpl;
-import fr.ifremer.suiviobsmer.entity.User;
-import fr.ifremer.suiviobsmer.services.ServiceSampling;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Calendar;
-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;
-
-/**
- * ServiceSamplingMock
- *
- * Created: 10 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class ServiceSamplingMock implements ServiceSampling {
-
- private static final Logger log = LoggerFactory.getLogger(ServiceSamplingMock.class);
-
- @Override
- public List<SampleRow> getSampleRowsOrderedByFishingZone(PeriodDates period, Company company) throws SuiviObsmerException {
- return new ArrayList<SampleRow>();
- }
-
- /*@Override
- public List<Facade> getSampleRowsByFacade() throws SuiviObsmerException {
- List<Facade> results = new ArrayList<Facade>();
-
- Facade nord = new Facade();
- nord.setName("Fileyeurs et chalutiers de Manche - mer du nord");
- results.add(nord);
- List<Sector> nordSectors = new ArrayList<Sector>();
- nord.setSector(nordSectors);
-
- Sector sector1 = new Sector();
- sector1.setNum(1);
- sector1.setName("Secteur du Havre à Dunkerque centré sur Boulogne");
- nordSectors.add(sector1);
-
- List<SampleRowDTO> sector1Rows = new ArrayList<SampleRowDTO>();
- sector1.setSampleRowDTO(sector1Rows);
- SampleRowDTO row1 = createOneRow("Océanic Développement");
- sector1Rows.add(row1);
- row1 = createOneRow("Océanic Développement");
- row1.setProgramName("FEP Cabillaud");
- row1.setEditable(true);
- sector1Rows.add(row1);
- row1 = createOneRow("Océanic Développement");
- sector1Rows.add(row1);
- row1 = createOneRow("Océanic Développement");
- sector1Rows.add(row1);
- row1 = createOneRow("Océanic Développement");
- sector1Rows.add(row1);
- row1 = createOneRow("Océanic Développement");
- row1.setProgramName("FEP Cabillaud");
- sector1Rows.add(row1);
- row1 = createOneRow("Océanic Développement");
- sector1Rows.add(row1);
- row1 = createOneRow("Océanic Développement");
- sector1Rows.add(row1);
-
- Sector sector2 = new Sector();
- sector2.setNum(2);
- sector2.setName("Secteur Cherbourg Honfleur centré sur Port-en-Bessin");
- nordSectors.add(sector2);
-
- List<SampleRowDTO> sector2Rows = new ArrayList<SampleRowDTO>();
- sector2.setSampleRowDTO(sector2Rows);
- SampleRowDTO row2 = createOneRow("COFREPECHE");
- sector2Rows.add(row2);
- row2 = createOneRow("COFREPECHE");
- row2.setProgramName("FEP Cabillaud");
- sector2Rows.add(row2);
- row2 = createOneRow("COFREPECHE");
- sector2Rows.add(row2);
- row2 = createOneRow("COFREPECHE");
- row2.setEditable(true);
- sector2Rows.add(row2);
- row2 = createOneRow("COFREPECHE");
- sector2Rows.add(row2);
-
- Facade atlantique = new Facade();
- atlantique.setName("Chalutiers et fileyeurs Atlantique");
- results.add(atlantique);
- List<Sector> atlantiqueSectors = new ArrayList<Sector>();
- atlantique.setSector(atlantiqueSectors);
-
- Sector sector3 = new Sector();
- sector3.setNum(3);
- sector3.setName("Secteur Mer Celtique et Ouest Irlande centré Pays bigouden");
- atlantiqueSectors.add(sector3);
-
- List<SampleRowDTO> sector3Rows = new ArrayList<SampleRowDTO>();
- sector3.setSampleRowDTO(sector3Rows);
- SampleRowDTO row3 = createOneRow("COFREPECHE");
- sector1Rows.add(row3);
- row3 = createOneRow("COFREPECHE");
- sector3Rows.add(row3);
- row3 = createOneRow("COFREPECHE");
- sector3Rows.add(row3);
- row3 = createOneRow("COFREPECHE");
- sector3Rows.add(row3);
-
- return results;
- }*/
-
- private SampleRowDTO createOneRow(String companyName) {
- SampleRowDTO row1 = new SampleRowDTO();
- row1.setCompanyName(companyName);
- row1.setProfessionName("Chalutage de fond côtier");
- row1.setProfessionCode("OTB DEF<18m");
- row1.setYear(2009);
-
- row1.setNbTidesExpectedByMonth(4, 3); // mai
- row1.setNbTidesExpectedByMonth(5, 2);
- row1.setNbTidesExpectedByMonth(6, 3);
- row1.setNbTidesExpectedByMonth(7, 2);
- row1.setNbTidesExpectedByMonth(8, 3);
- row1.setNbTidesExpectedByMonth(9, 2);
- row1.setNbTidesExpectedByMonth(10, 3);
- row1.setNbTidesExpectedByMonth(11, 2); // decembre
- setTotalTidesExpected(row1);
-
- row1.setNbTidesRealByMonth(4, 1); // mai
- row1.setNbTidesRealByMonth(5, 2);
- row1.setNbTidesRealByMonth(6, 4); // juillet
- setTotalTidesReal(row1);
-
- row1.setNbTechnicians(2);
- return row1;
- }
-
- private void setTotalTidesExpected(SampleRowDTO row) {
- int total = 0;
- Integer[] tab = row.getNbTidesExpectedByMonth();
- for (int i = 0; i < tab.length; i++) {
- total += tab[i] != null ? tab[i] : 0;
- }
- row.setTotalTidesExpected(total);
- }
-
- private void setTotalTidesReal(SampleRowDTO row) {
- int total = 0;
- Integer[] tab = row.getNbTidesRealByMonth();
- for (int i = 0; i < tab.length; i++) {
- total += tab[i] != null ? tab[i] : 0;
- }
- row.setTotalTidesReal(total);
- }
-
- @Override
- public List<SamplingHistoricRow> getHistoric() throws SuiviObsmerException {
- List<SamplingHistoricRow> historic = new ArrayList<SamplingHistoricRow>();
-
- Calendar cal = new GregorianCalendar();
-
- SamplingHistoricRow samplingHistoric = new SamplingHistoricRow();
- cal.set(2009, 6, 24, 0, 0, 0);
- samplingHistoric.setChangeDate(cal.getTime());
- samplingHistoric.setComment("Troisième changement ca a mal tourné !!");
- samplingHistoric.setStaticSamplingUrl("2009-histo-3.html");
-
- historic.add(samplingHistoric);
-
- samplingHistoric = new SamplingHistoricRow();
- cal.set(2009, 4, 18, 0, 0, 0);
- samplingHistoric.setChangeDate(cal.getTime());
- samplingHistoric.setComment("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis sapien sed nisi consequat tempus. " +
- "Donec interdum egestas erat, varius viverra nisi sollicitudin ut. Aenean viverra luctus urna. Fusce et erat " +
- "ut sem ornare pretium. Phasellus sit amet est erat. Donec fringilla auctor elit ac aliquet. Maecenas quis orci " +
- "dolor, et semper turpis. Suspendisse sit amet euismod libero. Duis in lorem augue, at feugiat est. Aliquam ");
- samplingHistoric.setStaticSamplingUrl("2009-histo-2.html");
-
- historic.add(samplingHistoric);
-
- samplingHistoric = new SamplingHistoricRow();
- cal.set(2009, 1, 2, 0, 0, 0);
- samplingHistoric.setChangeDate(cal.getTime());
- samplingHistoric.setComment("Premier changement ca a mal tourné !!");
- samplingHistoric.setStaticSamplingUrl("2009-histo-1.html");
-
- historic.add(samplingHistoric);
-
- return historic;
- }
-
- @Override
- public SampleRow getSampleRow(String sampleRowId) throws SuiviObsmerException {
- return new SampleRowImpl();
- }
-
- @Override
- public ImportResults importSamplingPlanCsv(InputStream input) throws SuiviObsmerException {
- return new ImportResultsImpl();
- }
-
- @Override
- public void createUpdateSampleRow(SampleRow sampleRow, List<Boat> boats) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public SampleRow getNewSampleRow() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public SampleMonth getNewSampleMonth(Date period, SampleRow row) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public List<SampleRow> getSampleRowsForUser(User user) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void deleteSampleRow(SampleRow sampleRow) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Profession getNewProfession(Profession profession) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
-}
Deleted: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,153 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-package fr.ifremer.suiviobsmer.mock;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.entity.Company;
-import fr.ifremer.suiviobsmer.entity.CompanyImpl;
-import fr.ifremer.suiviobsmer.entity.User;
-import fr.ifremer.suiviobsmer.entity.UserImpl;
-import fr.ifremer.suiviobsmer.services.ServiceUser;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ServiceUserMock
- *
- * Created: 9 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class ServiceUserMock implements ServiceUser {
-
- @Override
- public User connect(String login, String password) throws SuiviObsmerException {
- User jean = getJeanMichmuche();
- User admin = getAdmin();
- if (jean.getLogin().equals(login) && jean.getPassword().equals(password)) {
- return jean;
- } else if (admin.getLogin().equals(login) && admin.getPassword().equals(password)) {
- return admin;
- }
- return null;
- }
-
- @Override
- public void createUpdateUser(User user, boolean generatePassword) throws SuiviObsmerException {
- }
-
- @Override
- public void createUpdateCompany(Company company) throws SuiviObsmerException {
- }
-
- @Override
- public List<Company> getCompanies(boolean activeOnly) throws SuiviObsmerException {
- List<Company> results = new ArrayList<Company>();
- results.add(getIfremer());
- results.add(getTartanpion());
- return results;
- }
-
- private User getJeanMichmuche() {
- User user = new UserImpl();
- user.setLogin("user");
- user.setPassword("password");
- user.setFirstName("Jean");
- user.setLastName("Michmuche");
- Company tartanpion = new CompanyImpl();
- tartanpion.setName("Tartanpion");
- tartanpion.setTopiaId("tartanpion");
- user.setCompany(tartanpion);
- user.setPhoneNumber("04 01 23 14 78");
- //user.setEmail("jmichmuche at tartanpion.fr");
- //user.setId("jm");
- return user;
- }
-
- private User getBartSimpson() {
- User user = new UserImpl();
- user.setLogin("bart at ifremer.fr");
- user.setPassword("password");
- user.setFirstName("Bart");
- user.setLastName("Simpson");
- Company ifremer = new CompanyImpl();
- ifremer.setName("Ifremer");
- ifremer.setTopiaId("ifremer");
- user.setCompany(ifremer);
- //user.setId("bs");
- return user;
- }
-
- private User getAdmin() {
- User user = new UserImpl();
- user.setLogin("admin");
- user.setPassword("password");
- user.setFirstName("Admin");
- Company ifremer = new CompanyImpl();
- ifremer.setName("Ifremer");
- ifremer.setTopiaId("ifremer");
- user.setCompany(ifremer);
- user.setAdmin(true);
- //user.setId("admin");
- return user;
- }
-
- private Company getIfremer() {
- Company company = new CompanyImpl();
- company.setUser(new ArrayList<User>());
- company.setTopiaId("ifremer");
- company.setName("Ifremer");
- company.setPhoneNumber("02 28 24 24 24");
- company.setAddress1("Rue Ile d'yeu");
- company.setCity("Nantes");
- company.setPostalCode(44000);
- User bart = getBartSimpson();
- bart.setCompany(company);
- company.addUser(bart);
- User admin = getAdmin();
- company.addUser(admin);
- admin.setCompany(company);
- return company;
- }
-
- private Company getTartanpion() {
- Company company = new CompanyImpl();
- company.setUser(new ArrayList<User>());
- company.setTopiaId("tartanpion");
- company.setName("Tartanpion");
- company.setCity("Somewhere");
- company.setPostalCode(15020);
- User jean = getJeanMichmuche();
- company.addUser(jean);
- jean.setCompany(company);
- return company;
- }
-
- @Override
- public void forgetPassword(String login) throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -126,7 +126,6 @@
SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
SampleRow row = rowDAO.findByCode("2010_01");
row.getCompany();
- row.getProgram();
row.getProfession();
transaction.closeContext();
Deleted: 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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,212 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-package fr.ifremer.suiviobsmer.entity;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerContext;
-import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
-import fr.ifremer.suiviobsmer.SuiviObsmerRunner;
-import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest;
-import fr.ifremer.suiviobsmer.impl.ServiceSamplingImpl;
-import fr.ifremer.suiviobsmer.services.ServiceSampling;
-import java.io.InputStream;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.nuiton.topia.TopiaContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ProgramImplTest
- *
- * Created: 30 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class ProgramImplTest {
-
- private static SuiviObsmerRunner runner;
-
- private static final Logger log = LoggerFactory.getLogger(ProgramImplTest.class);
-
- public ProgramImplTest() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- runner = new SuiviObsmerRunnerTest();
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() throws Exception {
- runner.start();
- }
-
- @After
- public void tearDown() throws Exception {
- runner.stop();
- }
-
- /**
- * Test of isMonthAndYearIncluded method, of class ProgramImpl.
- */
- @Test
- public void testIsMonthAndYearIncluded() {
- log.info("isMonthAndYearIncluded");
-
- /** PREPARE DATA **/
- Program program = new ProgramImpl();
- program.setName("DPMA-2009");
- program.setPeriodBegin(5, 2009);
- program.setPeriodEnd(3, 2010);
-
- /** EXEC METHOD **/
- // between
- boolean res = program.isMonthAndYearIncluded(8, 2009);
- Assert.assertTrue(res);
- // equals begin
- res = program.isMonthAndYearIncluded(5, 2009);
- Assert.assertTrue(res);
- // equals end
- res = program.isMonthAndYearIncluded(3, 2010);
- Assert.assertTrue(res);
- // before
- res = program.isMonthAndYearIncluded(5, 2008);
- Assert.assertFalse(res);
- // after
- res = program.isMonthAndYearIncluded(5, 2010);
- Assert.assertFalse(res);
- }
-
- /**
- * Test of isStarted method, of class ProgramImpl.
- */
- //@Test
- public void testIsStarted() {
- System.out.println("isStarted");
- }
-
- @Test
- public void testSetPeriodBegin() {
- log.info("setPeriodBegin");
-
- Program program = new ProgramImpl();
- program.setPeriodBegin(5, 2009);
-
- // Décalage d'un mois
- Calendar calendar = new GregorianCalendar(2009,4,1,0,0,0);
- Assert.assertEquals(calendar.getTime(), program.getPeriodBegin());
- }
-
- @Test
- public void testSetPeriodEnd() {
- log.info("setPeriodEnd");
-
- Program program = new ProgramImpl();
- program.setPeriodEnd(3, 2010);
-
- // Décalage d'un mois
- Calendar calendar = new GregorianCalendar(2010,2,31,0,0,0);
- Assert.assertEquals(calendar.getTime(), program.getPeriodEnd());
- }
-
- @Test
- public void testIsValid() {
- log.info("isValid");
-
- Program program = new ProgramImpl();
- program.setPeriodBegin(5, 2009);
- program.setPeriodEnd(3, 2010);
-
- // program included
- Calendar begin = new GregorianCalendar(2000, 0, 1);
- log.debug(begin.getTime().toString());
- Calendar end = new GregorianCalendar(2020, 11, 31);
-
- Assert.assertTrue(program.isValid(begin.getTime(), end.getTime()));
-
- // program after period
- end = new GregorianCalendar(2008, 11, 31);
- Assert.assertFalse(program.isValid(begin.getTime(), end.getTime()));
-
- // program before period
- begin = new GregorianCalendar(2011, 0, 1);
- end = new GregorianCalendar(2020, 11, 31);
- Assert.assertFalse(program.isValid(begin.getTime(), end.getTime()));
-
- }
-
-
- @Test
- public void testGetNewSampleRowCode() throws Exception {
- log.info("getNewSampleRowCode");
-
- /** PREPARE DATA **/
- TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
-
- FishingZoneDAO zoneDAO = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
- 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();
- InputStream input = getClass().getResourceAsStream("/import/echantillonnage.csv");
- serviceSampling.importSamplingPlanCsv(input);
-
- ProgramDAO programDAO = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
- Program program = programDAO.findByName("PPP2010");
- transaction.closeContext();
-
- /** EXEC METHOD **/
-
- String result = program.getNewSampleRowCode();
- Assert.assertEquals("2009_07", result);
-
- // Test regex for replacment in importSamplingPlanCsv
- String code = "2010_1";
- code = code.replaceFirst("_(\\d)$", "_0$1");
- Assert.assertEquals("2010_01", code);
-
- code = "2010_04";
- code = code.replaceFirst("_(\\d)$", "_0$1");
- Assert.assertEquals("2010_04", code);
- }
-
-
-}
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -26,15 +26,19 @@
import fr.ifremer.suiviobsmer.SuiviObsmerRunner;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest;
+import java.util.Calendar;
import java.util.Date;
+import java.util.GregorianCalendar;
import org.junit.After;
import org.junit.AfterClass;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.util.DateUtils;
+import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.*;
@@ -107,28 +111,7 @@
return resultRow;
}
-
- /**
- * Test of getSampleMonth method, of class SampleRowImpl.
- * @throws SuiviObsmerException
- * @throws TopiaException
- */
@Test
- public void testGetSampleMonth() throws SuiviObsmerException, TopiaException {
- log.info("getSampleMonth");
-
- /** PREPARE DATA **/
- SampleRow myRow = prepareData();
-
- /** EXEC METHOD **/
- SampleMonth res = myRow.getSampleMonth(4, 2009);
- assertNotNull(res);
-
- res = myRow.getSampleMonth(5, 2009);
- assertNull(res);
- }
-
- @Test
public void testAddRealTideTime() throws Exception {
log.info("addRealTideTime");
@@ -189,5 +172,4 @@
// result put to 5 : 12 - 7 (diff)
assertEquals(5, result.getRealTidesValue());
}
-
}
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -224,10 +224,8 @@
// Get two SampleRows : 2009_3 & 2010_4
SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
SampleRow row1 = rowDAO.findByCode("2009_03");
- row1.getProgram();
row1.getProfession();
SampleRow row2 = rowDAO.findByCode("2010_04");
- row2.getProgram();
row2.getProfession();
transaction.commitTransaction();
@@ -273,7 +271,6 @@
SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
SampleRow row = rowDAO.findByCode("2010_01");
row.getCompany();
- row.getProgram();
row.getProfession();
transaction.closeContext();
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -37,9 +37,6 @@
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.ProfessionDAO;
import fr.ifremer.suiviobsmer.entity.ProfessionImpl;
-import fr.ifremer.suiviobsmer.entity.Program;
-import fr.ifremer.suiviobsmer.entity.ProgramDAO;
-import fr.ifremer.suiviobsmer.entity.ProgramImpl;
import fr.ifremer.suiviobsmer.entity.SampleMonth;
import fr.ifremer.suiviobsmer.entity.SampleMonthImpl;
import fr.ifremer.suiviobsmer.entity.SampleRow;
@@ -47,10 +44,12 @@
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.entity.UserImpl;
import fr.ifremer.suiviobsmer.services.ServiceBoat;
+import fr.ifremer.suiviobsmer.services.ServiceSampling;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
+import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import org.junit.After;
@@ -61,6 +60,7 @@
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.util.DateUtils;
import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -124,11 +124,6 @@
transaction.closeContext();
// CREATE
- Program program1 = new ProgramImpl();
- program1.setName("DPMA-2009");
- program1.setPeriodBegin(1, 2009);
- program1.setPeriodEnd(3, 2010);
-
Profession profession1 = new ProfessionImpl();
profession1.setCodeDCF5("OORR-BDP");
profession1.setMeshSize(">=18");
@@ -155,7 +150,9 @@
row.setCode("2010_03");
row.setNbObservants(3);
row.setAverageTideTime(2.5);
- row.setProgram(program1);
+ row.setProgramName("DPMA-2009");
+ row.setPeriodBegin(DateUtils.createDate(1, 1, 2009));
+ row.setPeriodEnd(DateUtils.createDate(31, 3, 2010));
row.setProfession(profession1);
row.setSampleMonth(months);
row.setFishingZone(zones);
@@ -166,7 +163,6 @@
service.createUpdateSampleRow(row, boats);
assertNotNull(row.getTopiaId());
assertNotNull(row.getProfession().getTopiaId());
- assertNotNull(row.getProgram().getTopiaId());
SampleRow result = service.getSampleRow(row.getTopiaId());
assertEquals(3, result.getFishingZone().size());
@@ -195,39 +191,43 @@
List<FishingZone> zones = prepareFishingZones(transaction);
- ProgramDAO programDAO = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
+ //Program program1 = programDAO.create(Program.NAME, "DPMA-2009");
+ Date dateBegin1 = DateUtils.createDate(1, 1, 2009);
+ Date dateEnd1 = DateUtils.createDate(1, 3, 2010);
+ PeriodDates period1 = new PeriodDates(dateBegin1, dateEnd1);
- Program program1 = programDAO.create(Program.NAME, "DPMA-2009");
- program1.setPeriodBegin(1, 2009);
- program1.setPeriodEnd(3, 2010);
+ //Program program2 = programDAO.create(Program.NAME, "PPDA-2008");
+ Date dateBegin2 = DateUtils.createDate(1, 1, 2008);
+ Date dateEnd2 = DateUtils.createDate(1, 12, 2008);
+ PeriodDates period2 = new PeriodDates(dateBegin2, dateEnd2);
- Program program2 = programDAO.create(Program.NAME, "PPDA-2008");
- program2.setPeriodBegin(1, 2008);
- program2.setPeriodEnd(12, 2008);
-
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
SampleRow row1 = dao.create();
row1.setCode("2010_01");
row1.addFishingZone(zones.get(2));
- row1.setProgram(program1);
+ row1.setProgramName("DPMA-2009");
+ row1.setPeriod(period1);
SampleRow row2 = dao.create();
row2.setCode("2010_02");
row2.addFishingZone(zones.get(0));
- row2.setProgram(program1);
+ row2.setProgramName("DPMA-2009");
+ row2.setPeriod(period1);
SampleRow row3 = dao.create();
row3.setCode("2010_03");
row3.addFishingZone(zones.get(1));
row3.addFishingZone(zones.get(2));
row3.addFishingZone(zones.get(0));
- row3.setProgram(program2);
+ row3.setProgramName("PPDA-2008");
+ row3.setPeriod(period2);
SampleRow row4 = dao.create();
row4.setCode("2010_04");
row4.addFishingZone(zones.get(0));
- row4.setProgram(program1);
+ row4.setProgramName("DPMA-2009");
+ row4.setPeriod(period1);
transaction.commitTransaction();
@@ -315,17 +315,15 @@
CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
Company company = companyDAO.create(Company.NAME, "TARTANPION");
- ProgramDAO programDAO = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
- Program program = programDAO.create(Program.NAME, "DPMA-2009");
- Calendar calendar = new GregorianCalendar(2009,8,1);
- program.setPeriodBegin(calendar.getTime());
- calendar.set(2010,11,31);
- program.setPeriodEnd(calendar.getTime());
+ Calendar begin = new GregorianCalendar(2009,8,1);
+ Calendar end = new GregorianCalendar(2010,11,31);
SampleRowDAO sampleRowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
SampleRow row = sampleRowDAO.create(
SampleRow.CODE,"2010_178",
SampleRow.COMPANY,company,
- SampleRow.PROGRAM, program);
+ SampleRow.PROGRAM_NAME, "DPMA-2009",
+ SampleRow.PERIOD_BEGIN, begin.getTime(),
+ SampleRow.PERIOD_END, end.getTime());
transaction.commitTransaction();
@@ -417,7 +415,6 @@
SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
SampleRow row = rowDAO.findByCode("2010_01");
row.getProfession();
- row.getProgram();
row.getCompany();
transaction.closeContext();
@@ -470,11 +467,6 @@
/** CHECK VALUES **/
transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
- ProgramDAO programDAO = SuiviObsmerModelDAOHelper.getProgramDAO(transaction);
-
- List<Program> programs = programDAO.findAll();
- assertEquals(4, programs.size());
-
ProfessionDAO professionDAO = SuiviObsmerModelDAOHelper.getProfessionDAO(transaction);
List<Profession> professions = professionDAO.findAll();
@@ -487,9 +479,7 @@
assertEquals(1, row1.getNbObservants());
assertEquals(1.5, row1.getAverageTideTime(), 0.1);
- Program program = row1.getProgram();
- assertNotNull(program);
- assertEquals("MA-2009", program.getName());
+ assertEquals("MA-2009", row1.getProgramName());
Profession profession = row1.getProfession();
assertNotNull(profession);
@@ -506,4 +496,67 @@
transaction.closeContext();
}
+ @Test
+ public void testGetPrograms() throws Exception {
+ /** PREPARE DATA **/
+ TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+
+ FishingZoneDAO zoneDAO = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
+ zoneDAO.create(FishingZone.DISTRICT_CODE, "IId");
+ zoneDAO.create(FishingZone.DISTRICT_CODE, "IV");
+ zoneDAO.create(FishingZone.DISTRICT_CODE, "I");
+
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ companyDAO.create(Company.NAME, "TARTANPION");
+ transaction.commitTransaction();
+ transaction.closeContext();
+
+ InputStream input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+ service.importSamplingPlanCsv(input);
+
+ /** EXEC METHOD **/
+ List<String> programs = service.getPrograms();
+ assertEquals(4, programs.size());
+ }
+
+
+ @Test
+ public void testGetNewSampleRowCode() throws Exception {
+ log.info("getNewSampleRowCode");
+
+ /** PREPARE DATA **/
+ TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+
+ FishingZoneDAO zoneDAO = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
+ 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();
+ InputStream input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+ serviceSampling.importSamplingPlanCsv(input);
+
+ transaction.closeContext();
+
+ /** EXEC METHOD **/
+
+ Calendar begin = new GregorianCalendar(2009, 11, 1);
+
+ String result = service.getNewSampleRowCode(begin.getTime());
+ Assert.assertEquals("2009_07", result);
+
+ // Test regex for replacment in importSamplingPlanCsv
+ String code = "2010_1";
+ code = code.replaceFirst("_(\\d)$", "_0$1");
+ Assert.assertEquals("2010_01", code);
+
+ code = "2010_04";
+ code = code.replaceFirst("_(\\d)$", "_0$1");
+ Assert.assertEquals("2010_04", code);
+ }
+
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -24,7 +24,6 @@
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.Profession;
-import fr.ifremer.suiviobsmer.entity.Program;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -48,7 +47,6 @@
String result = "";
DateFormat dateFormat = new SimpleDateFormat("MM/yyyy");
Profession profession = row.getProfession();
- Program program = row.getProgram();
result += "<strong>Métier : </strong>" + profession.getCodeDCF5();
if (!StringUtils.isEmpty(profession.getMeshSize())) {
result+= " " + profession.getMeshSize();
@@ -63,9 +61,9 @@
if (!StringUtils.isEmpty(profession.getSpecies())) {
result += "<br /><strong>Espèces cibles : </strong>" + profession.getSpecies();
}
- result += "<br /><strong>Programme : </strong>" + program.getName() + " - " +
- "du " + dateFormat.format(program.getPeriodBegin()) +
- " au " + dateFormat.format(program.getPeriodEnd());
+ result += "<br /><strong>Programme : </strong>" + row.getProgramName();
+ result += "<br /><strong>Période : </strong> du " + dateFormat.format(row.getPeriodBegin()) +
+ " au " + dateFormat.format(row.getPeriodEnd());
for (FishingZone zone : row.getFishingZone()) {
result += "<br /><strong>Zone de pêche : </strong>" + zone.getCode();
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -256,7 +256,6 @@
log.debug("User : " + user);
}
- // TODO validation : required : lastName, firstName, login
if (!StringUtils.isEmpty(password)) {
String encodedPassword = SuiviObsmerContext.encodeString(password);
user.setPassword(encodedPassword);
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -34,7 +34,6 @@
import fr.ifremer.suiviobsmer.entity.ElligibleBoat;
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.Profession;
-import fr.ifremer.suiviobsmer.entity.Program;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceBoat;
@@ -458,8 +457,7 @@
public boolean canCreateNewContactFromList() throws SuiviObsmerException {
if (!user.getAdmin() && isSampleRowExists()) {
- Program program = getSampleRow().getProgram();
- if (program.isFinished()) {
+ if (getSampleRow().isFinished()) {
return false;
}
return boat.canCreateContact(user.getCompany());
@@ -612,8 +610,8 @@
public boolean canCreateNewContactFromElligibleBoat() throws SuiviObsmerException {
if (!user.getAdmin() && !isElligibleBoatCompanyActiveFalse()) {
- Program program = elligibleBoat.getSampleRow().getProgram();
- if (program.isFinished()) {
+ SampleRow row = elligibleBoat.getSampleRow();
+ if (row.isFinished()) {
return false;
}
Boat boat = getBoatInfos().getBoat();
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -29,7 +29,6 @@
import fr.ifremer.suiviobsmer.bean.ContactState;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Contact;
-import fr.ifremer.suiviobsmer.entity.Program;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceBoat;
@@ -542,20 +541,19 @@
Date begin = contact.getTideBeginDate();
Date end = contact.getTideEndDate();
Date input = contact.getDataInputDate();
- Program program = contact.getSampleRow().getProgram();
+ SampleRow row = contact.getSampleRow();
DateFormat dateFormat = new SimpleDateFormat("MM/yyyy");
- if (begin != null && !DateUtils.between(begin, program.getPeriodBegin(), program.getPeriodEnd())) {
+ if (begin != null && !row.isValid(begin)) {
contactsForm.recordError(beginDate,
- "La date de début de la marée doit être comprise dans la période du programme : du " +
- dateFormat.format(program.getPeriodBegin()) + " au " + dateFormat.format(program.getPeriodEnd()));
+ "La date de début de la marée doit correspondre à un mois valide (non vide) de la ligne " + row.getCode());
}
- if (end != null && !DateUtils.between(end, program.getPeriodBegin(), program.getPeriodEnd())) {
- contactsForm.recordError(endDate,
- "La date de fin de la marée doit être comprise dans la période du programme : du " +
- dateFormat.format(program.getPeriodBegin()) + " au " + dateFormat.format(program.getPeriodEnd()));
- }
+// if (end != null && !DateUtils.between(end, row.getPeriodBegin(), row.getPeriodEnd())) {
+// contactsForm.recordError(endDate,
+// "La date de fin de la marée doit être comprise dans la période de la ligne : du " +
+// dateFormat.format(row.getPeriodBegin()) + " au " + dateFormat.format(row.getPeriodEnd()));
+// }
if (begin != null && end != null && end.before(begin)) {
contactsForm.recordError(endDate, "La date de fin de la marée ne peut pas être antérieure à celle de début");
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -22,7 +22,7 @@
package fr.ifremer.suiviobsmer.ui.pages;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.dto.News;
+import fr.ifremer.suiviobsmer.entity.News;
import fr.ifremer.suiviobsmer.services.ServiceNews;
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
import java.text.DateFormat;
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -28,8 +28,6 @@
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.ProfessionImpl;
-import fr.ifremer.suiviobsmer.entity.Program;
-import fr.ifremer.suiviobsmer.entity.ProgramImpl;
import fr.ifremer.suiviobsmer.entity.SampleMonth;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.User;
@@ -48,6 +46,8 @@
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.EventContext;
import org.apache.tapestry5.Field;
+import org.apache.tapestry5.OptionModel;
+import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Log;
@@ -56,9 +56,10 @@
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.corelib.components.Form;
+import org.apache.tapestry5.internal.OptionModelImpl;
+import org.apache.tapestry5.internal.SelectModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.runtime.Component;
import org.apache.tapestry5.services.BeanModelSource;
import org.nuiton.util.DateUtils;
import org.nuiton.util.PeriodDates;
@@ -125,7 +126,7 @@
sampleRowForm.clearErrors();
if (!isCreateMode()) {
- programId = getSampleRow().getProgram().getTopiaId();
+ programId = getSampleRow().getProgramName();
} else {
programId = null;
}
@@ -285,7 +286,7 @@
/*************************** PROGRAM & MONTHS *****************************/
@Persist
- private GenericSelectModel<Program> programSelectModel;
+ private SelectModel programSelectModel;
@Property
private String programName;
@@ -317,14 +318,16 @@
private boolean programChanged;
- public GenericSelectModel<Program> getProgramSelectModel() throws SuiviObsmerException {
+ public SelectModel getProgramSelectModel() throws SuiviObsmerException {
if (programSelectModel == null) {
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getPrograms]");
}
- List<Program> programs = serviceReferential.getPrograms();
- programSelectModel = new GenericSelectModel<Program>(programs, Program.class,
- "name", "topiaId", propertyAccess);
+ List<OptionModel> options = new ArrayList<OptionModel>();
+ for (String name : serviceSampling.getPrograms()) {
+ options.add(new OptionModelImpl(name, name));
+ }
+ programSelectModel = new SelectModelImpl(null, options);
}
return programSelectModel;
}
@@ -341,14 +344,14 @@
return months;
}
- public Program getProgram() throws SuiviObsmerException {
- return getSampleRow().getProgram();
- }
+// public Program getProgram() throws SuiviObsmerException {
+// return getSampleRow().getProgram();
+// }
public PeriodDates getPeriod() throws SuiviObsmerException {
if (period == null) {
- Date begin = getProgram().getPeriodBegin();
- Date end = getProgram().getPeriodEnd();
+ Date begin = getSampleRow().getPeriodBegin();
+ Date end = getSampleRow().getPeriodEnd();
period = new PeriodDates(begin, end);
}
return period;
@@ -379,15 +382,16 @@
*/
@Log
void onSelectedFromSearchProgram() throws SuiviObsmerException {
- Program sampleRowProgram = new ProgramImpl();
+ //Program sampleRowProgram = new ProgramImpl();
if (!StringUtils.isEmpty(programId)) {
- sampleRowProgram = getProgramSelectModel().findObject(programId);
+ //sampleRowProgram = getProgramSelectModel().findObject(programId);
programName = null;
period = null;
months = null;
- // Period will be reinitialized from program params
- getSampleRow().setProgram(sampleRowProgram);
+ getSampleRow().setProgramName(programId);
//validateProgram();
+
+ // No period in this case ?!?
}
programChanged = true;
}
@@ -400,61 +404,20 @@
*/
@Log
void onSelectedFromRefreshMonths() throws SuiviObsmerException {
- Program sampleRowProgram = null;
+ //Program sampleRowProgram = null;
if (!StringUtils.isEmpty(programName)) {
// New program
- sampleRowProgram = new ProgramImpl();
- sampleRowProgram.setName(programName);
- getSampleRow().setProgram(sampleRowProgram);
+ //sampleRowProgram = new ProgramImpl();
+ //sampleRowProgram.setName(programName);
+ getSampleRow().setProgramName(programName);
programId = null;
}
months = null;
- getProgram().setPeriodBegin(period.getFromDate());
- getProgram().setPeriodEnd(period.getThruDate());
+ getSampleRow().setPeriod(period);
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");
-// }
-//
-// 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;
@@ -532,13 +495,13 @@
try {
// Only for save or programChanged (refreshMonths or searchProgram)
if (!cancel && !edited) {
- if (StringUtils.isEmpty(getProgram().getName())) {
+ if (StringUtils.isEmpty(getSampleRow().getProgramName())) {
sampleRowForm.recordError(program,
"Vous devez choisir un programme existant ou en créer un nouveau");
}
- Date periodBegin = getProgram().getPeriodBegin();
- Date periodEnd = getProgram().getPeriodEnd();
+ Date periodBegin = getSampleRow().getPeriodBegin();
+ Date periodEnd = getSampleRow().getPeriodEnd();
// Validation for period dates
if (periodBegin == null) {
@@ -584,7 +547,7 @@
boats = serviceBoat.getBoats(immatriculations);
// Update sampleRowCode from program only if changed
} else if (isCreateMode()) {
- String rowCode = getProgram().getNewSampleRowCode();
+ String rowCode = serviceSampling.getNewSampleRowCode(periodBegin);
getSampleRow().setCode(rowCode);
}
}
@@ -605,21 +568,6 @@
return this;
}
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);
@@ -633,17 +581,9 @@
getSampleRow().setSampleMonth(getSampleMonths());
-// try {
-// List<Boat> boats = serviceBoat.getBoats(immatriculations);
-
serviceSampling.createUpdateSampleRow(sampleRow, boats);
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;
Deleted: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingHistoric.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingHistoric.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingHistoric.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,76 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Web Interface
- * Copyright (C) 2009 - 2010 Ifremer
- *
- * 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 Lesser 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/gpl-3.0.html>.
- * ##%*
- */
-
-package fr.ifremer.suiviobsmer.ui.pages;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.dto.SamplingHistoricRow;
-import fr.ifremer.suiviobsmer.services.ServiceSampling;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.List;
-import org.apache.tapestry5.annotations.IncludeStylesheet;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * SamplingHistoric
- *
- * Created: 13 nov. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
- at IncludeStylesheet("context:css/sampling.css")
-public class SamplingHistoric {
-
- @Inject
- private ServiceSampling serviceSampling;
-
- private List<SamplingHistoricRow> historic;
-
- @Property
- private SamplingHistoricRow historicRow;
-
- private DateFormat dateFormat;
-
- public List<SamplingHistoricRow> getHistoric() {
- if (historic == null) {
- try {
- historic = serviceSampling.getHistoric();
- } catch (SuiviObsmerException eee) {
- // errors
- }
- }
- return historic;
- }
-
- public DateFormat getDateFormat() {
- if (dateFormat == null) {
- dateFormat = new SimpleDateFormat("dd/MM/yyyy");
- }
- return dateFormat;
- }
-
-}
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-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -46,7 +46,6 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.upload.services.UploadedFile;
import org.nuiton.util.PeriodDates;
-import fr.ifremer.suiviobsmer.entity.Program;
import org.slf4j.Logger;
/**
@@ -342,11 +341,10 @@
* @param rowIndex index of the row in the table
* @throws SuiviObsmerException for a data problem
*/
- void onActionFromFilterProgramDates(int rowIndex) throws SuiviObsmerException {
+ void onActionFromFilterPeriodDates(int rowIndex) throws SuiviObsmerException {
row = getData().get(rowIndex);
- Program program = row.getProgram();
- period.setFromDate(program.getPeriodBegin());
- period.setThruDate(program.getPeriodEnd());
+ period.setFromDate(row.getPeriodBegin());
+ period.setThruDate(row.getPeriodEnd());
}
void onActionFromDeleteSampleRow(int rowIndex) throws SuiviObsmerException {
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java 2010-01-12 14:33:15 UTC (rev 185)
@@ -195,7 +195,7 @@
@Override
public Object get(Object arg0) {
Contact contact = (Contact)arg0;
- return contact.getSampleRow().getProgram().getName();
+ return contact.getSampleRow().getProgramName();
}
@Override
Modified: trunk/suiviobsmer-ui/src/main/webapp/Index.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Index.tml 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/webapp/Index.tml 2010-01-12 14:33:15 UTC (rev 185)
@@ -2,7 +2,7 @@
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
<t:loop t:source="newsList" value="news">
<div class="item">
- <p class="date">Publiée le <t:output value="news.date" format="dateFormat" /></p>
+ <p class="date">Publiée le <t:output value="news.topiaCreateDate" format="dateFormat" /></p>
<h2>${news.title}</h2>
<p class="content">${news.content}</p>
</div>
Modified: trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-12 14:33:15 UTC (rev 185)
@@ -80,7 +80,7 @@
<!-- DISPLAY PROGRAM -->
<dl class="t-beandisplay">
<dt>Programme</dt>
- <dd>${sampleRow.program.name}</dd>
+ <dd>${sampleRow.programName}</dd>
</dl>
<p:else>
<!-- EDITION PROGRAM -->
@@ -164,165 +164,4 @@
</form>
</t:zone>
-
-<!--
-
- <t:if t:test="createMode">
- <div t:type="zone" t:id="professionZone" class="formPart" id="so-samplerow-form-profession">
- <form t:type="form" t:id="professionForm" t:zone="so-samplerow-form-profession">
- <t:errors />
- <fieldset class="user-form">
- <legend>Métier</legend>
- <div class="select">
- <t:label t:for="professionSelect" /> :
- <input t:type="select" t:id="professionSelect" t:model="professionSelectModel"
- t:value="professionId" />
- <input t:type="submit" class="ico search" t:id="searchProfession" value="Search" title="Afficher les détails de ce métier"/>
- <input t:type="submit" class="ico add" t:id="addNewProfession" value="Ajouter un nouveau métier" />
- </div>
- <div class="t-beaneditor">
- <t:beaneditor t:id="professionEditor" t:object="sampleRow.profession"
- t:include="codeDCF5, meshSize, size, other, libelle, species" />
- </div>
- <div class="t-beaneditor-row aright">
- <input t:type="submit" class="ico save" t:id="saveProfession" value="Save" title="Enregistrer les modifications concernant le métier"/>
- </div>
- </fieldset>
- </form>
- </div>
- <p:else>
- fieldset class="user-form">
- <legend>Métier</legend>
- <div t:type="beandisplay" t:object="sampleRow.profession"
- t:include="codeDCF5, meshSize, size, other, libelle, species" />
- </fieldset
- </p:else>
- </t:if>
- <t:if t:test="createMode">
- <div t:type="zone" t:id="fishingZoneZone" class="formPart" id="so-samplerow-form-fishingzone">
- <form t:type="form" t:id="fishingZoneForm" t:zone="so-samplerow-form-fishingzone">
- <fieldset class="user-form">
- <legend>Zone de pêche</legend>
- <div class="select">
- <t:label t:for="fishingZoneSelect" /> :
- <input t:type="select" t:id="fishingZoneSelect" t:model="fishingZoneSelectModel"
- t:value="fishingZoneId" />
- <input t:type="submit" class="ico add" t:id="addFishingZone" value="Add" title="Ajouter la zone sélectionnée à la ligne d'échantillonnage" />
- </div>
- <div class="clearfix fishingzone-row" t:type="loop" volatile="true" t:source="fishingZones" t:value="fishingZone" t:index="indexFishingZone">
- <div class="fleft width50">
- <input t:type="submitContext" class="ico remove" t:context="indexFishingZone"
- t:id="removeFishingZone" value="Remove" title="Retirer cette zone de la liste liée à la ligne d'échantillonnage"/>
- </div>
- <div class="fleft">
- ${fishingZone.code}
- </div>
- </div>
- <div class="select">
- <t:label t:for="fishingZonesInfos" /> :
- <input t:type="textfield" class="width300" t:id="fishingZonesInfos" value="sampleRow.fishingZonesInfos" />
- </div>
- <div class="t-beaneditor-row aright">
- <input t:type="submit" class="ico save" t:id="saveFishingZones" value="Save" title="Enregistrer les modifications concernant les zones de pêche"/>
- </div>
- </fieldset>
- </form>
- </div>
- TODO else show fishingZone + fishingZoneInfos
- </t:if>
- <div t:type="zone" t:id="periodZone" class="formPart" id="so-samplerow-form-period">
- <form t:type="form" t:id="periodForm" t:zone="so-samplerow-form-period">
- <fieldset class="user-form">
- <legend>Programme et données des marées par mois</legend>
- <div class="select">
- <t:if t:test="createMode">
- <t:label t:for="program"/> :
- <input t:type="select" t:id="program" t:model="programSelectModel" value="programId" />
- <input t:type="submit" class="ico search" t:id="searchProgram" value="Search" title="Afficher les détails du programme"/>
- ou <input t:type="textfield" t:id="programName" value="programName" />
- <p:else>
- Programme : ${sampleRow.program.name}
- </p:else>
- </t:if>
- </div>
- <div class="select">
- <t:label t:for="programPeriod"/> :
- du <input t:type="datefield" t:id="programPeriod" value="period.fromDate" />
- jusqu'au <input t:type="datefield" t:id="programPeriodEnd" value="period.thruDate" />
- <input t:type="submit" class="ico refresh" t:id="refreshMonths" value="Refresh" title="Rafraîchir les mois"/>
- </div>
- <div class="acenter">
- <table id="so-samplerow-form-months">
- <tr class="firstRow">
- <td t:type="loop" t:source="months" t:value="month" volatile="true">
- <t:output value="month" format="dateFormat" />
- </td>
- </tr>
- <tr>
- <td t:type="loop" class="acenter" volatile="true" t:source="sampleMonths" t:value="sampleMonth">
- <input t:type="textfield" class="width40" t:id="sampleMonth" value="sampleMonth.expectedTidesValue" />
- </td>
- </tr>
- </table>
- </div>
- <div class="t-beaneditor-row aright">
- <input t:type="submit" class="ico save" t:id="saveMonths" value="Save" title="Enregistrer le programme et les données des marées par mois"/>
- </div>
- </fieldset>
- </form>
- </div>
- -div t:type="zone" t:id="sampleRowZone" class="formPart" id="so-samplerow-form-other" t:update="show"
- <form t:type="form" t:id="sampleRowForm">
- <fieldset class="user-form">
- <legend>Autres données de la ligne d'échantillonnage</legend>
- <div class="t-beaneditor">
- <t:beaneditor t:id="sampleRowEditor" t:object="sampleRow"
- t:include="code, nbObservants, averageTideTime" t:add="company, boats, comment">
- <p:company>
- <t:label t:for="company" />
- <input t:type="select" t:id="company" t:model="companySelectModel" value="companyId" />
- </p:company>
- <p:boats>
- <t:label t:for="boats" />
- <input t:type="textarea" t:id="boats" cols="50" rows="2" value="immatriculations" />
- </p:boats>
- <p:comment>
- <t:label t:for="comment" />
- <input t:type="textarea" t:id="comment" cols="50" rows="5" value="updateComment" />
- </p:comment>
- </t:beaneditor>
- </div>
- <div class="t-beaneditor-row aright">
- <input t:type="submit" class="ico undo" t:id="cancelSave" value="Undo" title="Annuler toutes les modifications" />
- <input t:type="submit" class="ico save" t:id="saveSampleRow" value="Save" title="Valider les modifications et retourner au plan"/>
- </div>
- </fieldset>
- </form>
- /div
- t:zone t:id="sampleRowZone">
- <form t:type="form" t:id="sampleRowForm" t:zone="sampleRowZone">
- <p>
-
- </p>
- <div class="select">
- </div>
- <div class="select">
- <t:label t:for="nbObservants"/> :
- <input t:type="textfield" t:id="nbObservants" value="sampleRow.nbObservants" />
- </div>
- <div class="select">
- <t:label t:for="averageTideTime"/> :
- <input t:type="textfield" t:id="averageTideTime" value="sampleRow.averageTideTime" />
- </div>
- <p>
-
- </p>
- <p><t:label t:for="comment"/>* :</p>
- <p>
-
- </p>
- <input t:type="submit" class="ico undo" value="Undo" />
- </form>
- </t:zone-->
-
</t:layout>
\ No newline at end of file
Deleted: trunk/suiviobsmer-ui/src/main/webapp/SamplingHistoric.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SamplingHistoric.tml 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/webapp/SamplingHistoric.tml 2010-01-12 14:33:15 UTC (rev 185)
@@ -1,16 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<t:layout t:pageTitle="Historique des plans d'échantillonnage" t:contentId="so-sampling-historic"
- xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-
- <h1>Historique des plans d'échantillonnage</h1>
- <hr />
- <t:loop t:source="historic" t:value="historicRow">
- <div class="row clearfix">
- <p class="date">Changement du <t:output value="historicRow.changeDate" format="dateFormat" /></p>
- <p class="comment">${historicRow.comment}</p>
- <p class="url"><a href="${historicRow.staticSamplingUrl}">Aperçu</a></p>
- </div>
- <hr />
- </t:loop>
-
-</t:layout>
\ No newline at end of file
Modified: trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-12 10:42:35 UTC (rev 184)
+++ trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-12 14:33:15 UTC (rev 185)
@@ -26,12 +26,12 @@
</div>
<t:if t:test="user.admin">
<div class="actions fright">
- <span>
+<!-- <span>
<a t:type="pagelink" t:page="samplingHistoric">
<img src="${asset:context:}/img/clock.png" alt="Historique"
title="Voir l'historique des plans d'échantillonnage"/>
</a>
- </span>
+ </span>-->
<span>
<a t:type="pagelink" t:page="sampleRowForm">
<img src="${asset:context:}/img/add-32px.png" alt="Ajouter" title="Ajouter une nouvelle ligne"/>
@@ -63,8 +63,8 @@
<td>METIER<br />Autre info</td>
<td>METIER<br />Libellé</td>
<td>METIER<br />Espèces cibles</td>
- <td>Début du programme</td>
- <td class="bright">Fin du programme</td>
+ <td>Date de début</td>
+ <td class="bright">Date de fin</td>
<p:else>
<td>METIER<br />Code</td>
<td class="bright">METIER<br />Libellé</td>
@@ -95,13 +95,13 @@
</tr>
</t:if>
<tr class="${parityClass}">
- <td class="bleft">${row.code}</td>
- <td class="width150">
- <a t:type="actionlink" t:id="filterProgramDates" t:context="rowIndex"
- title="Changer les dates de la période par rapport à celles du programme">
- ${row.program.name}
+ <td class="bleft">
+ <a t:type="actionlink" t:id="filterPeriodDates" t:context="rowIndex"
+ title="Changer les dates de la période par rapport à celles de la ligne">
+ ${row.code}
</a>
</td>
+ <td class="width150">${row.programName}</td>
<t:if t:test="user.admin">
<td>${companyName}</td>
</t:if>
@@ -114,8 +114,8 @@
<td>${row.profession.other}</td>
<td>${row.profession.libelle}</td>
<td>${row.profession.species}</td>
- <td><t:output value="row.program.periodBegin" format="dateFormat" /></td>
- <td class="bright"><t:output value="row.program.periodEnd" format="dateFormat" /></td>
+ <td><t:output value="row.periodBegin" format="dateFormat" /></td>
+ <td class="bright"><t:output value="row.periodEnd" format="dateFormat" /></td>
<p:else>
<td>
<span t:type="ck/Tooltip" title="Infos" t:value="prop:row.fishingZonesInfos" t:effect="appear">
1
0
12 Jan '10
Author: fdesbois
Date: 2010-01-12 10:42:35 +0000 (Tue, 12 Jan 2010)
New Revision: 184
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/MD5.java
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.properties
Modified:
trunk/pom.xml
trunk/suiviobsmer-business/pom.xml
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java
trunk/suiviobsmer-business/src/main/resources/SuiviObsmer.properties
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/FeedBack.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml
trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
trunk/suiviobsmer-ui/src/main/webapp/css/main.css
Log:
- Evol #1972 : send email when create a user
- Improve errors for connexion + add MD5 encoding
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/pom.xml 2010-01-12 10:42:35 UTC (rev 184)
@@ -41,6 +41,11 @@
<version>1.8.0</version>
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-email</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
<version>${nuitonutils.version}</version>
Modified: trunk/suiviobsmer-business/pom.xml
===================================================================
--- trunk/suiviobsmer-business/pom.xml 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/pom.xml 2010-01-12 10:42:35 UTC (rev 184)
@@ -27,6 +27,10 @@
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-email</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
</dependency>
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/MD5.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/MD5.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/MD5.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -0,0 +1,59 @@
+/* *##% 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;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * Classe utilitaire permettant d'encoder des chaîne en MD5.
+ *
+ * @version $Id$
+ */
+public class MD5 {
+
+ /**
+ * Encode la chaine passé en paramètre avec l’algorithme MD5
+ *
+ * @param key : la chaine à encoder
+ * @return la valeur (string) hexadécimale sur 32 bits
+ */
+ public static String encode(String key) {
+
+ byte[] uniqueKey = key.getBytes();
+ byte[] hash = null;
+
+ try {
+ // on récupère un objet qui permettra de crypter la chaine
+ hash = MessageDigest.getInstance("MD5").digest(uniqueKey);
+ } catch (NoSuchAlgorithmException e) {
+ throw new Error("no MD5 support in this VM");
+ }
+
+ StringBuffer hashString = new StringBuffer();
+ for (int i = 0; i < hash.length; ++i) {
+ String hex = Integer.toHexString(hash[i]);
+ if (hex.length() == 1) {
+ hashString.append("0");
+ hashString.append(hex.charAt(hex.length() - 1));
+ } else {
+ hashString.append(hex.substring(hex.length() - 2));
+ }
+ }
+ return hashString.toString();
+ }
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/MD5.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -52,7 +52,7 @@
}
public static enum Type {
- IMPORT_ERROR, SELECT_PROBLEM, NOT_EXISTS;
+ IMPORT_ERROR, SELECT_PROBLEM, NOT_EXISTS, OTHER, CONNECTION;
}
public Type getType() {
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -25,9 +25,10 @@
import java.util.Date;
import java.util.Properties;
-import java.util.Random;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.mail.EmailException;
+import org.apache.commons.mail.SimpleEmail;
import org.hibernate.exception.SQLGrammarException;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaContextFactory;
@@ -54,6 +55,9 @@
private static final Logger log = LoggerFactory.getLogger(SuiviObsmerContext.class);
public static final String PROP_FILENAME_LOG_ACTIVITY = "suiviobsmer.log.activityCalendar";
+ public static final String PROP_EMAIL_HOST = "suiviobsmer.email.host";
+ public static final String PROP_EMAIL_PORT = "suiviobsmer.email.port";
+ public static final String PROP_EMAIL_FROM = "suiviobsmer.email.from";
private static SuiviObsmerRunner runner;
@@ -140,7 +144,7 @@
}
public static String encodeString(String string) {
- return string;
+ return MD5.encode(string);
}
public static String convertId(String topiaId) {
@@ -161,4 +165,16 @@
}
return false;
}
+
+ public static void sendEmail(String to, String subject, String msg) throws EmailException {
+ SimpleEmail email = new SimpleEmail();
+ email.setHostName(getProperty(PROP_EMAIL_HOST));
+ email.setSmtpPort(Integer.parseInt(getProperty(PROP_EMAIL_PORT)));
+ email.setFrom(getProperty(PROP_EMAIL_FROM));
+ email.addTo(to);
+ email.setSubject(subject);
+ email.setMsg(msg);
+ email.setCharset("UTF-8");
+ email.send();
+ }
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -21,6 +21,8 @@
package fr.ifremer.suiviobsmer.impl;
+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;
@@ -65,18 +67,17 @@
UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
- user = dao.findByProperties(User.LOGIN, login, User.PASSWORD, password);
+ String passwordEncoded = SuiviObsmerContext.encodeString(password);
+ user = dao.findByProperties(User.LOGIN, login, User.PASSWORD, passwordEncoded);
if (user != null) {
// load company entity
user.getCompany();
+ } else {
+ throw new SuiviObsmerBusinessException(Type.CONNECTION, this.getClass(),
+ "Identifiant ou mot de passe incorrects, veuillez réessayer.");
}
- /*if (user == null) {
- * // FIXME test instanceof dans SuiviObsmerUtils.serviceException
- throw new SuiviObsmerExceptionConnection("Login et/ou password incorrects, veuillez réessayer" ou mail ?)
- }*/
-
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction, "Une erreur est survenue lors de la demande de connexion", eee);
@@ -85,6 +86,49 @@
}
@Override
+ public void forgetPassword(String login) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ try {
+ if (!login.contains("@")) {
+ throw new SuiviObsmerBusinessException(Type.OTHER, this.getClass(), "Votre identifiant n'est pas un email valide, " +
+ "veuillez contacter un administrateur pour qu'il puisse changer votre mot de passe.");
+ }
+
+ transaction = rootContext.beginTransaction();
+
+ UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
+
+ User user = dao.findByLogin(login);
+ if (user == null) {
+ throw new SuiviObsmerBusinessException(Type.NOT_EXISTS, this.getClass(),
+ "L'email '" + login + "' n'est pas référencé dans l'application.");
+ }
+
+ String password = SuiviObsmerContext.createRandomString(8);
+ String passwordEncoded = SuiviObsmerContext.encodeString(password);
+ user.setPassword(passwordEncoded);
+
+ String subject = "[WAO] Mot de passe oublié";
+ String msg = "Bonjour,\n\n" +
+ "\tUn nouveau mot de passe a été généré pour votre identifiant " + login + " :\n" +
+ "\t\t - mot de passe = " + password + "\n\n" +
+ "Vous pouvez modifier votre password en accédant à la page de gestion de votre profile utilisateur.\n\n" +
+ "Cordialement,\n\n" +
+ "L'Equipe WAO";
+
+ SuiviObsmerContext.sendEmail(user.getLogin(), subject, msg);
+ if (log.isDebugEnabled()) {
+ log.debug("send email to : " + user.getLogin());
+ }
+
+ transaction.commitTransaction();
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction, "Impossible de créer ou de mettre à jour l'utilisateur", eee);
+ }
+ }
+
+ @Override
public void createUpdateUser(User user, boolean generatePassword) throws SuiviObsmerException {
TopiaContext transaction = null;
try {
@@ -94,21 +138,38 @@
transaction = rootContext.beginTransaction();
+ String password = user.getPassword();
+
if (generatePassword) {
- String random = SuiviObsmerContext.createRandomString(8);
- String password = SuiviObsmerContext.encodeString(random);
+ password = SuiviObsmerContext.createRandomString(8);
if (log.isDebugEnabled()) {
- log.debug("show password : " + random);
- }
- user.setPassword(password);
+ log.debug("show password : " + password);
+ }
}
+
+ String passwordEncoded = SuiviObsmerContext.encodeString(password);
+ user.setPassword(passwordEncoded);
UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
- SuiviObsmerContext.prepareTopiaId(User.class, user);
+ boolean newUser = SuiviObsmerContext.prepareTopiaId(User.class, user);
dao.update(user);
- // TODO send mail to user.getLogin() if contains @
+ if (newUser && user.getLogin().contains("@")) {
+ String subject = "[WAO] Création de votre compte";
+ String msg = "Bonjour,\n\n" +
+ "\tVous avez été inscris sur le site WAO : Web Applicatif Obsmer. Vos identifiants de connexion sont :\n" +
+ "\t\t - identifiant = " + user.getLogin() + "\n" +
+ "\t\t - mot de passe = " + password + "\n\n" +
+ "Vous pouvez modifier votre mot de passe en accédant à la page de gestion de votre profile utilisateur.\n\n" +
+ "Cordialement,\n\n" +
+ "L'Equipe WAO";
+
+ SuiviObsmerContext.sendEmail(user.getLogin(), subject, msg);
+ if (log.isDebugEnabled()) {
+ log.debug("send email to : " + user.getLogin());
+ }
+ }
transaction.commitTransaction();
transaction.closeContext();
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -145,4 +145,9 @@
jean.setCompany(company);
return company;
}
+
+ @Override
+ public void forgetPassword(String login) throws SuiviObsmerException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
Modified: trunk/suiviobsmer-business/src/main/resources/SuiviObsmer.properties
===================================================================
--- trunk/suiviobsmer-business/src/main/resources/SuiviObsmer.properties 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/src/main/resources/SuiviObsmer.properties 2010-01-12 10:42:35 UTC (rev 184)
@@ -10,4 +10,7 @@
suiviobsmer.log.activityCalendar=log/activity.log
-
+# Config for sending Email
+suiviobsmer.email.host=smtp.free.fr
+suiviobsmer.email.port=25
+suiviobsmer.email.from=admin at suiviobsmer.org
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -98,6 +98,7 @@
company.setName("TARTANPION");
serviceUser.createUpdateCompany(company);
User user = new UserImpl();
+ user.setLogin("user");
user.setFirstName("Jean");
user.setLastName("Michmuche");
user.setCompany(company);
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-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -117,6 +117,7 @@
company.setName("TARTANPION");
serviceUser.createUpdateCompany(company);
User user = new UserImpl();
+ user.setLogin("login");
user.setFirstName("Jean");
user.setLastName("Michmuche");
user.setCompany(company);
@@ -261,6 +262,7 @@
company.setName("TARTANPION");
serviceUser.createUpdateCompany(company);
User user = new UserImpl();
+ user.setLogin("user");
user.setFirstName("Jean");
user.setLastName("Michmuche");
user.setCompany(company);
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/FeedBack.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/FeedBack.java 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/FeedBack.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -55,6 +55,8 @@
/** Messages d'info */
private List<String> infoMessages;
+ private boolean hasErrors;
+
@Inject
private ComponentResources _resources;
@@ -67,6 +69,7 @@
// Rendu des messages d'erreur et vidage de la collection
if (!errorMessages.isEmpty()) {
+ hasErrors = true;
writer.element("div", "class", "fb-error");
for (String message : errorMessages) {
writer.write(message);
@@ -117,4 +120,8 @@
errorMessages.add(message);
}
}
+
+ public boolean hasErrors() {
+ return hasErrors;
+ }
}
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-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java 2010-01-12 10:42:35 UTC (rev 184)
@@ -21,6 +21,7 @@
package fr.ifremer.suiviobsmer.ui.components;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceUser;
@@ -31,11 +32,11 @@
import org.apache.tapestry5.annotations.InjectContainer;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
import org.slf4j.Logger;
/**
@@ -107,6 +108,9 @@
@Property
private String password;
+ @Property
+ private String email;
+
public String getPageTitle() {
return this.pageTitle;
}
@@ -159,20 +163,27 @@
}
@Log
- Object onSuccessFromConnexionForm() {
+ Object onSuccessFromConnexionForm() throws SuiviObsmerException {
try {
- User userForm = serviceUser.connect(login, password);
- if (userForm != null) {
- currentUser = userForm;
- } else {
- connexionFeedback.addError("Erreur de connexion, identifiant ou mot de passe incorrect !");
- }
- } catch (SuiviObsmerException eee) {
- // db error, others, ...
+ currentUser = serviceUser.connect(login, password);
+ } catch (SuiviObsmerBusinessException eee) {
+ connexionFeedback.addError(eee.getMessage());
}
return null;
}
+ public boolean hasConnexionErrors() {
+ return connexionFeedback.hasErrors();
+ }
+ void onSuccessFromForgetPassword() throws SuiviObsmerException {
+ try {
+ serviceUser.forgetPassword(email);
+ connexionFeedback.addInfo("Un email avec votre nouveau mot de passe vous a été envoyé.");
+ } catch (SuiviObsmerBusinessException eee) {
+ connexionFeedback.addError(eee.getMessage());
+ }
+ }
+
@Log
Object onActionFromExit() {
setCurrentUser(null);
Added: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.properties (rev 0)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.properties 2010-01-12 10:42:35 UTC (rev 184)
@@ -0,0 +1,3 @@
+login-label: Identifiant
+password-label: Mot de passe
+email-label: Votre identifiant
\ No newline at end of file
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml 2010-01-12 10:42:35 UTC (rev 184)
@@ -68,6 +68,14 @@
<p:else>
<div id="so-connexion-feedback">
<t:feedback t:id="connexionFeedback" />
+ <t:if t:test="hasConnexionErrors()">
+ <form t:type="form" t:id="forgetPassword">
+ <strong>Mot de passe oublié ?</strong>
+ <t:label t:for="email" /> :
+ <input t:type="textfield" t:id="email" value="email" />
+ <input class="ico accept" t:type="submit" value="Go" title="Envoyez moi un nouveau mot de passe" />
+ </form>
+ </t:if>
</div>
<div class="clearfix" id="so-connexion">
<form t:id="connexionForm" t:type="form">
Modified: trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-12 10:42:35 UTC (rev 184)
@@ -43,6 +43,10 @@
<fieldset class="user-form clearfix">
<form t:type="beaneditform" class="clearfix" t:id="user" t:include="firstName, lastName, login, password, phoneNumber, admin, active">
+ <p:login>
+ <t:label t:for="login" />
+ <input t:type="textfield" t:id="login" value="user.login" t:validate="required" />
+ </p:login>
<p:password>
<t:label t:for="generatePassword" />
<input t:type="checkbox" t:id="generatePassword" value="generatePassword" />
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/main.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/main.css 2010-01-11 17:32:18 UTC (rev 183)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/main.css 2010-01-12 10:42:35 UTC (rev 184)
@@ -39,6 +39,7 @@
width: 60%;
margin-left: auto;
margin-right: auto;
+ text-align: center;
}
div#so-connexion {
1
0
[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