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
06 Jan '10
Author: fdesbois
Date: 2010-01-06 15:08:45 +0000 (Wed, 06 Jan 2010)
New Revision: 168
Modified:
trunk/changelog.txt
trunk/pom.xml
trunk/suiviobsmer-business/pom.xml
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
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/SuiviObsmerException.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobal.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunner.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunnerImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/CompanyBoatInfosImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContext.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContextImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingDone.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingExpected.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatDefinitiveRefused.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatRefused.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatUnavailable.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyAccepted.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyLocked.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyRefused.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyUnlocked.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateEnum.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateException.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramAccepted.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramLocked.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramRefused.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramUnlocked.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateStart.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateUnfinished.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityCalendarImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityMonthImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityProfessionImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/CompanyImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/FishingZoneImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProfessionImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/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/impl/ServiceUserImpl.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/ServiceNewsMock.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/ImportHelperTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobalTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerUtilsTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/bean/states/ContactContextTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/business/SuiviObsmerRunnerTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java
trunk/suiviobsmer-ui/pom.xml
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/GenericSelectModel.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/SuiviObsmerPage.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/BooleanImage.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/java/fr/ifremer/suiviobsmer/ui/components/SubmitContext.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/Confirm.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.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/BoatActivityCalendar.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/ExceptionReport.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/SamplingHistoric.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/UserProfile.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/SuiviObsmerManager.java
Log:
Prepare for release 0.0.3 : update license headers + changelog
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/changelog.txt 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,3 +1,10 @@
+0.0.3
+-----
+
+[fdesbois] Amélioration performance imports (ActivityCalendar et Boats)
+[fdesbois] Ajout des filtres pour les contacts
+[fdesbois] Utilisation de TopiaQuery pour les requêtages HQL
+
0.0.1-alpha-2
-------------
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/pom.xml 2010-01-06 15:08:45 UTC (rev 168)
@@ -15,7 +15,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.1-alpha-3-SNAPSHOT</version>
+ <version>0.0.3-SNAPSHOT</version>
<modules>
<module>suiviobsmer-ui</module>
Modified: trunk/suiviobsmer-business/pom.xml
===================================================================
--- trunk/suiviobsmer-business/pom.xml 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/pom.xml 2010-01-06 15:08:45 UTC (rev 168)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.1-alpha-3-SNAPSHOT</version>
+ <version>0.0.3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.suiviobsmer</groupId>
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,3 +1,23 @@
+/*
+ * *##%
+ * 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;
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerBusinessException.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerContext.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/**
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerException.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerException.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerException.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobal.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunner.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunner.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunner.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunnerImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunnerImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/SuiviObsmerRunnerImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/CompanyBoatInfosImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/CompanyBoatInfosImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/CompanyBoatInfosImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,3 +1,23 @@
+/*
+ * *##%
+ * 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.bean;
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContext.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContext.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContext.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContextImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContextImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactContextImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingDone.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingDone.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingDone.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingExpected.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingExpected.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoardingExpected.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatDefinitiveRefused.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatDefinitiveRefused.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatDefinitiveRefused.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatRefused.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatRefused.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatRefused.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatUnavailable.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatUnavailable.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateBoatUnavailable.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyAccepted.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyAccepted.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyAccepted.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyLocked.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyLocked.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyLocked.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyRefused.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyRefused.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyRefused.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyUnlocked.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyUnlocked.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateCompanyUnlocked.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateEnum.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateEnum.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateEnum.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateException.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateException.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateException.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramAccepted.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramAccepted.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramAccepted.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramLocked.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramLocked.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramLocked.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramRefused.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramRefused.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramRefused.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramUnlocked.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramUnlocked.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateProgramUnlocked.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateStart.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateStart.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateStart.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateUnfinished.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateUnfinished.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactStateUnfinished.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityCalendarImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityCalendarImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityCalendarImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityMonthImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityMonthImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityMonthImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityProfessionImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityProfessionImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ActivityProfessionImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/CompanyImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/CompanyImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/CompanyImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,3 +1,23 @@
+/*
+ * *##%
+ * 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.bean.ContactState;
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/FishingZoneImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/FishingZoneImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/FishingZoneImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProfessionImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProfessionImpl.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProfessionImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/UserImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: 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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceBoatMock.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: 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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceNewsMock.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: 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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceReferentialMock.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceSamplingMock.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceUserMock.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,3 +1,23 @@
+/*
+ * *##%
+ * 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;
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobalTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobalTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerGlobalTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerUtilsTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerUtilsTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/SuiviObsmerUtilsTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/bean/states/ContactContextTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/bean/states/ContactContextTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/bean/states/ContactContextTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
@@ -176,4 +176,4 @@
System.out.println("createContactState");
}
-}
\ No newline at end of file
+}
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/business/SuiviObsmerRunnerTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/business/SuiviObsmerRunnerTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/business/SuiviObsmerRunnerTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
@@ -172,4 +172,4 @@
Assert.assertTrue(result);
}
-}
\ No newline at end of file
+}
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
@@ -187,4 +187,4 @@
System.out.println("getNbBoardingForCompany");
}
-}
\ No newline at end of file
+}
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/ProgramImplTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImportTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
@@ -119,4 +119,4 @@
//InputStream input = getClass().getResourceAsStream("/target/activity.csv");
}
-}
\ No newline at end of file
+}
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Business
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/pom.xml
===================================================================
--- trunk/suiviobsmer-ui/pom.xml 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/pom.xml 2010-01-06 15:08:45 UTC (rev 168)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.1-alpha-3-SNAPSHOT</version>
+ <version>0.0.3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.suiviobsmer</groupId>
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/GenericSelectModel.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/GenericSelectModel.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/GenericSelectModel.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/**
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/SuiviObsmerPage.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/SuiviObsmerPage.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/SuiviObsmerPage.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/BooleanImage.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/BooleanImage.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/BooleanImage.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/FeedBack.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,6 +1,6 @@
/* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Layout.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/SubmitContext.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/SubmitContext.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/SubmitContext.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/Confirm.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/Confirm.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/Confirm.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/**
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,6 +1,7 @@
/**
- * *##% Bonzoms Web Interface
- * Copyright (C) 2009 CodeLutin
+ * *##%
+ * 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
@@ -14,7 +15,8 @@
*
* 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>. ##%*
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * ##%*
*/
package fr.ifremer.suiviobsmer.ui.mixins;
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
@@ -18,156 +18,156 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* ##%*
*/
-
-package fr.ifremer.suiviobsmer.ui.pages;
-
-import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
-import fr.ifremer.suiviobsmer.entity.ActivityMonth;
-import fr.ifremer.suiviobsmer.entity.ActivityProfession;
-import fr.ifremer.suiviobsmer.entity.ActivityZone;
-import fr.ifremer.suiviobsmer.entity.Boat;
-import fr.ifremer.suiviobsmer.services.ServiceBoat;
-import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
-import java.util.Collections;
-import java.util.List;
-import org.apache.commons.lang.StringUtils;
-import org.apache.tapestry5.annotations.IncludeStylesheet;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.nuiton.util.DateUtils;
-import org.slf4j.Logger;
-
-/**
- * ActivityCalendarPage
- *
- * Created: 14 déc. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
- at IncludeStylesheet("context:css/boats.css")
-public class BoatActivityCalendar implements SuiviObsmerPage {
-
- @Inject
- private Logger log;
-
- @Inject
- private ServiceBoat serviceBoat;
-
- private ActivityCalendar activityCalendar;
-
-// @Property
-// private ActivityMonth activityMonth;
-
- @Property
- private int month;
-
- @Property
- private int professionIndex;
-
- @Property
- private int zoneIndex;
-
- @Persist
- private Boat boat;
-
- void setupRender() {
-
- }
-
- @Override
- public boolean isOnlyForAdmin() {
- return false;
- }
-
- public void setBoat(Boat boat) {
- this.boat = boat;
- }
-
- public Boat getBoat() {
- return this.boat;
- }
-
- public List<Boat> getBoats() {
- return Collections.singletonList(boat);
- }
-
- public ActivityCalendar getActivityCalendar() throws SuiviObsmerException {
- if (activityCalendar == null) {
- if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getLastActivityCalendar]");
- }
- this.activityCalendar = serviceBoat.getLastActivityCalendar(getBoat());
- }
- return activityCalendar;
- }
-
- public ActivityMonth getActivityMonth() throws SuiviObsmerException {
- return getActivityCalendar().getActivityMonth(month);
- }
-
- public String getMonthName() {
- String libelle = DateUtils.getMonthLibelle(month);
- return StringUtils.capitalize(libelle);
- }
-
- public int getProfessionIndexMax() {
- int result = 0;
- for (ActivityMonth month : activityCalendar.getActivityMonth()) {
- int nbProfessions = month.sizeActivityProfession();
- if (nbProfessions > result) {
- result = nbProfessions;
- }
- }
- return result-1;
- }
-
- public boolean hasProfessions() {
- return getProfessionIndexMax() != -1;
- }
-
- public ActivityProfession getActivityProfession() throws SuiviObsmerException {
- if (getActivityMonth() == null) {
- return null;
- }
- if (professionIndex >= getActivityMonth().sizeActivityProfession()) {
- return null;
- }
- return getActivityMonth().getActivityProfession().get(professionIndex);
- }
-
- public int getZoneIndexMax() throws SuiviObsmerException {
- int result = 0;
- for (ActivityMonth activityMonth : activityCalendar.getActivityMonth()) {
- month = activityMonth.getMonth();
- ActivityProfession profession = getActivityProfession();
- if (profession != null) {
- int nbZones = profession.sizeActivityZone();
- if (nbZones > result) {
- result = nbZones;
- }
- }
- }
- return result-1;
- }
-
-// public boolean hasZones() {
-// return getZoneIndexMax() != -1;
-// }
-
- public ActivityZone getActivityZone() throws SuiviObsmerException {
- ActivityProfession profession = getActivityProfession();
- if (profession == null) {
- return null;
- }
- if (zoneIndex >= profession.sizeActivityZone()) {
- return null;
- }
- return profession.getActivityZone().get(zoneIndex);
- }
-}
+
+package fr.ifremer.suiviobsmer.ui.pages;
+
+import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
+import fr.ifremer.suiviobsmer.entity.ActivityMonth;
+import fr.ifremer.suiviobsmer.entity.ActivityProfession;
+import fr.ifremer.suiviobsmer.entity.ActivityZone;
+import fr.ifremer.suiviobsmer.entity.Boat;
+import fr.ifremer.suiviobsmer.services.ServiceBoat;
+import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.lang.StringUtils;
+import org.apache.tapestry5.annotations.IncludeStylesheet;
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.nuiton.util.DateUtils;
+import org.slf4j.Logger;
+
+/**
+ * ActivityCalendarPage
+ *
+ * Created: 14 déc. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+ at IncludeStylesheet("context:css/boats.css")
+public class BoatActivityCalendar implements SuiviObsmerPage {
+
+ @Inject
+ private Logger log;
+
+ @Inject
+ private ServiceBoat serviceBoat;
+
+ private ActivityCalendar activityCalendar;
+
+// @Property
+// private ActivityMonth activityMonth;
+
+ @Property
+ private int month;
+
+ @Property
+ private int professionIndex;
+
+ @Property
+ private int zoneIndex;
+
+ @Persist
+ private Boat boat;
+
+ void setupRender() {
+
+ }
+
+ @Override
+ public boolean isOnlyForAdmin() {
+ return false;
+ }
+
+ public void setBoat(Boat boat) {
+ this.boat = boat;
+ }
+
+ public Boat getBoat() {
+ return this.boat;
+ }
+
+ public List<Boat> getBoats() {
+ return Collections.singletonList(boat);
+ }
+
+ public ActivityCalendar getActivityCalendar() throws SuiviObsmerException {
+ if (activityCalendar == null) {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getLastActivityCalendar]");
+ }
+ this.activityCalendar = serviceBoat.getLastActivityCalendar(getBoat());
+ }
+ return activityCalendar;
+ }
+
+ public ActivityMonth getActivityMonth() throws SuiviObsmerException {
+ return getActivityCalendar().getActivityMonth(month);
+ }
+
+ public String getMonthName() {
+ String libelle = DateUtils.getMonthLibelle(month);
+ return StringUtils.capitalize(libelle);
+ }
+
+ public int getProfessionIndexMax() {
+ int result = 0;
+ for (ActivityMonth month : activityCalendar.getActivityMonth()) {
+ int nbProfessions = month.sizeActivityProfession();
+ if (nbProfessions > result) {
+ result = nbProfessions;
+ }
+ }
+ return result-1;
+ }
+
+ public boolean hasProfessions() {
+ return getProfessionIndexMax() != -1;
+ }
+
+ public ActivityProfession getActivityProfession() throws SuiviObsmerException {
+ if (getActivityMonth() == null) {
+ return null;
+ }
+ if (professionIndex >= getActivityMonth().sizeActivityProfession()) {
+ return null;
+ }
+ return getActivityMonth().getActivityProfession().get(professionIndex);
+ }
+
+ public int getZoneIndexMax() throws SuiviObsmerException {
+ int result = 0;
+ for (ActivityMonth activityMonth : activityCalendar.getActivityMonth()) {
+ month = activityMonth.getMonth();
+ ActivityProfession profession = getActivityProfession();
+ if (profession != null) {
+ int nbZones = profession.sizeActivityZone();
+ if (nbZones > result) {
+ result = nbZones;
+ }
+ }
+ }
+ return result-1;
+ }
+
+// public boolean hasZones() {
+// return getZoneIndexMax() != -1;
+// }
+
+ public ActivityZone getActivityZone() throws SuiviObsmerException {
+ ActivityProfession profession = getActivityProfession();
+ if (profession == null) {
+ return null;
+ }
+ if (zoneIndex >= profession.sizeActivityZone()) {
+ return null;
+ }
+ return profession.getActivityZone().get(zoneIndex);
+ }
+}
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,3 +1,23 @@
+/*
+ * *##%
+ * 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;
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Index.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: 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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingHistoric.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/UserProfile.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,6 +1,6 @@
/* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
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-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/SuiviObsmerManager.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/SuiviObsmerManager.java 2010-01-06 15:01:52 UTC (rev 167)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/SuiviObsmerManager.java 2010-01-06 15:08:45 UTC (rev 168)
@@ -1,7 +1,7 @@
/*
* *##%
* SuiviObsmer :: Web Interface
- * Copyright (C) 2009 Ifremer
+ * 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
1
0
[Suiviobsmer-commits] r167 - in trunk/suiviobsmer-ui/src/main: resources/fr/ifremer/suiviobsmer/ui/pages webapp webapp/css
by fdesbois@users.labs.libre-entreprise.org 06 Jan '10
by fdesbois@users.labs.libre-entreprise.org 06 Jan '10
06 Jan '10
Author: fdesbois
Date: 2010-01-06 15:01:52 +0000 (Wed, 06 Jan 2010)
New Revision: 167
Modified:
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/css/common.css
trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
Log:
Add style for Contacts filters and import/export zone
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-06 13:33:55 UTC (rev 166)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-06 15:01:52 UTC (rev 167)
@@ -1,7 +1,7 @@
# ContactForm labels
-state-label: Etat
-boat-label: Navire
-tide-label: Mar\u00E9e
+facadeName-label: Facade
+sectorName-label: Secteur
+contactsCsvFile-label: Fichier des contacts
# Grid labels
createdBy-label: Observateur
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-06 13:33:55 UTC (rev 166)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-06 15:01:52 UTC (rev 167)
@@ -5,99 +5,105 @@
nbObservants, mammals, editDate, comment, validation"-->
<div id="so-contacts-search">
<form t:type="form" t:id="searchBoat">
- <input t:type="textfield" t:id="boatName" value="contactFilter.boatName" t:mixins="Autocomplete"/>
- <input t:type="submit" class="ico search-32px" t:id="execSearchBoat" value="Search" />
+ <div>
+ <t:label t:for="boatName" /><br />
+ <input t:type="textfield" class="width200" t:id="boatName" value="contactFilter.boatName" t:mixins="Autocomplete"/>
+ <input t:type="submit" class="ico search-32px" t:id="execSearchBoat" value="Search" />
+ </div>
</form>
<a t:type="actionlink" t:id="showFilters" t:zone="so-contacts-filters">
recherche avancée
- </a>
+ </a>
<a t:type="actionlink" t:id="showImportExport" t:zone="so-contacts-importexport">
import/export
</a>
</div>
-
+<!-- FILTRES -->
<div t:type="zone" class="so-filters" t:id="filtersZone" t:update="show" t:visible="prop:filtersVisible" id="so-contacts-filters">
<fieldset>
<legend>Recherche avancée</legend>
- <!--<div class="aright">
- <t:if t:test="filtersHidden">
- <a t:type="actionlink" t:id="showFilters" t:zone="so-contacts-filters">
- <img src="${asset:context:}/img/downarrow.png" title="Afficher les filtres"/>
- </a>
- <p:else>
- <a t:type="actionlink" t:id="hideFilters" t:zone="so-boats-filters">
- <img src="${asset:context:}/img/uparrow.png" title="Cacher les filtres"/>
- </a>
- </p:else>
- </t:if>
- </div>-->
- <!--<t:feedback t:id="filterFeedback" />
- <div class="so-filters-form ${hiddenClass}">-->
+ <div class="so-filters-form">
<form t:type="form" t:id="filtersForm">
<t:errors />
<div class="t-beaneditor">
- <t:beaneditor t:id="filtersEditor" t:object="contactFilter"
- t:include="facadeName, sectorName, state" t:add="boat, sampleRow, observer, mammals, validation"
- t:reorder="boat, facadeName, sectorName, sampleRow, observer">
- <p:boat>
- <t:label t:for="boat" />
- <span> immatriculation </span>
- <input t:type="textfield" t:id="boat" class="width50" t:value="contactFilter.boatImmatriculation" />
- <span> code quartier </span>
- <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="contactFilter.boatDistrictCode" />
- </p:boat>
- <p:facadeName>
- <t:label t:for="facadeName" />
- <input t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName"
- t:mixins="zoneUpdater" t:event="change" t:zone="so-contacts-filters"/>
- </p:facadeName>
- <p:sectorName>
- <t:label t:for="sectorName" />
- <input t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="contactFilter.sectorName" />
- </p:sectorName>
- <p:sampleRow>
- <t:label t:for="sampleRow" />
- <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
- </p:sampleRow>
- <p:observer>
- N/A
- </p:observer>
- <p:state>
- N/A
- </p:state>
- <p:mammals>
- N/A
- </p:mammals>
- <p:validation>
- <t:label t:for="validation" />
- <input t:type="checkbox" t:id="validation" value="contactFilter.companyAccepted" />
+ <div>
+ <label>Navire </label>
+ <t:label t:for="boatImmatriculation" />:
+ <input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="contactFilter.boatImmatriculation" />
+ <t:label t:for="boatDistrictCode" />:
+ <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="contactFilter.boatDistrictCode" />
+ <t:label t:for="facadeName" />:
+ <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName"
+ t:mixins="zoneUpdater" t:event="change" t:zone="so-contacts-filters"/>
+ <t:label t:for="sectorName" />:
+ <select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="contactFilter.sectorName" />
+ <t:label t:for="sampleRow" />:
+ <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ <label>Mammifères: </label>
+ <input t:type="checkbox" t:id="mammalsObservation1" value="contactFilter.mammalsObservation" />
+ <t:label t:for="mammalsObservation1">
+ <img src="${asset:context:}/img/eye-22px.png" alt="Observations de mammifères" title="Observations de mammifères" />
+ </t:label>
+ <input t:type="checkbox" t:id="mammalsCapture1" value="contactFilter.mammalsCapture" />
+ <t:label t:for="mammalsCapture1">
+ <img src="${asset:context:}/img/fishing-net-22px.png" alt="Capture de mammifères" title="Capture de mammifères" />
+ </t:label>
+ </div><p> </p>
+ <div>
+ <label>Validation société: </label>
+ <input t:type="checkbox" t:id="companyAccepted" value="contactFilter.companyAccepted" />
+ <t:label t:for="companyAccepted">
<img src="${asset:context:}/img/true-22px.png" title="Accepté par la société" />
- <input t:type="checkbox" value="contactFilter.companyRefused" />
+ </t:label>
+ <input t:type="checkbox" t:id="companyRefused" value="contactFilter.companyRefused" />
+ <t:label t:for="companyRefused">
<img src="${asset:context:}/img/false-22px.png" title="Refusé par la société" />
- <input t:type="checkbox" value="contactFilter.companyUndefined" />
+ </t:label>
+ <input t:type="checkbox" t:id="companyUndefined" value="contactFilter.companyUndefined" />
+ <t:label t:for="companyUndefined">
<img src="${asset:context:}/img/help-22px.png" title="Non validé par la société" />
- </p:validation>
- </t:beaneditor>
+ </t:label>
+ <t:if t:test="user.admin">
+ <label>Validation programme: </label>
+ <input t:type="checkbox" t:id="programAccepted" value="contactFilter.programAccepted" />
+ <t:label t:for="programAccepted">
+ <img src="${asset:context:}/img/true-22px.png" title="Accepté par le programme" />
+ </t:label>
+ <input t:type="checkbox" t:id="programRefused" value="contactFilter.programRefused" />
+ <t:label t:for="programRefused">
+ <img src="${asset:context:}/img/false-22px.png" title="Refusé par le programme" />
+ </t:label>
+ <input t:type="checkbox" t:id="programUndefined" value="contactFilter.programUndefined" />
+ <t:label t:for="programUndefined">
+ <img src="${asset:context:}/img/help-22px.png" title="Non validé par le programme" />
+ </t:label>
+ </t:if>
+ </div>
<div class="t-beaneditor-row aright">
<input t:type="submit" class="ico search-32px" t:id="search" value="Search" />
<input t:type="submit" class="ico undo" t:id="reset" value="Reset" />
</div>
</div>
</form>
- <!--</div>-->
+ </div>
</fieldset>
</div>
-<div t:type="zone" t:id="importExportZone" t:update="show" t:visible="false" id="so-contacts-importexport">
- <form t:type="form" t:id="importContacts">
- <t:errors />
- <t:label for="contactsCsvFile" /> :
- <input t:type="upload" t:id="contactsCsvFile" t:validate="required" />
- <input t:type="submit" class="ico import" value="OK" title="Importer une liste de contacts (format CSV)" />
- </form>
- <a t:type="actionlink" t:id="exportShowContacts">
- EXPORT
- </a>
+<!-- IMPORT/EXPORT -->
+<div t:type="zone" class="so-filters" t:id="importExportZone" t:update="show" t:visible="false" id="so-contacts-importexport">
+ <fieldset>
+ <legend>Import/export CSV (UTF-8)</legend>
+ <form t:type="form" t:id="importContacts">
+ <t:errors />
+ <t:label for="contactsCsvFile" /> :
+ <input t:type="upload" t:id="contactsCsvFile" t:validate="required" />
+ <input t:type="submit" class="ico import" value="OK" title="Importer une liste de contacts (format CSV)" />
+ <a t:type="actionlink" t:id="exportShowContacts">
+ EXPORT
+ </a>
+ </form>
+ </fieldset>
</div>
+<!-- CONTACT LIST -->
<t:zone t:id="gridZone" t:update="show">
<form t:type="form" t:id="contactsForm" t:zone="gridZone">
<t:errors id="so-contact-form-errors" t:banner="message:contactsForm-errors-banner"/>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/common.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-06 13:33:55 UTC (rev 166)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-06 15:01:52 UTC (rev 167)
@@ -76,6 +76,11 @@
width: 150px;
}
+.width200 {
+ width: 200px;
+}
+
+
.width300 {
width: 300px;
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-06 13:33:55 UTC (rev 166)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-06 15:01:52 UTC (rev 167)
@@ -25,10 +25,58 @@
}*/
/* FILTERS */
-div.t-autocomplete-menu ul {
+div#so-contacts-search {
+ width: 50%;
+ margin: 10px;
+ margin-left: auto;
+ margin-right: auto;
+ text-align: center;
+}
+
+div#so-contacts-search form {
+ margin-bottom: 5px;
+}
+
+div#so-contacts-search form div {
+ width: 270px;
+ margin-left: auto;
+ margin-right: auto;
+ padding: 5px;
+ background-color: #DEE7EC;
+ border: 1px outset black;
+}
+
+div#so-contacts-search div.t-autocomplete-menu ul {
background-color: #19a28d;
}
+div#so-contacts-search a {
+ text-decoration: none;
+ color: #19a28d;
+ font-weight: bold;
+}
+
+div#so-contacts-search a:hover {
+ text-decoration: underline;
+ color: black;
+}
+
+div#so-contacts-filters {
+ width: 100%;
+ margin-bottom: 10px;
+}
+
+div#so-contacts-importexport {
+ margin-bottom: 10px;
+ width: 50%;
+ text-align: center;
+}
+
+div#so-contacts-importexport fieldset {
+ padding: 10px;
+}
+
+
/* TABLE OF CONTACTS */
div#so-contacts table.user {
width: 100%;
1
0
[Suiviobsmer-commits] r166 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins 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/js
by fdesbois@users.labs.libre-entreprise.org 06 Jan '10
by fdesbois@users.labs.libre-entreprise.org 06 Jan '10
06 Jan '10
Author: fdesbois
Date: 2010-01-06 13:33:55 +0000 (Wed, 06 Jan 2010)
New Revision: 166
Added:
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java
trunk/suiviobsmer-ui/src/main/webapp/js/ZoneUpdater.js
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceBoatMock.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
Log:
- Improve contact filters using ZoneUpdater for facade select
- Add autocomplete for boat name field
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-06 08:58:16 UTC (rev 165)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-06 13:33:55 UTC (rev 166)
@@ -542,4 +542,25 @@
// }
return result;
}
+
+ @Override
+ public List<String> getBoatNamesStartWith(String input) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ List<String> results = new ArrayList<String>();
+ try {
+ transaction = rootContext.beginTransaction();
+
+ input = StringUtils.upperCase(input);
+
+ BoatDAO dao = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+
+ results = (List<String>)dao.createQuery().addDistinct().setSelect(Boat.NAME).add(Boat.NAME, Op.LIKE, input + "%").execute();
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible de récupérer les navires avec un nom commencant par '" + input + "'", eee);
+ }
+ return results;
+ }
}
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-06 08:58:16 UTC (rev 165)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-06 13:33:55 UTC (rev 166)
@@ -32,7 +32,6 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.bean.ContactState;
import java.io.InputStream;
-import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import fr.ifremer.suiviobsmer.bean.states.ContactStateEnum;
import fr.ifremer.suiviobsmer.bean.ContactFilter;
@@ -45,7 +44,6 @@
import fr.ifremer.suiviobsmer.entity.ContactImpl;
import fr.ifremer.suiviobsmer.entity.ElligibleBoat;
import fr.ifremer.suiviobsmer.entity.FishingZone;
-import fr.ifremer.suiviobsmer.entity.FishingZoneDAO;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.Program;
import fr.ifremer.suiviobsmer.entity.SampleRow;
@@ -66,6 +64,7 @@
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.framework.TopiaQuery.Op;
import org.nuiton.topia.persistence.TopiaEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -112,6 +111,10 @@
query.add("F.facadeName", filter.getFacadeName()).add("C.sampleRow IN elements(F.sampleRow)");
}
+ if (!StringUtils.isEmpty(filter.getBoatName())) {
+ query.add("C.boat.name", Op.LIKE, filter.getBoatName() + "%");
+ }
+
if (!StringUtils.isEmpty(filter.getBoatDistrictCode())) {
query.add("C.boat.districtCode", filter.getBoatDistrictCode());
}
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-06 08:58:16 UTC (rev 165)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-06 13:33:55 UTC (rev 166)
@@ -240,6 +240,8 @@
try {
transaction = rootContext.beginTransaction();
+ // TODO-FD20090106 add filters for facadeName and sectorName (in argument) for Boats and Contacts use
+
Date current = SuiviObsmerContext.getCurrentDate();
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
@@ -251,31 +253,6 @@
}
results = query.addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM).executeToEntityList();
-
-// SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
-//
-// if (!user.getAdmin()) {
-// if (log.isDebugEnabled()) {
-// log.debug("User company : " + user.getCompany().getName());
-// }
-// results = dao.findAllByCompany(user.getCompany());
-// } else {
-// results = dao.findAll();
-// }
-//
-// Iterator<SampleRow> it = results.iterator();
-// while (it.hasNext()) {
-// SampleRow row = it.next();
-// // Only rows which are not finished will be kept
-// if (row.getProgram().isFinished()) {
-// it.remove();
-// }/* else {
-// // load data
-// row.getProgram();
-// row.getCompany();
-// row.getProfession();
-// }*/
-// }
transaction.closeContext();
} catch (Exception eee) {
Modified: 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-06 08:58:16 UTC (rev 165)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceBoatMock.java 2010-01-06 13:33:55 UTC (rev 166)
@@ -252,4 +252,9 @@
throw new UnsupportedOperationException("Not supported yet.");
}
+ @Override
+ public List<String> getBoatNamesStartWith(String input) throws SuiviObsmerException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Added: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java (rev 0)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java 2010-01-06 13:33:55 UTC (rev 166)
@@ -0,0 +1,99 @@
+/**
+ * *##% Bonzoms Web Interface
+ * 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 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.mixins;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.tapestry5.BindingConstants;
+import org.apache.tapestry5.ClientElement;
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.RenderSupport;
+import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
+import org.apache.tapestry5.annotations.InjectContainer;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.ioc.annotations.Inject;
+
+/**
+ * ZoneUpdater.java
+ *
+ * From http://tinybits.blogspot.com/2009/05/update-zone-on-any-client-side-event.h… by ingesol
+ *
+ * @author ingesol
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author: fdesbois $
+ */
+ at IncludeJavaScriptLibrary("context:js/ZoneUpdater.js")
+public class ZoneUpdater {
+
+ public static final String PLACEHOLDER = "XXX";
+
+ @Inject
+ private ComponentResources resources;
+
+ @Environmental
+ private RenderSupport renderSupport;
+
+ @Parameter(defaultPrefix = BindingConstants.LITERAL)
+ private String clientEvent;
+
+ @Parameter(defaultPrefix = BindingConstants.LITERAL, required = true)
+ private String event;
+
+ @InjectContainer
+ private ClientElement element;
+
+ @Parameter
+ private Object[] context;
+
+ @Parameter(defaultPrefix = BindingConstants.LITERAL)
+ // To enable popups to fire events on this document, enter "document" here.
+ private String listeningElement;
+
+ @Parameter(defaultPrefix = BindingConstants.LITERAL, required = true)
+ private String zone;
+
+ protected Link createLink(Object[] context) {
+
+ if (context == null) {
+ context = new Object[]{PLACEHOLDER};
+ } else {
+ context = ArrayUtils.add(context, PLACEHOLDER); // To be replaced by javascript
+ }
+
+ return resources.createEventLink(event, context);
+
+ }
+
+ void afterRender() {
+ String link = createLink(context).toAbsoluteURI();
+ String elementId = element.getClientId();
+ if (clientEvent == null) {
+ clientEvent = event;
+ }
+
+ if (listeningElement == null) {
+ listeningElement = "$('" + elementId + "')";
+ }
+ renderSupport.addScript("new ZoneUpdater('%s', %s, '%s', '%s', '%s', '%s')", elementId, listeningElement, clientEvent, link, zone, PLACEHOLDER);
+
+ }
+}
Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/mixins/ZoneUpdater.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
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-06 08:58:16 UTC (rev 165)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-06 13:33:55 UTC (rev 166)
@@ -64,6 +64,7 @@
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.corelib.components.Form;
+import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.internal.SelectModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
@@ -126,6 +127,12 @@
@Persist
private ContactFilter contactFilter;
+ @InjectComponent
+ private Zone filtersZone;
+
+ @InjectComponent
+ private Zone importExportZone;
+
@Persist
private GenericSelectModel<SampleRow> sampleRowSelectModel;
@@ -141,6 +148,10 @@
@Persist
private SelectModel sectorSelectModel;
+ @Property
+ @Persist("flash")
+ private boolean filtersVisible;
+
private boolean reset;
public ContactFilter getContactFilter() throws SuiviObsmerException {
@@ -193,6 +204,41 @@
return sampleRowSelectModel;
}
+ String[] onProvideCompletionsFromBoatName(String input) throws SuiviObsmerException {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getBoatNamesStartWith]");
+ }
+ List<String> results = serviceBoat.getBoatNamesStartWith(input);
+ return results.toArray(new String[0]);
+ }
+
+ void onSuccessFromSearchBoat() {
+
+ }
+
+ Object onActionFromShowFilters() {
+ contactFilter = null;
+ return filtersZone.getBody();
+ }
+
+ Object onActionFromShowImportExport() {
+ return importExportZone.getBody();
+ }
+
+ @Log
+ public Object onChangeFromFacadeName(String value) throws SuiviObsmerException {
+ if (!StringUtils.isEmpty(value)) {
+ // Reset contactFilter to avoid strange behavior (cause of no form submit)
+ contactFilter = null;
+ // set facadeName selected in contactFilter
+ getContactFilter().setFacadeName(value);
+ // Reset sectors to use facadeName selected
+ sectorSelectModel = null;
+ return filtersZone.getBody();
+ }
+ return null;
+ }
+
void onSelectedFromReset() {
reset = true;
}
@@ -200,6 +246,8 @@
void onSuccessFromFiltersForm() {
if (reset) {
contactFilter = null;
+ } else {
+ filtersVisible = true;
}
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-06 08:58:16 UTC (rev 165)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-06 13:33:55 UTC (rev 166)
@@ -3,9 +3,22 @@
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
<!--t:include="creationDate, lastState, boatName, boatImmatriculation, boatDistrictCode, beginTideDate, endTideDate,
nbObservants, mammals, editDate, comment, validation"-->
-<div t:type="zone" class="so-filters" t:id="filtersZone" t:update="show" id="so-contacts-filters">
+<div id="so-contacts-search">
+ <form t:type="form" t:id="searchBoat">
+ <input t:type="textfield" t:id="boatName" value="contactFilter.boatName" t:mixins="Autocomplete"/>
+ <input t:type="submit" class="ico search-32px" t:id="execSearchBoat" value="Search" />
+ </form>
+ <a t:type="actionlink" t:id="showFilters" t:zone="so-contacts-filters">
+ recherche avancée
+ </a>
+ <a t:type="actionlink" t:id="showImportExport" t:zone="so-contacts-importexport">
+ import/export
+ </a>
+</div>
+
+<div t:type="zone" class="so-filters" t:id="filtersZone" t:update="show" t:visible="prop:filtersVisible" id="so-contacts-filters">
<fieldset>
- <legend>Filtres de recherche</legend>
+ <legend>Recherche avancée</legend>
<!--<div class="aright">
<t:if t:test="filtersHidden">
<a t:type="actionlink" t:id="showFilters" t:zone="so-contacts-filters">
@@ -35,15 +48,16 @@
</p:boat>
<p:facadeName>
<t:label t:for="facadeName" />
- <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName" />
+ <input t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName"
+ t:mixins="zoneUpdater" t:event="change" t:zone="so-contacts-filters"/>
</p:facadeName>
<p:sectorName>
<t:label t:for="sectorName" />
- <select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="contactFilter.sectorName" />
+ <input t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="contactFilter.sectorName" />
</p:sectorName>
<p:sampleRow>
<t:label t:for="sampleRow" />
- <select t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
</p:sampleRow>
<p:observer>
N/A
@@ -73,15 +87,17 @@
<!--</div>-->
</fieldset>
</div>
-<form t:type="form" t:id="importContacts">
- <t:errors />
- <t:label for="contactsCsvFile" /> :
- <input t:type="upload" t:id="contactsCsvFile" t:validate="required" />
- <input t:type="submit" class="ico import" value="OK" title="Importer une liste de contacts (format CSV)" />
-</form>
-<a t:type="actionlink" t:id="exportShowContacts">
- EXPORT
-</a>
+<div t:type="zone" t:id="importExportZone" t:update="show" t:visible="false" id="so-contacts-importexport">
+ <form t:type="form" t:id="importContacts">
+ <t:errors />
+ <t:label for="contactsCsvFile" /> :
+ <input t:type="upload" t:id="contactsCsvFile" t:validate="required" />
+ <input t:type="submit" class="ico import" value="OK" title="Importer une liste de contacts (format CSV)" />
+ </form>
+ <a t:type="actionlink" t:id="exportShowContacts">
+ EXPORT
+ </a>
+</div>
<t:zone t:id="gridZone" t:update="show">
<form t:type="form" t:id="contactsForm" t:zone="gridZone">
<t:errors id="so-contact-form-errors" t:banner="message:contactsForm-errors-banner"/>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-06 08:58:16 UTC (rev 165)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-06 13:33:55 UTC (rev 166)
@@ -14,7 +14,7 @@
font-size: 0.8em;
}
-/* FORM FOR NEW CONTACT */
+/* FORM FOR NEW CONTACT
fieldset#so-contacts-new {
padding: 10px;
margin-bottom: 10px;
@@ -22,6 +22,11 @@
fieldset#so-contacts-new div.content {
margin-bottom: 5px;
+}*/
+
+/* FILTERS */
+div.t-autocomplete-menu ul {
+ background-color: #19a28d;
}
/* TABLE OF CONTACTS */
Added: trunk/suiviobsmer-ui/src/main/webapp/js/ZoneUpdater.js
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/js/ZoneUpdater.js (rev 0)
+++ trunk/suiviobsmer-ui/src/main/webapp/js/ZoneUpdater.js 2010-01-06 13:33:55 UTC (rev 166)
@@ -0,0 +1,103 @@
+var ZoneUpdater = Class.create();
+
+ZoneUpdater.prototype = {
+
+ initialize: function(zoneElementId, listeningElement, event, link, zone, placeholder) {
+
+ this.zoneElement = $(zoneElementId);
+
+ this.event = event;
+
+ this.link = link;
+
+ this.placeholder = placeholder;
+
+ $T(this.zoneElement).zoneId = zone;
+
+ listeningElement.observe(this.event, this.updateZone.bindAsEventListener(this));
+
+ },
+
+ updateZone: function(event) {
+
+ var zoneObject = Tapestry.findZoneManager(this.zoneElement);
+
+ if ( !zoneObject ) return;
+
+ var param;
+
+ if (this.zoneElement.value) {
+
+ param = this.zoneElement.value;
+
+ }
+
+ if (!param) param = ' ';
+
+ param = this.encodeForUrl(param);
+
+ var updatedLink = this.link.gsub(this.placeholder, param);
+
+ zoneObject.updateFromURL(updatedLink);
+
+ },
+
+ encodeForUrl: function(string) {
+
+ /**
+
+ * See equanda.js for updated version of this
+
+ */
+
+ string = string.replace(/\r\n/g,"\n");
+
+ var res = "";
+
+ for (var n = 0; n < string.length; n++)
+
+ {
+
+ var c = string.charCodeAt( n );
+
+ if ( '$' == string.charAt( n ) )
+
+ {
+
+ res += '$$';
+
+ }
+
+ else if ( this.inRange( c, "AZ" ) || this.inRange( c, "az" ) || this.inRange( c, "09" ) || this.inRange( c, ".." ) )
+
+ {
+
+ res += string.charAt( n )
+
+ }
+
+ else
+
+ {
+
+ var tmp = c.toString(16);
+
+ while ( tmp.length < 4 ) tmp = "0" + tmp;
+
+ res += '$' + tmp;
+
+ }
+
+ }
+
+ return res;
+
+ },
+
+ inRange: function(code, range) {
+
+ return code >= range.charCodeAt( 0 ) && code <= range.charCodeAt( 1 );
+
+ }
+
+}
\ No newline at end of file
1
0
06 Jan '10
Author: fdesbois
Date: 2010-01-06 08:58:16 +0000 (Wed, 06 Jan 2010)
New Revision: 165
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
trunk/suiviobsmer-business/src/test/resources/import/contacts.csv
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.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/ServiceContactMock.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceReferentialMock.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
Log:
- Add Contacts filters
- Add methods to get facades and sectors
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -0,0 +1,17 @@
+
+package fr.ifremer.suiviobsmer.bean;
+
+/**
+ * ContactFilterImpl
+ *
+ * Created: 5 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class ContactFilterImpl extends ContactFilter {
+
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-01-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -35,7 +35,7 @@
addParam("company", company);
TopiaQuery<E> subquery = createQuery("C2").
- addSelect("MAX(C2.topiaCreateDate)").
+ setSelect("MAX(C2.topiaCreateDate)").
add("C2.boat = C1.boat").
add("C2.user.company = :company");
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-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -363,16 +363,17 @@
if (log.isDebugEnabled()) {
log.debug("commit : " + (tic2 - tic1));
}
- if (log.isInfoEnabled()) {
- log.info("RUNNING... Import calendrier d'activité ligne " + currRow);
- Runtime runtime = Runtime.getRuntime();
- long mem = runtime.totalMemory() - runtime.freeMemory();
- long memMega = mem / 1024 / 1024;
- log.info("Memory : " + memMega + " Mo");
- long tic = System.currentTimeMillis();
- log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic - firstTic));
- firstTic = System.currentTimeMillis();
- }
+ firstTic = ImportHelper.logTimeAndMemory(log, firstTic, "calendrier d'activité ligne " + currRow);
+// if (log.isInfoEnabled()) {
+// log.info("RUNNING... Import calendrier d'activité ligne " + currRow);
+// Runtime runtime = Runtime.getRuntime();
+// long mem = runtime.totalMemory() - runtime.freeMemory();
+// long memMega = mem / 1024 / 1024;
+// log.info("Memory : " + memMega + " Mo");
+// long tic = System.currentTimeMillis();
+// log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic - firstTic));
+// firstTic = System.currentTimeMillis();
+// }
}
}
@@ -381,6 +382,16 @@
long stopTime = System.currentTimeMillis();
+ Runtime runtime = Runtime.getRuntime();
+
+ long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
+ log.info("Memory before gc : " + mem + " Mo");
+
+ System.gc();
+
+ mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
+ log.info("Memory after gc : " + mem + " Mo");
+
String execTime = DurationFormatUtils.formatDurationHMS(stopTime - startTime);
info("Nombre de ligne ajouté : " + result, -1);
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -109,7 +109,7 @@
// Add join for ElligibleBoat
if (sampleRowFiltered) {
String elligibleBoatClassName = ElligibleBoat.class.getName();
- query.addSelect("B").addFrom(elligibleBoatClassName + " E").add("E.boat = B");
+ query.setSelect("B").addFrom(elligibleBoatClassName + " E").add("E.boat = B");
}
// SampleRowCode
if (sampleRowCodeFiltered) {
@@ -498,7 +498,7 @@
add("A.boat", boat);
TopiaQuery<ActivityCalendar> subquery = dao.createQuery("B").
- addSelect("MAX(B.year)").
+ setSelect("MAX(B.year)").
add("B.boat = A.boat").
addGroup("B.boat");
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-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -32,8 +32,10 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.bean.ContactState;
import java.io.InputStream;
+import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import fr.ifremer.suiviobsmer.bean.states.ContactStateEnum;
+import fr.ifremer.suiviobsmer.bean.ContactFilter;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.BoatDAO;
import fr.ifremer.suiviobsmer.entity.Company;
@@ -43,6 +45,7 @@
import fr.ifremer.suiviobsmer.entity.ContactImpl;
import fr.ifremer.suiviobsmer.entity.ElligibleBoat;
import fr.ifremer.suiviobsmer.entity.FishingZone;
+import fr.ifremer.suiviobsmer.entity.FishingZoneDAO;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.Program;
import fr.ifremer.suiviobsmer.entity.SampleRow;
@@ -55,6 +58,7 @@
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.ParseException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -88,19 +92,66 @@
}
@Override
- public Map<String, Contact> getContactsByFilter(Company company) throws SuiviObsmerException {
+ public Map<String, Contact> getContactsByFilter(ContactFilter filter) throws SuiviObsmerException {
Map<String, Contact> results = new HashMap<String, Contact>();
TopiaContext transaction = null;
try {
transaction = rootContext.beginTransaction();
ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
- TopiaQuery<Contact> query = dao.createQuery().addOrderDesc(TopiaEntity.TOPIA_CREATE_DATE);
- if (company != null) {
- query.add("user.company", company);
+ TopiaQuery<Contact> query = dao.createQuery("C").addOrderDesc("C." + TopiaEntity.TOPIA_CREATE_DATE);
+
+ if (filter.getSampleRow() != null) {
+ query.add("C." + Contact.SAMPLE_ROW, filter.getSampleRow());
+ } else if (!StringUtils.isEmpty(filter.getSectorName())) {
+ query.addFrom(FishingZone.class.getName() + " F");
+ query.add("F.sectorName", filter.getSectorName()).add("C.sampleRow IN elements(F.sampleRow)");
+ } else if (!StringUtils.isEmpty(filter.getFacadeName())) {
+ query.addFrom(FishingZone.class.getName() + " F");
+ query.add("F.facadeName", filter.getFacadeName()).add("C.sampleRow IN elements(F.sampleRow)");
}
+ if (!StringUtils.isEmpty(filter.getBoatDistrictCode())) {
+ query.add("C.boat.districtCode", filter.getBoatDistrictCode());
+ }
+
+ if (filter.getBoatImmatriculation() != null) {
+ query.add("C.boat.immatriculation", filter.getBoatImmatriculation());
+ }
+
+ if (filter.getObserver() != null) {
+ query.add(Contact.USER, filter.getObserver());
+ } else if (filter.getCompany() != null) {
+ query.add("C.user.company", filter.getCompany());
+ }
+
+ if (filter.getMammalsObservation() && filter.getMammalsCapture()) {
+ query.add("C.mammalsObservation = :mammals OR C.mammalsCapture = :mammals").addParam("mammals", Boolean.TRUE);
+ } else if (filter.getMammalsObservation()) {
+ query.add("C." + Contact.MAMMALS_OBSERVATION, Boolean.TRUE);
+ } else if (filter.getMammalsCapture()) {
+ query.add("C." + Contact.MAMMALS_CAPTURE, Boolean.TRUE);
+ }
+
+ List<Object> programValidValues = new ArrayList<Object>();
+ if (filter.getProgramAccepted()) {
+ programValidValues.add(Boolean.TRUE);
+ }
+ if (filter.getProgramRefused()) {
+ programValidValues.add(Boolean.FALSE);
+ }
+ query.add("C." + Contact.VALIDATION_PROGRAM, programValidValues, filter.getProgramUndefined());
+
+ List<Object> companyValidValues = new ArrayList<Object>();
+ if (filter.getCompanyAccepted()) {
+ companyValidValues.add(Boolean.TRUE);
+ }
+ if (filter.getCompanyRefused()) {
+ companyValidValues.add(Boolean.FALSE);
+ }
+ query.add("C." + Contact.VALIDATION_COMPANY, companyValidValues, filter.getCompanyUndefined());
+
query.addLoad("user.company", "sampleRow.program", "sampleRow.profession", "sampleRow.company");
if (log.isInfoEnabled()) {
@@ -348,7 +399,7 @@
int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name()));
// The boat must be elligible for the row
- TopiaQuery<Boat> boatQuery = boatDAO.createQuery("B").addSelect("B").
+ TopiaQuery<Boat> boatQuery = boatDAO.createQuery("B").setSelect("B").
addFrom(ElligibleBoat.class.getName() + " E").
add("E.sampleRow", row).add("E.boat = B").
add(Boat.IMMATRICULATION, boatImmatriculation);
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-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -26,7 +26,6 @@
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
-import fr.ifremer.suiviobsmer.dto.Facade;
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.FishingZoneDAO;
import fr.ifremer.suiviobsmer.entity.Profession;
@@ -39,7 +38,9 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.framework.TopiaQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,11 +66,46 @@
}
@Override
- public List<Facade> getFacades() throws SuiviObsmerException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public List<String> getFacades() throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ List<String> results = new ArrayList<String>();
+ try {
+ transaction = rootContext.beginTransaction();
+
+ FishingZoneDAO dao = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
+ results = (List<String>)dao.createQuery().setSelect("DISTINCT " + FishingZone.FACADE_NAME).execute();
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction, "Impossible de charger la liste des facades", eee);
+ }
+ return results;
}
@Override
+ public List<String> getSectors(String facadeName) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ List<String> results = new ArrayList<String>();
+ try {
+ transaction = rootContext.beginTransaction();
+
+ FishingZoneDAO dao = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
+ TopiaQuery<FishingZone> query = dao.createQuery();
+
+ if (!StringUtils.isEmpty(facadeName)) {
+ query.add(FishingZone.FACADE_NAME, facadeName);
+ }
+
+ results = (List<String>)query.setSelect("DISTINCT " + FishingZone.SECTOR_NAME).execute();
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction, "Impossible de charger la liste des secteurs de pêche", eee);
+ }
+ return results;
+ }
+
+ @Override
public List<Profession> getProfessions() throws SuiviObsmerException {
TopiaContext transaction = null;
List<Profession> results = new ArrayList<Profession>();
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-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -52,6 +52,7 @@
import org.nuiton.topia.framework.TopiaQuery.Op;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.util.EntityLoador;
+import org.nuiton.util.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -179,28 +180,29 @@
transaction = rootContext.beginTransaction();
FishingZoneDAO zoneDAO = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
-
List<FishingZone> list = zoneDAO.findAllWithOrder(
FishingZone.FACADE_NAME,
FishingZone.SECTOR_NAME,
FishingZone.DISTRICT_CODE);
-
-// TopiaQuery query = new TopiaQuery(SampleRow.class.getName() + " S").addSelect("S");
-// query.addFrom(SampleRowZone.class.getName() + " Z").add("Z.sampleRow = S");
-// query.addFrom(FishingZone.class.getName() + " F").add("Z.fishingZone = F");
+// SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
//
+// TopiaQuery<SampleRow> query = dao.createQuery("S").addDistinct().
+// addFrom(FishingZone.class.getName() + " F").add("S IN elements(F.sampleRow)");
+//
// if (company != null) {
-// query.add("S.company = :company").addParam("company", company);
+// query.add("S.company", company);
// }
//
// // Prepare period dates
// periodBegin = DateUtils.setFirstDayOfMonth(periodBegin);
// periodEnd = DateUtils.setLastDayOfMonth(periodEnd);
-// query.add("S.program.periodBegin < :end AND S.program.periodEnd > :begin").
-// addParam("begin", periodBegin).addParam("end", periodEnd);
+// query.add("S.program.periodBegin", Op.LT, periodEnd).add("S.program.periodEnd", Op.GT, periodBegin);
//
-// query.addOrder("facadeName, sectorName, districtCode");
+// query.addOrder("F.facadeName, F.sectorName, F.districtCode");
+//
+// query.addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM, SampleRow.COMPANY);
+// results = query.executeToEntityList();
for (FishingZone zone : list) {
@@ -248,7 +250,7 @@
query.add(SampleRow.COMPANY, user.getCompany());
}
- results = query.addLoad("program", "profession").executeToEntityList();
+ results = query.addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM).executeToEntityList();
// SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
//
@@ -298,7 +300,7 @@
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
result = dao.createQuery().add(TopiaEntity.TOPIA_ID, sampleRowId).
- addLoad("company", "program", "profession").
+ addLoad(SampleRow.PROFESSION, SampleRow.PROGRAM, SampleRow.COMPANY).
executeToEntity();
// result = dao.findByTopiaId(sampleRowId);
Modified: 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-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -22,8 +22,8 @@
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.Company;
import fr.ifremer.suiviobsmer.entity.Contact;
import fr.ifremer.suiviobsmer.entity.ContactImpl;
import fr.ifremer.suiviobsmer.entity.SampleRow;
@@ -56,7 +56,7 @@
}
@Override
- public Map<String, Contact> getContactsByFilter(Company company) throws SuiviObsmerException {
+ 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);
Modified: 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-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceReferentialMock.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -77,41 +77,42 @@
}
@Override
- public List<Facade> getFacades() throws SuiviObsmerException {
+ 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;
+// 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
@@ -161,4 +162,9 @@
throw new UnsupportedOperationException("Not supported yet.");
}
+ @Override
+ public List<String> getSectors(String facadeName) 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/impl/ServiceReferentialImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java 2010-01-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -74,11 +74,41 @@
/**
* Test of getFacades method, of class ServiceReferentialImpl.
*/
- //@Test
+ @Test
public void testGetFacades() throws Exception {
log.info("getFacades");
+
+ InputStream input = getClass().getResourceAsStream("/import/zonesPeche.csv");
+ service.importFishingZoneCsv(input);
+
+ List<String> facades = service.getFacades();
+ assertEquals(3, facades.size());
+ assertTrue(facades.contains("Atlantique"));
+ assertTrue(facades.contains("Mer du Nord"));
+ assertTrue(facades.contains("Méditerranée"));
}
+ @Test
+ public void testGetSectors() throws Exception {
+ log.info("getSectors");
+
+ InputStream input = getClass().getResourceAsStream("/import/zonesPeche.csv");
+ service.importFishingZoneCsv(input);
+
+ List<String> sectors = service.getSectors(null);
+ assertEquals(5, sectors.size());
+ assertTrue(sectors.contains("Manche"));
+ assertTrue(sectors.contains("Mer du Nord"));
+ assertTrue(sectors.contains("Manche Ouest"));
+ assertTrue(sectors.contains("Golfe de Gascogne"));
+ assertTrue(sectors.contains("Méditerranée"));
+
+ sectors = service.getSectors("Atlantique");
+ assertEquals(2, sectors.size());
+ assertTrue(sectors.contains("Manche Ouest"));
+ assertTrue(sectors.contains("Golfe de Gascogne"));
+ }
+
/**
* Test of getProfessions method, of class ServiceReferentialImpl.
*/
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-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-06 08:58:16 UTC (rev 165)
@@ -24,15 +24,17 @@
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.bean.ContactFilter;
+import fr.ifremer.suiviobsmer.bean.ContactFilterImpl;
import fr.ifremer.suiviobsmer.bean.ContactState;
import fr.ifremer.suiviobsmer.entity.Boat;
-import fr.ifremer.suiviobsmer.entity.Company;
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;
import fr.ifremer.suiviobsmer.services.ServiceContact;
+import fr.ifremer.suiviobsmer.services.ServiceReferential;
import fr.ifremer.suiviobsmer.services.ServiceSampling;
import fr.ifremer.suiviobsmer.ui.base.BusinessUtils;
import fr.ifremer.suiviobsmer.ui.base.GenericSelectModel;
@@ -43,6 +45,7 @@
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -50,6 +53,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.Field;
+import org.apache.tapestry5.OptionModel;
+import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -59,6 +64,8 @@
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.services.BeanModelSource;
@@ -114,6 +121,88 @@
contactsForm.clearErrors();
}
+ /**************************** CONTACT FILTERS *****************************/
+
+ @Persist
+ private ContactFilter contactFilter;
+
+ @Persist
+ private GenericSelectModel<SampleRow> sampleRowSelectModel;
+
+ @Property
+ private String sampleRowId;
+
+ @Inject
+ private ServiceReferential serviceReferential;
+
+ @Persist
+ private SelectModel facadeSelectModel;
+
+ @Persist
+ private SelectModel sectorSelectModel;
+
+ private boolean reset;
+
+ public ContactFilter getContactFilter() throws SuiviObsmerException {
+ if (contactFilter == null) {
+ contactFilter = new ContactFilterImpl();
+ if (!user.getAdmin()) {
+ contactFilter.setCompany(user.getCompany());
+ }
+ }
+ return contactFilter;
+ }
+
+ public SelectModel getFacadeSelectModel() throws SuiviObsmerException {
+ if (facadeSelectModel == null) {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getFacades]");
+ }
+ List<OptionModel> options = new ArrayList<OptionModel>();
+ for (String facadeName : serviceReferential.getFacades()) {
+ options.add(new OptionModelImpl(facadeName,facadeName));
+ }
+ facadeSelectModel = new SelectModelImpl(null, options);
+ }
+ return facadeSelectModel;
+ }
+
+ public SelectModel getSectorSelectModel() throws SuiviObsmerException {
+ if (sectorSelectModel == null) {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getSectors]");
+ }
+ List<OptionModel> options = new ArrayList<OptionModel>();
+ for (String sectorName : serviceReferential.getSectors(getContactFilter().getFacadeName())) {
+ options.add(new OptionModelImpl(sectorName,sectorName));
+ }
+ sectorSelectModel = new SelectModelImpl(null, options);
+ }
+ return sectorSelectModel;
+ }
+
+ public GenericSelectModel<SampleRow> getSampleRowSelectModel() throws SuiviObsmerException {
+ if (sampleRowSelectModel == null) {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getSampleRowsForUser]");
+ }
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsForUser(user);
+ sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class,
+ "code", "topiaId", propertyAccess);
+ }
+ return sampleRowSelectModel;
+ }
+
+ void onSelectedFromReset() {
+ reset = true;
+ }
+
+ void onSuccessFromFiltersForm() {
+ if (reset) {
+ contactFilter = null;
+ }
+ }
+
/**************************** CONTACT IMPORT/EXPORT ***********************/
@Property
@@ -195,8 +284,7 @@
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getContactsByFilter]");
}
- Company company = !user.getAdmin() ? user.getCompany() : null;
- contacts = serviceContact.getContactsByFilter(company);
+ contacts = serviceContact.getContactsByFilter(getContactFilter());
}
return contacts;
}
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-05 16:39:31 UTC (rev 164)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-06 08:58:16 UTC (rev 165)
@@ -3,6 +3,76 @@
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
<!--t:include="creationDate, lastState, boatName, boatImmatriculation, boatDistrictCode, beginTideDate, endTideDate,
nbObservants, mammals, editDate, comment, validation"-->
+<div t:type="zone" class="so-filters" t:id="filtersZone" t:update="show" id="so-contacts-filters">
+ <fieldset>
+ <legend>Filtres de recherche</legend>
+ <!--<div class="aright">
+ <t:if t:test="filtersHidden">
+ <a t:type="actionlink" t:id="showFilters" t:zone="so-contacts-filters">
+ <img src="${asset:context:}/img/downarrow.png" title="Afficher les filtres"/>
+ </a>
+ <p:else>
+ <a t:type="actionlink" t:id="hideFilters" t:zone="so-boats-filters">
+ <img src="${asset:context:}/img/uparrow.png" title="Cacher les filtres"/>
+ </a>
+ </p:else>
+ </t:if>
+ </div>-->
+ <!--<t:feedback t:id="filterFeedback" />
+ <div class="so-filters-form ${hiddenClass}">-->
+ <form t:type="form" t:id="filtersForm">
+ <t:errors />
+ <div class="t-beaneditor">
+ <t:beaneditor t:id="filtersEditor" t:object="contactFilter"
+ t:include="facadeName, sectorName, state" t:add="boat, sampleRow, observer, mammals, validation"
+ t:reorder="boat, facadeName, sectorName, sampleRow, observer">
+ <p:boat>
+ <t:label t:for="boat" />
+ <span> immatriculation </span>
+ <input t:type="textfield" t:id="boat" class="width50" t:value="contactFilter.boatImmatriculation" />
+ <span> code quartier </span>
+ <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="contactFilter.boatDistrictCode" />
+ </p:boat>
+ <p:facadeName>
+ <t:label t:for="facadeName" />
+ <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName" />
+ </p:facadeName>
+ <p:sectorName>
+ <t:label t:for="sectorName" />
+ <select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="contactFilter.sectorName" />
+ </p:sectorName>
+ <p:sampleRow>
+ <t:label t:for="sampleRow" />
+ <select t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ </p:sampleRow>
+ <p:observer>
+ N/A
+ </p:observer>
+ <p:state>
+ N/A
+ </p:state>
+ <p:mammals>
+ N/A
+ </p:mammals>
+ <p:validation>
+ <t:label t:for="validation" />
+ <input t:type="checkbox" t:id="validation" value="contactFilter.companyAccepted" />
+ <img src="${asset:context:}/img/true-22px.png" title="Accepté par la société" />
+ <input t:type="checkbox" value="contactFilter.companyRefused" />
+ <img src="${asset:context:}/img/false-22px.png" title="Refusé par la société" />
+ <input t:type="checkbox" value="contactFilter.companyUndefined" />
+ <img src="${asset:context:}/img/help-22px.png" title="Non validé par la société" />
+ </p:validation>
+ </t:beaneditor>
+ <div class="t-beaneditor-row aright">
+ <input t:type="submit" class="ico search-32px" t:id="search" value="Search" />
+ <input t:type="submit" class="ico undo" t:id="reset" value="Reset" />
+ </div>
+ </div>
+ </form>
+ <!--</div>-->
+ </fieldset>
+</div>
<form t:type="form" t:id="importContacts">
<t:errors />
<t:label for="contactsCsvFile" /> :
1
0
[Suiviobsmer-commits] r164 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/webapp/css
by fdesbois@users.labs.libre-entreprise.org 05 Jan '10
by fdesbois@users.labs.libre-entreprise.org 05 Jan '10
05 Jan '10
Author: fdesbois
Date: 2010-01-05 16:39:31 +0000 (Tue, 05 Jan 2010)
New Revision: 164
Added:
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java
trunk/suiviobsmer-ui/src/main/webapp/ExceptionReport.tml
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/css/common.css
Log:
- Improve contacts import/export
- Add ExceptionReport page to show exceptions
- Add missing admin field in Administration
- Add missing loadProperty for getSampleRowsByUser
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-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-05 16:39:31 UTC (rev 164)
@@ -1,7 +1,15 @@
package fr.ifremer.suiviobsmer;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DurationFormatUtils;
import org.slf4j.Logger;
@@ -23,15 +31,15 @@
*/
public static enum BOAT {
/** Boat immatriculation **/
- NAVS_COD(19),
+ NAVS_COD(20),
/** Boat name **/
- CARN_NOM(20),
+ CARN_NOM(21),
/** Boat length **/
CARN_LONGUEUR_HT(-1),
/** Boat build year **/
CARN_ANNEE(-1),
/** Boat district code **/
- QUARTIER_IMMA(21),
+ QUARTIER_IMMA(22),
/** ShipOwner code **/
PER_COD(-1),
/** ShipOwner last name **/
@@ -57,27 +65,27 @@
*/
public static enum SAMPLING {
/** SampleRow code **/
- PLAN_CODE(5),
+ PLAN_CODE(6),
/** Program code **/
- PROGRAMME_CODE(6),
+ PROGRAMME_CODE(7),
/** Program period begin **/
- PROGRAMME_DEBUT(7),
+ PROGRAMME_DEBUT(8),
/** Program period end **/
- PROGRAMME_FIN(8),
+ PROGRAMME_FIN(9),
/** FishingZone other infos **/
- PECHE_AUTRE(12),
+ PECHE_AUTRE(13),
/** Profession code DCF5 **/
- METIER_CODE_DCF5(13),
+ METIER_CODE_DCF5(14),
/** Profession mesh size **/
- METIER_MAILLAGE(14),
+ METIER_MAILLAGE(15),
/** Profession size **/
- METIER_TAILLE(15),
+ METIER_TAILLE(16),
/** Profession other infos **/
- METIER_AUTRE(16),
+ METIER_AUTRE(17),
/** Profession libelle **/
- METIER_LIBELLE(17),
+ METIER_LIBELLE(18),
/** Profession species **/
- METIER_ESPECES(18),
+ METIER_ESPECES(19),
/** SampleRow nb observants **/
PLAN_NB_OBSERV(-1),
/** SampleRow average tide time **/
@@ -99,11 +107,11 @@
*/
public static enum FISHING_ZONE {
/** FishingZone facade **/
- PECHE_FACADE(9),
+ PECHE_FACADE(10),
/** FishingZone sector **/
- PECHE_ZONE(10),
+ PECHE_ZONE(11),
/** FishingZone district code **/
- PECHE_DIVISION(11);
+ PECHE_DIVISION(12);
int contactHeader;
@@ -120,38 +128,40 @@
* CSV headers for Contact
*/
public static enum CONTACT {
+ /** Contact code (create date time for existing contact) **/
+ CONT_CODE(0),
/** Contact create date **/
- CONT_CREATION(0),
+ CONT_CREATION(1),
/** User id **/
- OBSERV_ID(1),
+ OBSERV_ID(2),
/** User prenom **/
- OBSERV_PRENOM(2),
+ OBSERV_PRENOM(3),
/** User nom **/
- OBSERV_NOM(3),
+ OBSERV_NOM(4),
/** Company id **/
//SOCIETE_ID,
/** Company nom **/
- SOCIETE_NOM(4),
+ SOCIETE_NOM(5),
/** Contact state **/
- CONT_ETAT(22),
+ CONT_ETAT(23),
/** Contact tide begin **/
- CONT_DEBUT_MAREE(23),
+ CONT_DEBUT_MAREE(24),
/** Contact tide end **/
- CONT_FIN_MAREE(24),
+ CONT_FIN_MAREE(25),
/** Contact nb observants **/
- CONT_NB_OBSERV(25),
+ CONT_NB_OBSERV(26),
/** Contact mammals capture **/
- CONT_MAM_CAPT(26),
+ CONT_MAM_CAPT(27),
/** Contact mammals observation **/
- CONT_MAM_OBS(27),
+ CONT_MAM_OBS(28),
/** Contact comment **/
- CONT_COMMENT(28),
+ CONT_COMMENT(29),
/** Contact data input **/
- CONT_ALLEGRO(29),
+ CONT_ALLEGRO(30),
/** Contact company validation **/
- CONT_SOCIETE_VALID(30),
+ CONT_SOCIETE_VALID(31),
/** Contact program validation **/
- CONT_PROGRAM_VALID(31);
+ CONT_PROGRAM_VALID(32);
int contactHeader;
@@ -164,7 +174,7 @@
}
}
- public static int CONTACT_NB_HEADERS = 31;
+ public static int CONTACT_NB_HEADERS = 33;
public static String getHeaderForContactCsv(int index) {
for (BOAT boatEnum : BOAT.values()) {
@@ -219,6 +229,44 @@
return mammals.equals("X");
}
+ protected static String CONTACT_TIME_PATTERN = "HHmmssS";
+
+ protected static String CONTACT_DATE_PATTERN = "dd/MM/yyyy";
+
+ public static String formatContactCode(Date createDate) {
+ DateFormat timeFormat = new SimpleDateFormat(CONTACT_TIME_PATTERN, Locale.FRENCH);
+ String result = timeFormat.format(createDate);
+ return result;
+ }
+
+ public static Date parseContactCreateDate(String code, String createDate) throws ParseException {
+ Calendar time = new GregorianCalendar(Locale.FRENCH);
+ if (!StringUtils.isEmpty(code)) {
+ DateFormat timeFormat = new SimpleDateFormat(CONTACT_TIME_PATTERN, Locale.FRENCH);
+ time = new GregorianCalendar(Locale.FRENCH);
+ time.setTime(timeFormat.parse(code));
+ } else {
+ time.setTime(SuiviObsmerContext.getCurrentDate());
+ }
+
+ Calendar result = new GregorianCalendar(Locale.FRENCH);
+ if (!StringUtils.isEmpty(createDate)) {
+ DateFormat dateFormat = getContactDateFormat();
+ result.setTime(dateFormat.parse(createDate));
+ result.set(Calendar.HOUR_OF_DAY, time.get(Calendar.HOUR_OF_DAY));
+ result.set(Calendar.MINUTE, time.get(Calendar.MINUTE));
+ result.set(Calendar.SECOND, time.get(Calendar.SECOND));
+ result.set(Calendar.MILLISECOND, time.get(Calendar.MILLISECOND));
+ } else {
+ result.setTime(SuiviObsmerContext.getCurrentDate());
+ }
+ return result.getTime();
+ }
+
+ public static DateFormat getContactDateFormat() {
+ return new SimpleDateFormat(CONTACT_DATE_PATTERN, Locale.FRENCH);
+ }
+
public static long logTimeAndMemory(Logger log, long tic1, String msg) {
if (log.isInfoEnabled()) {
log.info("RUNNING... Import : " + msg);
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-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-05 16:39:31 UTC (rev 164)
@@ -41,6 +41,7 @@
import fr.ifremer.suiviobsmer.entity.Contact;
import fr.ifremer.suiviobsmer.entity.ContactDAO;
import fr.ifremer.suiviobsmer.entity.ContactImpl;
+import fr.ifremer.suiviobsmer.entity.ElligibleBoat;
import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.Program;
@@ -51,15 +52,15 @@
import fr.ifremer.suiviobsmer.services.ServiceContact;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.io.OutputStream;
import java.nio.charset.Charset;
import java.text.DateFormat;
-import java.text.SimpleDateFormat;
+import java.text.ParseException;
+import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.persistence.TopiaEntity;
import org.slf4j.Logger;
@@ -101,6 +102,11 @@
}
query.addLoad("user.company", "sampleRow.program", "sampleRow.profession", "sampleRow.company");
+
+ if (log.isInfoEnabled()) {
+ log.info("Query : " + query);
+ }
+
results = query.executeToEntityMap();
transaction.closeContext();
@@ -158,11 +164,8 @@
}
}
- protected static String DATE_TIME_PATTERN = "dd/MM/yyyy HH:mm:ss";
- protected static String DATE_PATTERN = "dd/MM/yyyy";
-
@Override
- public InputStream exportContactCsv(User user, List<Contact> contacts)
+ public InputStream exportContactCsv(User user, Collection<Contact> contacts)
throws SuiviObsmerException {
TopiaContext transaction = null;
InputStream result = null;
@@ -176,14 +179,18 @@
contacts = dao.findAll();
} else {
// Filtered by company for a simple user
- contacts = dao.createQuery().
- add("user.company", user.getCompany()).
- executeToEntityList();
+ contacts = dao.createQuery().add("user.company", user.getCompany()).executeToEntityList();
}
}
- String alea = SuiviObsmerContext.createRandomString(8);
- FileOutputStream output = new FileOutputStream("/tmp/contact-" + alea + ".csv");
+ String alea = SuiviObsmerContext.createRandomString(16);
+ String filename = "/tmp/wao-contacts-" + alea + ".csv";
+
+ if (log.isDebugEnabled()) {
+ log.debug("Export contacts into : " + filename);
+ }
+
+ FileOutputStream output = new FileOutputStream(filename);
CsvWriter writer = new CsvWriter(output, ',', Charset.forName("UTF-8"));
// Headers
@@ -191,9 +198,10 @@
String header = ImportHelper.getHeaderForContactCsv(i);
writer.write(header);
}
+ writer.endRecord();
- DateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_PATTERN, Locale.FRENCH);
- DateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN, Locale.FRENCH);
+
+ DateFormat dateFormat = ImportHelper.getContactDateFormat();
int curr = 0;
for (Contact contact : contacts) {
@@ -201,17 +209,24 @@
String[] record = new String[ImportHelper.CONTACT_NB_HEADERS];
// Contact part
- record[CONTACT.CONT_CREATION.forContactCsv()] = dateTimeFormat.format(contact.getTopiaCreateDate());
+ record[CONTACT.CONT_CODE.forContactCsv()] = ImportHelper.formatContactCode(contact.getTopiaCreateDate());
+ record[CONTACT.CONT_CREATION.forContactCsv()] = dateFormat.format(contact.getTopiaCreateDate());
record[CONTACT.CONT_ETAT.forContactCsv()] = contact.getState();
- record[CONTACT.CONT_DEBUT_MAREE.forContactCsv()] = dateFormat.format(contact.getTideBeginDate());
- record[CONTACT.CONT_FIN_MAREE.forContactCsv()] = dateFormat.format(contact.getTideEndDate());
+ if (contact.getTideBeginDate() != null) {
+ record[CONTACT.CONT_DEBUT_MAREE.forContactCsv()] = dateFormat.format(contact.getTideBeginDate());
+ }
+ if (contact.getTideEndDate() != null) {
+ record[CONTACT.CONT_FIN_MAREE.forContactCsv()] = dateFormat.format(contact.getTideEndDate());
+ }
record[CONTACT.CONT_NB_OBSERV.forContactCsv()] = String.valueOf(contact.getNbObservants());
record[CONTACT.CONT_MAM_CAPT.forContactCsv()] =
ImportHelper.formatContactMammals(contact.getMammalsCapture());
record[CONTACT.CONT_MAM_OBS.forContactCsv()] =
ImportHelper.formatContactMammals(contact.getMammalsObservation());
record[CONTACT.CONT_COMMENT.forContactCsv()] = contact.getComment();
- record[CONTACT.CONT_ALLEGRO.forContactCsv()] = dateFormat.format(contact.getDataInputDate());
+ if (contact.getDataInputDate() != null) {
+ record[CONTACT.CONT_ALLEGRO.forContactCsv()] = dateFormat.format(contact.getDataInputDate());
+ }
record[CONTACT.CONT_SOCIETE_VALID.forContactCsv()] =
ImportHelper.formatContactValidation(contact.getValidationCompany());
record[CONTACT.CONT_PROGRAM_VALID.forContactCsv()] =
@@ -264,7 +279,7 @@
}
writer.close();
- result = new FileInputStream(output.getFD());
+ result = new FileInputStream(filename);
transaction.closeContext();
} catch (Exception eee) {
@@ -275,9 +290,10 @@
}
@Override
- public int importContactCsv(InputStream input) throws SuiviObsmerException {
+ public int importContactCsv(User user, InputStream input) throws SuiviObsmerException {
TopiaContext transaction = null;
int result = 0;
+ int currRow = 1;
try {
transaction = rootContext.beginTransaction();
@@ -290,16 +306,14 @@
SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
- DateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_PATTERN, Locale.FRENCH);
- DateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN, Locale.FRENCH);
-
- int currRow = 0;
+ DateFormat dateFormat = ImportHelper.getContactDateFormat();
+
long tic;
tic = System.currentTimeMillis();
while(reader.readRecord()) {
currRow++;
- String userId = reader.get(CONTACT.OBSERV_ID.name());
+ String observerId = reader.get(CONTACT.OBSERV_ID.name());
String state = reader.get(CONTACT.CONT_ETAT.name());
ContactState contactState = ContactState.createContactStateEnum(state);
@@ -311,36 +325,82 @@
ContactState.availableStates());
}
- User user = userDAO.findByLogin(userId);
- if (user != null) {
- // FIXME-FD20100104 findContains not optimized in TopiaDAOImpl
- Company company = companyDAO.findContainsUser(user);
+ User observer = userDAO.findByLogin(observerId);
+ if (observer != null) {
+ Company company = user.getCompany();
+ // For an admin, get the company from database
+ if (user.getAdmin()) {
+ // FIXME-FD20100104 findContains not optimized in TopiaDAOImpl
+ company = companyDAO.findContainsUser(observer);
+ // For a user, check if the observer as the same company as the current user
+ } else if (!observer.getCompany().getTopiaId().equals(company.getTopiaId())) {
+ throw new SuiviObsmerBusinessException(Type.IMPORT_ERROR, this.getClass(),
+ "Erreur ligne " + currRow + " : " +
+ "L'observateur avec pour login '" + observerId + "' n'appartient pas à votre société !");
+ }
+
if (company != null) {
String rowCode = reader.get(SAMPLING.PLAN_CODE.name());
- SampleRow row = rowDAO.findByCode(rowCode);
+ SampleRow row = rowDAO.findByProperties(SampleRow.CODE, rowCode, SampleRow.COMPANY, company);
if (row != null) {
int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name()));
-
- Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
+ // The boat must be elligible for the row
+ TopiaQuery<Boat> boatQuery = boatDAO.createQuery("B").addSelect("B").
+ addFrom(ElligibleBoat.class.getName() + " E").
+ add("E.sampleRow", row).add("E.boat = B").
+ add(Boat.IMMATRICULATION, boatImmatriculation);
+
+ if (!user.getAdmin()) {
+ // Constraint on companyActive for elligibleBoat for a simple user
+ boatQuery.add("E.companyActive = :booleanTrue OR (E.companyActive IS NULL AND E.globalActive = :booleanTrue)").
+ addParam("booleanTrue", Boolean.TRUE);
+ }
+
+ Boat boat = boatQuery.executeToEntity();
+
if (boat != null) {
- Date createDate = dateTimeFormat.parse(reader.get(CONTACT.CONT_CREATION.name()));
- Contact contact = dao.createQuery().
- add(TopiaEntity.TOPIA_CREATE_DATE, createDate).
- executeToEntity();
+ Contact contact = null;
- if (contact == null) { // new contact to import
+ // Check if createDate exist
+ String createDateString = reader.get(CONTACT.CONT_CREATION.name());
+ //Date createDate = !StringUtils.isEmpty(createDateString) ? dateFormat.parse(createDateString) : null;
+
+ String contactCode = reader.get(CONTACT.CONT_CODE.name());
+ Date createDate = ImportHelper.parseContactCreateDate(contactCode, createDateString);
+ if (log.isDebugEnabled()) {
+ log.debug("Ligne " + currRow + " : Create date : " + createDate);
+ }
+
+ if (!StringUtils.isEmpty(contactCode) && !StringUtils.isEmpty(createDateString)) {
+ // Get entity from database
+ contact = dao.createQuery().
+ add(TopiaEntity.TOPIA_CREATE_DATE, createDate).
+ add("user.company", company).
+ add(Contact.BOAT, boat).
+ add(Contact.SAMPLE_ROW, row).
+ executeToEntity();
+ }
+
+ // new contact to import
+ if (contact == null) {
contact = dao.create(
- Contact.USER, user,
+ TopiaEntity.TOPIA_CREATE_DATE, createDate,
+ Contact.USER, observer,
Contact.SAMPLE_ROW, row,
Contact.BOAT, boat);
}
- Date tideBegin = dateFormat.parse(CONTACT.CONT_DEBUT_MAREE.name());
- Date tideEnd = dateFormat.parse(CONTACT.CONT_FIN_MAREE.name());
- int nbObservants = Integer.parseInt(reader.get(CONTACT.CONT_NB_OBSERV.name()));
+
+ String tideBeginString = reader.get(CONTACT.CONT_DEBUT_MAREE.name());
+ String tideEndString = reader.get(CONTACT.CONT_FIN_MAREE.name());
+ String nbObservantsString = reader.get(CONTACT.CONT_NB_OBSERV.name());
+
+ Date tideBegin = !StringUtils.isEmpty(tideBeginString) ? dateFormat.parse(tideBeginString) : null;
+ Date tideEnd = !StringUtils.isEmpty(tideEndString) ? dateFormat.parse(tideEndString) : null;
+ int nbObservants = !StringUtils.isEmpty(nbObservantsString) ? Integer.parseInt(nbObservantsString) : 0;
boolean mammalsCapture =
ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_CAPT.name()));
boolean mammalsObsv =
@@ -357,11 +417,12 @@
} else if (log.isWarnEnabled()) {
log.warn("Import contact ligne " + currRow + " : " +
- "Navire inexistant avec l'immatriculation : " + boatImmatriculation);
+ "Navire inexistant ou incompatible avec la ligne d'échantillon " +
+ "pour l'immatriculation : " + boatImmatriculation);
}
} else if (log.isWarnEnabled()) {
log.warn("Import contact ligne " + currRow + " : " +
- "Ligne d'échantillon inexistante avec le code : " + rowCode);
+ "Ligne d'échantillon inexistante ou incompatible avec la société pour le code : " + rowCode);
}
} else if (log.isErrorEnabled()) {
log.error("Import contact ligne " + currRow + " : " +
@@ -369,7 +430,7 @@
}
} else if (log.isWarnEnabled()) {
log.warn("Import contact ligne " + currRow + " : " +
- "Utilisateur inexistant avec l'identifiant : " + userId);
+ "Utilisateur inexistant avec l'identifiant : " + observerId);
}
if (result % 1000 == 0) {
@@ -388,10 +449,17 @@
}
}
+ transaction.commitTransaction();
+
transaction.closeContext();
- } catch (Exception eee) {
+ } catch (ParseException eee) {
SuiviObsmerContext.serviceException(transaction,
- "Impossible d'exporter les contacts", eee);
+ "Erreur ligne " + currRow + " : " +
+ "Le format des dates est incorrect, il doit être de la forme : JJ/MM/AAAA " +
+ "(ou JJ/MM/AAAA HH:MM:SS pour la date de création d'un contact existant)", eee);
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible d'importer les contacts", eee);
}
return result;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-05 16:39:31 UTC (rev 164)
@@ -248,7 +248,7 @@
query.add(SampleRow.COMPANY, user.getCompany());
}
- results = query.executeToEntityList();
+ results = query.addLoad("program", "profession").executeToEntityList();
// SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
//
Modified: 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-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java 2010-01-05 16:39:31 UTC (rev 164)
@@ -30,8 +30,8 @@
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceContact;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -262,12 +262,12 @@
}
@Override
- public InputStream exportContactCsv(User user, List<Contact> contacts) throws SuiviObsmerException {
+ public InputStream exportContactCsv(User user, Collection<Contact> contacts) throws SuiviObsmerException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
- public int importContactCsv(InputStream input) throws SuiviObsmerException {
+ public int importContactCsv(User user, InputStream input) throws SuiviObsmerException {
throw new UnsupportedOperationException("Not supported yet.");
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Added: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java (rev 0)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java 2010-01-05 16:39:31 UTC (rev 164)
@@ -0,0 +1,129 @@
+
+package fr.ifremer.suiviobsmer;
+
+import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author fdesbois
+ */
+public class ImportHelperTest {
+
+ private static SuiviObsmerRunner runner;
+
+ private static final Logger log = LoggerFactory.getLogger(ImportHelperTest.class);
+
+ public ImportHelperTest() {
+ runner = new SuiviObsmerRunnerTest();
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+
+ }
+
+ @Before
+ public void setUp() throws SuiviObsmerException {
+ runner.start();
+ }
+
+ @After
+ public void tearDown() throws SuiviObsmerException {
+ runner.stop();
+ }
+
+ /**
+ * Test of getHeaderForContactCsv method, of class ImportHelper.
+ */
+ //@Test
+ public void testGetHeaderForContactCsv() {
+ System.out.println("getHeaderForContactCsv");
+ }
+
+ /**
+ * Test of formatContactValidation method, of class ImportHelper.
+ */
+ //@Test
+ public void testFormatContactValidation() {
+ System.out.println("formatContactValidation");
+ }
+
+ /**
+ * Test of formatContactMammals method, of class ImportHelper.
+ */
+ //@Test
+ public void testFormatContactMammals() {
+ System.out.println("formatContactMammals");
+ }
+
+ /**
+ * Test of parseContactMammals method, of class ImportHelper.
+ */
+ //@Test
+ public void testParseContactMammals() {
+ System.out.println("parseContactMammals");
+ }
+
+ /**
+ * Test of formatContactCode method, of class ImportHelper.
+ */
+ @Test
+ public void testFormatContactCode() {
+ log.info("formatContactCode");
+ Date createDate = SuiviObsmerContext.getCurrentDate();
+ Calendar calendar = new GregorianCalendar(Locale.FRENCH);
+ calendar.setTime(createDate);
+ calendar.set(Calendar.HOUR_OF_DAY, 10);
+ calendar.set(Calendar.MINUTE, 1);
+ calendar.set(Calendar.SECOND, 50);
+ calendar.set(Calendar.MILLISECOND, 260);
+ String expResult = "100150260";
+ String result = ImportHelper.formatContactCode(calendar.getTime());
+ assertEquals(expResult, result);
+ }
+
+ /**
+ * Test of parseContactCreateDate method, of class ImportHelper.
+ */
+ @Test
+ public void testParseContactCreateDate() throws Exception {
+ System.out.println("parseContactCreateDate");
+ String code = "101250718";
+ Date createDate = SuiviObsmerContext.getCurrentDate();
+ Calendar calendar = new GregorianCalendar(Locale.FRENCH);
+ calendar.setTime(createDate);
+ calendar.set(Calendar.HOUR_OF_DAY, 10);
+ calendar.set(Calendar.MINUTE, 12);
+ calendar.set(Calendar.SECOND, 50);
+ calendar.set(Calendar.MILLISECOND, 718);
+ Date expResult = calendar.getTime();
+ Date result = ImportHelper.parseContactCreateDate(code, "23/10/2009");
+ assertEquals(expResult, result);
+ }
+
+ /**
+ * Test of logTimeAndMemory method, of class ImportHelper.
+ */
+ //@Test
+ public void testLogTimeAndMemory() {
+ System.out.println("logTimeAndMemory");
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/ImportHelperTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
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-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-05 16:39:31 UTC (rev 164)
@@ -21,6 +21,7 @@
package fr.ifremer.suiviobsmer.ui.pages;
+import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.bean.ContactState;
@@ -38,6 +39,8 @@
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
import fr.ifremer.suiviobsmer.ui.components.Layout;
import fr.ifremer.suiviobsmer.ui.services.ContactModelFactory;
+import java.io.IOException;
+import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -47,6 +50,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.Field;
+import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Log;
@@ -58,6 +62,8 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.PropertyAccess;
import org.apache.tapestry5.services.BeanModelSource;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.upload.services.UploadedFile;
import org.nuiton.util.DateUtils;
import org.slf4j.Logger;
@@ -108,6 +114,50 @@
contactsForm.clearErrors();
}
+ /**************************** CONTACT IMPORT/EXPORT ***********************/
+
+ @Property
+ private UploadedFile contactsCsvFile;
+
+ @Log
+ void onSuccessFromImportContacts() throws SuiviObsmerException {
+ //importBoatsForm.clearErrors();
+ try {
+ int result = serviceContact.importContactCsv(user, contactsCsvFile.getStream());
+ // Suppress persitant list of contacts
+ contacts = null;
+ layout.getFeedBack().addInfo(result + " contacts importés");
+ } catch (SuiviObsmerBusinessException eee) {
+ layout.getFeedBack().addError(eee.getMessage());
+ }
+ //return importBoatsForm.getHasErrors() ? importBoatsForm : this;
+ }
+
+ StreamResponse onActionFromExportShowContacts() {
+ return new StreamResponse() {
+
+ @Override
+ public String getContentType() {
+ return "text/csv;charset=utf-8";
+ }
+
+ @Override
+ public InputStream getStream() throws IOException {
+ InputStream result = null;
+ try {
+ result = serviceContact.exportContactCsv(user, getContacts().values());
+ } catch (SuiviObsmerException eee) {
+ throw new IOException(eee);
+ }
+ return result;
+ }
+
+ @Override
+ public void prepareResponse(Response response) {
+ }
+ };
+ }
+
/**************************** CONTACT LIST ********************************/
@Inject
Added: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java (rev 0)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java 2010-01-05 16:39:31 UTC (rev 164)
@@ -0,0 +1,64 @@
+
+package fr.ifremer.suiviobsmer.ui.pages;
+
+import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
+import fr.ifremer.suiviobsmer.ui.components.Layout;
+import org.apache.tapestry5.annotations.InjectComponent;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.runtime.ComponentEventException;
+import org.apache.tapestry5.services.ExceptionReporter;
+import org.slf4j.Logger;
+
+/**
+ * ExceptionReport
+ *
+ * Created: 5 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class ExceptionReport implements ExceptionReporter, SuiviObsmerPage {
+
+ @InjectComponent
+ private Layout layout;
+
+ @Inject
+ private Logger log;
+
+ @Property
+ private Throwable exception;
+
+ @Override
+ public void reportException(Throwable eee) {
+ this.exception = getSuiviObsmerException(eee);
+ if (exception != null) {
+ layout.getFeedBack().addError(exception.getMessage());
+ this.exception = exception.getCause();
+ } else {
+ this.exception = eee;
+ log.error("Unexpected exception", eee);
+ }
+ layout.getFeedBack().addError("Erreur : " + this.exception.getClass().getSimpleName() + " : " + this.exception.getMessage());
+ }
+
+ protected Throwable getSuiviObsmerException(Throwable eee) {
+ if (eee == null) {
+ return eee;
+ }
+ if (eee instanceof SuiviObsmerException) {
+ return eee;
+ }
+ return getSuiviObsmerException(eee.getCause());
+ }
+
+ @Override
+ public boolean isOnlyForAdmin() {
+ return false;
+ }
+
+}
Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/ExceptionReport.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-05 16:39:31 UTC (rev 164)
@@ -42,7 +42,7 @@
</form>
<fieldset class="user-form clearfix">
- <form t:type="beaneditform" class="clearfix" t:id="user" t:include="firstName, lastName, login, password, phoneNumber, active">
+ <form t:type="beaneditform" class="clearfix" t:id="user" t:include="firstName, lastName, login, password, phoneNumber, admin, active">
<p:password>
<t:label t:for="generatePassword" />
<input t:type="checkbox" t:id="generatePassword" value="generatePassword" />
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-05 16:39:31 UTC (rev 164)
@@ -3,6 +3,15 @@
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
<!--t:include="creationDate, lastState, boatName, boatImmatriculation, boatDistrictCode, beginTideDate, endTideDate,
nbObservants, mammals, editDate, comment, validation"-->
+<form t:type="form" t:id="importContacts">
+ <t:errors />
+ <t:label for="contactsCsvFile" /> :
+ <input t:type="upload" t:id="contactsCsvFile" t:validate="required" />
+ <input t:type="submit" class="ico import" value="OK" title="Importer une liste de contacts (format CSV)" />
+</form>
+<a t:type="actionlink" t:id="exportShowContacts">
+ EXPORT
+</a>
<t:zone t:id="gridZone" t:update="show">
<form t:type="form" t:id="contactsForm" t:zone="gridZone">
<t:errors id="so-contact-form-errors" t:banner="message:contactsForm-errors-banner"/>
Added: trunk/suiviobsmer-ui/src/main/webapp/ExceptionReport.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/ExceptionReport.tml (rev 0)
+++ trunk/suiviobsmer-ui/src/main/webapp/ExceptionReport.tml 2010-01-05 16:39:31 UTC (rev 164)
@@ -0,0 +1,15 @@
+<t:layout t:pageTitle="Erreur" t:contentId="so-exception-report"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
+
+</t:layout>
+
+<!--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>WAO - Web Applicatif Obsmer : Erreur</title>
+ </head>
+ <body>
+ <t:feedback t:id="errorFeedback" />
+ </body>
+</html>-->
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/common.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-05 09:55:40 UTC (rev 163)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-05 16:39:31 UTC (rev 164)
@@ -287,7 +287,7 @@
text-align: center;
}
-div.so-import fieldset form input.import {
+input.import {
width: 22px;
height: 22px;
background: url(../img/file-import-22px.png) no-repeat center center;
1
0
[Suiviobsmer-commits] r163 - in trunk/suiviobsmer-business/src/main: java/fr/ifremer/suiviobsmer java/fr/ifremer/suiviobsmer/bean java/fr/ifremer/suiviobsmer/impl java/fr/ifremer/suiviobsmer/mock xmi
by fdesbois@users.labs.libre-entreprise.org 05 Jan '10
by fdesbois@users.labs.libre-entreprise.org 05 Jan '10
05 Jan '10
Author: fdesbois
Date: 2010-01-05 09:55:40 +0000 (Tue, 05 Jan 2010)
New Revision: 163
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.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/ServiceContactMock.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
Log:
- Add ImportHelper to simplify CSV headers managment
- Improve imports
- Add import/export for contacts
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -0,0 +1,235 @@
+
+package fr.ifremer.suiviobsmer;
+
+import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang.time.DurationFormatUtils;
+import org.slf4j.Logger;
+
+/**
+ * ImportHelper
+ *
+ * Created: 4 janv. 2010
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class ImportHelper {
+
+ /**
+ * CSV headers for Boat
+ */
+ public static enum BOAT {
+ /** Boat immatriculation **/
+ NAVS_COD(19),
+ /** Boat name **/
+ CARN_NOM(20),
+ /** Boat length **/
+ CARN_LONGUEUR_HT(-1),
+ /** Boat build year **/
+ CARN_ANNEE(-1),
+ /** Boat district code **/
+ QUARTIER_IMMA(21),
+ /** ShipOwner code **/
+ PER_COD(-1),
+ /** ShipOwner last name **/
+ PER_NOM(-1),
+ /** ShipOwner first name **/
+ PER_PRENOM(-1),
+ /** Boat active **/
+ NAVS_ACTIVE(-1);
+
+ int contactHeader;
+
+ BOAT(int index) {
+ this.contactHeader = index;
+ }
+
+ public int forContactCsv() {
+ return contactHeader;
+ }
+ }
+
+ /**
+ * CSV headers for SamplingPlan
+ */
+ public static enum SAMPLING {
+ /** SampleRow code **/
+ PLAN_CODE(5),
+ /** Program code **/
+ PROGRAMME_CODE(6),
+ /** Program period begin **/
+ PROGRAMME_DEBUT(7),
+ /** Program period end **/
+ PROGRAMME_FIN(8),
+ /** FishingZone other infos **/
+ PECHE_AUTRE(12),
+ /** Profession code DCF5 **/
+ METIER_CODE_DCF5(13),
+ /** Profession mesh size **/
+ METIER_MAILLAGE(14),
+ /** Profession size **/
+ METIER_TAILLE(15),
+ /** Profession other infos **/
+ METIER_AUTRE(16),
+ /** Profession libelle **/
+ METIER_LIBELLE(17),
+ /** Profession species **/
+ METIER_ESPECES(18),
+ /** SampleRow nb observants **/
+ PLAN_NB_OBSERV(-1),
+ /** SampleRow average tide time **/
+ PLAN_DUREE_MOY(-1);
+
+ int contactHeader;
+
+ SAMPLING(int index) {
+ this.contactHeader = index;
+ }
+
+ public int forContactCsv() {
+ return contactHeader;
+ }
+ }
+
+ /**
+ * CSV headers for FishingZone
+ */
+ public static enum FISHING_ZONE {
+ /** FishingZone facade **/
+ PECHE_FACADE(9),
+ /** FishingZone sector **/
+ PECHE_ZONE(10),
+ /** FishingZone district code **/
+ PECHE_DIVISION(11);
+
+ int contactHeader;
+
+ FISHING_ZONE(int index) {
+ this.contactHeader = index;
+ }
+
+ public int forContactCsv() {
+ return contactHeader;
+ }
+ }
+
+ /**
+ * CSV headers for Contact
+ */
+ public static enum CONTACT {
+ /** Contact create date **/
+ CONT_CREATION(0),
+ /** User id **/
+ OBSERV_ID(1),
+ /** User prenom **/
+ OBSERV_PRENOM(2),
+ /** User nom **/
+ OBSERV_NOM(3),
+ /** Company id **/
+ //SOCIETE_ID,
+ /** Company nom **/
+ SOCIETE_NOM(4),
+ /** Contact state **/
+ CONT_ETAT(22),
+ /** Contact tide begin **/
+ CONT_DEBUT_MAREE(23),
+ /** Contact tide end **/
+ CONT_FIN_MAREE(24),
+ /** Contact nb observants **/
+ CONT_NB_OBSERV(25),
+ /** Contact mammals capture **/
+ CONT_MAM_CAPT(26),
+ /** Contact mammals observation **/
+ CONT_MAM_OBS(27),
+ /** Contact comment **/
+ CONT_COMMENT(28),
+ /** Contact data input **/
+ CONT_ALLEGRO(29),
+ /** Contact company validation **/
+ CONT_SOCIETE_VALID(30),
+ /** Contact program validation **/
+ CONT_PROGRAM_VALID(31);
+
+ int contactHeader;
+
+ CONTACT(int index) {
+ this.contactHeader = index;
+ }
+
+ public int forContactCsv() {
+ return contactHeader;
+ }
+ }
+
+ public static int CONTACT_NB_HEADERS = 31;
+
+ public static String getHeaderForContactCsv(int index) {
+ for (BOAT boatEnum : BOAT.values()) {
+ if (boatEnum.forContactCsv() == index) {
+ return boatEnum.name();
+ }
+ }
+ for (SAMPLING samplingEnum : SAMPLING.values()) {
+ if (samplingEnum.forContactCsv() == index) {
+ return samplingEnum.name();
+ }
+ }
+ for (FISHING_ZONE zoneEnum : FISHING_ZONE.values()) {
+ if (zoneEnum.forContactCsv() == index) {
+ return zoneEnum.name();
+ }
+ }
+ for (CONTACT contactEnum : CONTACT.values()) {
+ if (contactEnum.forContactCsv() == index) {
+ return contactEnum.name();
+ }
+ }
+ return "";
+ }
+
+ public static String formatContactValidation(Boolean validation) {
+ String valid = "";
+ if (validation == null) {
+ valid = "N";
+ } else if (BooleanUtils.isTrue(validation)) {
+ valid = "A";
+ } else {
+ valid = "R";
+ }
+ return valid;
+ }
+//
+// public static Boolean parseContactValidation(String validation) {
+// if (validation.equals("A")) {
+// return Boolean.TRUE;
+// } else if (validation.equals("R")) {
+// return Boolean.FALSE;
+// }
+// return null;
+// }
+
+ public static String formatContactMammals(boolean mammals) {
+ return mammals ? "X" : "";
+ }
+
+ public static boolean parseContactMammals(String mammals) {
+ return mammals.equals("X");
+ }
+
+ public static long logTimeAndMemory(Logger log, long tic1, String msg) {
+ if (log.isInfoEnabled()) {
+ log.info("RUNNING... Import : " + msg);
+ Runtime runtime = Runtime.getRuntime();
+ long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
+ //long memMega = mem / 1024 / 1024;
+ log.info("Memory : " + mem + " Mo");
+ long tic2 = System.currentTimeMillis();
+ log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic2 - tic1));
+ }
+ return System.currentTimeMillis();
+ }
+
+}
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.java 2010-01-04 11:24:57 UTC (rev 162)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactState.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -21,7 +21,8 @@
package fr.ifremer.suiviobsmer.bean;
-import fr.ifremer.suiviobsmer.bean.states.*;
+import java.util.ArrayList;
+import java.util.List;
/**
* ContactState
@@ -89,4 +90,12 @@
return null;
}
+ public static List<String> availableStates() {
+ List<String> results = new ArrayList<String>();
+ for (ContactState state : values()) {
+ results.add(state.toString());
+ }
+ return results;
+ }
+
}
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-04 11:24:57 UTC (rev 162)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -23,6 +23,7 @@
import fr.ifremer.suiviobsmer.*;
import com.csvreader.CsvReader;
+import fr.ifremer.suiviobsmer.ImportHelper.BOAT;
import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
import fr.ifremer.suiviobsmer.entity.ActivityCalendarDAO;
import fr.ifremer.suiviobsmer.entity.ActivityMonth;
@@ -166,7 +167,7 @@
currRow++;
//long firstTic = System.currentTimeMillis();
- int boatImmatriculation = Integer.parseInt(reader.get("NAVS_COD").trim());
+ int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name()).trim());
// long tic1 = System.currentTimeMillis();
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-04 11:24:57 UTC (rev 162)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -22,6 +22,8 @@
package fr.ifremer.suiviobsmer.impl;
import com.csvreader.CsvReader;
+import fr.ifremer.suiviobsmer.ImportHelper;
+import fr.ifremer.suiviobsmer.ImportHelper.BOAT;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException.Type;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
@@ -42,7 +44,6 @@
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -345,14 +346,14 @@
reader.readHeaders();
long startTime = System.currentTimeMillis();
- long tic1, tic2;
+ long tic;
BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
ShipOwnerDAO shipOwnerDAO = SuiviObsmerModelDAOHelper.getShipOwnerDAO(transaction);
Map<String, ShipOwner> availableShipOwners = new HashMap<String, ShipOwner>();
- tic1 = System.currentTimeMillis();
+ tic = System.currentTimeMillis();
while(reader.readRecord()) {
result[0]++;
@@ -361,15 +362,15 @@
// }
- int immatriculation = Integer.parseInt(reader.get("NAVS_COD").trim());
- String boatName = reader.get("CARN_NOM").trim();
- int boatLength = Integer.parseInt(reader.get("CARN_LONGUEUR_HT").trim());
- int buildYear = Integer.parseInt(reader.get("CARN_ANNEE").trim());
- String districtCode = reader.get("QUARTIER_IMMA").trim();
- String shipOwnerCode = reader.get("PER_COD").trim();
- String shipOwnerLastName = reader.get("PER_NOM").trim();
- String shipOwnerFirstName = reader.get("PER_PRENOM").trim();
- String activeStr = reader.get("NAVS_ACTIVE").trim();
+ int immatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name()).trim());
+ String boatName = reader.get(BOAT.CARN_NOM.name()).trim();
+ int boatLength = Integer.parseInt(reader.get(BOAT.CARN_LONGUEUR_HT.name()).trim());
+ int buildYear = Integer.parseInt(reader.get(BOAT.CARN_ANNEE.name()).trim());
+ String districtCode = reader.get(BOAT.QUARTIER_IMMA.name()).trim();
+ String shipOwnerCode = reader.get(BOAT.PER_COD.name()).trim();
+ String shipOwnerLastName = reader.get(BOAT.PER_NOM.name()).trim();
+ String shipOwnerFirstName = reader.get(BOAT.PER_PRENOM.name()).trim();
+ String activeStr = reader.get(BOAT.NAVS_ACTIVE.name()).trim();
boolean active = !activeStr.equals("I");
@@ -435,16 +436,17 @@
availableShipOwners.clear();
transaction.commitTransaction();
- if (log.isInfoEnabled()) {
- log.info("RUNNING... Import navires ligne " + result[0]);
- Runtime runtime = Runtime.getRuntime();
- long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
- //long memMega = mem / 1024 / 1024;
- log.info("Memory : " + mem + " Mo");
- tic2 = System.currentTimeMillis();
- log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic2 - tic1));
- tic1 = System.currentTimeMillis();
- }
+ tic = ImportHelper.logTimeAndMemory(log, tic, "navires ligne " + result[0]);
+// if (log.isInfoEnabled()) {
+// log.info("RUNNING... Import navires ligne " + result[0]);
+// Runtime runtime = Runtime.getRuntime();
+// long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
+// //long memMega = mem / 1024 / 1024;
+// log.info("Memory : " + mem + " Mo");
+// tic2 = System.currentTimeMillis();
+// log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic2 - tic1));
+// tic1 = System.currentTimeMillis();
+// }
}
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-04 11:24:57 UTC (rev 162)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -21,21 +21,44 @@
package fr.ifremer.suiviobsmer.impl;
+import com.csvreader.CsvReader;
+import com.csvreader.CsvWriter;
+import fr.ifremer.suiviobsmer.ImportHelper;
+import fr.ifremer.suiviobsmer.ImportHelper.*;
+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;
+import fr.ifremer.suiviobsmer.bean.ContactState;
+import java.io.InputStream;
import org.nuiton.topia.framework.TopiaQuery;
import fr.ifremer.suiviobsmer.bean.states.ContactStateEnum;
import fr.ifremer.suiviobsmer.entity.Boat;
+import fr.ifremer.suiviobsmer.entity.BoatDAO;
import fr.ifremer.suiviobsmer.entity.Company;
+import fr.ifremer.suiviobsmer.entity.CompanyDAO;
import fr.ifremer.suiviobsmer.entity.Contact;
import fr.ifremer.suiviobsmer.entity.ContactDAO;
import fr.ifremer.suiviobsmer.entity.ContactImpl;
+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;
+import fr.ifremer.suiviobsmer.entity.UserDAO;
import fr.ifremer.suiviobsmer.services.ServiceContact;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.persistence.TopiaEntity;
@@ -135,4 +158,242 @@
}
}
+ protected static String DATE_TIME_PATTERN = "dd/MM/yyyy HH:mm:ss";
+ protected static String DATE_PATTERN = "dd/MM/yyyy";
+
+ @Override
+ public InputStream exportContactCsv(User user, List<Contact> contacts)
+ throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ InputStream result = null;
+ try {
+ transaction = rootContext.beginTransaction();
+
+ // No contacts from arguments, select all existing from database
+ if (contacts == null) {
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ if (user.getAdmin()) {
+ contacts = dao.findAll();
+ } else {
+ // Filtered by company for a simple user
+ contacts = dao.createQuery().
+ add("user.company", user.getCompany()).
+ executeToEntityList();
+ }
+ }
+
+ String alea = SuiviObsmerContext.createRandomString(8);
+ FileOutputStream output = new FileOutputStream("/tmp/contact-" + alea + ".csv");
+ CsvWriter writer = new CsvWriter(output, ',', Charset.forName("UTF-8"));
+
+ // Headers
+ for (int i = 0; i < ImportHelper.CONTACT_NB_HEADERS; i++) {
+ String header = ImportHelper.getHeaderForContactCsv(i);
+ writer.write(header);
+ }
+
+ DateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_PATTERN, Locale.FRENCH);
+ DateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN, Locale.FRENCH);
+
+ int curr = 0;
+ for (Contact contact : contacts) {
+ curr++;
+ String[] record = new String[ImportHelper.CONTACT_NB_HEADERS];
+
+ // Contact part
+ record[CONTACT.CONT_CREATION.forContactCsv()] = dateTimeFormat.format(contact.getTopiaCreateDate());
+ record[CONTACT.CONT_ETAT.forContactCsv()] = contact.getState();
+ record[CONTACT.CONT_DEBUT_MAREE.forContactCsv()] = dateFormat.format(contact.getTideBeginDate());
+ record[CONTACT.CONT_FIN_MAREE.forContactCsv()] = dateFormat.format(contact.getTideEndDate());
+ record[CONTACT.CONT_NB_OBSERV.forContactCsv()] = String.valueOf(contact.getNbObservants());
+ record[CONTACT.CONT_MAM_CAPT.forContactCsv()] =
+ ImportHelper.formatContactMammals(contact.getMammalsCapture());
+ record[CONTACT.CONT_MAM_OBS.forContactCsv()] =
+ ImportHelper.formatContactMammals(contact.getMammalsObservation());
+ record[CONTACT.CONT_COMMENT.forContactCsv()] = contact.getComment();
+ record[CONTACT.CONT_ALLEGRO.forContactCsv()] = dateFormat.format(contact.getDataInputDate());
+ record[CONTACT.CONT_SOCIETE_VALID.forContactCsv()] =
+ ImportHelper.formatContactValidation(contact.getValidationCompany());
+ record[CONTACT.CONT_PROGRAM_VALID.forContactCsv()] =
+ ImportHelper.formatContactValidation(contact.getValidationProgram());
+
+ // Observer part
+ User observer = contact.getUser();
+ Company company = observer.getCompany();
+ record[CONTACT.OBSERV_ID.forContactCsv()] = observer.getLogin();
+ record[CONTACT.OBSERV_PRENOM.forContactCsv()] = observer.getFirstName();
+ record[CONTACT.OBSERV_NOM.forContactCsv()] = observer.getLastName();
+ record[CONTACT.SOCIETE_NOM.forContactCsv()] = company.getName();
+
+ // 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.PECHE_AUTRE.forContactCsv()] = row.getFishingZonesInfos();
+
+ // FishingZone part
+ List<FishingZone> zones = row.getFishingZone();
+ String fishingDistrict = "";
+ for (FishingZone zone : zones) {
+ fishingDistrict += zone.getDistrictCode() + " - ";
+ }
+ fishingDistrict = fishingDistrict.substring(fishingDistrict.length() - 3);
+ record[FISHING_ZONE.PECHE_FACADE.forContactCsv()] = zones.get(0).getFacadeName();
+ record[FISHING_ZONE.PECHE_ZONE.forContactCsv()] = zones.get(0).getSectorName();
+ record[FISHING_ZONE.PECHE_DIVISION.forContactCsv()] = fishingDistrict;
+
+ // Profession part
+ Profession profession = row.getProfession();
+ record[SAMPLING.METIER_CODE_DCF5.forContactCsv()] = profession.getCodeDCF5();
+ record[SAMPLING.METIER_MAILLAGE.forContactCsv()] = profession.getMeshSize();
+ record[SAMPLING.METIER_TAILLE.forContactCsv()] = profession.getSize();
+ record[SAMPLING.METIER_AUTRE.forContactCsv()] = profession.getOther();
+ record[SAMPLING.METIER_LIBELLE.forContactCsv()] = profession.getLibelle();
+ record[SAMPLING.METIER_ESPECES.forContactCsv()] = profession.getSpecies();
+
+ // Boat part
+ Boat boat = contact.getBoat();
+ record[BOAT.NAVS_COD.forContactCsv()] = String.valueOf(boat.getImmatriculation());
+ record[BOAT.CARN_NOM.forContactCsv()] = boat.getName();
+ record[BOAT.QUARTIER_IMMA.forContactCsv()] = boat.getDistrictCode();
+
+ writer.writeRecord(record);
+ }
+ writer.close();
+
+ result = new FileInputStream(output.getFD());
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible d'exporter les contacts", eee);
+ }
+ return result;
+ }
+
+ @Override
+ public int importContactCsv(InputStream input) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ int result = 0;
+ try {
+ transaction = rootContext.beginTransaction();
+
+ CsvReader reader = new CsvReader(input, Charset.forName("UTF-8"));
+ reader.readHeaders();
+
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ UserDAO userDAO = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
+ CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
+ SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+ BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+
+ DateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_PATTERN, Locale.FRENCH);
+ DateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN, Locale.FRENCH);
+
+ int currRow = 0;
+ long tic;
+ tic = System.currentTimeMillis();
+ while(reader.readRecord()) {
+ currRow++;
+
+ String userId = reader.get(CONTACT.OBSERV_ID.name());
+ String state = reader.get(CONTACT.CONT_ETAT.name());
+
+ ContactState contactState = ContactState.createContactStateEnum(state);
+
+ if (contactState == null) {
+ throw new SuiviObsmerBusinessException(Type.IMPORT_ERROR, this.getClass(),
+ "Erreur ligne " + currRow + " : " +
+ "Etat du contact invalide '" + state + "', valeurs possibles : " +
+ ContactState.availableStates());
+ }
+
+ User user = userDAO.findByLogin(userId);
+ if (user != null) {
+ // FIXME-FD20100104 findContains not optimized in TopiaDAOImpl
+ Company company = companyDAO.findContainsUser(user);
+ if (company != null) {
+ String rowCode = reader.get(SAMPLING.PLAN_CODE.name());
+
+ SampleRow row = rowDAO.findByCode(rowCode);
+
+ if (row != null) {
+ int boatImmatriculation = Integer.parseInt(reader.get(BOAT.NAVS_COD.name()));
+
+ Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
+
+ if (boat != null) {
+ Date createDate = dateTimeFormat.parse(reader.get(CONTACT.CONT_CREATION.name()));
+
+ Contact contact = dao.createQuery().
+ add(TopiaEntity.TOPIA_CREATE_DATE, createDate).
+ executeToEntity();
+
+ if (contact == null) { // new contact to import
+ contact = dao.create(
+ Contact.USER, user,
+ Contact.SAMPLE_ROW, row,
+ Contact.BOAT, boat);
+ }
+ Date tideBegin = dateFormat.parse(CONTACT.CONT_DEBUT_MAREE.name());
+ Date tideEnd = dateFormat.parse(CONTACT.CONT_FIN_MAREE.name());
+ int nbObservants = Integer.parseInt(reader.get(CONTACT.CONT_NB_OBSERV.name()));
+ boolean mammalsCapture =
+ ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_CAPT.name()));
+ boolean mammalsObsv =
+ ImportHelper.parseContactMammals(reader.get(CONTACT.CONT_MAM_OBS.name()));
+
+ contact.setState(state);
+ contact.setTideBeginDate(tideBegin);
+ contact.setTideEndDate(tideEnd);
+ contact.setNbObservants(nbObservants);
+ contact.setMammalsCapture(mammalsCapture);
+ contact.setMammalsObservation(mammalsObsv);
+
+ result++;
+
+ } else if (log.isWarnEnabled()) {
+ log.warn("Import contact ligne " + currRow + " : " +
+ "Navire inexistant avec l'immatriculation : " + boatImmatriculation);
+ }
+ } else if (log.isWarnEnabled()) {
+ log.warn("Import contact ligne " + currRow + " : " +
+ "Ligne d'échantillon inexistante avec le code : " + rowCode);
+ }
+ } else if (log.isErrorEnabled()) {
+ log.error("Import contact ligne " + currRow + " : " +
+ "Cette utilisateur n'est lié à aucune société : " + user);
+ }
+ } else if (log.isWarnEnabled()) {
+ log.warn("Import contact ligne " + currRow + " : " +
+ "Utilisateur inexistant avec l'identifiant : " + userId);
+ }
+
+ if (result % 1000 == 0) {
+ transaction.commitTransaction();
+ tic = ImportHelper.logTimeAndMemory(log, tic, "contacts ligne " + currRow);
+// if (log.isInfoEnabled()) {
+// log.info("RUNNING... Import contacts ligne " + currRow);
+// Runtime runtime = Runtime.getRuntime();
+// long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
+// //long memMega = mem / 1024 / 1024;
+// log.info("Memory : " + mem + " Mo");
+// tic2 = System.currentTimeMillis();
+// log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic2 - tic1));
+// tic1 = System.currentTimeMillis();
+// }
+ }
+ }
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction,
+ "Impossible d'exporter les contacts", eee);
+ }
+ return result;
+ }
+
}
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-04 11:24:57 UTC (rev 162)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -22,6 +22,7 @@
package fr.ifremer.suiviobsmer.impl;
import com.csvreader.CsvReader;
+import fr.ifremer.suiviobsmer.ImportHelper.FISHING_ZONE;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
@@ -142,9 +143,9 @@
log.trace(" " + Arrays.asList(reader.getValues()));
}
- String facadeName = reader.get("PECHE_FACADE").trim();
- String sectorName = reader.get("PECHE_ZONE").trim();
- String districtCode = reader.get("PECHE_DIVISION").trim();
+ String facadeName = reader.get(FISHING_ZONE.PECHE_FACADE.name()).trim();
+ String sectorName = reader.get(FISHING_ZONE.PECHE_ZONE.name()).trim();
+ String districtCode = reader.get(FISHING_ZONE.PECHE_DIVISION.name()).trim();
FishingZone zone = dao.findByProperties(
FishingZone.FACADE_NAME, facadeName,
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-04 11:24:57 UTC (rev 162)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -22,6 +22,8 @@
package fr.ifremer.suiviobsmer.impl;
import com.csvreader.CsvReader;
+import fr.ifremer.suiviobsmer.ImportHelper.FISHING_ZONE;
+import fr.ifremer.suiviobsmer.ImportHelper.SAMPLING;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
@@ -48,6 +50,7 @@
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.framework.TopiaQuery.Op;
+import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.util.EntityLoador;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -294,12 +297,16 @@
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
- result = dao.findByTopiaId(sampleRowId);
+ result = dao.createQuery().add(TopiaEntity.TOPIA_ID, sampleRowId).
+ addLoad("company", "program", "profession").
+ executeToEntity();
- // load data
- result.getCompany();
- result.getProgram();
- result.getProfession();
+// result = dao.findByTopiaId(sampleRowId);
+//
+// // load data
+// result.getCompany();
+// result.getProgram();
+// result.getProfession();
transaction.closeContext();
} catch (Exception eee) {
@@ -390,7 +397,7 @@
log.trace(" " + Arrays.asList(reader.getValues()));
}
- String code = reader.get("PLAN_CODE").trim();
+ String code = reader.get(SAMPLING.PLAN_CODE.name()).trim();
if (StringUtils.isEmpty(code)) {
continue;
@@ -399,10 +406,10 @@
// Replace single number after year by a double one : 2010_1 -> 2010_01
code = code.replaceFirst("_(\\d)$", "_0$1");
- String programName = reader.get("PROGRAMME_CODE").trim();
- int[] programBegin = getMonthAndYear(reader.get("PROGRAMME_DEBUT").trim());
- int[] programEnd = getMonthAndYear(reader.get("PROGRAMME_FIN").trim());
- String districts = reader.get("PECHE_DIVISION");
+ 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());
+ String districts = reader.get(FISHING_ZONE.PECHE_DIVISION.name());
row = dao.findByCode(code);
// Refuse existing SampleRow
@@ -511,12 +518,12 @@
protected Profession importProfession(TopiaContext transaction, CsvReader reader)
throws IOException, TopiaException {
- String codeDCF5 = reader.get("METIER_CODE_DCF5").trim();
- String maillage = reader.get("METIER_MAILLAGE").trim();
- String taille = reader.get("METIER_TAILLE").trim();
- String autre = reader.get("METIER_AUTRE").trim();
- String libelle = reader.get("METIER_LIBELLE").trim();
- String especes = reader.get("METIER_ESPECES").trim();
+ String codeDCF5 = reader.get(SAMPLING.METIER_CODE_DCF5.name()).trim();
+ String maillage = reader.get(SAMPLING.METIER_MAILLAGE.name()).trim();
+ String taille = reader.get(SAMPLING.METIER_TAILLE.name()).trim();
+ String autre = reader.get(SAMPLING.METIER_AUTRE.name()).trim();
+ String libelle = reader.get(SAMPLING.METIER_LIBELLE.name()).trim();
+ String especes = reader.get(SAMPLING.METIER_ESPECES.name()).trim();
ProfessionDAO dao = SuiviObsmerModelDAOHelper.getProfessionDAO(transaction);
Map<String, Object> existParams = new HashMap<String, Object>();
@@ -589,9 +596,9 @@
protected void updateRow(TopiaContext transaction, SampleRow sampleRow, CsvReader reader)
throws IOException, TopiaException, ParseException {
- String fishingZoneInfos = reader.get("PECHE_AUTRE").trim();
- int nbObservants = Integer.parseInt(reader.get("PLAN_NB_OBSERV").trim());
- String averageStr = reader.get("PLAN_DUREE_MOY").trim();
+ String fishingZoneInfos = reader.get(SAMPLING.PECHE_AUTRE.name()).trim();
+ int nbObservants = Integer.parseInt(reader.get(SAMPLING.PLAN_NB_OBSERV.name()).trim());
+ String averageStr = reader.get(SAMPLING.PLAN_DUREE_MOY.name()).trim();
averageStr = averageStr.replaceAll(",", ".");
double averageTideTime = Double.parseDouble(averageStr);
Modified: 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-04 11:24:57 UTC (rev 162)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/mock/ServiceContactMock.java 2010-01-05 09:55:40 UTC (rev 163)
@@ -29,6 +29,8 @@
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceContact;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -259,6 +261,16 @@
throw new UnsupportedOperationException("Not supported yet.");
}
+ @Override
+ public InputStream exportContactCsv(User user, List<Contact> contacts) throws SuiviObsmerException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ @Override
+ public int importContactCsv(InputStream input) throws SuiviObsmerException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r162 - in trunk/suiviobsmer-business/src/main: java/fr/ifremer/suiviobsmer java/fr/ifremer/suiviobsmer/entity java/fr/ifremer/suiviobsmer/impl xmi
by fdesbois@users.labs.libre-entreprise.org 04 Jan '10
by fdesbois@users.labs.libre-entreprise.org 04 Jan '10
04 Jan '10
Author: fdesbois
Date: 2010-01-04 11:24:57 +0000 (Mon, 04 Jan 2010)
New Revision: 162
Added:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java
Removed:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.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/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
Log:
- Improve TopiaQuery usage from Topia
- Move queries from QueryBuilder to ContactDAOImpl
Deleted: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -1,105 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 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;
-
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.framework.TopiaQuery.Op;
-import fr.ifremer.suiviobsmer.bean.ContactState;
-import fr.ifremer.suiviobsmer.entity.Boat;
-import fr.ifremer.suiviobsmer.entity.BoatImpl;
-import fr.ifremer.suiviobsmer.entity.Company;
-import fr.ifremer.suiviobsmer.entity.Contact;
-import java.util.Date;
-import org.hibernate.SQLQuery;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.framework.TopiaContextImplementor;
-import org.nuiton.topia.framework.TopiaQuery;
-
-/**
- * QueryBuilder
- *
- * Created: 21 déc. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class QueryBuilder {
-
- /**
- * Create the query for the last contact of the boat and company.
- *
- * @param boat the boat concerned by the contact
- * @param company the company concerned by the user who create the contact
- * @return the TopiaQuery created
- */
- public static TopiaQuery createQueryLastContactForBoat(Boat boat, Company company) {
- String contactClassName = Contact.class.getName();
- TopiaQuery query = new TopiaQuery(contactClassName + " C1").
- add("C1.boat", boat).
- add("C1.user.company = :company").
- addParam("company", company);
-
- TopiaQuery subquery = new TopiaQuery(contactClassName + " C2").
- addSelect("MAX(C2.topiaCreateDate)").
- add("C2.boat = C1.boat").
- add("C2.user.company = :company");
-
- query.add("C1.topiaCreateDate = (" + subquery.fullQuery() + ")");
- return query;
- }
-
- /**
- * Create the query for contacts linked with a boat with BoardingDone state since the fromDate.
- * This query is used to get all boarding dones with the boat for all companies.
- * Only the validate contacts by company will be count. The param fromDate can be null,
- * in this case, all contacts will be given (no matter which date then started).
- *
- * @param boat the boat concerned by the contact
- * @param fromDate the date to start
- * @return the TopiaQuery created
- */
- public static TopiaQuery createQueryDoneContactsFromDate(Boat boat, Date fromDate) {
- TopiaQuery query = new TopiaQuery(Contact.class).
- add("boat", boat).
- add("state", ContactState.BOARDING_DONE.toString()).
- add("validationCompany", Boolean.TRUE).
- add("validationProgram IS NULL OR validationProgram = :booleanTrue").
- addParam("booleanTrue", Boolean.TRUE);
-
- if (fromDate != null) {
- query.add("tideBeginDate", Op.GE, fromDate);
- }
- return query;
- }
-
-// public static Boat getBoatByImmatriculation(TopiaContext transaction, int immatriculation) throws TopiaException {
-// TopiaContextImplementor topia = (TopiaContextImplementor)transaction;
-// SQLQuery query = topia.getHibernate().createSQLQuery(
-// "SELECT * FROM boat WHERE immatriculation = " + immatriculation);
-//
-// return (Boat)query.addEntity(BoatImpl.class).uniqueResult();
-// }
-
-}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -21,10 +21,9 @@
package fr.ifremer.suiviobsmer.entity;
-import fr.ifremer.suiviobsmer.QueryBuilder;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
-import org.nuiton.topia.framework.TopiaQuery;
+import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.bean.ContactState;
import java.io.Serializable;
import org.nuiton.topia.TopiaContext;
@@ -63,8 +62,8 @@
try {
transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
- TopiaQuery query = QueryBuilder.createQueryLastContactForBoat(this, company);
- Contact contact = query.executeToEntity(transaction, Contact.class);
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ Contact contact = dao.createQueryLastContactForBoat(this, company).executeToEntity();
if (contact != null) {
//boolean validation = contact.getValidationProgram() != null || BooleanUtils.isFalse(contact.getValidationCompany());
ContactState state = ContactState.createContactStateEnum(contact.getState());
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -21,9 +21,9 @@
package fr.ifremer.suiviobsmer.entity;
-import fr.ifremer.suiviobsmer.QueryBuilder;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
+import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import org.nuiton.topia.framework.TopiaQuery;
import java.io.Serializable;
import org.nuiton.topia.TopiaContext;
@@ -66,7 +66,9 @@
try {
transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
- TopiaQuery query = QueryBuilder.createQueryDoneContactsFromDate(getBoat(), fromDate);
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+
+ TopiaQuery<Contact> query = dao.createQueryDoneContactsFromDate(getBoat(), fromDate);
result = query.executeCount(transaction);
transaction.closeContext();
@@ -94,12 +96,13 @@
try {
transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
- TopiaQuery query = QueryBuilder.
- createQueryDoneContactsFromDate(getBoat(), fromDate).
- add("user.company", getCompany());
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
- result = query.executeCount(transaction);
+ TopiaQuery<Contact> query = dao.createQueryDoneContactsFromDate(getBoat(), fromDate);
+ query.add("user.company", getCompany());
+ result = query.executeCount();
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java (rev 0)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -0,0 +1,71 @@
+package fr.ifremer.suiviobsmer.entity;
+
+import fr.ifremer.suiviobsmer.bean.ContactState;
+import java.util.Date;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery.Op;
+
+
+/**
+ * ContactDAOImpl
+ *
+ * Created: 21 déc. 2009
+ *
+ * @param <E>
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class ContactDAOImpl<E extends Contact> extends ContactDAOAbstract<E> {
+
+ /**
+ * Create the query for the last contact of the boat and company.
+ *
+ * @param boat the boat concerned by the contact
+ * @param company the company concerned by the user who create the contact
+ * @return the TopiaQuery created
+ */
+ @Override
+ public TopiaQuery<E> createQueryLastContactForBoat(Boat boat, Company company) {
+ TopiaQuery<E> query = createQuery("C1").
+ add("C1.boat", boat).
+ add("C1.user.company = :company").
+ addParam("company", company);
+
+ TopiaQuery<E> subquery = createQuery("C2").
+ addSelect("MAX(C2.topiaCreateDate)").
+ add("C2.boat = C1.boat").
+ add("C2.user.company = :company");
+
+ query.add("C1.topiaCreateDate = (" + subquery.fullQuery() + ")");
+ return query;
+ }
+
+ /**
+ * Create the query for contacts linked with a boat with BoardingDone state since the fromDate.
+ * This query is used to get all boarding dones with the boat for all companies.
+ * Only the validate contacts by company will be count. The param fromDate can be null,
+ * in this case, all contacts will be given (no matter which date then started).
+ *
+ * @param boat the boat concerned by the contact
+ * @param fromDate the date to start
+ * @return the TopiaQuery created
+ */
+ @Override
+ public TopiaQuery<E> createQueryDoneContactsFromDate(Boat boat, Date fromDate) {
+ TopiaQuery<E> query = createQuery().
+ add("boat", boat).
+ add("state", ContactState.BOARDING_DONE.toString()).
+ add("validationCompany", Boolean.TRUE).
+ add("validationProgram IS NULL OR validationProgram = :booleanTrue").
+ addParam("booleanTrue", Boolean.TRUE);
+
+ if (fromDate != null) {
+ query.add("tideBeginDate", Op.GE, fromDate);
+ }
+ return query;
+ }
+
+} //ContactDAOImpl<E extends Contact>
Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.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 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -23,10 +23,10 @@
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.text.NumberFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -124,12 +124,12 @@
Calendar begin = getCalendarBegin();
int year = begin.get(Calendar.YEAR);
-
- TopiaQuery query = new TopiaQuery(SampleRow.class).
- add(SampleRow.CODE, Op.LIKE, year + "_%");
- String maxCode = query.executeToString(transaction, "MAX(" + SampleRow.CODE + ")");
+ 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);
}
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 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -25,7 +25,6 @@
import com.csvreader.CsvReader;
import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
import fr.ifremer.suiviobsmer.entity.ActivityCalendarDAO;
-import fr.ifremer.suiviobsmer.entity.ActivityCalendarImpl;
import fr.ifremer.suiviobsmer.entity.ActivityMonth;
import fr.ifremer.suiviobsmer.entity.ActivityMonthDAO;
import fr.ifremer.suiviobsmer.entity.ActivityProfession;
@@ -33,6 +32,7 @@
import fr.ifremer.suiviobsmer.entity.ActivityZone;
import fr.ifremer.suiviobsmer.entity.ActivityZoneDAO;
import fr.ifremer.suiviobsmer.entity.Boat;
+import fr.ifremer.suiviobsmer.entity.BoatDAO;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
@@ -49,10 +49,7 @@
import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.time.DurationFormatUtils;
-import org.hibernate.SQLQuery;
import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.framework.TopiaContextImplementor;
-import org.nuiton.topia.framework.TopiaQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -159,7 +156,7 @@
Map<ActivityCalendarKey, ActivityCalendar> availableCalendars = new HashMap<ActivityCalendarKey, ActivityCalendar>();
- //BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+ BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
ActivityCalendarDAO calendarDAO = SuiviObsmerModelDAOHelper.getActivityCalendarDAO(transaction);
ActivityMonthDAO monthDAO = SuiviObsmerModelDAOHelper.getActivityMonthDAO(transaction);
ActivityProfessionDAO professionDAO = SuiviObsmerModelDAOHelper.getActivityProfessionDAO(transaction);
@@ -179,7 +176,7 @@
// "SELECT * FROM boat WHERE immatriculation = " + boatImmatriculation);
//
// Boat boat = (Boat)query.addEntity(BoatImpl.class).uniqueResult();
- Boat boat = new TopiaQuery(Boat.class).add(Boat.IMMATRICULATION, boatImmatriculation).executeToEntity(transaction);
+ Boat boat = boatDAO.findByImmatriculation(boatImmatriculation); //.add(Boat.IMMATRICULATION, boatImmatriculation).executeToEntity(transaction);
// long tic2 = System.currentTimeMillis();
// log.info("findByImmatriculation : " + (tic2 - tic1));
@@ -201,10 +198,9 @@
//
// calendar = (ActivityCalendar)query.addEntity(ActivityCalendarImpl.class).uniqueResult();
- calendar = new TopiaQuery(ActivityCalendar.class).
- add(ActivityCalendar.BOAT, boat).
- add(ActivityCalendar.YEAR, year).
- executeToEntity(transaction);
+ calendar = calendarDAO.findByProperties(
+ ActivityCalendar.BOAT, boat,
+ ActivityCalendar.YEAR, year);
// Create it if not exist in Database
if (calendar == null) {
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 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -22,7 +22,6 @@
package fr.ifremer.suiviobsmer.impl;
import com.csvreader.CsvReader;
-import fr.ifremer.suiviobsmer.QueryBuilder;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException.Type;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
@@ -83,7 +82,8 @@
try {
transaction = rootContext.beginTransaction();
- TopiaQuery query = new TopiaQuery(Boat.class.getName() + " B").addSelect("B");
+ BoatDAO dao = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+ TopiaQuery<Boat> query = dao.createQuery("B");
// Immatriculation
if (filter.getBoatImmatriculation() != null) {
@@ -108,7 +108,7 @@
// Add join for ElligibleBoat
if (sampleRowFiltered) {
String elligibleBoatClassName = ElligibleBoat.class.getName();
- query.addFrom(elligibleBoatClassName + " E").add("E.boat = B");
+ query.addSelect("B").addFrom(elligibleBoatClassName + " E").add("E.boat = B");
}
// SampleRowCode
if (sampleRowCodeFiltered) {
@@ -128,7 +128,7 @@
addParam("booleanTrue", Boolean.TRUE);
}
- results = query.executeToEntityMap(transaction, Boat.class, Boat.IMMATRICULATION, Integer.class);
+ results = query.executeToEntityMap(Boat.IMMATRICULATION, Integer.class);
transaction.closeContext();
} catch (Exception eee) {
@@ -197,9 +197,10 @@
}
// Last contact
- TopiaQuery query = QueryBuilder.createQueryLastContactForBoat(boat, company).
- addLoad(Contact.SAMPLE_ROW, Contact.USER);
- Contact contact = query.executeToEntity(transaction, Contact.class);
+ ContactDAO contactDAO = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ Contact contact = contactDAO.createQueryLastContactForBoat(boat, company).
+ addLoad(Contact.SAMPLE_ROW, Contact.USER).
+ executeToEntity();
if (contact != null) {
result.setLastContact(contact);
@@ -377,7 +378,7 @@
//
// long tic1 = System.currentTimeMillis();
-// boatDAO.findByImmatriculation(immatriculation);
+ Boat boat = boatDAO.findByImmatriculation(immatriculation);
// long tic2 = System.currentTimeMillis();
// if (log.isDebugEnabled()) {
// log.debug("findByImmatriculation : " + (tic2 - tic1));
@@ -391,7 +392,7 @@
// }
// tic1 = System.currentTimeMillis();
- Boat boat = new TopiaQuery(Boat.class).add(Boat.IMMATRICULATION, immatriculation).executeToEntity(transaction);
+ //Boat boat = new TopiaQuery(Boat.class).add(Boat.IMMATRICULATION, immatriculation).executeToEntity(transaction);
// tic2 = System.currentTimeMillis();
// if (log.isDebugEnabled()) {
// log.debug("findByImmatriculation TopiaQuery : " + (tic2 - tic1));
@@ -414,7 +415,8 @@
// If not available, select it from database
if (shipOwner == null) {
- shipOwner = new TopiaQuery(ShipOwner.class).add(ShipOwner.CODE, shipOwnerCode).executeToEntity(transaction);
+ //shipOwner = new TopiaQuery(ShipOwner.class).add(ShipOwner.CODE, shipOwnerCode).executeToEntity(transaction);
+ shipOwner = shipOwnerDAO.findByCode(shipOwnerCode);
// If not exist yet, create it
if (shipOwner == null) {
@@ -488,11 +490,12 @@
try {
transaction = rootContext.beginTransaction();
- String activityCalendarClassName = ActivityCalendar.class.getName();
- TopiaQuery query = new TopiaQuery(activityCalendarClassName + " A").
+ ActivityCalendarDAO dao = SuiviObsmerModelDAOHelper.getActivityCalendarDAO(transaction);
+
+ TopiaQuery<ActivityCalendar> query = dao.createQuery("A").
add("A.boat", boat);
- TopiaQuery subquery = new TopiaQuery(activityCalendarClassName + " B").
+ TopiaQuery<ActivityCalendar> subquery = dao.createQuery("B").
addSelect("MAX(B.year)").
add("B.boat = A.boat").
addGroup("B.boat");
@@ -500,7 +503,7 @@
query.add("A.year = (" + subquery.fullQuery() + ")");
query.addLoad(ActivityCalendar.BOAT);
- result = query.executeToEntity(transaction, ActivityCalendar.class);
+ result = query.executeToEntity(transaction);
// load other complex data from collections
List<ActivityMonth> months = result.getActivityMonth();
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 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -70,14 +70,15 @@
try {
transaction = rootContext.beginTransaction();
- TopiaQuery query = new TopiaQuery(Contact.class).addOrderDesc(TopiaEntity.TOPIA_CREATE_DATE);
+ ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ TopiaQuery<Contact> query = dao.createQuery().addOrderDesc(TopiaEntity.TOPIA_CREATE_DATE);
if (company != null) {
query.add("user.company", company);
}
query.addLoad("user.company", "sampleRow.program", "sampleRow.profession", "sampleRow.company");
- results = query.executeToEntityMap(transaction, Contact.class);
+ results = query.executeToEntityMap();
transaction.closeContext();
} catch (Exception eee) {
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 2009-12-29 12:17:31 UTC (rev 161)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-04 11:24:57 UTC (rev 162)
@@ -237,14 +237,15 @@
Date current = SuiviObsmerContext.getCurrentDate();
+ SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
// Only rows which are not finished will be kept
- TopiaQuery query = new TopiaQuery(SampleRow.class).add("program.periodEnd", Op.GE, current);
+ TopiaQuery<SampleRow> query = dao.createQuery().add("program.periodEnd", Op.GE, current);
if (!user.getAdmin()) {
query.add(SampleRow.COMPANY, user.getCompany());
}
- results = query.executeToEntityList(transaction, SampleRow.class);
+ results = query.executeToEntityList();
// SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
//
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r161 - 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-ui/src/main/resources
by fdesbois@users.labs.libre-entreprise.org 29 Dec '09
by fdesbois@users.labs.libre-entreprise.org 29 Dec '09
29 Dec '09
Author: fdesbois
Date: 2009-12-29 12:17:31 +0000 (Tue, 29 Dec 2009)
New Revision: 161
Removed:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/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/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/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
trunk/suiviobsmer-ui/src/main/resources/log4j.properties
Log:
- Move TopiaQuery to ToPIA
- Improve activityCalendar import and boat import
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -21,12 +21,18 @@
package fr.ifremer.suiviobsmer;
-import fr.ifremer.suiviobsmer.TopiaQuery.Op;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaQuery.Op;
import fr.ifremer.suiviobsmer.bean.ContactState;
import fr.ifremer.suiviobsmer.entity.Boat;
+import fr.ifremer.suiviobsmer.entity.BoatImpl;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.Contact;
import java.util.Date;
+import org.hibernate.SQLQuery;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.framework.TopiaContextImplementor;
+import org.nuiton.topia.framework.TopiaQuery;
/**
* QueryBuilder
@@ -88,4 +94,12 @@
return query;
}
+// public static Boat getBoatByImmatriculation(TopiaContext transaction, int immatriculation) throws TopiaException {
+// TopiaContextImplementor topia = (TopiaContextImplementor)transaction;
+// SQLQuery query = topia.getHibernate().createSQLQuery(
+// "SELECT * FROM boat WHERE immatriculation = " + immatriculation);
+//
+// return (Boat)query.addEntity(BoatImpl.class).uniqueResult();
+// }
+
}
Deleted: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -1,583 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 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;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.persistence.TopiaEntity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * TopiaQuery
- *
- * Created: 21 déc. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class TopiaQuery {
-
- private static final Logger log = LoggerFactory.getLogger(TopiaQuery.class);
-
- /** Params for HQL query **/
- protected List<Object> params;
-
- /** Select part of the query **/
- protected String select;
-
- /** From part of the query **/
- protected String from;
-
- /** Where part of the query **/
- protected String where;
-
- /** Order By part of the query **/
- protected String orderBy;
-
- /** Group By part of the query **/
- protected String groupBy;
-
- /** Used to determine if parentheses are needed for Where input **/
- protected boolean parentheses;
-
- protected List<String> propertiesToLoad;
-
- /**
- * Enum to simmplify using operation in query
- */
- public static enum Op {
- /** EQUALS **/
- EQ("="),
- /** GREATER THAN **/
- GT(">"),
- /** GREATER OR EQUALS **/
- GE(">="),
- /** LIKE for String manipulation **/
- LIKE("LIKE"),
- /** LESS THAN **/
- LT("<"),
- /** LESS OR EQUALS **/
- LE("<="),
- /** IS NOT NULL **/
- NOT_NULL("IS NOT NULL");
-
- protected String value;
-
- /**
- * Constructor of the Op Enum.
- *
- * @param value corresponding to the String for the query
- */
- Op(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return this.value;
- }
- }
-
- /**
- * Constructor of TopiaQuery with entityClass initialization.
- *
- * @param entityClass Class for an entity Query
- */
- public TopiaQuery(Class<? extends TopiaEntity> entityClass) {
- this(entityClass.getName());
- }
-
- /**
- * Constructor of TopiaQuery with String form initialization.
- *
- * @param from From part for the Query
- */
- public TopiaQuery(String from) {
- this.from = " FROM " + from;
- parentheses = true;
- }
-
- @Override
- public String toString() {
- return fullQuery();
- }
-
- /**
- * Get the full query.
- *
- * @return a String corresponding to the full query.
- */
- public String fullQuery() {
- String result = "";
- if (select != null) {
- result = select;
- }
- result += from;
- if (where != null) {
- result += where;
- }
- if (groupBy != null) {
- result += groupBy;
- }
- if (orderBy != null) {
- result += orderBy;
- }
- return result.trim();
- }
-
- /**
- * Add a HQL parameter to the Query.
- *
- * @param id identification of the param in the query
- * @param e value of the param
- * @return the TopiaQuery
- */
- public TopiaQuery addParam(String id, Object e) {
- if (params == null) {
- params = new ArrayList<Object>();
- }
- params.add(id);
- params.add(e);
- return this;
- }
-
- /**
- * Add a property to load when query is executed.
- * Used to avoid LazyInitializationException for property needed after closing context.
- * The property is a string like those in HQL query.
- * <pre>
- * Exemples :
- * - "person.company" (Property TopiaEntity person linked to the result entity in query and company linked to person)
- * --> calling myEntity.getPerson().getCompany();
- * - "partyRoles" (Property Collection partyRoles linked to the result entity in query)
- * --> calling myEntity.getPartyRoles().size();
- * </pre>
- *
- * @param properties
- * @return
- */
- public TopiaQuery addLoad(String... properties) {
- getPropertiesToLoad().addAll(Arrays.asList(properties));
- return this;
- }
-
- protected List<String> getPropertiesToLoad() {
- if (propertiesToLoad == null) {
- propertiesToLoad = new ArrayList<String>();
- }
- return propertiesToLoad;
- }
-
- /**
- * Add a where element to the Query. Could be anything.
- * Parentheses are added automatically (even if there are not needed).
- *
- * @param where element to add
- * @return the TopiaQuery
- */
- public TopiaQuery add(String where) {
- if (this.where == null) {
- this.where = " WHERE ";
- } else {
- this.where += " AND ";
- }
- if (parentheses) {
- this.where += "(";
- }
- this.where += where;
- if (parentheses) {
- this.where += ")";
- }
- parentheses = true;
- return this;
- }
-
- /**
- * Add an element to the query. The parameter will be automatically added.
- * The constraint is needed to determine what type of operation it is.
- *
- * @param paramName the name of the parameter in the query (attribute of the entity)
- * @param constraint the operation concerned
- * @param paramValue the value of the parameter (an other entity, a String, ...)
- * @return the TopiaQuery
- */
- public TopiaQuery add(String paramName, Op constraint, Object paramValue) {
- int dot = paramName.lastIndexOf(".");
- String valueName = paramName;
- if (dot != -1) {
- valueName = paramName.substring(dot+1);
- }
- parentheses = false;
- return add(paramName + " " + constraint + " :" + valueName).addParam(valueName, paramValue);
- }
-
- /**
- * Add an element to the query with the constraint Not null.
- *
- * @param paramName name of the parameter in the query
- * @return the TopiaQuery
- */
- public TopiaQuery addNotNull(String paramName) {
- return add(paramName + " " + Op.NOT_NULL);
- }
-
- /**
- * Add an element to the query. The parameter will be automatically added.
- * The default constrainst operation is Op.EQ for EQUALS.
- * Ex : add("boat", boat) means -> boat = :boat.
- *
- * @param paramName name of the parameter in the query
- * @param paramValue value of the parameter
- * @return the TopiaQuery
- * @see #add(java.lang.String, fr.ifremer.suiviobsmer.TopiaQuery.Op, java.lang.Object)
- */
- public TopiaQuery add(String paramName, Object paramValue) {
- return add(paramName, Op.EQ, paramValue);
- }
-
- /**
- * Add an element to the from in the query. Used to add some other data in the query or for join.
- *
- * @param str the element to add
- * @return the TopiaQuery
- */
- public TopiaQuery addFrom(String str) {
- from += ", " + str;
- return this;
- }
-
- /**
- * Add an element to the select in the query. Used to add some parameters for the return of query.
- *
- * @param select element to add
- * @return the TopiaQuery
- */
- public TopiaQuery addSelect(String select) {
- if (this.select == null) {
- this.select = "SELECT ";
- } else {
- this.select += ", ";
- }
- this.select += select;
- return this;
- }
-
- /**
- * Add an element to the order in the query. Used to add some parameters to order by.
- *
- * @param order element to add
- * @return the TopiaQuery
- */
- public TopiaQuery addOrder(String order) {
- if (orderBy == null) {
- orderBy = " ORDER BY ";
- } else {
- orderBy += ", ";
- }
- orderBy += order;
- return this;
- }
-
- public TopiaQuery addOrderDesc(String order) {
- return addOrder(order + " DESC");
- }
-
- /**
- * Add an element to the group of the query. Used to add some paramters to group by.
- *
- * @param group element to add
- * @return the TopiaQuery
- */
- public TopiaQuery addGroup(String group) {
- if (groupBy == null) {
- groupBy = " GROUP BY ";
- } else {
- groupBy += ", ";
- }
- groupBy += group;
- return this;
- }
-
- /**
- * Simple execution of the query. This method use directly the find method in TopiaContext interface.
- *
- * @param transaction the TopiaContext to use for execution
- * @return a List of results
- * @throws TopiaException
- * @see org.nuiton.topia.TopiaContext#find(java.lang.String, java.lang.Object[])
- */
- public List execute(TopiaContext transaction) throws TopiaException {
- if (log.isTraceEnabled()) {
- log.trace("# QUERY : " + fullQuery());
- if (params != null) {
- log.trace("# PARAMS : " + Arrays.toString(params.toArray()));
- }
- }
- if (params == null) {
- return transaction.find(fullQuery());
- }
- return transaction.find(fullQuery(), params.toArray());
- }
-
- /**
- * Execute the query and get a List of entity. Some properties will be loaded if they are
- * prealably set using ${@link #addLoad(java.lang.String[]) }.
- *
- * @param <T> the type of TopiaEntity to return
- * @param transaction the TopiaContext to use for execution
- * @param entityClass the class of the TopiaEntity used for return type
- * @return a List of TopiaEntity corresponding to the entityClass in argument
- * @throws TopiaException
- * @throws ClassCastException
- */
- public <T extends TopiaEntity> List<T> executeToEntityList(TopiaContext transaction, Class<T> entityClass)
- throws TopiaException, ClassCastException {
- List res = execute(transaction);
- if (log.isTraceEnabled()) {
- log.trace("Properties to load : " + getPropertiesToLoad());
- }
- List<T> results = new ArrayList<T>();
- for (Object o : res) {
- if (o != null && !entityClass.isAssignableFrom(o.getClass())) {
- throw new ClassCastException("Invalid cast for " + entityClass.getName());
- }
- T entity = (T)o;
- if (!getPropertiesToLoad().isEmpty()) {
- loadProperties(entity);
- }
- results.add(entity);
- }
- return results;
- }
-
- /**
- * Load all properties for the entity.
- *
- * @param <T> type of the entity extends TopiaEntity
- * @param entity used to load properties
- * @throws TopiaException
- */
- protected <T extends TopiaEntity> void loadProperties(T entity) throws TopiaException {
- for (String prop : getPropertiesToLoad()) {
- if (log.isTraceEnabled()) {
- log.trace("load property " + prop + " ...");
- }
- List<String> str = Arrays.asList(prop.split("\\."));
- Iterator<String> it = str.iterator();
- TopiaEntity currEntity = entity;
- while (it.hasNext()) {
- String s = it.next();
- if (log.isTraceEnabled()) {
- log.trace("Current entity : " + currEntity.getClass().getSimpleName());
- log.trace("Current loading : " + s);
- }
- if (it.hasNext()) {
- currEntity = loadEntityProperty(currEntity, s);
- } else {
- loadProperty(currEntity, s);
- }
- }
- }
- }
-
- /**
- * Load a property of type TopiaEntity from an other entity.
- *
- * @param <T> type of the entity extends TopiaEntity
- * @param entity used to load the property
- * @param property name of the property in the entity
- * @return a TopiaEntity corresponding to the property loaded
- * @throws TopiaException
- */
- protected <T extends TopiaEntity> TopiaEntity loadEntityProperty(T entity, String property) throws TopiaException {
- return (TopiaEntity)loadProperty(entity, property);
- }
-
- /**
- * Load a property from an entity.
- *
- * @param <T> type of the entity extends TopiaEntity
- * @param entity used to load the property
- * @param property name of the property in the entity
- * @return an Object corresponding to the property loaded
- * @throws TopiaException
- */
- protected <T extends TopiaEntity> Object loadProperty(T entity, String property) throws TopiaException {
- try {
- Object res = PropertyUtils.getProperty(entity, property);
- if (log.isTraceEnabled()) {
- log.trace("load property '" + property + "' for '" + entity.getClass().getSimpleName() + "'");
- }
- if (Collection.class.isAssignableFrom(res.getClass())) {
- Collection list = (Collection) res;
- list.size();
- }
- return res;
- } catch (IllegalAccessException eee) {
- throw new TopiaException("Illegal access on property " + property + " from entity " + entity.getClass().getName(), eee);
- } catch (InvocationTargetException eee) {
- throw new TopiaException("Invocation error on entity " + entity.getClass().getName() + " for property " + property, eee);
- } catch (NoSuchMethodException eee) {
- throw new TopiaException("Getter method does not exist for property " + property + " from entity " + entity.getClass().getName(), eee);
- }
- }
-
- /**
- * Execute the query and get a Map of entity with key type in argument. Some properties will be loaded if they are
- * prealably set using ${@link #addLoad(java.lang.String[]) }.
- *
- * @param <K> the type of the map key
- * @param <T> the type of entity, value of the map
- * @param transaction the TopiaContext to use for execution
- * @param entityClass the class of the TopiaEntity used for return
- * @param keyName the property name of the key in the entity
- * @param keyClass the key class for the result map
- * @return a Map with the key type defined and the entity in value
- * @throws TopiaException
- * @throws ClassCastException
- */
- public <K, T extends TopiaEntity> Map<K, T> executeToEntityMap(TopiaContext transaction, Class<T> entityClass, String keyName, Class<K> keyClass)
- throws TopiaException, ClassCastException {
-
- Map<K, T> results = new HashMap<K, T>();
- //for (PropertyDescriptor)
- for (T elmt : executeToEntityList(transaction, entityClass)) {
- Object value = loadProperty(elmt, keyName);
- if (value != null && !keyClass.isAssignableFrom(value.getClass())) {
- throw new ClassCastException("Invalid cast for " + keyClass.getName());
- }
- results.put((K)value, elmt);
- }
- return results;
- }
-
- /**
- * Execute the query and get a Map of entity with topiaId in key. Some properties will be loaded if they are
- * prealably set using ${@link #addLoad(java.lang.String[]) }.
- *
- * @param <T> the type of entity, value of the map
- * @param transaction the TopiaContext to use for execution
- * @param entityClass the class of the TopiaEntity used for return
- * @return a Map with the key type defined and the entity in value
- * @throws TopiaException
- * @throws ClassCastException
- */
- public <T extends TopiaEntity> Map<String, T> executeToEntityMap(TopiaContext transaction, Class<T> entityClass)
- throws TopiaException, ClassCastException {
- return executeToEntityMap(transaction, entityClass, TopiaEntity.TOPIA_ID, String.class);
- }
-
- /**
- * Execute the query and get the first result entity. Some properties will be loaded if they are
- * prealably set using ${@link #addLoad(java.lang.String[]) }.
- *
- * @param <T> the type of TopiaEntity to return
- * @param transaction the TopiaContext to use for execution
- * @param entityClass the class of the TopiaEntity used for return type
- * @return a TopiaEntity corresponding to the entityClass in argument
- * @throws TopiaException
- * @throws ClassCastException
- */
- public <T extends TopiaEntity> T executeToEntity(TopiaContext transaction, Class<T> entityClass)
- throws TopiaException, ClassCastException {
- List<T> results = executeToEntityList(transaction, entityClass);
- return !results.isEmpty() ? results.get(0) : null;
- }
-
- /**
- * Execute the query and get an Integer for result. Used for query with COUNT or SUM, ...
- * The select is overriden to get only the right value for return.
- *
- * @param transaction the TopiaContext to use for execution
- * @param select the Select overriden (ex : SUM(myParam))
- * @return an Integer
- * @throws TopiaException
- */
- public int executeToInteger(TopiaContext transaction, String select) throws TopiaException {
- Long res = (Long)executeToObject(transaction, select);
- return res != null ? res.intValue() : 0;
- }
-
- /**
- * Execute the query and get a String for result. Used for query with MAX, ...
- * The select is overriden to get only the right value for return.
- *
- * @param transaction the TopiaContext to use for execution
- * @param select the Select overriden (ex : MAX(myParam))
- * @return a String
- * @throws TopiaException
- */
- public String executeToString(TopiaContext transaction, String select) throws TopiaException {
- Object res = executeToObject(transaction, select);
- return res != null ? (String)res : "";
- }
-
- /**
- * Execute the query and get an Object for result.
- * The select is overriden to get only the right value for return.
- *
- * @param transaction the TopiaContext to use for execution
- * @param select the Select overriden
- * @return an Object
- * @throws TopiaException
- */
- public Object executeToObject(TopiaContext transaction, String select) throws TopiaException {
- String oldValue = this.select;
- if (!StringUtils.isEmpty(select)) {
- this.select = "SELECT " + select;
- }
- Object result = null;
- List results = execute(transaction);
- if (!results.isEmpty()) {
- result = results.get(0);
- }
- this.select = oldValue;
- return result;
- }
-
- /**
- * Execute a simple count on the query, i.e. the number of results get from the query.
- *
- * @param transaction the TopiaContext to use for execution
- * @return an int corresponding to the number of result in the query
- * @throws TopiaException
- */
- public int executeCount(TopiaContext transaction) throws TopiaException {
- return executeToInteger(transaction, "COUNT(*)");
- }
-
-}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -24,7 +24,7 @@
import fr.ifremer.suiviobsmer.QueryBuilder;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
-import fr.ifremer.suiviobsmer.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery;
import fr.ifremer.suiviobsmer.bean.ContactState;
import java.io.Serializable;
import org.nuiton.topia.TopiaContext;
@@ -63,18 +63,6 @@
try {
transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
-// String contactClassName = Contact.class.getName();
-// // Return the last contact for this boat and company
-// List results = transaction.find(
-// "FROM " + contactClassName + " C1" +
-// " WHERE C1.user.company = :company" +
-// " AND C1.boat = :boat" +
-// " AND C1.topiaCreateDate = " +
-// " (SELECT MAX(C2.topiaCreateDate) FROM " + contactClassName + " C2" +
-// " WHERE C2.user.company = :company AND C2.boat = C1.boat)",
-// "company", company,
-// "boat", this);
-
TopiaQuery query = QueryBuilder.createQueryLastContactForBoat(this, company);
Contact contact = query.executeToEntity(transaction, Contact.class);
if (contact != null) {
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -24,7 +24,7 @@
import fr.ifremer.suiviobsmer.QueryBuilder;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery;
import java.io.Serializable;
import org.nuiton.topia.TopiaContext;
import java.util.Date;
@@ -109,53 +109,4 @@
}
return result;
}
-
- /**
- * Execute the HQL query for counting contact with BoardingDone state since the fromDate.
- * This query is used to get all boarding dones on this boat for all companies or only for the
- * current one. Only the validate contacts by company will be count. The param fromDate can be null,
- * in this case, all contacts will be counted (not matter which date then started).
- *
- * @param transaction TopiaContext to execute the query
- * @param fromDate the date to start calcul
- * @param companyOnly boolean used to filter by the current company or not
- * @return the number of boarding done since fromDate
- * @throws TopiaException
- */
-// protected int countDoneContactsFromDate(TopiaContext transaction, Date fromDate, boolean companyOnly) throws TopiaException {
-// int result = 0;
-//
-// List<Object> params = new ArrayList<Object>();
-// String contactClassName = Contact.class.getName();
-// String query = "SELECT COUNT(*)" +
-// " FROM " + contactClassName +
-// " WHERE boat = :boat AND state = :boardingDone" +
-// " AND validationCompany = :booleanTrue" +
-// " AND (validationProgram IS NULL OR validationProgram = :booleanTrue)";
-//
-// params.add("boat"); params.add(getBoat());
-// params.add("boardingDone"); params.add(ContactState.BOARDING_DONE.toString());
-// params.add("booleanTrue"); params.add(Boolean.TRUE);
-//
-// if (fromDate != null) {
-// query += " AND tideBeginDate >= :fromDate";
-// params.add("fromDate");
-// params.add(fromDate);
-// }
-//
-// if (companyOnly) {
-// query+= " AND user.company = :company";
-// params.add("company");
-// params.add(getCompany());
-// }
-//
-// List results = transaction.find(query, params.toArray());
-//
-// if (!results.isEmpty()) {
-// Long tmp = (Long) results.get(0);
-// result += tmp.intValue();
-// }
-//
-// return result;
-// }
}
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 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ProgramImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -23,8 +23,8 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
-import fr.ifremer.suiviobsmer.TopiaQuery;
-import fr.ifremer.suiviobsmer.TopiaQuery.Op;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery.Op;
import java.io.Serializable;
import java.text.NumberFormat;
import java.util.Calendar;
@@ -91,19 +91,11 @@
Calendar refBegin = new GregorianCalendar();
refBegin.setTime(begin);
refBegin.set(Calendar.DAY_OF_MONTH, 1);
- /*refBegin.set(Calendar.HOUR, 0);
- refBegin.set(Calendar.MINUTE, 0);
- refBegin.set(Calendar.SECOND, 0);
- refBegin.set(Calendar.MILLISECOND, 0);*/
Calendar refEnd = new GregorianCalendar();
refEnd.setTime(end);
int max = refEnd.getActualMaximum(Calendar.DAY_OF_MONTH);
refEnd.set(Calendar.DAY_OF_MONTH, max);
- /*refBegin.set(Calendar.HOUR, 0);
- refBegin.set(Calendar.MINUTE, 0);
- refBegin.set(Calendar.SECOND, 0);
- refBegin.set(Calendar.MILLISECOND, 0);*/
return ! (refEnd.before(getCalendarBegin()) || refBegin.after(getCalendarEnd()));
}
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 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -201,11 +201,4 @@
month.addRealTideTime(-nbDays);
}
-// protected int getDifferenceDays(Contact contact) {
-// int nbDays = DateUtils.getDifferenceInDays(contact.getTideBeginDate(), contact.getTideEndDate());
-// // difference nbDays + 1 for the first day
-// nbDays++;
-// return nbDays;
-// }
-
}
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 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -25,6 +25,7 @@
import com.csvreader.CsvReader;
import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
import fr.ifremer.suiviobsmer.entity.ActivityCalendarDAO;
+import fr.ifremer.suiviobsmer.entity.ActivityCalendarImpl;
import fr.ifremer.suiviobsmer.entity.ActivityMonth;
import fr.ifremer.suiviobsmer.entity.ActivityMonthDAO;
import fr.ifremer.suiviobsmer.entity.ActivityProfession;
@@ -32,7 +33,6 @@
import fr.ifremer.suiviobsmer.entity.ActivityZone;
import fr.ifremer.suiviobsmer.entity.ActivityZoneDAO;
import fr.ifremer.suiviobsmer.entity.Boat;
-import fr.ifremer.suiviobsmer.entity.BoatDAO;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
@@ -43,11 +43,16 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.time.DurationFormatUtils;
+import org.hibernate.SQLQuery;
import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.framework.TopiaContextImplementor;
+import org.nuiton.topia.framework.TopiaQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -70,6 +75,54 @@
private static final Logger log = LoggerFactory.getLogger(ActivityCalendarImport.class);
+ 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;
+ private String _boatId;
+ private int _year;
+
+ public ActivityCalendarKey(Boat boat, int year) {
+ _boatId = boat.getTopiaId();
+ _year = year;
+ _boat = boat;
+ }
+
+ public String boatId() {
+ return _boatId;
+ }
+
+ public Boat boat() {
+ return _boat;
+ }
+
+ public int year() {
+ return _year;
+ }
+
+ @Override
+ public boolean equals(Object key) {
+ if (!ActivityCalendarKey.class.isAssignableFrom(key.getClass())) {
+ throw new ClassCastException("Unable to cast object " + key.getClass() + " to " + this.getClass().getName());
+ }
+ ActivityCalendarKey calendarKey = (ActivityCalendarKey)key;
+ return _year == calendarKey.year() && _boatId.equals(calendarKey.boatId());
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 61 * hash + (this._boatId != null ? this._boatId.hashCode() : 0);
+ hash = 61 * hash + this._year;
+ return hash;
+ }
+ }
+
public ActivityCalendarImport(InputStream input) throws IOException {
super();
this.input = input;
@@ -100,67 +153,105 @@
int result = 0;
+ long firstTic = startTime;
+
+ long tic1, tic2;
+
+ Map<ActivityCalendarKey, ActivityCalendar> availableCalendars = new HashMap<ActivityCalendarKey, ActivityCalendar>();
+
+ //BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+ ActivityCalendarDAO calendarDAO = SuiviObsmerModelDAOHelper.getActivityCalendarDAO(transaction);
+ ActivityMonthDAO monthDAO = SuiviObsmerModelDAOHelper.getActivityMonthDAO(transaction);
+ ActivityProfessionDAO professionDAO = SuiviObsmerModelDAOHelper.getActivityProfessionDAO(transaction);
+ ActivityZoneDAO zoneDAO = SuiviObsmerModelDAOHelper.getActivityZoneDAO(transaction);
+
while(reader.readRecord()) {
currRow++;
- String timeLog = "";
- long firstTic = System.currentTimeMillis();
- //result[0]++;
-
-// if (log.isTraceEnabled()) {
-// log.trace(" " + Arrays.asList(reader.getValues()));
-// }
+ //long firstTic = System.currentTimeMillis();
int boatImmatriculation = Integer.parseInt(reader.get("NAVS_COD").trim());
- BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+// long tic1 = System.currentTimeMillis();
- Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
+ //Boat boat = boatDAO.findByImmatriculation(boatImmatriculation);
+// TopiaContextImplementor topia = (TopiaContextImplementor)transaction;
+// SQLQuery query = topia.getHibernate().createSQLQuery(
+// "SELECT * FROM boat WHERE immatriculation = " + boatImmatriculation);
+//
+// Boat boat = (Boat)query.addEntity(BoatImpl.class).uniqueResult();
+ Boat boat = new TopiaQuery(Boat.class).add(Boat.IMMATRICULATION, boatImmatriculation).executeToEntity(transaction);
+
+// long tic2 = System.currentTimeMillis();
+// log.info("findByImmatriculation : " + (tic2 - tic1));
if (boat != null) {
+
+ int year = Integer.parseInt(reader.get("SYNA_AN").trim());
- ActivityCalendarDAO dao = SuiviObsmerModelDAOHelper.getActivityCalendarDAO(transaction);
+ ActivityCalendarKey key = new ActivityCalendarKey(boat, year);
+ ActivityCalendar calendar = availableCalendars.get(key);
- int year = Integer.parseInt(reader.get("SYNA_AN").trim());
+// tic1 = System.currentTimeMillis();
- ActivityCalendar calendar = dao.findByProperties(
- ActivityCalendar.BOAT, boat,
- ActivityCalendar.YEAR, year);
-
+ // If not available select it from Database
if (calendar == null) {
- int fiability = Integer.parseInt(reader.get("INDQ_COD").trim());
+// TopiaContextImplementor topia = (TopiaContextImplementor)transaction;
+// SQLQuery query = topia.getHibernate().createSQLQuery(
+// "SELECT * FROM activityCalendar WHERE boat = '" + key.boatId() + "' AND year = " + key.year());
+//
+// calendar = (ActivityCalendar)query.addEntity(ActivityCalendarImpl.class).uniqueResult();
- calendar = dao.create(
- ActivityCalendar.BOAT, boat,
- ActivityCalendar.YEAR, year,
- ActivityCalendar.FIABILITY, fiability);
+ calendar = new TopiaQuery(ActivityCalendar.class).
+ add(ActivityCalendar.BOAT, boat).
+ add(ActivityCalendar.YEAR, year).
+ executeToEntity(transaction);
- calendar.setActivityMonth(new ArrayList<ActivityMonth>());
+ // Create it if not exist in Database
+ if (calendar == null) {
+ int fiability = Integer.parseInt(reader.get("INDQ_COD").trim());
- if (log.isDebugEnabled()) {
- info("Création d'un calendrier " + year +
- " pour le navire immatriculé " + boatImmatriculation, currRow);
+ calendar = calendarDAO.create(
+ ActivityCalendar.BOAT, key.boat(),
+ ActivityCalendar.YEAR, key.year(),
+ ActivityCalendar.FIABILITY, fiability);
+
+ calendar.setActivityMonth(new ArrayList<ActivityMonth>());
+
+ if (log.isDebugEnabled()) {
+ info("Création d'un calendrier " + year +
+ " pour le navire immatriculé " + boatImmatriculation, currRow);
+ }
}
+ availableCalendars.put(key, calendar);
}
+
+// ActivityCalendar calendar = calendarDAO.findByProperties(
+// ActivityCalendar.BOAT, boat,
+// ActivityCalendar.YEAR, year);
+
+// tic2 = System.currentTimeMillis();
+// log.info("calendar.findByProperties : " + (tic2 - tic1));
+
+
String calendarCode = "[ calendrier " + year + ", navire " + boatImmatriculation + " ]";
int monthNum = Integer.parseInt(reader.get("SYNA_MOI").trim());
String harbourCode = reader.get("SYNA_POR_COD").trim();
boolean active = !harbourCode.equals("INA");
+
ActivityMonth month = calendar.getActivityMonth(monthNum);
if (month == null) {
-
- ActivityMonthDAO monthDAO = SuiviObsmerModelDAOHelper.getActivityMonthDAO(transaction);
month = monthDAO.create(
ActivityMonth.ACTIVITY_CALENDAR, calendar,
ActivityMonth.MONTH, monthNum);
month.setActivityProfession(new ArrayList<ActivityProfession>());
- if (log.isDebugEnabled()) {
- info("Création du mois " + monthNum + " actif(" + active + ") " + calendarCode, currRow);
- }
+// if (log.isDebugEnabled()) {
+// info("Création du mois " + monthNum + " actif(" + active + ") " + calendarCode, currRow);
+// }
calendar.addActivityMonth(month);
}
@@ -180,9 +271,11 @@
Integer nbBoardingPersons = !nbBoardingPersonsString.equals("NA") ?
Integer.valueOf(nbBoardingPersonsString) : null;
- int harbourId = Integer.parseInt(reader.get("SYNA_TPOR_COD").trim());
+ String harbourIdString = reader.get("SYNA_TPOR_COD").trim();
+ int harbourId = !harbourIdString.equals("NA") ? Integer.parseInt(harbourIdString) : -1;
String harbourLibelle = reader.get("SYNA_POR_LIB").trim();
- //String harbourCode = reader.get("SYNA_POR_COD").trim();
+ harbourLibelle = !harbourLibelle.equals("NA") ? harbourLibelle : null;
+ harbourCode = !harbourCode.equals("NA") ? harbourCode : null;
month.setHarbourId(harbourId);
month.setHarbourCode(harbourCode);
@@ -195,24 +288,21 @@
String professionCode = reader.get("MET_COD").trim();
int professionId = Integer.parseInt(reader.get("MET_ID").trim());
String professionLibelle = reader.get("MET_LIB").trim();
-
ActivityProfession profession = month.getActivityProfession(professionOrder);
if (profession == null) {
- ActivityProfessionDAO professionDAO =
- SuiviObsmerModelDAOHelper.getActivityProfessionDAO(transaction);
profession = professionDAO.create(
ActivityProfession.ACTIVITY_MONTH, month,
ActivityProfession.PROFESSION_ORDER, professionOrder);
profession.setActivityZone(new ArrayList<ActivityZone>());
- if (log.isDebugEnabled()) {
- info("Création du métier " + professionOrder + " code(" + professionCode + ") " +
- "[ mois " + monthNum + " ] " +
- calendarCode, currRow);
- }
+// if (log.isDebugEnabled()) {
+// info("Création du métier " + professionOrder + " code(" + professionCode + ") " +
+// "[ mois " + monthNum + " ] " +
+// calendarCode, currRow);
+// }
month.addActivityProfession(profession);
}
@@ -226,29 +316,26 @@
String gradiantLibelle = reader.get("GRA_LIB").trim();
int zoneId = Integer.parseInt(reader.get("TSECT_COD").trim());
String zoneLibelle = reader.get("SECT_LIB").trim();
+
ActivityZone zone = profession.getActivityZone(zoneCode);
if (zone == null) {
-
- ActivityZoneDAO zoneDAO =
- SuiviObsmerModelDAOHelper.getActivityZoneDAO(transaction);
-
zone = zoneDAO.create(
ActivityZone.ZONE_CODE, zoneCode,
ActivityZone.ACTIVITY_PROFESSION, profession);
- if (log.isDebugEnabled()) {
- info("Création de la zone " + zoneCode + " [ mois " + monthNum + " ] " +
- calendarCode, currRow);
- }
+// if (log.isDebugEnabled()) {
+// info("Création de la zone " + zoneCode + " [ mois " + monthNum + " ] " +
+// calendarCode, currRow);
+// }
profession.addActivityZone(zone);
} else {
- if (log.isDebugEnabled()) {
- info("Ecrasement de la zone " + zoneCode + " [ mois " + monthNum + " ] " +
- calendarCode, currRow);
- }
+// if (log.isDebugEnabled()) {
+// info("Ecrasement de la zone " + zoneCode + " [ mois " + monthNum + " ] " +
+// calendarCode, currRow);
+// }
//warn("Zone déjà existante [" + zoneCode + "] ! :: " + Arrays.toString(reader.getValues()), currRow);
}
@@ -264,18 +351,37 @@
warn("Navire inexistant dans le référentiel : " + boatImmatriculation, currRow);
}
- if (log.isDebugEnabled()) {
- long tic = System.currentTimeMillis();
- log.debug("Time : " + DurationFormatUtils.formatDurationHMS(tic - firstTic));
- }
+// if (log.isDebugEnabled()) {
+// long tic = System.currentTimeMillis();
+// log.debug("Time : " + DurationFormatUtils.formatDurationHMS(tic - firstTic));
+// }
- if (result%500 == 0 && log.isInfoEnabled()) {
- log.info("RUNNING... Import calendrier d'activité ligne " + currRow);
+ if (result % 1000 == 0) {
+ tic1 = System.currentTimeMillis();
+
+ transaction.commitTransaction();
+ availableCalendars.clear();
+
+ tic2 = System.currentTimeMillis();
+ if (log.isDebugEnabled()) {
+ log.debug("commit : " + (tic2 - tic1));
+ }
+ if (log.isInfoEnabled()) {
+ log.info("RUNNING... Import calendrier d'activité ligne " + currRow);
+ Runtime runtime = Runtime.getRuntime();
+ long mem = runtime.totalMemory() - runtime.freeMemory();
+ long memMega = mem / 1024 / 1024;
+ log.info("Memory : " + memMega + " Mo");
+ long tic = System.currentTimeMillis();
+ log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic - firstTic));
+ firstTic = System.currentTimeMillis();
+ }
}
-
- transaction.commitTransaction();
}
+ // For the last rows
+ transaction.commitTransaction();
+
long stopTime = System.currentTimeMillis();
String execTime = DurationFormatUtils.formatDurationHMS(stopTime - startTime);
@@ -314,8 +420,11 @@
}
protected void log(String message, int numRow) throws IOException {
+ if (DISABLED) {
+ return;
+ }
Date date = new Date();
- DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+ DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.FRENCH);
String dateString = dateFormat.format(date);
String ligne = numRow != -1 ? "Ligne (" + numRow + ") : " : "";
String msg = "[" + dateString + "] " + ligne + message;
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 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -28,8 +28,8 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
-import fr.ifremer.suiviobsmer.TopiaQuery;
-import fr.ifremer.suiviobsmer.TopiaQuery.Op;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery.Op;
import fr.ifremer.suiviobsmer.bean.BoatFilter;
import fr.ifremer.suiviobsmer.bean.CompanyBoatInfos;
import fr.ifremer.suiviobsmer.bean.CompanyBoatInfosImpl;
@@ -50,6 +50,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DurationFormatUtils;
import org.nuiton.topia.TopiaContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -71,8 +72,6 @@
protected TopiaContext rootContext;
- // CREATE UNIQUE INDEX boat_immatriculation_idx ON BOAT(IMMATRICULATION)
-
public ServiceBoatImpl() throws SuiviObsmerException {
rootContext = SuiviObsmerContext.getTopiaRootContext();
}
@@ -344,13 +343,23 @@
CsvReader reader = new CsvReader(input, Charset.forName("UTF-8"));
reader.readHeaders();
+ long startTime = System.currentTimeMillis();
+ long tic1, tic2;
+
+ BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+ ShipOwnerDAO shipOwnerDAO = SuiviObsmerModelDAOHelper.getShipOwnerDAO(transaction);
+
+ Map<String, ShipOwner> availableShipOwners = new HashMap<String, ShipOwner>();
+
+ tic1 = System.currentTimeMillis();
while(reader.readRecord()) {
result[0]++;
- if (log.isTraceEnabled()) {
- log.trace(" " + Arrays.asList(reader.getValues()));
- }
+// if (log.isTraceEnabled()) {
+// log.trace(" " + Arrays.asList(reader.getValues()));
+// }
+
int immatriculation = Integer.parseInt(reader.get("NAVS_COD").trim());
String boatName = reader.get("CARN_NOM").trim();
int boatLength = Integer.parseInt(reader.get("CARN_LONGUEUR_HT").trim());
@@ -362,10 +371,32 @@
String activeStr = reader.get("NAVS_ACTIVE").trim();
boolean active = !activeStr.equals("I");
- BoatDAO boatDAO = SuiviObsmerModelDAOHelper.getBoatDAO(transaction);
+
// Find existing boat with immatriculation
- Boat boat = boatDAO.findByImmatriculation(immatriculation);
+ //
+
+// long tic1 = System.currentTimeMillis();
+// boatDAO.findByImmatriculation(immatriculation);
+// long tic2 = System.currentTimeMillis();
+// if (log.isDebugEnabled()) {
+// log.debug("findByImmatriculation : " + (tic2 - tic1));
+// }
+//
+// tic1 = System.currentTimeMillis();
+// Boat boat = QueryBuilder.getBoatByImmatriculation(transaction, immatriculation);
+// tic2 = System.currentTimeMillis();
+// if (log.isDebugEnabled()) {
+// log.debug("findByImmatriculation SQL : " + (tic2 - tic1));
+// }
+
+// tic1 = System.currentTimeMillis();
+ Boat boat = new TopiaQuery(Boat.class).add(Boat.IMMATRICULATION, immatriculation).executeToEntity(transaction);
+// tic2 = System.currentTimeMillis();
+// if (log.isDebugEnabled()) {
+// log.debug("findByImmatriculation TopiaQuery : " + (tic2 - tic1));
+// }
+
if (boat == null) {
boat = boatDAO.create(Boat.IMMATRICULATION, immatriculation);
result[1]++;
@@ -376,19 +407,56 @@
boat.setBoatLength(boatLength);
boat.setActive(active);
- ShipOwnerDAO shipOwnerDAO = SuiviObsmerModelDAOHelper.getShipOwnerDAO(transaction);
// Find existing shipOwner with code
- ShipOwner shipOwner = shipOwnerDAO.findByCode(shipOwnerCode);
+ //ShipOwner shipOwner = shipOwnerDAO.findByCode(shipOwnerCode);
+
+ ShipOwner shipOwner = availableShipOwners.get(shipOwnerCode);
+
+ // If not available, select it from database
if (shipOwner == null) {
- shipOwner = shipOwnerDAO.create(ShipOwner.CODE, shipOwnerCode);
+ shipOwner = new TopiaQuery(ShipOwner.class).add(ShipOwner.CODE, shipOwnerCode).executeToEntity(transaction);
+
+ // If not exist yet, create it
+ if (shipOwner == null) {
+ shipOwner = shipOwnerDAO.create(ShipOwner.CODE, shipOwnerCode);
+ }
+
+ availableShipOwners.put(shipOwnerCode, shipOwner);
}
shipOwner.setFirstName(shipOwnerFirstName);
shipOwner.setLastName(shipOwnerLastName);
boat.setShipOwner(shipOwner);
- transaction.commitTransaction();
+ //transaction.commitTransaction();
+
+ if (result[0] % 1000 == 0) {
+ availableShipOwners.clear();
+
+ transaction.commitTransaction();
+ if (log.isInfoEnabled()) {
+ log.info("RUNNING... Import navires ligne " + result[0]);
+ Runtime runtime = Runtime.getRuntime();
+ long mem = (runtime.totalMemory() - runtime.freeMemory()) / 1048576;
+ //long memMega = mem / 1024 / 1024;
+ log.info("Memory : " + mem + " Mo");
+ tic2 = System.currentTimeMillis();
+ log.info("Time : " + DurationFormatUtils.formatDurationHMS(tic2 - tic1));
+ tic1 = System.currentTimeMillis();
+ }
+ }
}
+ // For the last rows
+ transaction.commitTransaction();
+
+ long stopTime = System.currentTimeMillis();
+
+ String execTime = DurationFormatUtils.formatDurationHMS(stopTime - startTime);
+
+ if (log.isInfoEnabled()) {
+ log.info("Durée de l'import : " + execTime);
+ }
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
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 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -24,7 +24,7 @@
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
-import fr.ifremer.suiviobsmer.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery;
import fr.ifremer.suiviobsmer.bean.states.ContactStateEnum;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Company;
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 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -41,12 +41,13 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery.Op;
import org.nuiton.topia.persistence.util.EntityLoador;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -233,31 +234,42 @@
List<SampleRow> results = new ArrayList<SampleRow>();
try {
transaction = rootContext.beginTransaction();
-
- SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+ Date current = SuiviObsmerContext.getCurrentDate();
+
+ // Only rows which are not finished will be kept
+ TopiaQuery query = new TopiaQuery(SampleRow.class).add("program.periodEnd", Op.GE, current);
+
if (!user.getAdmin()) {
- if (log.isDebugEnabled()) {
- log.debug("User company : " + user.getCompany().getName());
- }
- results = dao.findAllByCompany(user.getCompany());
- } else {
- results = dao.findAll();
+ query.add(SampleRow.COMPANY, user.getCompany());
}
- Iterator<SampleRow> it = results.iterator();
- while (it.hasNext()) {
- SampleRow row = it.next();
- // Only rows which are not finished will be kept
- if (row.getProgram().isFinished()) {
- it.remove();
- }/* else {
- // load data
- row.getProgram();
- row.getCompany();
- row.getProfession();
- }*/
- }
+ results = query.executeToEntityList(transaction, SampleRow.class);
+
+// SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
+//
+// if (!user.getAdmin()) {
+// if (log.isDebugEnabled()) {
+// log.debug("User company : " + user.getCompany().getName());
+// }
+// results = dao.findAllByCompany(user.getCompany());
+// } else {
+// results = dao.findAll();
+// }
+//
+// Iterator<SampleRow> it = results.iterator();
+// while (it.hasNext()) {
+// SampleRow row = it.next();
+// // Only rows which are not finished will be kept
+// if (row.getProgram().isFinished()) {
+// it.remove();
+// }/* else {
+// // load data
+// row.getProgram();
+// row.getCompany();
+// row.getProfession();
+// }*/
+// }
transaction.closeContext();
} catch (Exception eee) {
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 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2009-12-29 12:17:31 UTC (rev 161)
@@ -148,13 +148,6 @@
CompanyDAO dao = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction);
- /*for (Company company : dao.findAll()) {
- results.add(company);
- // load users collection and call size() method to avoid LazyInitializationException from Hibernate
- List<User> users = (List<User>)company.getUser();
- users.size();
- }*/
-
if (activeOnly) {
results = dao.findAllByActive(activeOnly);
} else {
Modified: trunk/suiviobsmer-ui/src/main/resources/log4j.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2009-12-24 15:57:38 UTC (rev 160)
+++ trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2009-12-29 12:17:31 UTC (rev 161)
@@ -8,7 +8,7 @@
log4j.appender.console.Threshold=INFO
log4j.appender.globalfile=org.apache.log4j.RollingFileAppender
-log4j.appender.globalfile.File=${user.home}/.local/suiviobsmer/log/suiviobsmer.log
+log4j.appender.globalfile.File=/var/log/suiviobsmer/suiviobsmer.log
log4j.appender.globalfile.MaxFileSize=500KB
log4j.appender.globalfile.Append=true
log4j.appender.globalfile.MaxBackupIndex=10
1
0
[Suiviobsmer-commits] r160 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl
by fdesbois@users.labs.libre-entreprise.org 24 Dec '09
by fdesbois@users.labs.libre-entreprise.org 24 Dec '09
24 Dec '09
Author: fdesbois
Date: 2009-12-24 15:57:38 +0000 (Thu, 24 Dec 2009)
New Revision: 160
Removed:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/DataLoader.java
Modified:
trunk/pom.xml
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java
Log:
- Use topia SNAPSHOT for on topiaCreateDate type
- Improve queries + add property loading managment
- Use EntityLoador for getNewProfession
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/pom.xml 2009-12-24 15:57:38 UTC (rev 160)
@@ -239,7 +239,7 @@
<!-- libraries version -->
<nuitonutils.version>1.1.2</nuitonutils.version>
- <topia.version>2.3.0-beta-2</topia.version>
+ <topia.version>2.3.0-beta-3-SNAPSHOT</topia.version>
<license.version>2.0.0</license.version>
<helper.version>1.1.0</helper.version>
<eugene.version>2.0.0-beta-2</eugene.version>
Deleted: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/DataLoader.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/DataLoader.java 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/DataLoader.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -1,76 +0,0 @@
-/*
- * *##%
- * SuiviObsmer :: Business
- * Copyright (C) 2009 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;
-
-import fr.ifremer.suiviobsmer.entity.ActivityCalendar;
-import fr.ifremer.suiviobsmer.entity.ActivityMonth;
-import fr.ifremer.suiviobsmer.entity.ActivityProfession;
-import fr.ifremer.suiviobsmer.entity.ActivityZone;
-import fr.ifremer.suiviobsmer.entity.Contact;
-import fr.ifremer.suiviobsmer.entity.SampleRow;
-import java.util.List;
-
-/**
- * DataLoader
- *
- * Created: 3 déc. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Used to load data to avoid LazyInitializationException
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class DataLoader {
-
- public static void loadContactForFindByFilters(Contact contact) {
- // load data
- contact.getUser().getCompany();
- SampleRow row = contact.getSampleRow();
- row.getProgram();
- row.getProfession();
- row.getCompany();
- //row.getFishingZone().size(); lazy=false
- }
-
- public static void loadActivityCalendar(ActivityCalendar calendar) {
- calendar.getBoat();
- List<ActivityMonth> months = calendar.getActivityMonth();
- for (ActivityMonth month : months) {
- if (month.getActive()) {
- List<ActivityProfession> professions = month.getActivityProfession();
- for (ActivityProfession profession : professions) {
- List<ActivityZone> zones = profession.getActivityZone();
- zones.size();
- }
- }
- }
- }
-
- public static void loadContactForBoatInfos(Contact contact) {
- contact.getSampleRow();
- contact.getUser();
- }
-
-}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/QueryBuilder.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -50,17 +50,17 @@
*/
public static TopiaQuery createQueryLastContactForBoat(Boat boat, Company company) {
String contactClassName = Contact.class.getName();
+ TopiaQuery query = new TopiaQuery(contactClassName + " C1").
+ add("C1.boat", boat).
+ add("C1.user.company = :company").
+ addParam("company", company);
+
TopiaQuery subquery = new TopiaQuery(contactClassName + " C2").
addSelect("MAX(C2.topiaCreateDate)").
add("C2.boat = C1.boat").
add("C2.user.company = :company");
- TopiaQuery query = new TopiaQuery(contactClassName + " C1").
- add("C1.boat", boat).
- add("C1.user.company = :company").
- addParam("company", company).
- add("C1.topiaCreateDate = (" + subquery.fullQuery() + ")");
-
+ query.add("C1.topiaCreateDate = (" + subquery.fullQuery() + ")");
return query;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/TopiaQuery.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -21,9 +21,16 @@
package fr.ifremer.suiviobsmer;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
@@ -67,6 +74,8 @@
/** Used to determine if parentheses are needed for Where input **/
protected boolean parentheses;
+ protected List<String> propertiesToLoad;
+
/**
* Enum to simmplify using operation in query
*/
@@ -167,6 +176,33 @@
}
/**
+ * Add a property to load when query is executed.
+ * Used to avoid LazyInitializationException for property needed after closing context.
+ * The property is a string like those in HQL query.
+ * <pre>
+ * Exemples :
+ * - "person.company" (Property TopiaEntity person linked to the result entity in query and company linked to person)
+ * --> calling myEntity.getPerson().getCompany();
+ * - "partyRoles" (Property Collection partyRoles linked to the result entity in query)
+ * --> calling myEntity.getPartyRoles().size();
+ * </pre>
+ *
+ * @param properties
+ * @return
+ */
+ public TopiaQuery addLoad(String... properties) {
+ getPropertiesToLoad().addAll(Arrays.asList(properties));
+ return this;
+ }
+
+ protected List<String> getPropertiesToLoad() {
+ if (propertiesToLoad == null) {
+ propertiesToLoad = new ArrayList<String>();
+ }
+ return propertiesToLoad;
+ }
+
+ /**
* Add a where element to the Query. Could be anything.
* Parentheses are added automatically (even if there are not needed).
*
@@ -276,6 +312,10 @@
return this;
}
+ public TopiaQuery addOrderDesc(String order) {
+ return addOrder(order + " DESC");
+ }
+
/**
* Add an element to the group of the query. Used to add some paramters to group by.
*
@@ -314,34 +354,166 @@
}
/**
- * Execute the query and get a List of entity.
+ * Execute the query and get a List of entity. Some properties will be loaded if they are
+ * prealably set using ${@link #addLoad(java.lang.String[]) }.
*
* @param <T> the type of TopiaEntity to return
* @param transaction the TopiaContext to use for execution
* @param entityClass the class of the TopiaEntity used for return type
* @return a List of TopiaEntity corresponding to the entityClass in argument
* @throws TopiaException
+ * @throws ClassCastException
*/
- public <T extends TopiaEntity> List<T> executeToEntityList(TopiaContext transaction, Class<T> entityClass) throws TopiaException {
+ public <T extends TopiaEntity> List<T> executeToEntityList(TopiaContext transaction, Class<T> entityClass)
+ throws TopiaException, ClassCastException {
List res = execute(transaction);
-// List<T> results = new ArrayList<T>();
-// for (Object o : res) {
-// T entity = (T)o;
-// results.add(entity);
-// }
- return (List<T>)res;
+ if (log.isTraceEnabled()) {
+ log.trace("Properties to load : " + getPropertiesToLoad());
+ }
+ List<T> results = new ArrayList<T>();
+ for (Object o : res) {
+ if (o != null && !entityClass.isAssignableFrom(o.getClass())) {
+ throw new ClassCastException("Invalid cast for " + entityClass.getName());
+ }
+ T entity = (T)o;
+ if (!getPropertiesToLoad().isEmpty()) {
+ loadProperties(entity);
+ }
+ results.add(entity);
+ }
+ return results;
}
/**
- * Execute the query and get the first result entity.
+ * Load all properties for the entity.
*
+ * @param <T> type of the entity extends TopiaEntity
+ * @param entity used to load properties
+ * @throws TopiaException
+ */
+ protected <T extends TopiaEntity> void loadProperties(T entity) throws TopiaException {
+ for (String prop : getPropertiesToLoad()) {
+ if (log.isTraceEnabled()) {
+ log.trace("load property " + prop + " ...");
+ }
+ List<String> str = Arrays.asList(prop.split("\\."));
+ Iterator<String> it = str.iterator();
+ TopiaEntity currEntity = entity;
+ while (it.hasNext()) {
+ String s = it.next();
+ if (log.isTraceEnabled()) {
+ log.trace("Current entity : " + currEntity.getClass().getSimpleName());
+ log.trace("Current loading : " + s);
+ }
+ if (it.hasNext()) {
+ currEntity = loadEntityProperty(currEntity, s);
+ } else {
+ loadProperty(currEntity, s);
+ }
+ }
+ }
+ }
+
+ /**
+ * Load a property of type TopiaEntity from an other entity.
+ *
+ * @param <T> type of the entity extends TopiaEntity
+ * @param entity used to load the property
+ * @param property name of the property in the entity
+ * @return a TopiaEntity corresponding to the property loaded
+ * @throws TopiaException
+ */
+ protected <T extends TopiaEntity> TopiaEntity loadEntityProperty(T entity, String property) throws TopiaException {
+ return (TopiaEntity)loadProperty(entity, property);
+ }
+
+ /**
+ * Load a property from an entity.
+ *
+ * @param <T> type of the entity extends TopiaEntity
+ * @param entity used to load the property
+ * @param property name of the property in the entity
+ * @return an Object corresponding to the property loaded
+ * @throws TopiaException
+ */
+ protected <T extends TopiaEntity> Object loadProperty(T entity, String property) throws TopiaException {
+ try {
+ Object res = PropertyUtils.getProperty(entity, property);
+ if (log.isTraceEnabled()) {
+ log.trace("load property '" + property + "' for '" + entity.getClass().getSimpleName() + "'");
+ }
+ if (Collection.class.isAssignableFrom(res.getClass())) {
+ Collection list = (Collection) res;
+ list.size();
+ }
+ return res;
+ } catch (IllegalAccessException eee) {
+ throw new TopiaException("Illegal access on property " + property + " from entity " + entity.getClass().getName(), eee);
+ } catch (InvocationTargetException eee) {
+ throw new TopiaException("Invocation error on entity " + entity.getClass().getName() + " for property " + property, eee);
+ } catch (NoSuchMethodException eee) {
+ throw new TopiaException("Getter method does not exist for property " + property + " from entity " + entity.getClass().getName(), eee);
+ }
+ }
+
+ /**
+ * Execute the query and get a Map of entity with key type in argument. Some properties will be loaded if they are
+ * prealably set using ${@link #addLoad(java.lang.String[]) }.
+ *
+ * @param <K> the type of the map key
+ * @param <T> the type of entity, value of the map
+ * @param transaction the TopiaContext to use for execution
+ * @param entityClass the class of the TopiaEntity used for return
+ * @param keyName the property name of the key in the entity
+ * @param keyClass the key class for the result map
+ * @return a Map with the key type defined and the entity in value
+ * @throws TopiaException
+ * @throws ClassCastException
+ */
+ public <K, T extends TopiaEntity> Map<K, T> executeToEntityMap(TopiaContext transaction, Class<T> entityClass, String keyName, Class<K> keyClass)
+ throws TopiaException, ClassCastException {
+
+ Map<K, T> results = new HashMap<K, T>();
+ //for (PropertyDescriptor)
+ for (T elmt : executeToEntityList(transaction, entityClass)) {
+ Object value = loadProperty(elmt, keyName);
+ if (value != null && !keyClass.isAssignableFrom(value.getClass())) {
+ throw new ClassCastException("Invalid cast for " + keyClass.getName());
+ }
+ results.put((K)value, elmt);
+ }
+ return results;
+ }
+
+ /**
+ * Execute the query and get a Map of entity with topiaId in key. Some properties will be loaded if they are
+ * prealably set using ${@link #addLoad(java.lang.String[]) }.
+ *
+ * @param <T> the type of entity, value of the map
+ * @param transaction the TopiaContext to use for execution
+ * @param entityClass the class of the TopiaEntity used for return
+ * @return a Map with the key type defined and the entity in value
+ * @throws TopiaException
+ * @throws ClassCastException
+ */
+ public <T extends TopiaEntity> Map<String, T> executeToEntityMap(TopiaContext transaction, Class<T> entityClass)
+ throws TopiaException, ClassCastException {
+ return executeToEntityMap(transaction, entityClass, TopiaEntity.TOPIA_ID, String.class);
+ }
+
+ /**
+ * Execute the query and get the first result entity. Some properties will be loaded if they are
+ * prealably set using ${@link #addLoad(java.lang.String[]) }.
+ *
* @param <T> the type of TopiaEntity to return
* @param transaction the TopiaContext to use for execution
* @param entityClass the class of the TopiaEntity used for return type
* @return a TopiaEntity corresponding to the entityClass in argument
* @throws TopiaException
+ * @throws ClassCastException
*/
- public <T extends TopiaEntity> T executeToEntity(TopiaContext transaction, Class<T> entityClass) throws TopiaException {
+ public <T extends TopiaEntity> T executeToEntity(TopiaContext transaction, Class<T> entityClass)
+ throws TopiaException, ClassCastException {
List<T> results = executeToEntityList(transaction, entityClass);
return !results.isEmpty() ? results.get(0) : null;
}
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 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -22,7 +22,6 @@
package fr.ifremer.suiviobsmer.impl;
import com.csvreader.CsvReader;
-import fr.ifremer.suiviobsmer.DataLoader;
import fr.ifremer.suiviobsmer.QueryBuilder;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException;
import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException.Type;
@@ -72,6 +71,8 @@
protected TopiaContext rootContext;
+ // CREATE UNIQUE INDEX boat_immatriculation_idx ON BOAT(IMMATRICULATION)
+
public ServiceBoatImpl() throws SuiviObsmerException {
rootContext = SuiviObsmerContext.getTopiaRootContext();
}
@@ -128,10 +129,7 @@
addParam("booleanTrue", Boolean.TRUE);
}
- List<Boat> boats = query.executeToEntityList(transaction, Boat.class);
- for (Boat boat : boats) {
- results.put(boat.getImmatriculation(), boat);
- }
+ results = query.executeToEntityMap(transaction, Boat.class, Boat.IMMATRICULATION, Integer.class);
transaction.closeContext();
} catch (Exception eee) {
@@ -200,11 +198,11 @@
}
// Last contact
- TopiaQuery query = QueryBuilder.createQueryLastContactForBoat(boat, company);
+ TopiaQuery query = QueryBuilder.createQueryLastContactForBoat(boat, company).
+ addLoad(Contact.SAMPLE_ROW, Contact.USER);
Contact contact = query.executeToEntity(transaction, Contact.class);
if (contact != null) {
- DataLoader.loadContactForBoatInfos(contact);
result.setLastContact(contact);
}
@@ -422,15 +420,6 @@
try {
transaction = rootContext.beginTransaction();
-// String activityCalendarClassName = ActivityCalendar.class.getName();
-// List results = transaction.find(
-// "FROM " + activityCalendarClassName + " A WHERE A.boat = :boat AND A.year = " +
-// "(SELECT MAX(B.year) FROM " + activityCalendarClassName + " B " +
-// " WHERE B.boat = A.boat GROUP BY B.boat)",
-// "boat", boat);
-//
-// result = (ActivityCalendar) results.get(0);
-
String activityCalendarClassName = ActivityCalendar.class.getName();
TopiaQuery query = new TopiaQuery(activityCalendarClassName + " A").
add("A.boat", boat);
@@ -442,9 +431,21 @@
query.add("A.year = (" + subquery.fullQuery() + ")");
+ query.addLoad(ActivityCalendar.BOAT);
result = query.executeToEntity(transaction, ActivityCalendar.class);
- DataLoader.loadActivityCalendar(result);
+ // load other complex data from collections
+ List<ActivityMonth> months = result.getActivityMonth();
+ for (ActivityMonth month : months) {
+ if (month.getActive()) {
+ List<ActivityProfession> professions = month.getActivityProfession();
+ for (ActivityProfession profession : professions) {
+ List<ActivityZone> zones = profession.getActivityZone();
+ zones.size();
+ }
+ }
+ }
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
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 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -21,10 +21,10 @@
package fr.ifremer.suiviobsmer.impl;
-import fr.ifremer.suiviobsmer.DataLoader;
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper;
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
+import fr.ifremer.suiviobsmer.TopiaQuery;
import fr.ifremer.suiviobsmer.bean.states.ContactStateEnum;
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.entity.Company;
@@ -38,6 +38,7 @@
import java.util.List;
import java.util.Map;
import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.persistence.TopiaEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -69,23 +70,15 @@
try {
transaction = rootContext.beginTransaction();
- ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ TopiaQuery query = new TopiaQuery(Contact.class).addOrderDesc(TopiaEntity.TOPIA_CREATE_DATE);
- if (company == null) {
- for (Contact contact : dao.findAll()) {
- DataLoader.loadContactForFindByFilters(contact);
- results.put(contact.getTopiaId(), contact);
- }
- } else {
- List list = transaction.find("FROM ContactImpl WHERE user.company = :company",
- "company", company);
- for (Object o : list) {
- Contact contact = (Contact)o;
- DataLoader.loadContactForFindByFilters(contact);
- results.put(contact.getTopiaId(), contact);
- }
+ if (company != null) {
+ query.add("user.company", company);
}
+ query.addLoad("user.company", "sampleRow.program", "sampleRow.profession", "sampleRow.company");
+ results = query.executeToEntityMap(transaction, Contact.class);
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction,
@@ -122,6 +115,10 @@
ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ if (log.isDebugEnabled()) {
+ log.debug("Create date : " + contact.getTopiaCreateDate());
+ }
+
SuiviObsmerContext.prepareTopiaId(Contact.class, contact);
if (delete) {
dao.delete(contact);
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 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -44,11 +44,10 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.util.EntityLoador;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -348,12 +347,9 @@
@Override
public Profession getNewProfession(Profession profession) {
Profession newProfession = new ProfessionImpl();
- newProfession.setCodeDCF5(profession.getCodeDCF5());
- newProfession.setLibelle(profession.getLibelle());
- newProfession.setOther(profession.getOther());
- newProfession.setMeshSize(profession.getMeshSize());
- newProfession.setSize(profession.getSize());
- newProfession.setSpecies(profession.getSpecies());
+ EntityLoador<Profession> loador = EntityLoador.newEntityLoador(Profession.class,
+ Profession.CODE_DCF5, Profession.LIBELLE, Profession.MESH_SIZE, Profession.OTHER, Profession.SIZE, Profession.SPECIES);
+ loador.load(profession, newProfession, false);
return newProfession;
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
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 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -51,6 +51,7 @@
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.junit.After;
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 2009-12-23 17:52:56 UTC (rev 159)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImplTest.java 2009-12-24 15:57:38 UTC (rev 160)
@@ -54,6 +54,7 @@
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -359,6 +360,37 @@
}
@Test
+ public void testGetNewProfession() throws Exception {
+ log.info("getNewProfession");
+
+ /** PREPARE DATA **/
+
+ TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction();
+
+ ProfessionDAO dao = SuiviObsmerModelDAOHelper.getProfessionDAO(transaction);
+
+ Profession profession = dao.create(
+ Profession.CODE_DCF5, "OBR",
+ Profession.LIBELLE, "Fileyage en barre",
+ Profession.MESH_SIZE, "< 80",
+ Profession.OTHER, "90mm",
+ Profession.SPECIES, "barre, lieu noir, saumon des plages");
+
+ transaction.commitTransaction();
+ transaction.closeContext();
+
+ /** EXEC METHOD **/
+ Profession newProfession = service.getNewProfession(profession);
+ Assert.assertNotSame(profession, newProfession);
+ Assert.assertEquals("OBR", newProfession.getCodeDCF5());
+ Assert.assertEquals("Fileyage en barre", newProfession.getLibelle());
+ Assert.assertEquals("< 80", newProfession.getMeshSize());
+ Assert.assertEquals("90mm", newProfession.getOther());
+ Assert.assertEquals("barre, lieu noir, saumon des plages", newProfession.getSpecies());
+
+ }
+
+ @Test
public void testDeleteSampleRow() throws Exception {
log.info("deleteSampleRow");
1
0
[Suiviobsmer-commits] r159 - in trunk: . suiviobsmer-business suiviobsmer-ui
by fdesbois@users.labs.libre-entreprise.org 23 Dec '09
by fdesbois@users.labs.libre-entreprise.org 23 Dec '09
23 Dec '09
Author: fdesbois
Date: 2009-12-23 17:52:56 +0000 (Wed, 23 Dec 2009)
New Revision: 159
Modified:
trunk/pom.xml
trunk/suiviobsmer-business/pom.xml
trunk/suiviobsmer-ui/pom.xml
Log:
[maven-release-plugin] prepare for next development iteration
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-12-23 17:52:53 UTC (rev 158)
+++ trunk/pom.xml 2009-12-23 17:52:56 UTC (rev 159)
@@ -15,7 +15,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.1-alpha-2</version>
+ <version>0.0.1-alpha-3-SNAPSHOT</version>
<modules>
<module>suiviobsmer-ui</module>
@@ -256,9 +256,9 @@
<scm>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.1-alpha-2</connection>
- <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.1-alpha-2</developerConnection>
- <url>http://labs.libre-entreprise.org/scm/viewvc.php/tags/suiviobsmer-0.0.1-alph…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk</connection>
+ <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk</developerConnection>
+ <url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/?root=suiviobsmer</url>
</scm>
<build>
Modified: trunk/suiviobsmer-business/pom.xml
===================================================================
--- trunk/suiviobsmer-business/pom.xml 2009-12-23 17:52:53 UTC (rev 158)
+++ trunk/suiviobsmer-business/pom.xml 2009-12-23 17:52:56 UTC (rev 159)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.1-alpha-2</version>
+ <version>0.0.1-alpha-3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.suiviobsmer</groupId>
@@ -120,9 +120,9 @@
</build>
<scm>
- <url>http://labs.libre-entreprise.org/scm/viewvc.php/tags/suiviobsmer-0.0.1-alph…</url>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.1-alpha-…</connection>
- <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.1-alpha-…</developerConnection>
+ <url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/suiviobsmer-business/…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-business</connection>
+ <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-business</developerConnection>
</scm>
</project>
Modified: trunk/suiviobsmer-ui/pom.xml
===================================================================
--- trunk/suiviobsmer-ui/pom.xml 2009-12-23 17:52:53 UTC (rev 158)
+++ trunk/suiviobsmer-ui/pom.xml 2009-12-23 17:52:56 UTC (rev 159)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>suiviobsmer</artifactId>
- <version>0.0.1-alpha-2</version>
+ <version>0.0.1-alpha-3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.suiviobsmer</groupId>
@@ -122,9 +122,9 @@
</build>
<scm>
- <url>http://labs.libre-entreprise.org/scm/viewvc.php/tags/suiviobsmer-0.0.1-alph…</url>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.1-alpha-…</connection>
- <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/tags/suiviobsmer-0.0.1-alpha-…</developerConnection>
+ <url>http://labs.libre-entreprise.org/scm/viewvc.php/trunk/suiviobsmer-ui/?root=…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-ui</connection>
+ <developerConnection>scm:svn:svn+ssh://fdesbois at labs.libre-entreprise.org/svnroot/suiviobsmer/trunk/suiviobsmer-ui</developerConnection>
</scm>
</project>
1
0