Echobase-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
March 2012
- 2 participants
- 129 discussions
r349 - in trunk: echobase-entities/src/main/java/fr/ifremer/echobase echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders
by tchemit@users.forge.codelutin.com 10 Mar '12
by tchemit@users.forge.codelutin.com 10 Mar '12
10 Mar '12
Author: tchemit
Date: 2012-03-10 10:26:38 +0100 (Sat, 10 Mar 2012)
New Revision: 349
Url: http://forge.codelutin.com/repositories/revision/echobase/349
Log:
add ne function + rename one
Modified:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java
trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LengthWeightKeyLoader.java
trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java
Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java 2012-03-10 01:36:11 UTC (rev 348)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java 2012-03-10 09:26:38 UTC (rev 349)
@@ -200,6 +200,12 @@
}
};
+ public static final Function<SampleDataType, String> SAMPLE_DATA_TYPE_NAME = new Function<SampleDataType, String>() {
+ @Override
+ public String apply(SampleDataType input) {
+ return String.valueOf(input.getName());
+ }
+ };
public static final Function<OperationEvent, String> OPERATION_EVENT_NAME = new Function<OperationEvent, String>() {
@Override
public String apply(OperationEvent input) {
@@ -231,7 +237,7 @@
}
};
- public static final Function<SpeciesCategory, String> SPECIES_CATEGORY_SPIECIES = new Function<SpeciesCategory, String>() {
+ public static final Function<SpeciesCategory, String> SPECIES_CATEGORY_KEY = new Function<SpeciesCategory, String>() {
@Override
public String apply(SpeciesCategory input) {
return getSpeciesCategoryKey(input.getSpecies(), input.getSizeCategory(), input.getSexCategory());
Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LengthWeightKeyLoader.java
===================================================================
--- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LengthWeightKeyLoader.java 2012-03-10 01:36:11 UTC (rev 348)
+++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LengthWeightKeyLoader.java 2012-03-10 09:26:38 UTC (rev 349)
@@ -73,7 +73,7 @@
SizeCategory.class, EchoBaseFunctions.SIZE_CATEGORY_NAME);
Map<String, SpeciesCategory> speciesCategoryBySizeAndName = getUniverse(
- SpeciesCategory.class, EchoBaseFunctions.SPECIES_CATEGORY_SPIECIES);
+ SpeciesCategory.class, EchoBaseFunctions.SPECIES_CATEGORY_KEY);
TopiaDAO<LengthWeightKey> dao = getDAO();
Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java
===================================================================
--- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java 2012-03-10 01:36:11 UTC (rev 348)
+++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java 2012-03-10 09:26:38 UTC (rev 349)
@@ -142,7 +142,7 @@
SexCategory.class, EchoBaseFunctions.SEX_CATEGORY_NAME);
speciesCategoryByName = getUniverse(
- SpeciesCategory.class, EchoBaseFunctions.SPECIES_CATEGORY_SPIECIES);
+ SpeciesCategory.class, EchoBaseFunctions.SPECIES_CATEGORY_KEY);
Multimap<String, Map<String, Object>> mensurationByNosta = Multimaps.index(
db.getTable("MENSURATIONS", true),
1
0
r348 - in trunk: echobase-entities/src/main/java/fr/ifremer/echobase echobase-ui/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 10 Mar '12
by tchemit@users.forge.codelutin.com 10 Mar '12
10 Mar '12
Author: tchemit
Date: 2012-03-10 02:36:11 +0100 (Sat, 10 Mar 2012)
New Revision: 348
Url: http://forge.codelutin.com/repositories/revision/echobase/348
Log:
use real version
Modified:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java 2012-03-10 00:55:19 UTC (rev 347)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java 2012-03-10 01:36:11 UTC (rev 348)
@@ -133,10 +133,11 @@
}
public Version getApplicationVersion() {
- String versionStr =
- applicationConfig.getOption(EchoBaseConfigurationOption.VERSION.key);
- String s = VersionUtil.removeSnapshot(versionStr);
- Version v = VersionUtil.valueOf(s);
+// String versionStr =
+// applicationConfig.getOption(EchoBaseConfigurationOption.VERSION.key);
+// String s = VersionUtil.removeSnapshot(versionStr);
+// Version v = VersionUtil.valueOf(s);
+ Version v = applicationConfig.getOptionAsVersion(EchoBaseConfigurationOption.VERSION.key);
Preconditions.checkNotNull(v);
return v;
}
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-03-10 00:55:19 UTC (rev 347)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-03-10 01:36:11 UTC (rev 348)
@@ -1,4 +1,5 @@
echobase.action.cancel=Cancel
+echobase.action.createNewMission=Create a new mission
echobase.action.generateSqlQuery=Generate request
echobase.action.newLibreOfficeQuery=New Libre office request
echobase.action.newQuery=New request
@@ -20,7 +21,6 @@
echobase.error.export.sqlQuery.forbidden.update.word=Export query contains a forbidden word 'UPDATE'
echobase.error.invalid.sql=Invalid request \: %s
echobase.error.login.unknown=Unkwon login
-echobase.action.createNewMission=Create a new mission
echobase.error.mission.name.already.exist=Mission name already exists
echobase.error.no.embeddedApplication.configurationFound=
echobase.error.no.embeddedApplication.exportFileFound=
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-10 00:55:19 UTC (rev 347)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-10 01:36:11 UTC (rev 348)
@@ -6,6 +6,7 @@
echobase.action.create=Créer
echobase.action.createEmbeddedApplication=Créer l'application
echobase.action.createMission=Créer la mission
+echobase.action.createNewMission=Créer une nouvelle mission
echobase.action.createSqlQuery=Enregistrer
echobase.action.delete=Suppression
echobase.action.deleteSqlQuery=Supprimer
@@ -17,7 +18,6 @@
echobase.action.generateSqlQuery=Générer la requète
echobase.action.import=Importer
echobase.action.importTable=Importer
-echobase.action.createNewMission=Créer une nouvelle mission
echobase.action.locale.english=Anglais
echobase.action.locale.french=Français
echobase.action.login=Connection
1
0
r347 - in trunk/echobase-ui/src/main: resources/i18n webapp/WEB-INF/jsp/importData
by tchemit@users.forge.codelutin.com 10 Mar '12
by tchemit@users.forge.codelutin.com 10 Mar '12
10 Mar '12
Author: tchemit
Date: 2012-03-10 01:55:19 +0100 (Sat, 10 Mar 2012)
New Revision: 347
Url: http://forge.codelutin.com/repositories/revision/echobase/347
Log:
add create mission to selection import type page
Modified:
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureCommonData.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/selectImportType.jsp
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-03-10 00:54:19 UTC (rev 346)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-03-10 00:55:19 UTC (rev 347)
@@ -20,6 +20,7 @@
echobase.error.export.sqlQuery.forbidden.update.word=Export query contains a forbidden word 'UPDATE'
echobase.error.invalid.sql=Invalid request \: %s
echobase.error.login.unknown=Unkwon login
+echobase.action.createNewMission=Create a new mission
echobase.error.mission.name.already.exist=Mission name already exists
echobase.error.no.embeddedApplication.configurationFound=
echobase.error.no.embeddedApplication.exportFileFound=
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-10 00:54:19 UTC (rev 346)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-10 00:55:19 UTC (rev 347)
@@ -17,6 +17,7 @@
echobase.action.generateSqlQuery=Générer la requète
echobase.action.import=Importer
echobase.action.importTable=Importer
+echobase.action.createNewMission=Créer une nouvelle mission
echobase.action.locale.english=Anglais
echobase.action.locale.french=Français
echobase.action.login=Connection
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureCommonData.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureCommonData.jsp 2012-03-10 00:54:19 UTC (rev 346)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureCommonData.jsp 2012-03-10 00:55:19 UTC (rev 347)
@@ -62,7 +62,7 @@
</legend>
<s:select key="model.missionId" required="true"
- label='%{getText("echobase.common.mission")} (*)'
+ label='%{getText("echobase.common.mission")}'
list="missions" headerKey="" headerValue=""/>
<br/>
@@ -103,10 +103,6 @@
</fieldset>
<br/>
- (*) <s:a namespace="/importData" action="createMission" method="input">
- <s:text name="echobase.information.create.mission"/>
-</s:a>
- <br/>
<s:submit action="ConfigureCommonData-modeAll" key='echobase.action.import'/>
</s:form>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/selectImportType.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/selectImportType.jsp 2012-03-10 00:54:19 UTC (rev 346)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/selectImportType.jsp 2012-03-10 00:55:19 UTC (rev 347)
@@ -31,7 +31,7 @@
function updateMode(newValue) {
// change the action target
$('#selectImportType_configure').attr('name',
- 'action:configure-' + newValue + '!input');
+ 'action:configure-' + newValue + '!input');
}
jQuery(document).ready(function () {
@@ -55,8 +55,16 @@
</fieldset>
- <br/>
- <s:submit action="selectImportType" key='echobase.action.configureImport'/>
+ <ul class="toolbar floatRight">
+ <li>
+ <s:submit action="createMission" key='echobase.action.createNewMission'
+ method="input" theme="simple"/>
+ </li>
+ <li>
+ <s:submit action="selectImportType" key='echobase.action.configureImport'
+ theme="simple"/>
+ </li>
+ </ul>
</s:form>
\ No newline at end of file
1
0
r346 - trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData
by tchemit@users.forge.codelutin.com 10 Mar '12
by tchemit@users.forge.codelutin.com 10 Mar '12
10 Mar '12
Author: tchemit
Date: 2012-03-10 01:54:19 +0100 (Sat, 10 Mar 2012)
New Revision: 346
Url: http://forge.codelutin.com/repositories/revision/echobase/346
Log:
move import tests as IT
Modified:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAccousticData.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesData.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonData.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperation.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResults.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/SelectImportType.java
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -23,7 +23,7 @@
*/
package fr.ifremer.echobase.ui.actions.importData;
-import fr.ifremer.echobase.services.AbstractImportDataService;
+import fr.ifremer.echobase.services.importdata.AbstractImportDataService;
import fr.ifremer.echobase.services.ImportException;
import fr.ifremer.echobase.services.configurations.AbstractImportConfiguration;
import fr.ifremer.echobase.services.csv.CsvFileImportResult;
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -26,8 +26,8 @@
import com.google.common.base.Preconditions;
import fr.ifremer.echobase.entities.references.Mission;
import fr.ifremer.echobase.entities.references.MissionImpl;
-import fr.ifremer.echobase.services.CommonDataImportService;
-import fr.ifremer.echobase.services.MissionNameAlreadyExistException;
+import fr.ifremer.echobase.services.exceptions.MissionNameAlreadyExistException;
+import fr.ifremer.echobase.services.importdata.CommonDataImportService;
import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAccousticData.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAccousticData.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAccousticData.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -23,7 +23,7 @@
*/
package fr.ifremer.echobase.ui.actions.importData;
-import fr.ifremer.echobase.services.AcousticDataImportService;
+import fr.ifremer.echobase.services.importdata.AcousticDataImportService;
import fr.ifremer.echobase.services.configurations.AcousticDataImportConfiguration;
/**
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesData.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesData.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesData.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -23,7 +23,7 @@
*/
package fr.ifremer.echobase.ui.actions.importData;
-import fr.ifremer.echobase.services.CatchesDataImportService;
+import fr.ifremer.echobase.services.importdata.CatchesDataImportService;
import fr.ifremer.echobase.services.configurations.CatchesDataImportConfiguration;
/**
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonData.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonData.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonData.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -23,7 +23,7 @@
*/
package fr.ifremer.echobase.ui.actions.importData;
-import fr.ifremer.echobase.services.CommonDataImportService;
+import fr.ifremer.echobase.services.importdata.CommonDataImportService;
import fr.ifremer.echobase.services.configurations.CommonDataImportConfiguration;
/**
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperation.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperation.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperation.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -23,7 +23,7 @@
*/
package fr.ifremer.echobase.ui.actions.importData;
-import fr.ifremer.echobase.services.OperationImportService;
+import fr.ifremer.echobase.services.importdata.OperationImportService;
import fr.ifremer.echobase.services.configurations.OperationImportConfiguration;
/**
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResults.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResults.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResults.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -23,7 +23,7 @@
*/
package fr.ifremer.echobase.ui.actions.importData;
-import fr.ifremer.echobase.services.ResultsImportService;
+import fr.ifremer.echobase.services.importdata.ResultsImportService;
import fr.ifremer.echobase.services.configurations.ResultsImportConfiguration;
/**
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/SelectImportType.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/SelectImportType.java 2012-03-10 00:53:51 UTC (rev 345)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/SelectImportType.java 2012-03-10 00:54:19 UTC (rev 346)
@@ -23,7 +23,7 @@
*/
package fr.ifremer.echobase.ui.actions.importData;
-import fr.ifremer.echobase.services.ImportDataMode;
+import fr.ifremer.echobase.services.importdata.ImportDataMode;
import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
import java.util.Map;
1
0
r345 - in trunk/echobase-services: . src/main/java/fr/ifremer/echobase/services src/main/java/fr/ifremer/echobase/services/exceptions src/main/java/fr/ifremer/echobase/services/importdata src/test/java/fr/ifremer/echobase/services src/test/java/fr/ifremer/echobase/services/importdata
by tchemit@users.forge.codelutin.com 10 Mar '12
by tchemit@users.forge.codelutin.com 10 Mar '12
10 Mar '12
Author: tchemit
Date: 2012-03-10 01:53:51 +0100 (Sat, 10 Mar 2012)
New Revision: 345
Url: http://forge.codelutin.com/repositories/revision/echobase/345
Log:
move import tests as IT
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportDataMode.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AcousticDataImportServiceIT.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CatchesDataImportServiceIT.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonData2ImportServiceIT.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonDataImportServiceIT.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/OperationImportServiceIT.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsImportServiceIT.java
Removed:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AcousticDataImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDataMode.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/MissionNameAlreadyExistException.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AcousticDataImportServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CatchesDataImportServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportService2Test.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ImportDataConstants.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/OperationImportServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ResultsImportServiceTest.java
Modified:
trunk/echobase-services/pom.xml
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java
Modified: trunk/echobase-services/pom.xml
===================================================================
--- trunk/echobase-services/pom.xml 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/pom.xml 2012-03-10 00:53:51 UTC (rev 345)
@@ -66,11 +66,6 @@
</dependency>
<dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- </dependency>
-
- <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
@@ -204,4 +199,42 @@
</build>
+ <profiles>
+
+ <profile>
+ <id>import-data-profile</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+
+ <build>
+ <defaultGoal>integration-test</defaultGoal>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>import-data-tests</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <includes>
+ <include>**/*ImportServiceIT.java</include>
+ </includes>
+ </configuration>
+
+ </plugin>
+ </plugins>
+ </build>
+
+ </profile>
+ </profiles>
+
</project>
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,226 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Function;
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.EchoBaseTechnicalException;
-import fr.ifremer.echobase.InputFile;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.EntityModificationLog;
-import fr.ifremer.echobase.entities.references.SexCategory;
-import fr.ifremer.echobase.entities.references.SizeCategory;
-import fr.ifremer.echobase.entities.references.Species;
-import fr.ifremer.echobase.entities.references.SpeciesCategory;
-import fr.ifremer.echobase.entities.references.SpeciesCategoryDAO;
-import fr.ifremer.echobase.services.configurations.AbstractImportConfiguration;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.persistence.TopiaDAO;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Abstract data import service.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public abstract class AbstractImportDataService<M extends AbstractImportConfiguration> extends EchoBaseServiceSupport {
-
- public final List<CsvFileImportResult> doImport(M configuration,
- EchoBaseUser user) throws ImportException {
-
-
- try {
- List<CsvFileImportResult> result = startImport(configuration, user);
-
- // do commit
- commitTransaction("Could not execute import " + getImportLabel());
- return result;
- } catch (ImportException e) {
- throw e;
- } catch (Exception e) {
- throw new ImportException("Could not do import " + e.getMessage(), e);
- }
- }
-
- protected abstract String getImportLabel();
-
- protected abstract List<CsvFileImportResult> startImport(M configuration,
- EchoBaseUser user) throws ImportException;
-
- protected void addResultAndLog(List<CsvFileImportResult> result,
- InputFile inputFile,
- CsvFileImportResult importResult,
- EchoBaseUser user) {
-
- Set<EchoBaseEntityEnum> entityTypes = importResult.getEntityTypes();
- if (!entityTypes.isEmpty()) {
-
- result.add(importResult);
-
- String importType = getImportLabel();
-
- StringBuilder description = new StringBuilder();
- description.append("Depuis Fichier ").append(inputFile.getFileName());
- TopiaDAO<EntityModificationLog> dao =
- getDAO(EntityModificationLog.class);
-
- for (EchoBaseEntityEnum entityType : entityTypes) {
- int numberCreated = importResult.getNumberCreated(entityType);
- int numberUpdated = importResult.getNumberUpdated(entityType);
- if (numberCreated > 0) {
- description.append(" [ nombre de création : ").append(numberCreated).append("]");
- }
- if (numberUpdated > 0) {
- description.append(" [ nombre de mises à jour : ").append(numberUpdated).append("]");
- }
-
- create(dao,
- EntityModificationLog.PROPERTY_ENTITY_TYPE, entityType.name(),
- EntityModificationLog.PROPERTY_ENTITY_ID, importType,
- EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
- EntityModificationLog.PROPERTY_MODIFICATION_DATE, newDate(),
- EntityModificationLog.PROPERTY_MODIFICATION_TEXT, description.toString()
- );
- }
-
- }
- }
-
- protected Reader getInputFileReader(InputFile inputFile) throws EchoBaseTechnicalException {
- try {
- Reader reader = new BufferedReader(new InputStreamReader(
- new FileInputStream(inputFile.getFile()), Charsets.UTF_8));
- return reader;
- } catch (FileNotFoundException e) {
- throw new EchoBaseTechnicalException(
- "Could not find import file " + inputFile.getFile(), e);
- }
- }
-
- protected void closeReader(Reader reader, InputFile inputFile) {
- try {
- reader.close();
- } catch (IOException e) {
- throw new EchoBaseTechnicalException(
- "Could not close reader on file " +
- inputFile.getFile(), e);
- }
- }
-
- protected <E extends TopiaEntity, K> Map<K, E> getEntitiesMap(
- Class<E> entityType,
- Function<E, K> function) {
- List<E> allVoyages = getEntities(entityType);
- Map<K, E> voyageMap = Maps.uniqueIndex(
- allVoyages, function);
- return voyageMap;
- }
-
- protected <E extends TopiaEntity> E newInstance(TopiaDAO<E> dao) {
- try {
- E result = dao.newInstance();
- return result;
- } catch (TopiaException e) {
- throw new EchoBaseTechnicalException("Could not create new instance of entity", e);
- }
- }
-
- protected <E extends TopiaEntity> E create(TopiaDAO<E> dao) {
- try {
- E result = dao.create();
- return result;
- } catch (TopiaException e) {
- throw new EchoBaseTechnicalException("Could not create entity", e);
- }
- }
-
- protected <E extends TopiaEntity> E create(TopiaDAO<E> dao, E entity) {
- try {
- E result = dao.create(entity);
- return result;
- } catch (TopiaException e) {
- throw new EchoBaseTechnicalException("Could not create entity", e);
- }
- }
-
- protected <E extends TopiaEntity> E create(TopiaDAO<E> dao,
- Object... properties) {
- try {
- E result = dao.create(properties);
- return result;
- } catch (TopiaException e) {
- throw new EchoBaseTechnicalException("Could not create entity", e);
- }
- }
-
- protected <E extends TopiaEntity> E findByProperties(TopiaDAO<E> dao,
- String propertyName,
- Object value,
- Object... others) {
- try {
- E result = dao.findByProperties(propertyName, value, others);
- return result;
- } catch (TopiaException e) {
- throw new EchoBaseTechnicalException("Could not obtain query db", e);
- }
- }
-
- protected SpeciesCategory getSpeciesCategory(SpeciesCategoryDAO speciesCategoryDAO,
- Species species,
- SizeCategory sizeCategory,
- SexCategory sexCategory) {
- SpeciesCategory category = findByProperties(
- speciesCategoryDAO,
- SpeciesCategory.PROPERTY_SPECIES, species,
- SpeciesCategory.PROPERTY_SIZE_CATEGORY, sizeCategory,
- SpeciesCategory.PROPERTY_SEX_CATEGORY, sexCategory
- );
-
- if (category == null) {
-
- // create it
-
- category = create(speciesCategoryDAO);
- category.setSpecies(species);
- category.setSizeCategory(sizeCategory);
- category.setSexCategory(sexCategory);
- }
-
- return category;
- }
-}
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AcousticDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AcousticDataImportService.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AcousticDataImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,572 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import fr.ifremer.echobase.EchoBaseFunctions;
-import fr.ifremer.echobase.EchoBasePredicates;
-import fr.ifremer.echobase.InputFile;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.data.Cell;
-import fr.ifremer.echobase.entities.data.CellDAO;
-import fr.ifremer.echobase.entities.data.Data;
-import fr.ifremer.echobase.entities.data.DataAcquisition;
-import fr.ifremer.echobase.entities.data.DataAcquisitionDAO;
-import fr.ifremer.echobase.entities.data.DataDAO;
-import fr.ifremer.echobase.entities.data.DataProcessing;
-import fr.ifremer.echobase.entities.data.DataProcessingDAO;
-import fr.ifremer.echobase.entities.data.Transect;
-import fr.ifremer.echobase.entities.data.Transit;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.references.AcousticInstrument;
-import fr.ifremer.echobase.entities.references.CellType;
-import fr.ifremer.echobase.entities.references.DataMetadata;
-import fr.ifremer.echobase.entities.references.Vessel;
-import fr.ifremer.echobase.services.configurations.AcousticDataImportConfiguration;
-import fr.ifremer.echobase.services.csv.AcousticDataImportModel;
-import fr.ifremer.echobase.services.csv.AcousticDataImportModelRow;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import fr.ifremer.echobase.services.csv.EchoBaseImport;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportRuntimeException;
-
-import java.io.Reader;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n.l_;
-
-/**
- * Service to launch a "acoustic data" import.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class AcousticDataImportService extends AbstractImportDataService<AcousticDataImportConfiguration> {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(AcousticDataImportService.class);
-
- @Override
- protected String getImportLabel() {
- return l_(getLocale(), ImportDataMode.AccousticData.getI18nKey());
- }
-
- @Override
- protected List<CsvFileImportResult> startImport(
- AcousticDataImportConfiguration configuration,
- EchoBaseUser user) throws ImportException {
-
- List<CsvFileImportResult> result = Lists.newLinkedList();
-
- // get selected voyage
- Voyage voyage = getEntityById(Voyage.class,
- configuration.getVoyageId());
-
- // get selected vessel
- Vessel vessel = getEntityById(Vessel.class,
- configuration.getVesselId());
-
- CellType esduCellType = getEntityByProperty(
- CellType.class, CellType.PROPERTY_ID, "Esdu");
- Preconditions.checkNotNull(esduCellType);
-
- CellType elementaryCellType = getEntityByProperty(
- CellType.class, CellType.PROPERTY_ID, "Elementary");
- Preconditions.checkNotNull(elementaryCellType);
-
- InputFile inputFile = configuration.getMoviesFile();
-
- CsvFileImportResult importResult = importMoviesFile(voyage,
- vessel,
- esduCellType,
- elementaryCellType,
- configuration,
- inputFile);
-
- addResultAndLog(result, inputFile, importResult, user);
-
- return result;
- }
-
- private final DateFormat cellDateFormat =
- new SimpleDateFormat("yyyy-MM-dd hh:mm:ss'Z'");
-
- private CsvFileImportResult importMoviesFile(Voyage voyage,
- Vessel vessel,
- CellType esduCellType,
- CellType elementaryCellType,
- AcousticDataImportConfiguration configuration,
- InputFile inputFile
- ) throws ImportException {
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- Map<String, AcousticInstrument> instrumentsById =
- getEntitiesMap(AcousticInstrument.class,
- EchoBaseFunctions.ACOUSTIC_INSTRUMENT_ID);
-
- Map<String, DataMetadata> dataMetadatasByName = getEntitiesMap(
- DataMetadata.class, EchoBaseFunctions.DATA_METADATA_NAME);
-
- AcousticDataImportModel csvModel = new AcousticDataImportModel(
- getCsvSeparator(), instrumentsById);
-
- DataAcquisitionDAO dataAcquisitionDAO =
- getDAO(DataAcquisition.class, DataAcquisitionDAO.class);
- DataProcessingDAO dataProcessingDAO =
- getDAO(DataProcessing.class, DataProcessingDAO.class);
- CellDAO cellDAO = getDAO(Cell.class, CellDAO.class);
- DataDAO dataDAO = getDAO(Data.class, DataDAO.class);
-
- boolean addDataAcquisition = configuration.isAddDataAcquisition();
-
- String suffix =
- configuration.getCellPositionReference().getMetadataNameSuffix();
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<AcousticDataImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
- DataAcquisition dataAcquisition = null;
- DataProcessing dataProcessing = null;
- Cell esduCell = null;
- Cell elementaryCell;
- for (AcousticDataImportModelRow row : importer) {
-
- Date startDate = row.getCellDateStart();
-
- // get transect to use
- Transit transit = voyage.getTransit(startDate);
- if (transit == null) {
-
- // can not find correct transit
- throw new ImportException(
- l_(getLocale(), "echobase.importError.transit.notfound",
- voyage.getName(),
- startDate));
- }
-
- Transect transect = transit.getTransect(vessel);
- if (transect == null) {
-
- // can not find correct transect
- throw new ImportException(
- l_(getLocale(), "echobase.importError.transect.notfound",
- voyage.getName(),
- startDate,
- vessel.getName()));
- }
-
- // Build the row acoustic instrument
-// String sndname = row.getSndName();
-// String channelName = row.getChannelName();
-// String instrumentId = sndname;
- AcousticInstrument instrument = row.getAcousticInstrument();
-// instrumentsById.get(instrumentId);
- boolean isME70 =
- EchoBasePredicates.IS_ACOUSTIC_INSTRUMENT_ME70.apply(instrument);
- if (dataAcquisition == null ||
- !instrument.equals(dataAcquisition.getAcousticInstrument())) {
-
- // need to use another data acquisition
-
- String softwareVersion =
- getSoftwareVersion(configuration, isME70);
-
- String soundSpeedCalculations =
- getSoundSpeedCalculations(configuration, isME70);
-
- if (!addDataAcquisition &&
- !transect.isDataAcquisitionEmpty()) {
-
- // try to obtain an existing data acquisiton
-
- for (DataAcquisition acquisition : transect.getDataAcquisition()) {
-
- if (instrument.equals(acquisition.getAcousticInstrument())) {
-
- // found a matching data acquisiotn from his acoustic instrument
- dataAcquisition = acquisition;
- break;
- }
- }
- }
-
- if (dataAcquisition == null) {
-
- // need to create the data acquisition
-
- // create dataAcquisiton
- dataAcquisition = createDataAcquisition(
- configuration,
- instrument,
- softwareVersion,
- soundSpeedCalculations,
- row,
- dataAcquisitionDAO
- );
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.DataAcquisition);
-
- // add it to transect
- transect.addDataAcquisition(dataAcquisition);
- }
-
- // create data processing
- dataProcessing = createDataProcessing(
- configuration,
- softwareVersion,
- soundSpeedCalculations,
- row,
- dataProcessingDAO
- );
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.DataProcessing);
-
- // add it to data acquisition
- dataAcquisition.addDataProcessing(dataProcessing);
-
- // must start a fresh new esdu cell
- esduCell = null;
- }
-
- int cellType = row.getCellType();
-
- String esduCellId = cellDateFormat.format(startDate);
-
- if (cellType == 4) {
-
- if (log.isDebugEnabled()) {
- log.debug("Esdu cell (" + esduCellId + ")");
- }
- // this is a esdu cell row
-
- // create esdu cell
- esduCell = create(cellDAO,
- Cell.PROPERTY_CELL_TYPE, esduCellType,
- Cell.PROPERTY_NAME, esduCellId
- );
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell);
-
- // add it to data processing
- dataProcessing.addCell(esduCell);
-
- // create esdu cell data
- createEsduCellData(suffix,
- esduCell,
- dataMetadatasByName,
- row,
- dataDAO,
- importResult);
- } else {
-
- // this is a elementary cell row
-
- int cellNum = row.getCellNum();
-
- String elementaryCellId = esduCellId + "_" + cellNum;
-
- if (log.isDebugEnabled()) {
- log.debug("elementary cell (" + elementaryCellId + ")");
- }
- if (esduCell == null) {
- throw new ImportException(
- l_(getLocale(), "echobase.importError.esduCell.notfound",
- esduCellId,
- voyage.getName(),
- elementaryCellId
- ));
- }
-
- // create the elementary cell
-
- elementaryCell = create(cellDAO,
- Cell.PROPERTY_CELL_TYPE, elementaryCellType,
- Cell.PROPERTY_NAME, elementaryCellId
- );
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell);
-
- // add it to esdu cell
- esduCell.addChilds(elementaryCell);
-
-
- // create datas of the elementary cell
- createElementaryCellData(elementaryCell,
- dataMetadatasByName,
- row,
- dataDAO,
- importResult);
- }
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- protected void createEsduCellData(String suffix,
- Cell cell,
- Map<String, DataMetadata> dataMetadatas,
- AcousticDataImportModelRow row,
- DataDAO dao,
- CsvFileImportResult importResult) {
-
- String dataValue;
-
- // create Latitude data
- dataValue = row.getEsduCellDataLatitude();
- createCellData(dao, cell, dataMetadatas, "Latitude" + suffix,
- dataValue, importResult);
-
- // create Longitude data
- dataValue = row.getEsduCellDataLongitude();
- createCellData(dao, cell, dataMetadatas, "Longitude" + suffix,
- dataValue, importResult);
-
- // create Depth data
- dataValue = row.getEsduCellDataDepth();
- createCellData(dao, cell, dataMetadatas, "DepthRefSurface" + suffix,
- dataValue, importResult);
-
- // create Time data
- dataValue = cellDateFormat.format(row.getCellDateStart());
- createCellData(dao, cell, dataMetadatas, "Time" + suffix,
- dataValue, importResult);
-
- // create AcousticDensity data
- dataValue = row.getEsduCellDataAcousticDensity();
- createCellData(dao, cell, dataMetadatas, "sa", dataValue, importResult);
- }
-
- private void createElementaryCellData(Cell cell,
- Map<String, DataMetadata> dataMetadatas,
- AcousticDataImportModelRow row,
- DataDAO dao,
- CsvFileImportResult importResult) {
-
- String dataValue;
-
- int cellType = row.getCellType();
-
- String startMeta;
- String endMeta;
-
- if (cellType == 0) {
-
- // surface
-
- startMeta = "DepthRefSurfaceStart";
- endMeta = "DepthRefSurfaceEnd";
-
- } else {
-
- // bottom
-
- startMeta = "DepthRefBottomStart";
- endMeta = "DepthRefBottomEnd";
- }
-
- // create depth start data
- dataValue = row.getCellDepthStart();
- createCellData(dao, cell, dataMetadatas, startMeta, dataValue, importResult);
-
- // create depth end data
- dataValue = row.getCellDepthEnd();
- createCellData(dao, cell, dataMetadatas, endMeta, dataValue, importResult);
-
- // create acoustic density data
- dataValue = row.getCellSa();
- createCellData(dao, cell, dataMetadatas, "sa", dataValue, importResult);
-
- }
-
- private DataAcquisition createDataAcquisition(AcousticDataImportConfiguration configuration,
- AcousticInstrument instrument,
- String softwareVersion,
- String soundSpeedCalculations,
- AcousticDataImportModelRow row,
- DataAcquisitionDAO dataAcquisitionDAO) {
-
- String transceiverAcquisitionAbsorptionDescription =
- configuration.getTransceiverAcquisitionAbsorptionDescription();
- String loggedDataFormat = configuration.getLoggedDataFormat();
- String loggedDataDatatype = configuration.getLoggedDataDatatype();
- String pingDutyCycle = configuration.getPingDutyCycle();
- String echosounderSoundSpeed = configuration.getEchosounderSoundSpeed();
-
- DataAcquisition dataAcquisition = create(dataAcquisitionDAO);
-
- // fill from manual configuration
- dataAcquisition.setAcousticInstrument(instrument);
- dataAcquisition.setTransceiverAcquisitionAbsorptionDescription(transceiverAcquisitionAbsorptionDescription);
- dataAcquisition.setAcquisitionSoftwareVersion(softwareVersion);
- dataAcquisition.setLoggedDataFormat(loggedDataFormat);
- dataAcquisition.setLoggedDataDatatype(loggedDataDatatype);
- dataAcquisition.setPingDutyCycle(pingDutyCycle);
- dataAcquisition.setEchosounderSoundSpeed(echosounderSoundSpeed);
- dataAcquisition.setSoundSpeedCalculations(soundSpeedCalculations);
-
- // fill from csv file
- Float transceiverAcquisitionAbsorption =
- row.getTransceiverAcquisitionAbsorption();
- Float transducerAcquisitionBeamAngleAthwartship =
- row.getTransducerAcquisitionBeamAngleAthwartship();
- Float transducerAcquisitionBeamAngleAlongship =
- row.getTransducerAcquisitionBeamAngleAlongship();
- Float transducerAcquisitionPsi =
- row.getTransducerAcquisitionPsi();
- Float transceiverAcquisitionPower =
- row.getTransceiverAcquisitionPower();
- Float transceiverAcquisitionPulseLength =
- row.getTransceiverAcquisitionPulseLength();
- Float transceiverAcquisitionGain =
- row.getTransceiverAcquisitionGain();
- Float transceiverAcquisitionSacorrection =
- row.getTransceiverAcquisitionSacorrection();
-
- dataAcquisition.setTransceiverAcquisitionAbsorption(transceiverAcquisitionAbsorption);
- dataAcquisition.setTransducerAcquisitionBeamAngleAthwartship(transducerAcquisitionBeamAngleAthwartship);
- dataAcquisition.setTransducerAcquisitionBeamAngleAlongship(transducerAcquisitionBeamAngleAlongship);
- dataAcquisition.setTransducerAcquisitionPsi(transducerAcquisitionPsi);
- dataAcquisition.setTransceiverAcquisitionPower(transceiverAcquisitionPower);
- dataAcquisition.setTransceiverAcquisitionPulseLength(transceiverAcquisitionPulseLength);
- dataAcquisition.setTransceiverAcquisitionGain(transceiverAcquisitionGain);
- dataAcquisition.setTransceiverAcquisitionSacorrection(transceiverAcquisitionSacorrection);
-
- return dataAcquisition;
- }
-
- private DataProcessing createDataProcessing(AcousticDataImportConfiguration configuration,
- String softwareVersion,
- String soundSpeedCalculations,
- AcousticDataImportModelRow row,
- DataProcessingDAO dataProcessingDAO) {
-
- String transceiverAcquisitionAbsorptionDescription =
- configuration.getTransceiverAcquisitionAbsorptionDescription();
- String echosounderSoundSpeed = configuration.getEchosounderSoundSpeed();
- String processingTemplate = configuration.getProcessingTemplate();
- String processingDescription = configuration.getProcessingDescription();
- Float sounderConstant = configuration.getSounderConstant();
- float digitThreshold = configuration.getDigitThreshold();
- String acousticDensityUnit = configuration.getAcousticDensityUnit();
- String notes = configuration.getNotes();
-
- DataProcessing dataProcessing = create(dataProcessingDAO);
-
- // fill from manual configuration
- dataProcessing.setProcessingTemplate(processingTemplate);
- dataProcessing.setProcessingDescription(processingDescription);
- dataProcessing.setSounderConstant(sounderConstant);
- dataProcessing.setDigitThreshold(digitThreshold);
- dataProcessing.setAcousticDensityUnit(acousticDensityUnit);
- dataProcessing.setNotes(notes);
- dataProcessing.setProcessingSoftwareVersion(softwareVersion);
- dataProcessing.setTransceiverProcessingAbsorptionDescription(transceiverAcquisitionAbsorptionDescription);
- dataProcessing.setEchosounderSoundSpeed(echosounderSoundSpeed);
- dataProcessing.setSoundSpeedCalculations(soundSpeedCalculations);
-
- // fill from csv file
-
- Float transceiverAcquisitionAbsorption =
- row.getTransceiverAcquisitionAbsorption();
- Float transducerAcquisitionBeamAngleAthwartship =
- row.getTransducerAcquisitionBeamAngleAthwartship();
- Float transducerAcquisitionBeamAngleAlongship =
- row.getTransducerAcquisitionBeamAngleAlongship();
- Float transducerAcquisitionPsi =
- row.getTransducerAcquisitionPsi();
-
- Float transceiverAcquisitionGain =
- row.getTransceiverAcquisitionGain();
- Float transceiverAcquisitionSacorrection =
- row.getTransceiverAcquisitionSacorrection();
- Float eIThreshold = row.getEiThreshold();
-
- dataProcessing.setEiThreshold(eIThreshold);
- dataProcessing.setTransceiverProcessingSacorrection(transceiverAcquisitionSacorrection);
- dataProcessing.setTransceiverProcessingAbsorption(transceiverAcquisitionAbsorption);
- dataProcessing.setTransceiverProcessingGain(transceiverAcquisitionGain);
- dataProcessing.setTransducerProcessingPsi(transducerAcquisitionPsi);
- dataProcessing.setTransducerProcessingBeamAngleAthwartship(transducerAcquisitionBeamAngleAthwartship);
- dataProcessing.setTransducerProcessingBeamAngleAlongship(transducerAcquisitionBeamAngleAlongship);
-
-
- return dataProcessing;
- }
-
- private void createCellData(DataDAO dao,
- Cell cell,
- Map<String, DataMetadata> dataMetadatasByName,
- String metadataName,
- String dataValue,
- CsvFileImportResult importResult) {
-
- DataMetadata dataMetaData = dataMetadatasByName.get(metadataName);
- Data data = create(dao);
- data.setDataMetadata(dataMetaData);
- data.setDataValue(dataValue);
- cell.addData(data);
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Data);
- }
-
- private String getSoftwareVersion(AcousticDataImportConfiguration configuration,
- boolean isME70) {
- String result;
- if (isME70) {
- result = configuration.getAcquisitionSoftwareVersionME70();
- } else {
- result = configuration.getAcquisitionSoftwareVersionER60();
- }
- return result;
- }
-
- private String getSoundSpeedCalculations(AcousticDataImportConfiguration configuration,
- boolean isME70) {
- String result;
- if (isME70) {
- result = configuration.getSoundSpeedCalculationsME70();
- } else {
- result = configuration.getSoundSpeedCalculationsER60();
- }
- return result;
- }
-
-}
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,481 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.EchoBaseFunctions;
-import fr.ifremer.echobase.EchoBasePredicates;
-import fr.ifremer.echobase.InputFile;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.data.Operation;
-import fr.ifremer.echobase.entities.data.Sample;
-import fr.ifremer.echobase.entities.data.SampleDAO;
-import fr.ifremer.echobase.entities.data.SampleData;
-import fr.ifremer.echobase.entities.data.SampleDataDAO;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.references.SampleDataType;
-import fr.ifremer.echobase.entities.references.SampleDataTypeDAO;
-import fr.ifremer.echobase.entities.references.SampleType;
-import fr.ifremer.echobase.entities.references.SampleTypeDAO;
-import fr.ifremer.echobase.entities.references.SexCategory;
-import fr.ifremer.echobase.entities.references.SizeCategory;
-import fr.ifremer.echobase.entities.references.Species;
-import fr.ifremer.echobase.entities.references.SpeciesCategory;
-import fr.ifremer.echobase.entities.references.SpeciesCategoryDAO;
-import fr.ifremer.echobase.entities.references.Vessel;
-import fr.ifremer.echobase.services.configurations.CatchesDataImportConfiguration;
-import fr.ifremer.echobase.services.csv.BiometrySampleImportModel;
-import fr.ifremer.echobase.services.csv.BiometrySampleImportModelRow;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import fr.ifremer.echobase.services.csv.EchoBaseImport;
-import fr.ifremer.echobase.services.csv.SubSampleImportModel;
-import fr.ifremer.echobase.services.csv.SubSampleImportModelRow;
-import fr.ifremer.echobase.services.csv.TotalSampleImportModel;
-import fr.ifremer.echobase.services.csv.TotalSampleImportModelRow;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportRuntimeException;
-
-import java.io.Reader;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n.l_;
-
-/**
- * Service to launch a "catches sample data" import.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class CatchesDataImportService extends AbstractImportDataService<CatchesDataImportConfiguration> {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(CatchesDataImportService.class);
-
- @Override
- protected String getImportLabel() {
- return l_(getLocale(), ImportDataMode.CatchesData.getI18nKey());
- }
-
- @Override
- protected List<CsvFileImportResult> startImport(CatchesDataImportConfiguration configuration,
- EchoBaseUser user) throws ImportException {
-
- List<CsvFileImportResult> result = Lists.newLinkedList();
-
- Voyage voyage = getEntityById(Voyage.class,
- configuration.getVoyageId());
-
- // get all operation for this voyage and this vessel
- Collection<Operation> operations = voyage.getAllOperations();
-
- // split them by operation Id
- Map<String, Operation> operationMap = Maps.uniqueIndex(
- operations, EchoBaseFunctions.OPERATION_ID);
-
- Map<String, Species> speciesMap = getEntitiesMap(
- Species.class,
- EchoBaseFunctions.SPECIES_BARACOUDA_CODE);
-
- Map<String, SizeCategory> sizeCategoryMap = getEntitiesMap(
- SizeCategory.class,
- EchoBaseFunctions.SIZE_CATEGORY_NAME);
-
- Map<String, SexCategory> sexCategoryMap = getEntitiesMap(
- SexCategory.class,
- EchoBaseFunctions.SEX_CATEGORY_NAME);
-
- if (configuration.getTotalSampleFile().hasFile()) {
- CsvFileImportResult totalSampleResult = importTotalSampleFile(
- configuration.getTotalSampleFile(),
- operationMap,
- speciesMap,
- sizeCategoryMap);
-
- addResultAndLog(result, configuration.getTotalSampleFile(),
- totalSampleResult, user);
- }
-
- if (configuration.getSubSampleFile().hasFile()) {
- CsvFileImportResult subSampleResult = importSubSampleFile(
- configuration.getSubSampleFile(),
- operationMap,
- speciesMap,
- sizeCategoryMap,
- sexCategoryMap);
-
- addResultAndLog(result, configuration.getSubSampleFile(),
- subSampleResult, user);
- }
-
- if (configuration.getBiometrySampleFile().hasFile()) {
- CsvFileImportResult biometrySampleResult = importBiometrySampleFile(
- configuration.getBiometrySampleFile(),
- operationMap,
- speciesMap);
-
-
- addResultAndLog(result, configuration.getBiometrySampleFile(),
- biometrySampleResult, user);
- }
- return result;
- }
-
- private CsvFileImportResult importTotalSampleFile(InputFile inputFile,
- Map<String, Operation> operationMap,
- Map<String, Species> speciesMap,
- Map<String, SizeCategory> sizeCategoryMap) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of totalSample from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- TotalSampleImportModel csvModel = new TotalSampleImportModel(getCsvSeparator(),
- operationMap,
- speciesMap,
- sizeCategoryMap
- );
-
- SampleDAO sampleDAO = getDAO(Sample.class, SampleDAO.class);
- SampleDataDAO sampleDataDAO = getDAO(SampleData.class, SampleDataDAO.class);
- SampleTypeDAO sampleTypeDAO = getDAO(SampleType.class, SampleTypeDAO.class);
- SampleDataTypeDAO sampleDataTypeDAO = getDAO(SampleDataType.class, SampleDataTypeDAO.class);
- SpeciesCategoryDAO speciesCategoryDAO = getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
-
- SampleType sampleTypeTotal = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Total");
- Preconditions.checkNotNull(sampleTypeTotal);
- SampleType sampleTypeUnsorted = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Unsorted");
- Preconditions.checkNotNull(sampleTypeUnsorted);
- SampleType sampleTypeSorted = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Sorted");
- Preconditions.checkNotNull(sampleTypeSorted);
-
- SampleDataType sampleDataTypeMeanLength = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "MeanLengthcm");
- Preconditions.checkNotNull(sampleDataTypeMeanLength);
- SampleDataType sampleDataTypeMeanWeight = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "MeanWeightg");
- Preconditions.checkNotNull(sampleDataTypeMeanWeight);
- SampleDataType sampleDataTypeNoPerKg = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "NoPerKg");
- Preconditions.checkNotNull(sampleDataTypeNoPerKg);
-
- Reader reader = getInputFileReader(inputFile);
- Locale locale = getLocale();
- try {
- Import<TotalSampleImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (TotalSampleImportModelRow row : importer) {
-
- Operation operation = row.getOperation();
-
- Species species = row.getSpecies();
- SizeCategory sizeCategory = row.getSizeCategory();
-
- SpeciesCategory category = getSpeciesCategory(
- speciesCategoryDAO,
- species,
- sizeCategory,
- null
- );
-
- SampleType sampleType;
-
- if (EchoBasePredicates.IS_HORS_VRAC.apply(sizeCategory)) {
-
- // hors vrac case
- sampleType = sampleTypeUnsorted;
-
- } else {
- // none hors vrac case
- sampleType = sampleTypeTotal;
- }
-
- Sample sample = operation.getSample(category, sampleType);
-
- if (sample != null) {
-
- // can not have twice same sample
- throw new ImportException(
- l_(locale, "echobase.importError.duplicate.sample",
- operation.getId(),
- sampleType.getName(),
- species.getBaracoudaCode(),
- sizeCategory.getName()));
- }
-
- if (sample == null) {
-
- // must create it
-
- sample = row.getSample();
- sample.setSpeciesCategory(category);
-
- sample.setSampleType(sampleType);
-
- sample = addSample(sampleDAO,
- operation,
- sample,
- importResult);
- } else {
- sample = sample;
- }
-
- // create datas
-
- if (row.getMeanLength() != null) {
-
- //create meanLength data
- addSampleData(sampleDataDAO,
- sampleDataTypeMeanLength,
- null,
- row.getMeanLength(),
- sample,
- importResult);
- }
-
- if (row.getMeanWeight() != null) {
-
- //create meanWeight data
- addSampleData(sampleDataDAO,
- sampleDataTypeMeanWeight,
- null,
- row.getMeanWeight(),
- sample,
- importResult);
- }
-
- if (row.getNoPerKg() != null) {
-
- //create noPerKg data
- addSampleData(sampleDataDAO,
- sampleDataTypeNoPerKg,
- null,
- row.getNoPerKg(),
- sample,
- importResult);
- }
-
- Sample createdSortedSample = newInstance(sampleDAO);
- createdSortedSample.setSampleType(sampleTypeSorted);
- createdSortedSample.setSampleWeight(row.getSortedWeight());
-
- // create sorted sample
- addSample(sampleDAO,
- operation,
- createdSortedSample,
- importResult);
-
-
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(locale, inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- private CsvFileImportResult importSubSampleFile(InputFile inputFile,
- Map<String, Operation> operationMap,
- Map<String, Species> speciesMap,
- Map<String, SizeCategory> sizeCategoryMap,
- Map<String, SexCategory> sexCategoryMap
- ) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of subSample from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- SubSampleImportModel csvModel = new SubSampleImportModel(getCsvSeparator(),
- operationMap,
- speciesMap,
- sizeCategoryMap,
- sexCategoryMap);
-
- SampleDAO sampleDAO = getDAO(Sample.class, SampleDAO.class);
- SampleDataDAO sampleDataDAO = getDAO(SampleData.class, SampleDataDAO.class);
- SampleTypeDAO sampleTypeDAO = getDAO(SampleType.class, SampleTypeDAO.class);
- SampleDataTypeDAO sampleDataTypeDAO = getDAO(SampleDataType.class, SampleDataTypeDAO.class);
- SpeciesCategoryDAO speciesCategoryDAO = getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
-
- SampleType sampleTypeSubsample = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Subsample");
- Preconditions.checkNotNull(sampleTypeSubsample);
-
- SampleDataType sampleDataTypeNumberAtLength = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "NumberAtLength");
- Preconditions.checkNotNull(sampleDataTypeNumberAtLength);
- SampleDataType sampleDataTypeWeightAtLength = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "WeightAtLengthkg");
- Preconditions.checkNotNull(sampleDataTypeWeightAtLength);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<SubSampleImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (SubSampleImportModelRow row : importer) {
-
- Operation operation = row.getOperation();
-
- Species species = row.getSpecies();
- SizeCategory sizeCategory = row.getSizeCategory();
- SexCategory sexCategory = row.getSexCategory();
-
- SpeciesCategory category = getSpeciesCategory(
- speciesCategoryDAO,
- species,
- sizeCategory,
- sexCategory
- );
-
- // find the sample with this category
- Sample sample = operation.getSample(category,
- sampleTypeSubsample);
-
- if (sample == null) {
-
- // must create it
- sample = row.getSample();
-
- sample.setSpeciesCategory(category);
- sample.setSampleType(sampleTypeSubsample);
-
- sample = addSample(sampleDAO,
- operation,
- sample,
- importResult);
- }
-
- //create numberAtLength data
- addSampleData(sampleDataDAO,
- sampleDataTypeNumberAtLength,
- "" + row.getLengthClass(),
- row.getNumberAtLength(),
- sample,
- importResult);
-
- if (row.getWeightAtLength() != null) {
-
- //create weightAtLength data
- addSampleData(sampleDataDAO,
- sampleDataTypeWeightAtLength,
- "" + row.getLengthClass(),
- row.getWeightAtLength(),
- sample,
- importResult);
- }
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- private CsvFileImportResult importBiometrySampleFile(InputFile inputFile,
- Map<String, Operation> operationMap,
- Map<String, Species> speciesMap
- ) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of biometrySample from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- BiometrySampleImportModel csvModel =
- new BiometrySampleImportModel(getCsvSeparator());
-
- SampleDAO sampleDAO = getDAO(Sample.class, SampleDAO.class);
- SampleDataDAO sampleDataDAO = getDAO(SampleData.class, SampleDataDAO.class);
- SampleTypeDAO sampleTypeDAO = getDAO(SampleType.class, SampleTypeDAO.class);
-
- SampleType sampleTypeIndividual = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Individual");
- Preconditions.checkNotNull(sampleTypeIndividual);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<BiometrySampleImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (BiometrySampleImportModelRow row : importer) {
-
- //TODO
-
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- private Sample addSample(SampleDAO dao,
- Operation operation,
- Sample sample,
- CsvFileImportResult importResult) {
- Preconditions.checkNotNull(operation);
- Preconditions.checkNotNull(sample);
- Sample result = create(dao, sample);
- operation.addSample(result);
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Sample);
- return result;
- }
-
- private SampleData addSampleData(SampleDataDAO dao,
- SampleDataType sampleDataType,
- String label,
- float value,
- Sample sample,
- CsvFileImportResult importResult) {
- SampleData sampleData = create(dao);
- sampleData.setSampleDataType(sampleDataType);
- sampleData.setDataValue(value);
- sampleData.setDataLabel(label);
- sample.addSampleData(sampleData);
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.SampleData);
- return sampleData;
- }
-
-}
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,327 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.EchoBaseFunctions;
-import fr.ifremer.echobase.EchoBaseTechnicalException;
-import fr.ifremer.echobase.InputFile;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.data.Transect;
-import fr.ifremer.echobase.entities.data.TransectDAO;
-import fr.ifremer.echobase.entities.data.Transit;
-import fr.ifremer.echobase.entities.data.TransitDAO;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.data.VoyageDAO;
-import fr.ifremer.echobase.entities.references.AreaOfOperation;
-import fr.ifremer.echobase.entities.references.Mission;
-import fr.ifremer.echobase.entities.references.MissionDAO;
-import fr.ifremer.echobase.entities.references.Vessel;
-import fr.ifremer.echobase.services.configurations.CommonDataImportConfiguration;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import fr.ifremer.echobase.services.csv.EchoBaseImport;
-import fr.ifremer.echobase.services.csv.TransectImportModel;
-import fr.ifremer.echobase.services.csv.TransectImportModelRow;
-import fr.ifremer.echobase.services.csv.TransitImportModel;
-import fr.ifremer.echobase.services.csv.TransitImportModelRow;
-import fr.ifremer.echobase.services.csv.VoyageImportModel;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportModel;
-import org.nuiton.util.csv.ImportRuntimeException;
-
-import java.io.Reader;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n.l_;
-
-/**
- * Service to launch a "common data" import.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class CommonDataImportService extends AbstractImportDataService<CommonDataImportConfiguration> {
-
- @Override
- protected String getImportLabel() {
- return l_(getLocale(), ImportDataMode.CommonData.getI18nKey());
- }
-
- @Override
- protected List<CsvFileImportResult> startImport(
- CommonDataImportConfiguration configuration,
- EchoBaseUser user) throws ImportException {
-
- List<CsvFileImportResult> result = Lists.newLinkedList();
-
- // get usable vessels
- Map<String, Vessel> vesselMap = getEntitiesMap(
- Vessel.class, EchoBaseFunctions.VESSEL_NAME);
-
- InputFile transectFile = configuration.getTransectFile();
-
- switch (configuration.getImportMode()) {
-
- case ALL: {
-
- InputFile voyageFile = configuration.getVoyageFile();
- InputFile transitFile = configuration.getTransitFile();
-
- CsvFileImportResult voyageResult = importVoyageFile(
- voyageFile, configuration);
-
- CsvFileImportResult transitResult = importTransitFile(
- transitFile, configuration);
-
- CsvFileImportResult transectResult = importTransectFile(
- transectFile, vesselMap, configuration);
-
- addResultAndLog(result, voyageFile, voyageResult, user);
- addResultAndLog(result, transitFile, transitResult, user);
- addResultAndLog(result, transectFile, transectResult, user);
- }
- break;
- case TRANSECT: {
-
- CsvFileImportResult transectResult = importTransectFile(
- transectFile, vesselMap, configuration);
-
- addResultAndLog(result, transectFile, transectResult, user);
- }
- break;
- }
- return result;
- }
-
-
- public Mission createMission(Mission mission) throws MissionNameAlreadyExistException {
-
- Preconditions.checkNotNull(mission);
-
- try {
- MissionDAO dao = getDAO(Mission.class, MissionDAO.class);
-
- // check mission name is unique
- boolean exists = dao.existByProperties(Mission.PROPERTY_NAME,
- mission.getName());
-
- if (exists) {
- throw new MissionNameAlreadyExistException();
- }
- Mission result = create(dao, mission);
- commitTransaction("Could not create mission " +
- mission.getName());
- return result;
- } catch (TopiaException eee) {
- throw new EchoBaseTechnicalException(eee);
- }
- }
-
- protected CsvFileImportResult importVoyageFile(
- InputFile inputFile,
- CommonDataImportConfiguration configuration) throws ImportException {
-
- Mission mission = getEntityById(Mission.class,
- configuration.getMissionId());
- AreaOfOperation areaOfOperation =
- getEntityById(AreaOfOperation.class,
- configuration.getAreaOfOperationId());
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- String voyageDescription = configuration.getVoyageDescription();
- String datum = configuration.getDatum();
-
- VoyageDAO dao = getDAO(Voyage.class, VoyageDAO.class);
-
- ImportModel<Voyage> csvModel =
- new VoyageImportModel(getCsvSeparator());
-
- Reader reader = getInputFileReader(inputFile);
- Import<Voyage> importer = EchoBaseImport.newImport(csvModel, reader);
- Voyage newVoyage = null;
- Locale locale = getLocale();
- try {
- for (Voyage voyage : importer) {
-
- voyage.setMission(mission);
- voyage.setAreaOfOperation(areaOfOperation);
- voyage.setDescription(voyageDescription);
- voyage.setDatum(datum);
-
- Voyage createdVoyage = create(dao, voyage);
- if (newVoyage == null) {
- newVoyage = createdVoyage;
- } else {
- // this means a voyage file with more than one row not possible...
-
- throw new ImportException(
- l_(locale, "echobase.importError.can.only.import.one.voyage.atime"));
- }
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Voyage);
- }
-
- if (newVoyage == null) {
- throw new ImportException(
- l_(locale, "echobase.importError.no.voyage.imported"));
- }
-
- // push back to id of the voyage in configuration for next imports
- configuration.setVoyageId(newVoyage.getTopiaId());
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(locale, inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- protected CsvFileImportResult importTransitFile(
- InputFile inputFile,
- CommonDataImportConfiguration configuration) throws ImportException {
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- // get voyage
- Voyage voyage = getEntityById(Voyage.class,
- configuration.getVoyageId());
-
- // restrict voyage to use to this voyage
- Map<String, Voyage> voyageMap = Maps.uniqueIndex(
- Arrays.asList(voyage), EchoBaseFunctions.VOYAGE_NAME);
-
- String relatedActivity = configuration.getTransitRelatedActivity();
-
- TransitImportModel csvModel =
- new TransitImportModel(getCsvSeparator(), voyageMap);
-
- TransitDAO dao = getDAO(Transit.class, TransitDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<TransitImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
- for (TransitImportModelRow row : importer) {
-
- Transit transit = row.getTransit();
-
- transit.setRelatedActivity(relatedActivity);
-
- Transit createdTransit = create(dao, transit);
-
- voyage.addTransit(createdTransit);
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Transit);
- }
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- private CsvFileImportResult importTransectFile(
- InputFile inputFile,
- Map<String, Vessel> vesselMap,
- CommonDataImportConfiguration configuration) throws ImportException {
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- // get voyage
- Voyage voyage = getEntityById(Voyage.class,
- configuration.getVoyageId());
-
- // restrict voyage to use to this voyage
- Map<String, Voyage> voyageMap = Maps.uniqueIndex(
- Arrays.asList(voyage), EchoBaseFunctions.VOYAGE_NAME);
-
- String datum = configuration.getDatum();
- String license = configuration.getTransectLicence();
- String geospatialVerticalPositive =
- configuration.getTransectGeospatialVerticalPositive();
- String binUnitsPingAxis = configuration.getTransectBinUnitsPingAxis();
-
- TransectImportModel csvModel =
- new TransectImportModel(getCsvSeparator(),
- voyageMap,
- vesselMap);
-
- TransectDAO dao = getDAO(Transect.class, TransectDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<TransectImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
- for (TransectImportModelRow row : importer) {
-
- Transect transect = row.getTransect();
-
- Date timeCoverageStart = transect.getTimeCoverageStart();
- Date timeCoverageEnd = transect.getTimeCoverageEnd();
-
- Transit transit = voyage.getTransit(timeCoverageStart,
- timeCoverageEnd);
- if (transit == null) {
- throw new ImportException(
- l_(getLocale(), "echobase.importError.no.transit.between.date",
- voyage.getName(), timeCoverageStart, timeCoverageEnd));
- }
-
- transect.setDatum(datum);
- transect.setLicence(license);
- transect.setGeospatialVerticalPositive(
- geospatialVerticalPositive);
- transect.setBinUnitsPingAxis(binUnitsPingAxis);
-
- Transect createdTransect = create(dao, transect);
-
- transit.addTransect(createdTransect);
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Transect);
- }
-
- return importResult;
-
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
-
-}
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDataMode.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDataMode.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDataMode.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,63 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import fr.ifremer.echobase.I18nAble;
-
-import static org.nuiton.i18n.I18n.n_;
-
-/**
- * To define the mode of import data (says files to be imported).
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.2
- */
-public enum ImportDataMode implements I18nAble {
-
- /** Import Voyage / Transit / Transect. */
- CommonData(n_("echobase.common.importDataMode.commonData")),
-
- /** Import operations common data. */
- Operation(n_("echobase.common.importDataMode.operation")),
-
- /** Import catches data (unsorted, total, but no individual ones). */
- CatchesData(n_("echobase.common.importDataMode.catchesData")),
-
- /** Import accoustic data (Cells ESDU and Elementary). */
- AccousticData(n_("echobase.common.importDataMode.accousticData")),
-
- /** Import results. */
- Results(n_("echobase.common.importDataMode.results"));
-
- private final String i18nKey;
-
- ImportDataMode(String i18nKey) {
- this.i18nKey = i18nKey;
- }
-
- @Override
- public String getI18nKey() {
- return i18nKey;
- }
-}
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/MissionNameAlreadyExistException.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/MissionNameAlreadyExistException.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/MissionNameAlreadyExistException.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,34 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class MissionNameAlreadyExistException extends Exception {
- private static final long serialVersionUID = 1L;
-}
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,302 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.EchoBaseFunctions;
-import fr.ifremer.echobase.InputFile;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.data.GearMetadataValue;
-import fr.ifremer.echobase.entities.data.GearMetadataValueDAO;
-import fr.ifremer.echobase.entities.data.Operation;
-import fr.ifremer.echobase.entities.data.OperationDAO;
-import fr.ifremer.echobase.entities.data.OperationMetadataValue;
-import fr.ifremer.echobase.entities.data.OperationMetadataValueDAO;
-import fr.ifremer.echobase.entities.data.Transect;
-import fr.ifremer.echobase.entities.data.Transit;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.references.DepthStratum;
-import fr.ifremer.echobase.entities.references.Gear;
-import fr.ifremer.echobase.entities.references.GearMetadata;
-import fr.ifremer.echobase.entities.references.OperationMetadata;
-import fr.ifremer.echobase.entities.references.Vessel;
-import fr.ifremer.echobase.services.configurations.OperationImportConfiguration;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import fr.ifremer.echobase.services.csv.EchoBaseImport;
-import fr.ifremer.echobase.services.csv.GearMetadataValueImportModel;
-import fr.ifremer.echobase.services.csv.GearMetadataValueImportModelRow;
-import fr.ifremer.echobase.services.csv.OperationImportModel;
-import fr.ifremer.echobase.services.csv.OperationImportModelRow;
-import fr.ifremer.echobase.services.csv.OperationMetadataValueImportModel;
-import fr.ifremer.echobase.services.csv.OperationMetadataValueImportModelRow;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportRuntimeException;
-
-import java.io.Reader;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n.l_;
-
-/**
- * Service to launch a "operations" import.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class OperationImportService extends AbstractImportDataService<OperationImportConfiguration> {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(OperationImportService.class);
-
- @Override
- protected String getImportLabel() {
- return l_(getLocale(), ImportDataMode.Operation.getI18nKey());
- }
-
- @Override
- protected List<CsvFileImportResult> startImport(
- OperationImportConfiguration configuration,
- EchoBaseUser user) throws ImportException {
-
- List<CsvFileImportResult> result = Lists.newLinkedList();
-
- // get selected voyage
- Voyage voyage = getEntityById(Voyage.class,
- configuration.getVoyageId());
-
- // get usable vessels from the voyage by their name
- Map<String, Vessel> vesselMap = Maps.uniqueIndex(
- voyage.getAllVessels(), EchoBaseFunctions.VESSEL_NAME);
-
- // get usable gears by their casino gear name
- Map<String, Gear> gearMap = getEntitiesMap(
- Gear.class, EchoBaseFunctions.GEAR_CASINO_GEAR_NAME);
-
- InputFile operationFile = configuration.getOperationFile();
- CsvFileImportResult nbOperations = importOperationFile(
- operationFile,
- voyage,
- vesselMap,
- gearMap);
-
- // get all operation for this voyage and this vessel
- Collection<Operation> operations = voyage.getAllOperations();
-
- // split them by operation Id
- Map<String, Operation> operationMap = Maps.uniqueIndex(
- operations, EchoBaseFunctions.OPERATION_ID);
-
- InputFile operationMetadataFile = configuration.getOperationMetadataFile();
- CsvFileImportResult nbOperationMetas = importOperationMetadataFile(
- operationMetadataFile,
- vesselMap,
- operationMap);
-
- InputFile gearMetadataFile = configuration.getGearMetadataFile();
- CsvFileImportResult nbGearMetas = importGearMetadataFile(
- gearMetadataFile,
- vesselMap,
- gearMap,
- operationMap);
-
- addResultAndLog(result, operationFile, nbOperations, user);
-
- addResultAndLog(result, operationMetadataFile, nbOperationMetas, user);
-
- addResultAndLog(result, gearMetadataFile, nbGearMetas, user);
-
- return result;
- }
-
- protected CsvFileImportResult importOperationFile(
- InputFile inputFile,
- Voyage voyage,
- Map<String, Vessel> vesselMap,
- Map<String, Gear> gearMap) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of operation from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- Map<String, DepthStratum> depthStratumMap = getEntitiesMap(
- DepthStratum.class, EchoBaseFunctions.DEPTH_STRATUM_ID);
-
- OperationImportModel csvModel =
- new OperationImportModel(getCsvSeparator(),
- vesselMap,
- gearMap,
- depthStratumMap);
-
- OperationDAO dao = getDAO(Operation.class, OperationDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<OperationImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (OperationImportModelRow row : importer) {
-
- Vessel vessel = row.getVessel();
-
- Operation operation = row.getOperation();
-
- Date startTime = operation.getGearShootingStartTime();
- Date endTime = operation.getGearShootingEndTime();
-
- Transit transit = voyage.getTransit(startTime, endTime);
-
- Transect transect = transit.getTransect(vessel);
-
- Operation createdOperation = create(dao, operation);
-
- transect.addOperation(createdOperation);
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Operation);
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- protected CsvFileImportResult importOperationMetadataFile(
- InputFile inputFile,
- Map<String, Vessel> vesselMap,
- Map<String, Operation> operationMap) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of operation metadata values from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- Map<String, OperationMetadata> operationMetadatasByName =
- getEntitiesMap(OperationMetadata.class,
- EchoBaseFunctions.OPERATION_METADATA_NAME);
-
- OperationMetadataValueImportModel csvModel =
- new OperationMetadataValueImportModel(getCsvSeparator(),
- vesselMap,
- operationMetadatasByName,
- operationMap);
-
- OperationMetadataValueDAO dao = getDAO(
- OperationMetadataValue.class,
- OperationMetadataValueDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<OperationMetadataValueImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (OperationMetadataValueImportModelRow row : importer) {
-
- Operation operation = row.getOperation();
-
- OperationMetadataValue operationMetadataValueToCreate =
- row.getOperationMetadataValue();
- OperationMetadataValue operationMetadataValue = create(
- dao, operationMetadataValueToCreate);
-
- operation.addOperationMetadataValue(operationMetadataValue);
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.OperationMetadataValue);
- }
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- protected CsvFileImportResult importGearMetadataFile(
- InputFile inputFile,
- Map<String, Vessel> vesselMap,
- Map<String, Gear> gearMap,
- Map<String, Operation> operationMap) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of gear metadata values from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- Map<String, GearMetadata> gearMetadatasByType =
- getEntitiesMap(GearMetadata.class,
- EchoBaseFunctions.GEAR_METADATA_NAME);
-
- GearMetadataValueImportModel csvModel =
- new GearMetadataValueImportModel(getCsvSeparator(),
- vesselMap,
- gearMetadatasByType,
- gearMap,
- operationMap);
-
- GearMetadataValueDAO dao = getDAO(GearMetadataValue.class,
- GearMetadataValueDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<GearMetadataValueImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (GearMetadataValueImportModelRow row : importer) {
-
- Operation operation = row.getOperation();
-
- GearMetadataValue gearMetadataValuetoCreate =
- row.getGearMetadataValue();
- GearMetadataValue gearMetadataValue = create(
- dao, gearMetadataValuetoCreate);
-
- operation.addGearMetadataValue(gearMetadataValue);
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.GearMetadataValue);
- }
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-}
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,456 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.EchoBaseFunctions;
-import fr.ifremer.echobase.EchoBasePredicates;
-import fr.ifremer.echobase.InputFile;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.data.Cell;
-import fr.ifremer.echobase.entities.data.CellDAO;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.references.DepthStratum;
-import fr.ifremer.echobase.entities.data.Echotype;
-import fr.ifremer.echobase.entities.data.LengthAgeKey;
-import fr.ifremer.echobase.entities.data.LengthWeightKey;
-import fr.ifremer.echobase.entities.data.LengthWeightKeyDAO;
-import fr.ifremer.echobase.entities.references.SizeCategory;
-import fr.ifremer.echobase.entities.references.Species;
-import fr.ifremer.echobase.entities.references.SpeciesCategory;
-import fr.ifremer.echobase.entities.references.SpeciesCategoryDAO;
-import fr.ifremer.echobase.entities.references.Strata;
-import fr.ifremer.echobase.services.configurations.ResultsImportConfiguration;
-import fr.ifremer.echobase.services.configurations.ResultsImportMode;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import fr.ifremer.echobase.services.csv.EchoBaseImport;
-import fr.ifremer.echobase.services.csv.EchotypeImportModel;
-import fr.ifremer.echobase.services.csv.EchotypeImportModelRow;
-import fr.ifremer.echobase.services.csv.LengthAgeKeyImportModel;
-import fr.ifremer.echobase.services.csv.LengthAgeKeyImportModelRow;
-import fr.ifremer.echobase.services.csv.LengthWeightKeyImportModel;
-import fr.ifremer.echobase.services.csv.LengthWeightKeyImportModelRow;
-import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModel;
-import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModelRow;
-import fr.ifremer.echobase.services.csv.RegionCellImportModel;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.persistence.TopiaDAO;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportRuntimeException;
-
-import java.io.Reader;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n.l_;
-
-/**
- * Service to launch a "results" import.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class ResultsImportService extends AbstractImportDataService<ResultsImportConfiguration> {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(ResultsImportService.class);
-
- @Override
- protected String getImportLabel() {
- return l_(getLocale(), ImportDataMode.Results.getI18nKey());
- }
-
- @Override
- public List<CsvFileImportResult> startImport(ResultsImportConfiguration configuration,
- EchoBaseUser user) throws ImportException {
-
- List<CsvFileImportResult> result = Lists.newLinkedList();
-
- ResultsImportMode importMode = configuration.getImportMode();
-
- switch (importMode) {
- case VOYAGE:
-
- // get selected voyage
- Voyage voyage = getEntityById(Voyage.class,
- configuration.getVoyageId());
-
- // authorize only the selected voyage to be imported
- Map<String, Voyage> voyageMap = Maps.uniqueIndex(Arrays.asList(
- voyage), EchoBaseFunctions.VOYAGE_NAME);
-
- Map<String, Species> speciesMap = getEntitiesMap(
- Species.class,
- EchoBaseFunctions.SPECIES_BARACOUDA_CODE);
-
- InputFile inputFile = configuration.getLengthAgeKeyFile();
-
- if (inputFile.hasFile()) {
-
- CsvFileImportResult importResult = importLenthAgeKey(
- inputFile,
- voyageMap,
- speciesMap
- );
- addResultAndLog(result, inputFile, importResult, user);
- }
-
- inputFile = configuration.getLengthWeightKeyFile();
- if (inputFile.hasFile()) {
-
- CsvFileImportResult importResult = importLenghtWeightKey(
- inputFile,
- voyageMap,
- speciesMap
- );
- addResultAndLog(result, inputFile, importResult, user);
- }
-
- inputFile = configuration.getEchotypeFile();
- if (inputFile.hasFile()) {
-
- CsvFileImportResult importResult = importEchotypeFile(
- inputFile,
- voyageMap,
- speciesMap
- );
- addResultAndLog(result, inputFile, importResult, user);
- }
- break;
-
- case REGION:
-
- if (configuration.getRegionsFile().hasFile()) {
- CsvFileImportResult importResult = importRegionsFile(
- configuration.getRegionsFile());
-
- addResultAndLog(result, configuration.getRegionsFile(),
- importResult, user);
- }
- if (configuration.getAssociationFile().hasFile()) {
- CsvFileImportResult importResult = importRegionAssociationFile(
- configuration.getAssociationFile());
-
- addResultAndLog(result, configuration.getAssociationFile(),
- importResult, user);
- }
- break;
-
- case ACOUSTIC:
- if (configuration.getRegionsFile().hasFile()) {
- CsvFileImportResult importResult = importRegionsFile(
- configuration.getRegionsFile());
-
- addResultAndLog(result, configuration.getRegionsFile(),
- importResult, user);
- }
- if (configuration.getAssociationFile().hasFile()) {
- CsvFileImportResult importResult = importRegionAssociationFile(
- configuration.getAssociationFile());
-
- addResultAndLog(result, configuration.getAssociationFile(),
- importResult, user);
- }
- break;
- }
- return result;
- }
-
- protected CsvFileImportResult importRegionsFile(InputFile inputFile) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of region from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- RegionCellImportModel csvModel = new RegionCellImportModel(
- serviceContext.getConfiguration().getCsvSeparator());
-
- CellDAO dao = getDAO(Cell.class, CellDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<Cell> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (Cell row : importer) {
-
- //TODO
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell);
- }
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- protected CsvFileImportResult importRegionAssociationFile(InputFile inputFile) throws ImportException {
- RegionCellAssociationImportModel csvModel = new RegionCellAssociationImportModel(
- serviceContext.getConfiguration().getCsvSeparator());
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of region association from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- CellDAO dao = getDAO(Cell.class, CellDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<RegionCellAssociationImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (RegionCellAssociationImportModelRow row : importer) {
-
- //TODO
-
- importResult.incrementsNumberUpdated(EchoBaseEntityEnum.Cell);
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- protected CsvFileImportResult importLenghtWeightKey(InputFile inputFile,
- Map<String, Voyage> voyageMap,
- Map<String, Species> speciesMap) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of lenthWeightKey from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- Map<String, SizeCategory> sizeCategoryMap = getEntitiesMap(
- SizeCategory.class,
- EchoBaseFunctions.SIZE_CATEGORY_NAME);
-
- LengthWeightKeyImportModel csvModel = new LengthWeightKeyImportModel(
- serviceContext.getConfiguration().getCsvSeparator(),
- voyageMap,
- sizeCategoryMap,
- speciesMap);
-
- LengthWeightKeyDAO dao = getDAO(LengthWeightKey.class,
- LengthWeightKeyDAO.class);
-
- SpeciesCategoryDAO speciesCategoryDAO =
- getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<LengthWeightKeyImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (LengthWeightKeyImportModelRow row : importer) {
-
- Voyage voyage = row.getVoyage();
-
- LengthWeightKey lengthWeightKeyToCreate =
- row.getLengthWeightKey();
- LengthWeightKey lengthWeightKey = create(
- dao, lengthWeightKeyToCreate);
-
- //TODO should we import it ?
- //lengthWeightKey.setMetadata(row.getMetadata());
-
- Species species = row.getSpecies();
- SizeCategory sizeCategory = row.getSizeCategory();
-
- // find speciesCategory
- SpeciesCategory speciesCategory = getSpeciesCategory(
- speciesCategoryDAO,
- species, sizeCategory,
- null
- );
-
- lengthWeightKey.setSpeciesCategory(speciesCategory);
-
- // attach it to voyage
- voyage.addLengthWeightKey(lengthWeightKey);
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.LengthWeightKey);
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- protected CsvFileImportResult importLenthAgeKey(InputFile inputFile,
- Map<String, Voyage> voyageMap,
- Map<String, Species> speciesMap) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of lenthAgeKey from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- Map<String, Strata> strataMap = getEntitiesMap(
- Strata.class, EchoBaseFunctions.STRATA_BY_NAME);
-
- LengthAgeKeyImportModel csvModel = new LengthAgeKeyImportModel(
- serviceContext.getConfiguration().getCsvSeparator(),
- voyageMap,
- strataMap,
- speciesMap);
-
- TopiaDAO<LengthAgeKey> dao = getDAO(LengthAgeKey.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<LengthAgeKeyImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (LengthAgeKeyImportModelRow row : importer) {
-
- Voyage voyage = row.getVoyage();
-
- LengthAgeKey lengthAgeKeyToCreate = row.getLengthAgeKey();
- LengthAgeKey lengthAgeKey = create(dao, lengthAgeKeyToCreate);
-
- // attach it to voyage
- voyage.addLengthAgeKey(lengthAgeKey);
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.LengthAgeKey);
- }
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-
- private CsvFileImportResult importEchotypeFile(InputFile inputFile,
- Map<String, Voyage> voyageMap,
- Map<String, Species> speciesMap) throws ImportException {
-
- if (log.isInfoEnabled()) {
- log.info("Starts import of echotype from file " +
- inputFile.getFileName());
- }
-
- CsvFileImportResult importResult = new CsvFileImportResult(
- inputFile.getFileName());
-
- Map<String, DepthStratum> depthStratumMap = getEntitiesMap(
- DepthStratum.class,
- EchoBaseFunctions.DEPTH_STRATUM_ID);
-
- EchotypeImportModel csvModel = new EchotypeImportModel(
- serviceContext.getConfiguration().getCsvSeparator(),
- voyageMap,
- depthStratumMap,
- speciesMap);
-
- TopiaDAO<Echotype> dao = getDAO(Echotype.class);
-
- Reader reader = getInputFileReader(inputFile);
- try {
- Import<EchotypeImportModelRow> importer =
- EchoBaseImport.newImport(csvModel, reader);
-
- for (EchotypeImportModelRow row : importer) {
-
- Voyage voyage = row.getVoyage();
-
- Echotype rowEchotype = row.getEchotype();
-
- String echotypeName = rowEchotype.getName();
-
- // check if there is a echotype for the voyage and this name
- Echotype echotype = null;
-
- if (!voyage.isEchotypeEmpty()) {
-
- Collection<Echotype> echotypes = voyage.getEchotype();
- Predicate<Echotype> predicate =
- EchoBasePredicates.newEchotypeByNamePredicate(
- echotypeName);
- echotype = Iterables.find(echotypes, predicate, null);
-
- }
-
- if (echotype == null) {
-
- // creates it
- echotype = create(dao, rowEchotype);
-
- // attach it to voyage
- voyage.addEchotype(echotype);
-
- importResult.incrementsNumberCreated(EchoBaseEntityEnum.Echotype);
-
- } else {
-
- Species species = rowEchotype.getSpecies().iterator().next();
- Species existingSpecie =
- echotype.getSpeciesByTopiaId(species.getTopiaId());
-
- if (existingSpecie == null) {
-
- // add this species
- echotype.addSpecies(species);
- }
- }
- }
-
- return importResult;
- } catch (ImportRuntimeException e) {
- throw new ImportException(getLocale(), inputFile, e);
- } finally {
- closeReader(reader, inputFile);
- }
- }
-}
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java (from rev 334, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/MissionNameAlreadyExistException.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,34 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.exceptions;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class MissionNameAlreadyExistException extends Exception {
+ private static final long serialVersionUID = 1L;
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java (from rev 334, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,228 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Function;
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.EchoBaseTechnicalException;
+import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.EntityModificationLog;
+import fr.ifremer.echobase.entities.references.SexCategory;
+import fr.ifremer.echobase.entities.references.SizeCategory;
+import fr.ifremer.echobase.entities.references.Species;
+import fr.ifremer.echobase.entities.references.SpeciesCategory;
+import fr.ifremer.echobase.entities.references.SpeciesCategoryDAO;
+import fr.ifremer.echobase.services.EchoBaseServiceSupport;
+import fr.ifremer.echobase.services.ImportException;
+import fr.ifremer.echobase.services.configurations.AbstractImportConfiguration;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.TopiaDAO;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Abstract data import service.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public abstract class AbstractImportDataService<M extends AbstractImportConfiguration> extends EchoBaseServiceSupport {
+
+ public final List<CsvFileImportResult> doImport(M configuration,
+ EchoBaseUser user) throws ImportException {
+
+
+ try {
+ List<CsvFileImportResult> result = startImport(configuration, user);
+
+ // do commit
+ commitTransaction("Could not execute import " + getImportLabel());
+ return result;
+ } catch (ImportException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ImportException("Could not do import " + e.getMessage(), e);
+ }
+ }
+
+ protected abstract String getImportLabel();
+
+ protected abstract List<CsvFileImportResult> startImport(M configuration,
+ EchoBaseUser user) throws ImportException;
+
+ protected void addResultAndLog(List<CsvFileImportResult> result,
+ InputFile inputFile,
+ CsvFileImportResult importResult,
+ EchoBaseUser user) {
+
+ Set<EchoBaseEntityEnum> entityTypes = importResult.getEntityTypes();
+ if (!entityTypes.isEmpty()) {
+
+ result.add(importResult);
+
+ String importType = getImportLabel();
+
+ StringBuilder description = new StringBuilder();
+ description.append("Depuis Fichier ").append(inputFile.getFileName());
+ TopiaDAO<EntityModificationLog> dao =
+ getDAO(EntityModificationLog.class);
+
+ for (EchoBaseEntityEnum entityType : entityTypes) {
+ int numberCreated = importResult.getNumberCreated(entityType);
+ int numberUpdated = importResult.getNumberUpdated(entityType);
+ if (numberCreated > 0) {
+ description.append(" [ nombre de création : ").append(numberCreated).append("]");
+ }
+ if (numberUpdated > 0) {
+ description.append(" [ nombre de mises à jour : ").append(numberUpdated).append("]");
+ }
+
+ create(dao,
+ EntityModificationLog.PROPERTY_ENTITY_TYPE, entityType.name(),
+ EntityModificationLog.PROPERTY_ENTITY_ID, importType,
+ EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
+ EntityModificationLog.PROPERTY_MODIFICATION_DATE, newDate(),
+ EntityModificationLog.PROPERTY_MODIFICATION_TEXT, description.toString()
+ );
+ }
+
+ }
+ }
+
+ protected Reader getInputFileReader(InputFile inputFile) throws EchoBaseTechnicalException {
+ try {
+ Reader reader = new BufferedReader(new InputStreamReader(
+ new FileInputStream(inputFile.getFile()), Charsets.UTF_8));
+ return reader;
+ } catch (FileNotFoundException e) {
+ throw new EchoBaseTechnicalException(
+ "Could not find import file " + inputFile.getFile(), e);
+ }
+ }
+
+ protected void closeReader(Reader reader, InputFile inputFile) {
+ try {
+ reader.close();
+ } catch (IOException e) {
+ throw new EchoBaseTechnicalException(
+ "Could not close reader on file " +
+ inputFile.getFile(), e);
+ }
+ }
+
+ protected <E extends TopiaEntity, K> Map<K, E> getEntitiesMap(
+ Class<E> entityType,
+ Function<E, K> function) {
+ List<E> allVoyages = getEntities(entityType);
+ Map<K, E> voyageMap = Maps.uniqueIndex(
+ allVoyages, function);
+ return voyageMap;
+ }
+
+ protected <E extends TopiaEntity> E newInstance(TopiaDAO<E> dao) {
+ try {
+ E result = dao.newInstance();
+ return result;
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException("Could not create new instance of entity", e);
+ }
+ }
+
+ protected <E extends TopiaEntity> E create(TopiaDAO<E> dao) {
+ try {
+ E result = dao.create();
+ return result;
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException("Could not create entity", e);
+ }
+ }
+
+ protected <E extends TopiaEntity> E create(TopiaDAO<E> dao, E entity) {
+ try {
+ E result = dao.create(entity);
+ return result;
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException("Could not create entity", e);
+ }
+ }
+
+ protected <E extends TopiaEntity> E create(TopiaDAO<E> dao,
+ Object... properties) {
+ try {
+ E result = dao.create(properties);
+ return result;
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException("Could not create entity", e);
+ }
+ }
+
+ protected <E extends TopiaEntity> E findByProperties(TopiaDAO<E> dao,
+ String propertyName,
+ Object value,
+ Object... others) {
+ try {
+ E result = dao.findByProperties(propertyName, value, others);
+ return result;
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException("Could not obtain query db", e);
+ }
+ }
+
+ protected SpeciesCategory getSpeciesCategory(SpeciesCategoryDAO speciesCategoryDAO,
+ Species species,
+ SizeCategory sizeCategory,
+ SexCategory sexCategory) {
+ SpeciesCategory category = findByProperties(
+ speciesCategoryDAO,
+ SpeciesCategory.PROPERTY_SPECIES, species,
+ SpeciesCategory.PROPERTY_SIZE_CATEGORY, sizeCategory,
+ SpeciesCategory.PROPERTY_SEX_CATEGORY, sexCategory
+ );
+
+ if (category == null) {
+
+ // create it
+
+ category = create(speciesCategoryDAO);
+ category.setSpecies(species);
+ category.setSizeCategory(sizeCategory);
+ category.setSexCategory(sexCategory);
+ }
+
+ return category;
+ }
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java (from rev 334, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AcousticDataImportService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,573 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ifremer.echobase.EchoBaseFunctions;
+import fr.ifremer.echobase.EchoBasePredicates;
+import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.data.Cell;
+import fr.ifremer.echobase.entities.data.CellDAO;
+import fr.ifremer.echobase.entities.data.Data;
+import fr.ifremer.echobase.entities.data.DataAcquisition;
+import fr.ifremer.echobase.entities.data.DataAcquisitionDAO;
+import fr.ifremer.echobase.entities.data.DataDAO;
+import fr.ifremer.echobase.entities.data.DataProcessing;
+import fr.ifremer.echobase.entities.data.DataProcessingDAO;
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.Transit;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.AcousticInstrument;
+import fr.ifremer.echobase.entities.references.CellType;
+import fr.ifremer.echobase.entities.references.DataMetadata;
+import fr.ifremer.echobase.entities.references.Vessel;
+import fr.ifremer.echobase.services.ImportException;
+import fr.ifremer.echobase.services.configurations.AcousticDataImportConfiguration;
+import fr.ifremer.echobase.services.csv.AcousticDataImportModel;
+import fr.ifremer.echobase.services.csv.AcousticDataImportModelRow;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import fr.ifremer.echobase.services.csv.EchoBaseImport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportRuntimeException;
+
+import java.io.Reader;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n.l_;
+
+/**
+ * Service to launch a "acoustic data" import.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class AcousticDataImportService extends AbstractImportDataService<AcousticDataImportConfiguration> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(AcousticDataImportService.class);
+
+ @Override
+ protected String getImportLabel() {
+ return l_(getLocale(), ImportDataMode.AccousticData.getI18nKey());
+ }
+
+ @Override
+ protected List<CsvFileImportResult> startImport(
+ AcousticDataImportConfiguration configuration,
+ EchoBaseUser user) throws ImportException {
+
+ List<CsvFileImportResult> result = Lists.newLinkedList();
+
+ // get selected voyage
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+ // get selected vessel
+ Vessel vessel = getEntityById(Vessel.class,
+ configuration.getVesselId());
+
+ CellType esduCellType = getEntityByProperty(
+ CellType.class, CellType.PROPERTY_ID, "Esdu");
+ Preconditions.checkNotNull(esduCellType);
+
+ CellType elementaryCellType = getEntityByProperty(
+ CellType.class, CellType.PROPERTY_ID, "Elementary");
+ Preconditions.checkNotNull(elementaryCellType);
+
+ InputFile inputFile = configuration.getMoviesFile();
+
+ CsvFileImportResult importResult = importMoviesFile(voyage,
+ vessel,
+ esduCellType,
+ elementaryCellType,
+ configuration,
+ inputFile);
+
+ addResultAndLog(result, inputFile, importResult, user);
+
+ return result;
+ }
+
+ private final DateFormat cellDateFormat =
+ new SimpleDateFormat("yyyy-MM-dd hh:mm:ss'Z'");
+
+ private CsvFileImportResult importMoviesFile(Voyage voyage,
+ Vessel vessel,
+ CellType esduCellType,
+ CellType elementaryCellType,
+ AcousticDataImportConfiguration configuration,
+ InputFile inputFile
+ ) throws ImportException {
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ Map<String, AcousticInstrument> instrumentsById =
+ getEntitiesMap(AcousticInstrument.class,
+ EchoBaseFunctions.ACOUSTIC_INSTRUMENT_ID);
+
+ Map<String, DataMetadata> dataMetadatasByName = getEntitiesMap(
+ DataMetadata.class, EchoBaseFunctions.DATA_METADATA_NAME);
+
+ AcousticDataImportModel csvModel = new AcousticDataImportModel(
+ getCsvSeparator(), instrumentsById);
+
+ DataAcquisitionDAO dataAcquisitionDAO =
+ getDAO(DataAcquisition.class, DataAcquisitionDAO.class);
+ DataProcessingDAO dataProcessingDAO =
+ getDAO(DataProcessing.class, DataProcessingDAO.class);
+ CellDAO cellDAO = getDAO(Cell.class, CellDAO.class);
+ DataDAO dataDAO = getDAO(Data.class, DataDAO.class);
+
+ boolean addDataAcquisition = configuration.isAddDataAcquisition();
+
+ String suffix =
+ configuration.getCellPositionReference().getMetadataNameSuffix();
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<AcousticDataImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+ DataAcquisition dataAcquisition = null;
+ DataProcessing dataProcessing = null;
+ Cell esduCell = null;
+ Cell elementaryCell;
+ for (AcousticDataImportModelRow row : importer) {
+
+ Date startDate = row.getCellDateStart();
+
+ // get transect to use
+ Transit transit = voyage.getTransit(startDate);
+ if (transit == null) {
+
+ // can not find correct transit
+ throw new ImportException(
+ l_(getLocale(), "echobase.importError.transit.notfound",
+ voyage.getName(),
+ startDate));
+ }
+
+ Transect transect = transit.getTransect(vessel);
+ if (transect == null) {
+
+ // can not find correct transect
+ throw new ImportException(
+ l_(getLocale(), "echobase.importError.transect.notfound",
+ voyage.getName(),
+ startDate,
+ vessel.getName()));
+ }
+
+ // Build the row acoustic instrument
+// String sndname = row.getSndName();
+// String channelName = row.getChannelName();
+// String instrumentId = sndname;
+ AcousticInstrument instrument = row.getAcousticInstrument();
+// instrumentsById.get(instrumentId);
+ boolean isME70 =
+ EchoBasePredicates.IS_ACOUSTIC_INSTRUMENT_ME70.apply(instrument);
+ if (dataAcquisition == null ||
+ !instrument.equals(dataAcquisition.getAcousticInstrument())) {
+
+ // need to use another data acquisition
+
+ String softwareVersion =
+ getSoftwareVersion(configuration, isME70);
+
+ String soundSpeedCalculations =
+ getSoundSpeedCalculations(configuration, isME70);
+
+ if (!addDataAcquisition &&
+ !transect.isDataAcquisitionEmpty()) {
+
+ // try to obtain an existing data acquisiton
+
+ for (DataAcquisition acquisition : transect.getDataAcquisition()) {
+
+ if (instrument.equals(acquisition.getAcousticInstrument())) {
+
+ // found a matching data acquisiotn from his acoustic instrument
+ dataAcquisition = acquisition;
+ break;
+ }
+ }
+ }
+
+ if (dataAcquisition == null) {
+
+ // need to create the data acquisition
+
+ // create dataAcquisiton
+ dataAcquisition = createDataAcquisition(
+ configuration,
+ instrument,
+ softwareVersion,
+ soundSpeedCalculations,
+ row,
+ dataAcquisitionDAO
+ );
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.DataAcquisition);
+
+ // add it to transect
+ transect.addDataAcquisition(dataAcquisition);
+ }
+
+ // create data processing
+ dataProcessing = createDataProcessing(
+ configuration,
+ softwareVersion,
+ soundSpeedCalculations,
+ row,
+ dataProcessingDAO
+ );
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.DataProcessing);
+
+ // add it to data acquisition
+ dataAcquisition.addDataProcessing(dataProcessing);
+
+ // must start a fresh new esdu cell
+ esduCell = null;
+ }
+
+ int cellType = row.getCellType();
+
+ String esduCellId = cellDateFormat.format(startDate);
+
+ if (cellType == 4) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Esdu cell (" + esduCellId + ")");
+ }
+ // this is a esdu cell row
+
+ // create esdu cell
+ esduCell = create(cellDAO,
+ Cell.PROPERTY_CELL_TYPE, esduCellType,
+ Cell.PROPERTY_NAME, esduCellId
+ );
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell);
+
+ // add it to data processing
+ dataProcessing.addCell(esduCell);
+
+ // create esdu cell data
+ createEsduCellData(suffix,
+ esduCell,
+ dataMetadatasByName,
+ row,
+ dataDAO,
+ importResult);
+ } else {
+
+ // this is a elementary cell row
+
+ int cellNum = row.getCellNum();
+
+ String elementaryCellId = esduCellId + "_" + cellNum;
+
+ if (log.isDebugEnabled()) {
+ log.debug("elementary cell (" + elementaryCellId + ")");
+ }
+ if (esduCell == null) {
+ throw new ImportException(
+ l_(getLocale(), "echobase.importError.esduCell.notfound",
+ esduCellId,
+ voyage.getName(),
+ elementaryCellId
+ ));
+ }
+
+ // create the elementary cell
+
+ elementaryCell = create(cellDAO,
+ Cell.PROPERTY_CELL_TYPE, elementaryCellType,
+ Cell.PROPERTY_NAME, elementaryCellId
+ );
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell);
+
+ // add it to esdu cell
+ esduCell.addChilds(elementaryCell);
+
+
+ // create datas of the elementary cell
+ createElementaryCellData(elementaryCell,
+ dataMetadatasByName,
+ row,
+ dataDAO,
+ importResult);
+ }
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected void createEsduCellData(String suffix,
+ Cell cell,
+ Map<String, DataMetadata> dataMetadatas,
+ AcousticDataImportModelRow row,
+ DataDAO dao,
+ CsvFileImportResult importResult) {
+
+ String dataValue;
+
+ // create Latitude data
+ dataValue = row.getEsduCellDataLatitude();
+ createCellData(dao, cell, dataMetadatas, "Latitude" + suffix,
+ dataValue, importResult);
+
+ // create Longitude data
+ dataValue = row.getEsduCellDataLongitude();
+ createCellData(dao, cell, dataMetadatas, "Longitude" + suffix,
+ dataValue, importResult);
+
+ // create Depth data
+ dataValue = row.getEsduCellDataDepth();
+ createCellData(dao, cell, dataMetadatas, "DepthRefSurface" + suffix,
+ dataValue, importResult);
+
+ // create Time data
+ dataValue = cellDateFormat.format(row.getCellDateStart());
+ createCellData(dao, cell, dataMetadatas, "Time" + suffix,
+ dataValue, importResult);
+
+ // create AcousticDensity data
+ dataValue = row.getEsduCellDataAcousticDensity();
+ createCellData(dao, cell, dataMetadatas, "sa", dataValue, importResult);
+ }
+
+ private void createElementaryCellData(Cell cell,
+ Map<String, DataMetadata> dataMetadatas,
+ AcousticDataImportModelRow row,
+ DataDAO dao,
+ CsvFileImportResult importResult) {
+
+ String dataValue;
+
+ int cellType = row.getCellType();
+
+ String startMeta;
+ String endMeta;
+
+ if (cellType == 0) {
+
+ // surface
+
+ startMeta = "DepthRefSurfaceStart";
+ endMeta = "DepthRefSurfaceEnd";
+
+ } else {
+
+ // bottom
+
+ startMeta = "DepthRefBottomStart";
+ endMeta = "DepthRefBottomEnd";
+ }
+
+ // create depth start data
+ dataValue = row.getCellDepthStart();
+ createCellData(dao, cell, dataMetadatas, startMeta, dataValue, importResult);
+
+ // create depth end data
+ dataValue = row.getCellDepthEnd();
+ createCellData(dao, cell, dataMetadatas, endMeta, dataValue, importResult);
+
+ // create acoustic density data
+ dataValue = row.getCellSa();
+ createCellData(dao, cell, dataMetadatas, "sa", dataValue, importResult);
+
+ }
+
+ private DataAcquisition createDataAcquisition(AcousticDataImportConfiguration configuration,
+ AcousticInstrument instrument,
+ String softwareVersion,
+ String soundSpeedCalculations,
+ AcousticDataImportModelRow row,
+ DataAcquisitionDAO dataAcquisitionDAO) {
+
+ String transceiverAcquisitionAbsorptionDescription =
+ configuration.getTransceiverAcquisitionAbsorptionDescription();
+ String loggedDataFormat = configuration.getLoggedDataFormat();
+ String loggedDataDatatype = configuration.getLoggedDataDatatype();
+ String pingDutyCycle = configuration.getPingDutyCycle();
+ String echosounderSoundSpeed = configuration.getEchosounderSoundSpeed();
+
+ DataAcquisition dataAcquisition = create(dataAcquisitionDAO);
+
+ // fill from manual configuration
+ dataAcquisition.setAcousticInstrument(instrument);
+ dataAcquisition.setTransceiverAcquisitionAbsorptionDescription(transceiverAcquisitionAbsorptionDescription);
+ dataAcquisition.setAcquisitionSoftwareVersion(softwareVersion);
+ dataAcquisition.setLoggedDataFormat(loggedDataFormat);
+ dataAcquisition.setLoggedDataDatatype(loggedDataDatatype);
+ dataAcquisition.setPingDutyCycle(pingDutyCycle);
+ dataAcquisition.setEchosounderSoundSpeed(echosounderSoundSpeed);
+ dataAcquisition.setSoundSpeedCalculations(soundSpeedCalculations);
+
+ // fill from csv file
+ Float transceiverAcquisitionAbsorption =
+ row.getTransceiverAcquisitionAbsorption();
+ Float transducerAcquisitionBeamAngleAthwartship =
+ row.getTransducerAcquisitionBeamAngleAthwartship();
+ Float transducerAcquisitionBeamAngleAlongship =
+ row.getTransducerAcquisitionBeamAngleAlongship();
+ Float transducerAcquisitionPsi =
+ row.getTransducerAcquisitionPsi();
+ Float transceiverAcquisitionPower =
+ row.getTransceiverAcquisitionPower();
+ Float transceiverAcquisitionPulseLength =
+ row.getTransceiverAcquisitionPulseLength();
+ Float transceiverAcquisitionGain =
+ row.getTransceiverAcquisitionGain();
+ Float transceiverAcquisitionSacorrection =
+ row.getTransceiverAcquisitionSacorrection();
+
+ dataAcquisition.setTransceiverAcquisitionAbsorption(transceiverAcquisitionAbsorption);
+ dataAcquisition.setTransducerAcquisitionBeamAngleAthwartship(transducerAcquisitionBeamAngleAthwartship);
+ dataAcquisition.setTransducerAcquisitionBeamAngleAlongship(transducerAcquisitionBeamAngleAlongship);
+ dataAcquisition.setTransducerAcquisitionPsi(transducerAcquisitionPsi);
+ dataAcquisition.setTransceiverAcquisitionPower(transceiverAcquisitionPower);
+ dataAcquisition.setTransceiverAcquisitionPulseLength(transceiverAcquisitionPulseLength);
+ dataAcquisition.setTransceiverAcquisitionGain(transceiverAcquisitionGain);
+ dataAcquisition.setTransceiverAcquisitionSacorrection(transceiverAcquisitionSacorrection);
+
+ return dataAcquisition;
+ }
+
+ private DataProcessing createDataProcessing(AcousticDataImportConfiguration configuration,
+ String softwareVersion,
+ String soundSpeedCalculations,
+ AcousticDataImportModelRow row,
+ DataProcessingDAO dataProcessingDAO) {
+
+ String transceiverAcquisitionAbsorptionDescription =
+ configuration.getTransceiverAcquisitionAbsorptionDescription();
+ String echosounderSoundSpeed = configuration.getEchosounderSoundSpeed();
+ String processingTemplate = configuration.getProcessingTemplate();
+ String processingDescription = configuration.getProcessingDescription();
+ Float sounderConstant = configuration.getSounderConstant();
+ float digitThreshold = configuration.getDigitThreshold();
+ String acousticDensityUnit = configuration.getAcousticDensityUnit();
+ String notes = configuration.getNotes();
+
+ DataProcessing dataProcessing = create(dataProcessingDAO);
+
+ // fill from manual configuration
+ dataProcessing.setProcessingTemplate(processingTemplate);
+ dataProcessing.setProcessingDescription(processingDescription);
+ dataProcessing.setSounderConstant(sounderConstant);
+ dataProcessing.setDigitThreshold(digitThreshold);
+ dataProcessing.setAcousticDensityUnit(acousticDensityUnit);
+ dataProcessing.setNotes(notes);
+ dataProcessing.setProcessingSoftwareVersion(softwareVersion);
+ dataProcessing.setTransceiverProcessingAbsorptionDescription(transceiverAcquisitionAbsorptionDescription);
+ dataProcessing.setEchosounderSoundSpeed(echosounderSoundSpeed);
+ dataProcessing.setSoundSpeedCalculations(soundSpeedCalculations);
+
+ // fill from csv file
+
+ Float transceiverAcquisitionAbsorption =
+ row.getTransceiverAcquisitionAbsorption();
+ Float transducerAcquisitionBeamAngleAthwartship =
+ row.getTransducerAcquisitionBeamAngleAthwartship();
+ Float transducerAcquisitionBeamAngleAlongship =
+ row.getTransducerAcquisitionBeamAngleAlongship();
+ Float transducerAcquisitionPsi =
+ row.getTransducerAcquisitionPsi();
+
+ Float transceiverAcquisitionGain =
+ row.getTransceiverAcquisitionGain();
+ Float transceiverAcquisitionSacorrection =
+ row.getTransceiverAcquisitionSacorrection();
+ Float eIThreshold = row.getEiThreshold();
+
+ dataProcessing.setEiThreshold(eIThreshold);
+ dataProcessing.setTransceiverProcessingSacorrection(transceiverAcquisitionSacorrection);
+ dataProcessing.setTransceiverProcessingAbsorption(transceiverAcquisitionAbsorption);
+ dataProcessing.setTransceiverProcessingGain(transceiverAcquisitionGain);
+ dataProcessing.setTransducerProcessingPsi(transducerAcquisitionPsi);
+ dataProcessing.setTransducerProcessingBeamAngleAthwartship(transducerAcquisitionBeamAngleAthwartship);
+ dataProcessing.setTransducerProcessingBeamAngleAlongship(transducerAcquisitionBeamAngleAlongship);
+
+
+ return dataProcessing;
+ }
+
+ private void createCellData(DataDAO dao,
+ Cell cell,
+ Map<String, DataMetadata> dataMetadatasByName,
+ String metadataName,
+ String dataValue,
+ CsvFileImportResult importResult) {
+
+ DataMetadata dataMetaData = dataMetadatasByName.get(metadataName);
+ Data data = create(dao);
+ data.setDataMetadata(dataMetaData);
+ data.setDataValue(dataValue);
+ cell.addData(data);
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Data);
+ }
+
+ private String getSoftwareVersion(AcousticDataImportConfiguration configuration,
+ boolean isME70) {
+ String result;
+ if (isME70) {
+ result = configuration.getAcquisitionSoftwareVersionME70();
+ } else {
+ result = configuration.getAcquisitionSoftwareVersionER60();
+ }
+ return result;
+ }
+
+ private String getSoundSpeedCalculations(AcousticDataImportConfiguration configuration,
+ boolean isME70) {
+ String result;
+ if (isME70) {
+ result = configuration.getSoundSpeedCalculationsME70();
+ } else {
+ result = configuration.getSoundSpeedCalculationsER60();
+ }
+ return result;
+ }
+
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java (from rev 334, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,481 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.EchoBaseFunctions;
+import fr.ifremer.echobase.EchoBasePredicates;
+import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.data.Operation;
+import fr.ifremer.echobase.entities.data.Sample;
+import fr.ifremer.echobase.entities.data.SampleDAO;
+import fr.ifremer.echobase.entities.data.SampleData;
+import fr.ifremer.echobase.entities.data.SampleDataDAO;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.SampleDataType;
+import fr.ifremer.echobase.entities.references.SampleDataTypeDAO;
+import fr.ifremer.echobase.entities.references.SampleType;
+import fr.ifremer.echobase.entities.references.SampleTypeDAO;
+import fr.ifremer.echobase.entities.references.SexCategory;
+import fr.ifremer.echobase.entities.references.SizeCategory;
+import fr.ifremer.echobase.entities.references.Species;
+import fr.ifremer.echobase.entities.references.SpeciesCategory;
+import fr.ifremer.echobase.entities.references.SpeciesCategoryDAO;
+import fr.ifremer.echobase.services.ImportException;
+import fr.ifremer.echobase.services.configurations.CatchesDataImportConfiguration;
+import fr.ifremer.echobase.services.csv.BiometrySampleImportModel;
+import fr.ifremer.echobase.services.csv.BiometrySampleImportModelRow;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import fr.ifremer.echobase.services.csv.EchoBaseImport;
+import fr.ifremer.echobase.services.csv.SubSampleImportModel;
+import fr.ifremer.echobase.services.csv.SubSampleImportModelRow;
+import fr.ifremer.echobase.services.csv.TotalSampleImportModel;
+import fr.ifremer.echobase.services.csv.TotalSampleImportModelRow;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportRuntimeException;
+
+import java.io.Reader;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n.l_;
+
+/**
+ * Service to launch a "catches sample data" import.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class CatchesDataImportService extends AbstractImportDataService<CatchesDataImportConfiguration> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(CatchesDataImportService.class);
+
+ @Override
+ protected String getImportLabel() {
+ return l_(getLocale(), ImportDataMode.CatchesData.getI18nKey());
+ }
+
+ @Override
+ protected List<CsvFileImportResult> startImport(CatchesDataImportConfiguration configuration,
+ EchoBaseUser user) throws ImportException {
+
+ List<CsvFileImportResult> result = Lists.newLinkedList();
+
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+ // get all operation for this voyage and this vessel
+ Collection<Operation> operations = voyage.getAllOperations();
+
+ // split them by operation Id
+ Map<String, Operation> operationMap = Maps.uniqueIndex(
+ operations, EchoBaseFunctions.OPERATION_ID);
+
+ Map<String, Species> speciesMap = getEntitiesMap(
+ Species.class,
+ EchoBaseFunctions.SPECIES_BARACOUDA_CODE);
+
+ Map<String, SizeCategory> sizeCategoryMap = getEntitiesMap(
+ SizeCategory.class,
+ EchoBaseFunctions.SIZE_CATEGORY_NAME);
+
+ Map<String, SexCategory> sexCategoryMap = getEntitiesMap(
+ SexCategory.class,
+ EchoBaseFunctions.SEX_CATEGORY_NAME);
+
+ if (configuration.getTotalSampleFile().hasFile()) {
+ CsvFileImportResult totalSampleResult = importTotalSampleFile(
+ configuration.getTotalSampleFile(),
+ operationMap,
+ speciesMap,
+ sizeCategoryMap);
+
+ addResultAndLog(result, configuration.getTotalSampleFile(),
+ totalSampleResult, user);
+ }
+
+ if (configuration.getSubSampleFile().hasFile()) {
+ CsvFileImportResult subSampleResult = importSubSampleFile(
+ configuration.getSubSampleFile(),
+ operationMap,
+ speciesMap,
+ sizeCategoryMap,
+ sexCategoryMap);
+
+ addResultAndLog(result, configuration.getSubSampleFile(),
+ subSampleResult, user);
+ }
+
+ if (configuration.getBiometrySampleFile().hasFile()) {
+ CsvFileImportResult biometrySampleResult = importBiometrySampleFile(
+ configuration.getBiometrySampleFile(),
+ operationMap,
+ speciesMap);
+
+
+ addResultAndLog(result, configuration.getBiometrySampleFile(),
+ biometrySampleResult, user);
+ }
+ return result;
+ }
+
+ private CsvFileImportResult importTotalSampleFile(InputFile inputFile,
+ Map<String, Operation> operationMap,
+ Map<String, Species> speciesMap,
+ Map<String, SizeCategory> sizeCategoryMap) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of totalSample from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ TotalSampleImportModel csvModel = new TotalSampleImportModel(getCsvSeparator(),
+ operationMap,
+ speciesMap,
+ sizeCategoryMap
+ );
+
+ SampleDAO sampleDAO = getDAO(Sample.class, SampleDAO.class);
+ SampleDataDAO sampleDataDAO = getDAO(SampleData.class, SampleDataDAO.class);
+ SampleTypeDAO sampleTypeDAO = getDAO(SampleType.class, SampleTypeDAO.class);
+ SampleDataTypeDAO sampleDataTypeDAO = getDAO(SampleDataType.class, SampleDataTypeDAO.class);
+ SpeciesCategoryDAO speciesCategoryDAO = getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
+
+ SampleType sampleTypeTotal = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Total");
+ Preconditions.checkNotNull(sampleTypeTotal);
+ SampleType sampleTypeUnsorted = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Unsorted");
+ Preconditions.checkNotNull(sampleTypeUnsorted);
+ SampleType sampleTypeSorted = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Sorted");
+ Preconditions.checkNotNull(sampleTypeSorted);
+
+ SampleDataType sampleDataTypeMeanLength = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "MeanLengthcm");
+ Preconditions.checkNotNull(sampleDataTypeMeanLength);
+ SampleDataType sampleDataTypeMeanWeight = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "MeanWeightg");
+ Preconditions.checkNotNull(sampleDataTypeMeanWeight);
+ SampleDataType sampleDataTypeNoPerKg = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "NoPerKg");
+ Preconditions.checkNotNull(sampleDataTypeNoPerKg);
+
+ Reader reader = getInputFileReader(inputFile);
+ Locale locale = getLocale();
+ try {
+ Import<TotalSampleImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (TotalSampleImportModelRow row : importer) {
+
+ Operation operation = row.getOperation();
+
+ Species species = row.getSpecies();
+ SizeCategory sizeCategory = row.getSizeCategory();
+
+ SpeciesCategory category = getSpeciesCategory(
+ speciesCategoryDAO,
+ species,
+ sizeCategory,
+ null
+ );
+
+ SampleType sampleType;
+
+ if (EchoBasePredicates.IS_HORS_VRAC.apply(sizeCategory)) {
+
+ // hors vrac case
+ sampleType = sampleTypeUnsorted;
+
+ } else {
+ // none hors vrac case
+ sampleType = sampleTypeTotal;
+ }
+
+ Sample sample = operation.getSample(category, sampleType);
+
+ if (sample != null) {
+
+ // can not have twice same sample
+ throw new ImportException(
+ l_(locale, "echobase.importError.duplicate.sample",
+ operation.getId(),
+ sampleType.getName(),
+ species.getBaracoudaCode(),
+ sizeCategory.getName()));
+ }
+
+ if (sample == null) {
+
+ // must create it
+
+ sample = row.getSample();
+ sample.setSpeciesCategory(category);
+
+ sample.setSampleType(sampleType);
+
+ sample = addSample(sampleDAO,
+ operation,
+ sample,
+ importResult);
+ } else {
+ sample = sample;
+ }
+
+ // create datas
+
+ if (row.getMeanLength() != null) {
+
+ //create meanLength data
+ addSampleData(sampleDataDAO,
+ sampleDataTypeMeanLength,
+ null,
+ row.getMeanLength(),
+ sample,
+ importResult);
+ }
+
+ if (row.getMeanWeight() != null) {
+
+ //create meanWeight data
+ addSampleData(sampleDataDAO,
+ sampleDataTypeMeanWeight,
+ null,
+ row.getMeanWeight(),
+ sample,
+ importResult);
+ }
+
+ if (row.getNoPerKg() != null) {
+
+ //create noPerKg data
+ addSampleData(sampleDataDAO,
+ sampleDataTypeNoPerKg,
+ null,
+ row.getNoPerKg(),
+ sample,
+ importResult);
+ }
+
+ Sample createdSortedSample = newInstance(sampleDAO);
+ createdSortedSample.setSampleType(sampleTypeSorted);
+ createdSortedSample.setSampleWeight(row.getSortedWeight());
+
+ // create sorted sample
+ addSample(sampleDAO,
+ operation,
+ createdSortedSample,
+ importResult);
+
+
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(locale, inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ private CsvFileImportResult importSubSampleFile(InputFile inputFile,
+ Map<String, Operation> operationMap,
+ Map<String, Species> speciesMap,
+ Map<String, SizeCategory> sizeCategoryMap,
+ Map<String, SexCategory> sexCategoryMap
+ ) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of subSample from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ SubSampleImportModel csvModel = new SubSampleImportModel(getCsvSeparator(),
+ operationMap,
+ speciesMap,
+ sizeCategoryMap,
+ sexCategoryMap);
+
+ SampleDAO sampleDAO = getDAO(Sample.class, SampleDAO.class);
+ SampleDataDAO sampleDataDAO = getDAO(SampleData.class, SampleDataDAO.class);
+ SampleTypeDAO sampleTypeDAO = getDAO(SampleType.class, SampleTypeDAO.class);
+ SampleDataTypeDAO sampleDataTypeDAO = getDAO(SampleDataType.class, SampleDataTypeDAO.class);
+ SpeciesCategoryDAO speciesCategoryDAO = getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
+
+ SampleType sampleTypeSubsample = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Subsample");
+ Preconditions.checkNotNull(sampleTypeSubsample);
+
+ SampleDataType sampleDataTypeNumberAtLength = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "NumberAtLength");
+ Preconditions.checkNotNull(sampleDataTypeNumberAtLength);
+ SampleDataType sampleDataTypeWeightAtLength = findByProperties(sampleDataTypeDAO, SampleDataType.PROPERTY_NAME, "WeightAtLengthkg");
+ Preconditions.checkNotNull(sampleDataTypeWeightAtLength);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<SubSampleImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (SubSampleImportModelRow row : importer) {
+
+ Operation operation = row.getOperation();
+
+ Species species = row.getSpecies();
+ SizeCategory sizeCategory = row.getSizeCategory();
+ SexCategory sexCategory = row.getSexCategory();
+
+ SpeciesCategory category = getSpeciesCategory(
+ speciesCategoryDAO,
+ species,
+ sizeCategory,
+ sexCategory
+ );
+
+ // find the sample with this category
+ Sample sample = operation.getSample(category,
+ sampleTypeSubsample);
+
+ if (sample == null) {
+
+ // must create it
+ sample = row.getSample();
+
+ sample.setSpeciesCategory(category);
+ sample.setSampleType(sampleTypeSubsample);
+
+ sample = addSample(sampleDAO,
+ operation,
+ sample,
+ importResult);
+ }
+
+ //create numberAtLength data
+ addSampleData(sampleDataDAO,
+ sampleDataTypeNumberAtLength,
+ "" + row.getLengthClass(),
+ row.getNumberAtLength(),
+ sample,
+ importResult);
+
+ if (row.getWeightAtLength() != null) {
+
+ //create weightAtLength data
+ addSampleData(sampleDataDAO,
+ sampleDataTypeWeightAtLength,
+ "" + row.getLengthClass(),
+ row.getWeightAtLength(),
+ sample,
+ importResult);
+ }
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ private CsvFileImportResult importBiometrySampleFile(InputFile inputFile,
+ Map<String, Operation> operationMap,
+ Map<String, Species> speciesMap
+ ) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of biometrySample from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ BiometrySampleImportModel csvModel =
+ new BiometrySampleImportModel(getCsvSeparator());
+
+ SampleDAO sampleDAO = getDAO(Sample.class, SampleDAO.class);
+ SampleDataDAO sampleDataDAO = getDAO(SampleData.class, SampleDataDAO.class);
+ SampleTypeDAO sampleTypeDAO = getDAO(SampleType.class, SampleTypeDAO.class);
+
+ SampleType sampleTypeIndividual = findByProperties(sampleTypeDAO, SampleType.PROPERTY_NAME, "Individual");
+ Preconditions.checkNotNull(sampleTypeIndividual);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<BiometrySampleImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (BiometrySampleImportModelRow row : importer) {
+
+ //TODO
+
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ private Sample addSample(SampleDAO dao,
+ Operation operation,
+ Sample sample,
+ CsvFileImportResult importResult) {
+ Preconditions.checkNotNull(operation);
+ Preconditions.checkNotNull(sample);
+ Sample result = create(dao, sample);
+ operation.addSample(result);
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Sample);
+ return result;
+ }
+
+ private SampleData addSampleData(SampleDataDAO dao,
+ SampleDataType sampleDataType,
+ String label,
+ float value,
+ Sample sample,
+ CsvFileImportResult importResult) {
+ SampleData sampleData = create(dao);
+ sampleData.setSampleDataType(sampleDataType);
+ sampleData.setDataValue(value);
+ sampleData.setDataLabel(label);
+ sample.addSampleData(sampleData);
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.SampleData);
+ return sampleData;
+ }
+
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java (from rev 334, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,329 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.EchoBaseFunctions;
+import fr.ifremer.echobase.EchoBaseTechnicalException;
+import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.TransectDAO;
+import fr.ifremer.echobase.entities.data.Transit;
+import fr.ifremer.echobase.entities.data.TransitDAO;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.data.VoyageDAO;
+import fr.ifremer.echobase.entities.references.AreaOfOperation;
+import fr.ifremer.echobase.entities.references.Mission;
+import fr.ifremer.echobase.entities.references.MissionDAO;
+import fr.ifremer.echobase.entities.references.Vessel;
+import fr.ifremer.echobase.services.ImportException;
+import fr.ifremer.echobase.services.exceptions.MissionNameAlreadyExistException;
+import fr.ifremer.echobase.services.configurations.CommonDataImportConfiguration;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import fr.ifremer.echobase.services.csv.EchoBaseImport;
+import fr.ifremer.echobase.services.csv.TransectImportModel;
+import fr.ifremer.echobase.services.csv.TransectImportModelRow;
+import fr.ifremer.echobase.services.csv.TransitImportModel;
+import fr.ifremer.echobase.services.csv.TransitImportModelRow;
+import fr.ifremer.echobase.services.csv.VoyageImportModel;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportRuntimeException;
+
+import java.io.Reader;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n.l_;
+
+/**
+ * Service to launch a "common data" import.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class CommonDataImportService extends AbstractImportDataService<CommonDataImportConfiguration> {
+
+ @Override
+ protected String getImportLabel() {
+ return l_(getLocale(), ImportDataMode.CommonData.getI18nKey());
+ }
+
+ @Override
+ protected List<CsvFileImportResult> startImport(
+ CommonDataImportConfiguration configuration,
+ EchoBaseUser user) throws ImportException {
+
+ List<CsvFileImportResult> result = Lists.newLinkedList();
+
+ // get usable vessels
+ Map<String, Vessel> vesselMap = getEntitiesMap(
+ Vessel.class, EchoBaseFunctions.VESSEL_NAME);
+
+ InputFile transectFile = configuration.getTransectFile();
+
+ switch (configuration.getImportMode()) {
+
+ case ALL: {
+
+ InputFile voyageFile = configuration.getVoyageFile();
+ InputFile transitFile = configuration.getTransitFile();
+
+ CsvFileImportResult voyageResult = importVoyageFile(
+ voyageFile, configuration);
+
+ CsvFileImportResult transitResult = importTransitFile(
+ transitFile, configuration);
+
+ CsvFileImportResult transectResult = importTransectFile(
+ transectFile, vesselMap, configuration);
+
+ addResultAndLog(result, voyageFile, voyageResult, user);
+ addResultAndLog(result, transitFile, transitResult, user);
+ addResultAndLog(result, transectFile, transectResult, user);
+ }
+ break;
+ case TRANSECT: {
+
+ CsvFileImportResult transectResult = importTransectFile(
+ transectFile, vesselMap, configuration);
+
+ addResultAndLog(result, transectFile, transectResult, user);
+ }
+ break;
+ }
+ return result;
+ }
+
+
+ public Mission createMission(Mission mission) throws MissionNameAlreadyExistException {
+
+ Preconditions.checkNotNull(mission);
+
+ try {
+ MissionDAO dao = getDAO(Mission.class, MissionDAO.class);
+
+ // check mission name is unique
+ boolean exists = dao.existByProperties(Mission.PROPERTY_NAME,
+ mission.getName());
+
+ if (exists) {
+ throw new MissionNameAlreadyExistException();
+ }
+ Mission result = create(dao, mission);
+ commitTransaction("Could not create mission " +
+ mission.getName());
+ return result;
+ } catch (TopiaException eee) {
+ throw new EchoBaseTechnicalException(eee);
+ }
+ }
+
+ protected CsvFileImportResult importVoyageFile(
+ InputFile inputFile,
+ CommonDataImportConfiguration configuration) throws ImportException {
+
+ Mission mission = getEntityById(Mission.class,
+ configuration.getMissionId());
+ AreaOfOperation areaOfOperation =
+ getEntityById(AreaOfOperation.class,
+ configuration.getAreaOfOperationId());
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ String voyageDescription = configuration.getVoyageDescription();
+ String datum = configuration.getDatum();
+
+ VoyageDAO dao = getDAO(Voyage.class, VoyageDAO.class);
+
+ ImportModel<Voyage> csvModel =
+ new VoyageImportModel(getCsvSeparator());
+
+ Reader reader = getInputFileReader(inputFile);
+ Import<Voyage> importer = EchoBaseImport.newImport(csvModel, reader);
+ Voyage newVoyage = null;
+ Locale locale = getLocale();
+ try {
+ for (Voyage voyage : importer) {
+
+ voyage.setMission(mission);
+ voyage.setAreaOfOperation(areaOfOperation);
+ voyage.setDescription(voyageDescription);
+ voyage.setDatum(datum);
+
+ Voyage createdVoyage = create(dao, voyage);
+ if (newVoyage == null) {
+ newVoyage = createdVoyage;
+ } else {
+ // this means a voyage file with more than one row not possible...
+
+ throw new ImportException(
+ l_(locale, "echobase.importError.can.only.import.one.voyage.atime"));
+ }
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Voyage);
+ }
+
+ if (newVoyage == null) {
+ throw new ImportException(
+ l_(locale, "echobase.importError.no.voyage.imported"));
+ }
+
+ // push back to id of the voyage in configuration for next imports
+ configuration.setVoyageId(newVoyage.getTopiaId());
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(locale, inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importTransitFile(
+ InputFile inputFile,
+ CommonDataImportConfiguration configuration) throws ImportException {
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ // get voyage
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+ // restrict voyage to use to this voyage
+ Map<String, Voyage> voyageMap = Maps.uniqueIndex(
+ Arrays.asList(voyage), EchoBaseFunctions.VOYAGE_NAME);
+
+ String relatedActivity = configuration.getTransitRelatedActivity();
+
+ TransitImportModel csvModel =
+ new TransitImportModel(getCsvSeparator(), voyageMap);
+
+ TransitDAO dao = getDAO(Transit.class, TransitDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<TransitImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+ for (TransitImportModelRow row : importer) {
+
+ Transit transit = row.getTransit();
+
+ transit.setRelatedActivity(relatedActivity);
+
+ Transit createdTransit = create(dao, transit);
+
+ voyage.addTransit(createdTransit);
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Transit);
+ }
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ private CsvFileImportResult importTransectFile(
+ InputFile inputFile,
+ Map<String, Vessel> vesselMap,
+ CommonDataImportConfiguration configuration) throws ImportException {
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ // get voyage
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+ // restrict voyage to use to this voyage
+ Map<String, Voyage> voyageMap = Maps.uniqueIndex(
+ Arrays.asList(voyage), EchoBaseFunctions.VOYAGE_NAME);
+
+ String datum = configuration.getDatum();
+ String license = configuration.getTransectLicence();
+ String geospatialVerticalPositive =
+ configuration.getTransectGeospatialVerticalPositive();
+ String binUnitsPingAxis = configuration.getTransectBinUnitsPingAxis();
+
+ TransectImportModel csvModel =
+ new TransectImportModel(getCsvSeparator(),
+ voyageMap,
+ vesselMap);
+
+ TransectDAO dao = getDAO(Transect.class, TransectDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<TransectImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+ for (TransectImportModelRow row : importer) {
+
+ Transect transect = row.getTransect();
+
+ Date timeCoverageStart = transect.getTimeCoverageStart();
+ Date timeCoverageEnd = transect.getTimeCoverageEnd();
+
+ Transit transit = voyage.getTransit(timeCoverageStart,
+ timeCoverageEnd);
+ if (transit == null) {
+ throw new ImportException(
+ l_(getLocale(), "echobase.importError.no.transit.between.date",
+ voyage.getName(), timeCoverageStart, timeCoverageEnd));
+ }
+
+ transect.setDatum(datum);
+ transect.setLicence(license);
+ transect.setGeospatialVerticalPositive(
+ geospatialVerticalPositive);
+ transect.setBinUnitsPingAxis(binUnitsPingAxis);
+
+ Transect createdTransect = create(dao, transect);
+
+ transit.addTransect(createdTransect);
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Transect);
+ }
+
+ return importResult;
+
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportDataMode.java (from rev 334, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDataMode.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportDataMode.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportDataMode.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,63 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.I18nAble;
+
+import static org.nuiton.i18n.I18n.n_;
+
+/**
+ * To define the mode of import data (says files to be imported).
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public enum ImportDataMode implements I18nAble {
+
+ /** Import Voyage / Transit / Transect. */
+ CommonData(n_("echobase.common.importDataMode.commonData")),
+
+ /** Import operations common data. */
+ Operation(n_("echobase.common.importDataMode.operation")),
+
+ /** Import catches data (unsorted, total, but no individual ones). */
+ CatchesData(n_("echobase.common.importDataMode.catchesData")),
+
+ /** Import accoustic data (Cells ESDU and Elementary). */
+ AccousticData(n_("echobase.common.importDataMode.accousticData")),
+
+ /** Import results. */
+ Results(n_("echobase.common.importDataMode.results"));
+
+ private final String i18nKey;
+
+ ImportDataMode(String i18nKey) {
+ this.i18nKey = i18nKey;
+ }
+
+ @Override
+ public String getI18nKey() {
+ return i18nKey;
+ }
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportDataMode.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java (from rev 334, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,303 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.EchoBaseFunctions;
+import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.data.GearMetadataValue;
+import fr.ifremer.echobase.entities.data.GearMetadataValueDAO;
+import fr.ifremer.echobase.entities.data.Operation;
+import fr.ifremer.echobase.entities.data.OperationDAO;
+import fr.ifremer.echobase.entities.data.OperationMetadataValue;
+import fr.ifremer.echobase.entities.data.OperationMetadataValueDAO;
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.Transit;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.DepthStratum;
+import fr.ifremer.echobase.entities.references.Gear;
+import fr.ifremer.echobase.entities.references.GearMetadata;
+import fr.ifremer.echobase.entities.references.OperationMetadata;
+import fr.ifremer.echobase.entities.references.Vessel;
+import fr.ifremer.echobase.services.ImportException;
+import fr.ifremer.echobase.services.configurations.OperationImportConfiguration;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import fr.ifremer.echobase.services.csv.EchoBaseImport;
+import fr.ifremer.echobase.services.csv.GearMetadataValueImportModel;
+import fr.ifremer.echobase.services.csv.GearMetadataValueImportModelRow;
+import fr.ifremer.echobase.services.csv.OperationImportModel;
+import fr.ifremer.echobase.services.csv.OperationImportModelRow;
+import fr.ifremer.echobase.services.csv.OperationMetadataValueImportModel;
+import fr.ifremer.echobase.services.csv.OperationMetadataValueImportModelRow;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportRuntimeException;
+
+import java.io.Reader;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n.l_;
+
+/**
+ * Service to launch a "operations" import.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class OperationImportService extends AbstractImportDataService<OperationImportConfiguration> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(OperationImportService.class);
+
+ @Override
+ protected String getImportLabel() {
+ return l_(getLocale(), ImportDataMode.Operation.getI18nKey());
+ }
+
+ @Override
+ protected List<CsvFileImportResult> startImport(
+ OperationImportConfiguration configuration,
+ EchoBaseUser user) throws ImportException {
+
+ List<CsvFileImportResult> result = Lists.newLinkedList();
+
+ // get selected voyage
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+ // get usable vessels from the voyage by their name
+ Map<String, Vessel> vesselMap = Maps.uniqueIndex(
+ voyage.getAllVessels(), EchoBaseFunctions.VESSEL_NAME);
+
+ // get usable gears by their casino gear name
+ Map<String, Gear> gearMap = getEntitiesMap(
+ Gear.class, EchoBaseFunctions.GEAR_CASINO_GEAR_NAME);
+
+ InputFile operationFile = configuration.getOperationFile();
+ CsvFileImportResult nbOperations = importOperationFile(
+ operationFile,
+ voyage,
+ vesselMap,
+ gearMap);
+
+ // get all operation for this voyage and this vessel
+ Collection<Operation> operations = voyage.getAllOperations();
+
+ // split them by operation Id
+ Map<String, Operation> operationMap = Maps.uniqueIndex(
+ operations, EchoBaseFunctions.OPERATION_ID);
+
+ InputFile operationMetadataFile = configuration.getOperationMetadataFile();
+ CsvFileImportResult nbOperationMetas = importOperationMetadataFile(
+ operationMetadataFile,
+ vesselMap,
+ operationMap);
+
+ InputFile gearMetadataFile = configuration.getGearMetadataFile();
+ CsvFileImportResult nbGearMetas = importGearMetadataFile(
+ gearMetadataFile,
+ vesselMap,
+ gearMap,
+ operationMap);
+
+ addResultAndLog(result, operationFile, nbOperations, user);
+
+ addResultAndLog(result, operationMetadataFile, nbOperationMetas, user);
+
+ addResultAndLog(result, gearMetadataFile, nbGearMetas, user);
+
+ return result;
+ }
+
+ protected CsvFileImportResult importOperationFile(
+ InputFile inputFile,
+ Voyage voyage,
+ Map<String, Vessel> vesselMap,
+ Map<String, Gear> gearMap) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of operation from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ Map<String, DepthStratum> depthStratumMap = getEntitiesMap(
+ DepthStratum.class, EchoBaseFunctions.DEPTH_STRATUM_ID);
+
+ OperationImportModel csvModel =
+ new OperationImportModel(getCsvSeparator(),
+ vesselMap,
+ gearMap,
+ depthStratumMap);
+
+ OperationDAO dao = getDAO(Operation.class, OperationDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<OperationImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (OperationImportModelRow row : importer) {
+
+ Vessel vessel = row.getVessel();
+
+ Operation operation = row.getOperation();
+
+ Date startTime = operation.getGearShootingStartTime();
+ Date endTime = operation.getGearShootingEndTime();
+
+ Transit transit = voyage.getTransit(startTime, endTime);
+
+ Transect transect = transit.getTransect(vessel);
+
+ Operation createdOperation = create(dao, operation);
+
+ transect.addOperation(createdOperation);
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Operation);
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importOperationMetadataFile(
+ InputFile inputFile,
+ Map<String, Vessel> vesselMap,
+ Map<String, Operation> operationMap) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of operation metadata values from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ Map<String, OperationMetadata> operationMetadatasByName =
+ getEntitiesMap(OperationMetadata.class,
+ EchoBaseFunctions.OPERATION_METADATA_NAME);
+
+ OperationMetadataValueImportModel csvModel =
+ new OperationMetadataValueImportModel(getCsvSeparator(),
+ vesselMap,
+ operationMetadatasByName,
+ operationMap);
+
+ OperationMetadataValueDAO dao = getDAO(
+ OperationMetadataValue.class,
+ OperationMetadataValueDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<OperationMetadataValueImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (OperationMetadataValueImportModelRow row : importer) {
+
+ Operation operation = row.getOperation();
+
+ OperationMetadataValue operationMetadataValueToCreate =
+ row.getOperationMetadataValue();
+ OperationMetadataValue operationMetadataValue = create(
+ dao, operationMetadataValueToCreate);
+
+ operation.addOperationMetadataValue(operationMetadataValue);
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.OperationMetadataValue);
+ }
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importGearMetadataFile(
+ InputFile inputFile,
+ Map<String, Vessel> vesselMap,
+ Map<String, Gear> gearMap,
+ Map<String, Operation> operationMap) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of gear metadata values from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ Map<String, GearMetadata> gearMetadatasByType =
+ getEntitiesMap(GearMetadata.class,
+ EchoBaseFunctions.GEAR_METADATA_NAME);
+
+ GearMetadataValueImportModel csvModel =
+ new GearMetadataValueImportModel(getCsvSeparator(),
+ vesselMap,
+ gearMetadatasByType,
+ gearMap,
+ operationMap);
+
+ GearMetadataValueDAO dao = getDAO(GearMetadataValue.class,
+ GearMetadataValueDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<GearMetadataValueImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (GearMetadataValueImportModelRow row : importer) {
+
+ Operation operation = row.getOperation();
+
+ GearMetadataValue gearMetadataValuetoCreate =
+ row.getGearMetadataValue();
+ GearMetadataValue gearMetadataValue = create(
+ dao, gearMetadataValuetoCreate);
+
+ operation.addGearMetadataValue(gearMetadataValue);
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.GearMetadataValue);
+ }
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java (from rev 336, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,457 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.EchoBaseFunctions;
+import fr.ifremer.echobase.EchoBasePredicates;
+import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.data.Cell;
+import fr.ifremer.echobase.entities.data.CellDAO;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.DepthStratum;
+import fr.ifremer.echobase.entities.data.Echotype;
+import fr.ifremer.echobase.entities.data.LengthAgeKey;
+import fr.ifremer.echobase.entities.data.LengthWeightKey;
+import fr.ifremer.echobase.entities.data.LengthWeightKeyDAO;
+import fr.ifremer.echobase.entities.references.SizeCategory;
+import fr.ifremer.echobase.entities.references.Species;
+import fr.ifremer.echobase.entities.references.SpeciesCategory;
+import fr.ifremer.echobase.entities.references.SpeciesCategoryDAO;
+import fr.ifremer.echobase.entities.references.Strata;
+import fr.ifremer.echobase.services.ImportException;
+import fr.ifremer.echobase.services.configurations.ResultsImportConfiguration;
+import fr.ifremer.echobase.services.configurations.ResultsImportMode;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import fr.ifremer.echobase.services.csv.EchoBaseImport;
+import fr.ifremer.echobase.services.csv.EchotypeImportModel;
+import fr.ifremer.echobase.services.csv.EchotypeImportModelRow;
+import fr.ifremer.echobase.services.csv.LengthAgeKeyImportModel;
+import fr.ifremer.echobase.services.csv.LengthAgeKeyImportModelRow;
+import fr.ifremer.echobase.services.csv.LengthWeightKeyImportModel;
+import fr.ifremer.echobase.services.csv.LengthWeightKeyImportModelRow;
+import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModel;
+import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModelRow;
+import fr.ifremer.echobase.services.csv.RegionCellImportModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.persistence.TopiaDAO;
+import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportRuntimeException;
+
+import java.io.Reader;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n.l_;
+
+/**
+ * Service to launch a "results" import.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class ResultsImportService extends AbstractImportDataService<ResultsImportConfiguration> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ResultsImportService.class);
+
+ @Override
+ protected String getImportLabel() {
+ return l_(getLocale(), ImportDataMode.Results.getI18nKey());
+ }
+
+ @Override
+ public List<CsvFileImportResult> startImport(ResultsImportConfiguration configuration,
+ EchoBaseUser user) throws ImportException {
+
+ List<CsvFileImportResult> result = Lists.newLinkedList();
+
+ ResultsImportMode importMode = configuration.getImportMode();
+
+ switch (importMode) {
+ case VOYAGE:
+
+ // get selected voyage
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+ // authorize only the selected voyage to be imported
+ Map<String, Voyage> voyageMap = Maps.uniqueIndex(Arrays.asList(
+ voyage), EchoBaseFunctions.VOYAGE_NAME);
+
+ Map<String, Species> speciesMap = getEntitiesMap(
+ Species.class,
+ EchoBaseFunctions.SPECIES_BARACOUDA_CODE);
+
+ InputFile inputFile = configuration.getLengthAgeKeyFile();
+
+ if (inputFile.hasFile()) {
+
+ CsvFileImportResult importResult = importLenthAgeKey(
+ inputFile,
+ voyageMap,
+ speciesMap
+ );
+ addResultAndLog(result, inputFile, importResult, user);
+ }
+
+ inputFile = configuration.getLengthWeightKeyFile();
+ if (inputFile.hasFile()) {
+
+ CsvFileImportResult importResult = importLenghtWeightKey(
+ inputFile,
+ voyageMap,
+ speciesMap
+ );
+ addResultAndLog(result, inputFile, importResult, user);
+ }
+
+ inputFile = configuration.getEchotypeFile();
+ if (inputFile.hasFile()) {
+
+ CsvFileImportResult importResult = importEchotypeFile(
+ inputFile,
+ voyageMap,
+ speciesMap
+ );
+ addResultAndLog(result, inputFile, importResult, user);
+ }
+ break;
+
+ case REGION:
+
+ if (configuration.getRegionsFile().hasFile()) {
+ CsvFileImportResult importResult = importRegionsFile(
+ configuration.getRegionsFile());
+
+ addResultAndLog(result, configuration.getRegionsFile(),
+ importResult, user);
+ }
+ if (configuration.getAssociationFile().hasFile()) {
+ CsvFileImportResult importResult = importRegionAssociationFile(
+ configuration.getAssociationFile());
+
+ addResultAndLog(result, configuration.getAssociationFile(),
+ importResult, user);
+ }
+ break;
+
+ case ACOUSTIC:
+ if (configuration.getRegionsFile().hasFile()) {
+ CsvFileImportResult importResult = importRegionsFile(
+ configuration.getRegionsFile());
+
+ addResultAndLog(result, configuration.getRegionsFile(),
+ importResult, user);
+ }
+ if (configuration.getAssociationFile().hasFile()) {
+ CsvFileImportResult importResult = importRegionAssociationFile(
+ configuration.getAssociationFile());
+
+ addResultAndLog(result, configuration.getAssociationFile(),
+ importResult, user);
+ }
+ break;
+ }
+ return result;
+ }
+
+ protected CsvFileImportResult importRegionsFile(InputFile inputFile) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of region from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ RegionCellImportModel csvModel = new RegionCellImportModel(
+ serviceContext.getConfiguration().getCsvSeparator());
+
+ CellDAO dao = getDAO(Cell.class, CellDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<Cell> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (Cell row : importer) {
+
+ //TODO
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell);
+ }
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importRegionAssociationFile(InputFile inputFile) throws ImportException {
+ RegionCellAssociationImportModel csvModel = new RegionCellAssociationImportModel(
+ serviceContext.getConfiguration().getCsvSeparator());
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of region association from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ CellDAO dao = getDAO(Cell.class, CellDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<RegionCellAssociationImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (RegionCellAssociationImportModelRow row : importer) {
+
+ //TODO
+
+ importResult.incrementsNumberUpdated(EchoBaseEntityEnum.Cell);
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importLenghtWeightKey(InputFile inputFile,
+ Map<String, Voyage> voyageMap,
+ Map<String, Species> speciesMap) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of lenthWeightKey from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ Map<String, SizeCategory> sizeCategoryMap = getEntitiesMap(
+ SizeCategory.class,
+ EchoBaseFunctions.SIZE_CATEGORY_NAME);
+
+ LengthWeightKeyImportModel csvModel = new LengthWeightKeyImportModel(
+ serviceContext.getConfiguration().getCsvSeparator(),
+ voyageMap,
+ sizeCategoryMap,
+ speciesMap);
+
+ LengthWeightKeyDAO dao = getDAO(LengthWeightKey.class,
+ LengthWeightKeyDAO.class);
+
+ SpeciesCategoryDAO speciesCategoryDAO =
+ getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<LengthWeightKeyImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (LengthWeightKeyImportModelRow row : importer) {
+
+ Voyage voyage = row.getVoyage();
+
+ LengthWeightKey lengthWeightKeyToCreate =
+ row.getLengthWeightKey();
+ LengthWeightKey lengthWeightKey = create(
+ dao, lengthWeightKeyToCreate);
+
+ //TODO should we import it ?
+ //lengthWeightKey.setMetadata(row.getMetadata());
+
+ Species species = row.getSpecies();
+ SizeCategory sizeCategory = row.getSizeCategory();
+
+ // find speciesCategory
+ SpeciesCategory speciesCategory = getSpeciesCategory(
+ speciesCategoryDAO,
+ species, sizeCategory,
+ null
+ );
+
+ lengthWeightKey.setSpeciesCategory(speciesCategory);
+
+ // attach it to voyage
+ voyage.addLengthWeightKey(lengthWeightKey);
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.LengthWeightKey);
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importLenthAgeKey(InputFile inputFile,
+ Map<String, Voyage> voyageMap,
+ Map<String, Species> speciesMap) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of lenthAgeKey from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ Map<String, Strata> strataMap = getEntitiesMap(
+ Strata.class, EchoBaseFunctions.STRATA_BY_NAME);
+
+ LengthAgeKeyImportModel csvModel = new LengthAgeKeyImportModel(
+ serviceContext.getConfiguration().getCsvSeparator(),
+ voyageMap,
+ strataMap,
+ speciesMap);
+
+ TopiaDAO<LengthAgeKey> dao = getDAO(LengthAgeKey.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<LengthAgeKeyImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (LengthAgeKeyImportModelRow row : importer) {
+
+ Voyage voyage = row.getVoyage();
+
+ LengthAgeKey lengthAgeKeyToCreate = row.getLengthAgeKey();
+ LengthAgeKey lengthAgeKey = create(dao, lengthAgeKeyToCreate);
+
+ // attach it to voyage
+ voyage.addLengthAgeKey(lengthAgeKey);
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.LengthAgeKey);
+ }
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ private CsvFileImportResult importEchotypeFile(InputFile inputFile,
+ Map<String, Voyage> voyageMap,
+ Map<String, Species> speciesMap) throws ImportException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of echotype from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ Map<String, DepthStratum> depthStratumMap = getEntitiesMap(
+ DepthStratum.class,
+ EchoBaseFunctions.DEPTH_STRATUM_ID);
+
+ EchotypeImportModel csvModel = new EchotypeImportModel(
+ serviceContext.getConfiguration().getCsvSeparator(),
+ voyageMap,
+ depthStratumMap,
+ speciesMap);
+
+ TopiaDAO<Echotype> dao = getDAO(Echotype.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<EchotypeImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (EchotypeImportModelRow row : importer) {
+
+ Voyage voyage = row.getVoyage();
+
+ Echotype rowEchotype = row.getEchotype();
+
+ String echotypeName = rowEchotype.getName();
+
+ // check if there is a echotype for the voyage and this name
+ Echotype echotype = null;
+
+ if (!voyage.isEchotypeEmpty()) {
+
+ Collection<Echotype> echotypes = voyage.getEchotype();
+ Predicate<Echotype> predicate =
+ EchoBasePredicates.newEchotypeByNamePredicate(
+ echotypeName);
+ echotype = Iterables.find(echotypes, predicate, null);
+
+ }
+
+ if (echotype == null) {
+
+ // creates it
+ echotype = create(dao, rowEchotype);
+
+ // attach it to voyage
+ voyage.addEchotype(echotype);
+
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Echotype);
+
+ } else {
+
+ Species species = rowEchotype.getSpecies().iterator().next();
+ Species existingSpecie =
+ echotype.getSpeciesByTopiaId(species.getTopiaId());
+
+ if (existingSpecie == null) {
+
+ // add this species
+ echotype.addSpecies(species);
+ }
+ }
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AcousticDataImportServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AcousticDataImportServiceTest.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AcousticDataImportServiceTest.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,119 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import fr.ifremer.echobase.entities.data.Cell;
-import fr.ifremer.echobase.entities.data.Data;
-import fr.ifremer.echobase.entities.data.DataAcquisition;
-import fr.ifremer.echobase.entities.data.DataProcessing;
-import fr.ifremer.echobase.entities.references.AcousticInstrument;
-import fr.ifremer.echobase.services.configurations.AcousticDataImportConfiguration;
-import fr.ifremer.echobase.services.configurations.CellPositionReference;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.List;
-
-/**
- * Tests {@link AcousticDataImportService}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class AcousticDataImportServiceTest extends EchoBaseTestServiceSupport {
-
- protected FakeEchoBaseServiceContext initContext() {
- return new FakeEchoBaseServiceContext(
- ImportDataConstants.IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
- }
-
- protected String[] getImportPath(String filename) {
- return new String[]{"/import-data", "acousticData", filename};
- }
-
- @Ignore
- @Test
- public void doImport() throws Exception {
-
- assertImportCommonData();
-
- assertNoEntities(DataAcquisition.class,
- DataProcessing.class,
- Cell.class,
- Data.class);
-
- AcousticDataImportConfiguration conf =
- new AcousticDataImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
- conf.setVesselId(ImportDataConstants.VESSEL_ID);
- conf.setAcousticDensityUnit("acousticDensityUnit");
- conf.setAcquisitionSoftwareVersionER60("acquisitionSoftwareVersionER60");
- conf.setAcquisitionSoftwareVersionME70("acquisitionSoftwareVersionME70");
- conf.setAddDataAcquisition(false);
- conf.setTransceiverAcquisitionAbsorptionDescription("transceiverAcquisitionAbsorptionDescription");
- conf.setCellPositionReference(CellPositionReference.START);
- conf.setDigitThreshold(1.5f);
- conf.setEchosounderSoundSpeed("echosounderSoundSpeed");
- conf.setLoggedDataDatatype("loggedDataDatatype");
- conf.setLoggedDataFormat("loggedDataFormat");
- conf.setNotes("notes");
- conf.setPingDutyCycle("pingDutyCycle");
- conf.setProcessingDescription("processingDescription");
- conf.setProcessingTemplate("processingTemplate");
- conf.setSounderConstant(1.0f);
- conf.setSoundSpeedCalculationsER60("soundSpeedCalculationsER60");
- conf.setSoundSpeedCalculationsME70("soundSpeedCalculationsME70");
- conf.setTransceiverAcquisitionAbsorptionDescription("transceiverAcquisitionAbsorptionDescription");
-
- prepareInputFile(conf.getMoviesFile(), getImportPath("movies.csv"));
-
- AcousticDataImportService service =
- getService(AcousticDataImportService.class);
-
- //FIXME : remove this when db will have such data
- service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES18-11");
- service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES38B");
- service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES70-7C");
- service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES120-7");
- service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES200-7C");
- service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ME70");
-
- List<CsvFileImportResult> result =
- service.doImport(conf, createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- CsvFileImportResult importResult = result.get(0);
- assertCsvImportResult(importResult, DataAcquisition.class, ImportDataConstants.NB_DATA_ACQUISITION);
- assertCsvImportResult(importResult, DataProcessing.class, ImportDataConstants.NB_DATA_PROCESSING);
- assertCsvImportResult(importResult, Cell.class, ImportDataConstants.NB_CELL);
- assertCsvImportResult(importResult, Data.class, ImportDataConstants.NB_DATA);
-
- assertImportAcousticDatas();
- }
-
-}
Deleted: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CatchesDataImportServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CatchesDataImportServiceTest.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CatchesDataImportServiceTest.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,187 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import fr.ifremer.echobase.entities.data.Sample;
-import fr.ifremer.echobase.entities.data.SampleData;
-import fr.ifremer.echobase.entities.references.Species;
-import fr.ifremer.echobase.services.configurations.CatchesDataImportConfiguration;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Tests {@link CatchesDataImportService}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class CatchesDataImportServiceTest extends EchoBaseTestServiceSupport {
-
- protected FakeEchoBaseServiceContext initContext() {
- return new FakeEchoBaseServiceContext(
- ImportDataConstants.IMPORT_DATA_ECHOBASE_OPERATION_RESULT);
- }
-
- protected String[] getImportPath(String filename) {
- return new String[]{"/import-data", "catchesData", filename};
- }
-
- @Test
- public void doImportAllSamples() throws Exception {
-
- assertImportCommonData();
- assertImportOperations();
- assertNoEntities(Sample.class, SampleData.class);
-
- CatchesDataImportConfiguration conf =
- new CatchesDataImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
-
- prepareInputFile(conf.getTotalSampleFile(),
- getImportPath("totalsample.csv"));
- prepareInputFile(conf.getSubSampleFile(),
- getImportPath("subsample.csv"));
-// prepareInputFile(conf.getBiometrySampleFile(),
-// getImportPath("biometrysample.csv"));
-
- CatchesDataImportService service =
- getService(CatchesDataImportService.class);
-
- List<CsvFileImportResult> result = service.doImport(conf,
- createFakeUser());
-
- Assert.assertNotNull(result);
-// Assert.assertEquals(3, result.size());
- Assert.assertEquals(2, result.size());
- Iterator<CsvFileImportResult> iterator = result.iterator();
- CsvFileImportResult importResult;
-
- importResult = iterator.next();
- assertCsvImportResult(importResult, Sample.class, ImportDataConstants.NB_SAMPLE_TOTAL, 0, ImportDataConstants.NB_SAMPLE);
- assertCsvImportResult(importResult, SampleData.class, ImportDataConstants.NB_SAMPLE_DATA_TOTAL, 0, ImportDataConstants.NB_SAMPLE_DATA);
- importResult = iterator.next();
- assertCsvImportResult(importResult, Sample.class, ImportDataConstants.NB_SAMPLE_UNSORTED, 0, ImportDataConstants.NB_SAMPLE);
- assertCsvImportResult(importResult, SampleData.class, ImportDataConstants.NB_SAMPLE_DATA_UNSORTED, 0, ImportDataConstants.NB_SAMPLE_DATA);
-// importResult = iterator.next();
-// assertCsvImportResult(importResult, Sample.class, NB_SAMPLE_BIOMETRY, 0, NB_SAMPLE);
-// assertCsvImportResult(importResult, SampleData.class, NB_SAMPLE_DATA_BIOMETRY, 0, NB_SAMPLE_DATA);
-
- assertImportSampleDatas();
- }
-
- @Ignore
- @Test
- public void doImportTotalSample() throws Exception {
-
- assertImportCommonData();
- assertImportOperations();
- assertNoEntities(Sample.class, SampleData.class);
-
- CatchesDataImportConfiguration conf =
- new CatchesDataImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
-
- prepareInputFile(conf.getTotalSampleFile(),
- getImportPath("totalsample.csv"));
-
- CatchesDataImportService service =
- getService(CatchesDataImportService.class);
-
- List<CsvFileImportResult> result = service.doImport(conf,
- createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- CsvFileImportResult importResult = result.get(0);
- assertCsvImportResult(importResult, Sample.class, ImportDataConstants.NB_SAMPLE_TOTAL);
- assertCsvImportResult(importResult, SampleData.class, ImportDataConstants.NB_SAMPLE_DATA_TOTAL);
- }
-
- @Ignore
- @Test
- public void doImportSubSample() throws Exception {
-
- assertImportCommonData();
- assertImportOperations();
- assertNoEntities(Sample.class, SampleData.class);
-
- CatchesDataImportConfiguration conf =
- new CatchesDataImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
-
- prepareInputFile(conf.getSubSampleFile(),
- getImportPath("subsample.csv"));
-
- CatchesDataImportService service =
- getService(CatchesDataImportService.class);
-
- List<CsvFileImportResult> result = service.doImport(conf,
- createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- Iterator<CsvFileImportResult> iterator = result.iterator();
- CsvFileImportResult importResult = iterator.next();
- assertCsvImportResult(importResult, Sample.class, ImportDataConstants.NB_SAMPLE_UNSORTED);
- assertCsvImportResult(importResult, SampleData.class, ImportDataConstants.NB_SAMPLE_DATA_UNSORTED);
- }
-
- @Ignore
- @Test
- public void doImportBiometrySample() throws Exception {
-
- assertImportCommonData();
- assertImportOperations();
- assertNoEntities(Sample.class, SampleData.class);
-
- CatchesDataImportConfiguration conf =
- new CatchesDataImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
-
- prepareInputFile(conf.getBiometrySampleFile(),
- getImportPath("biometrysample.csv"));
-
- CatchesDataImportService service =
- getService(CatchesDataImportService.class);
- List<CsvFileImportResult> result = service.doImport(conf,
- createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- Iterator<CsvFileImportResult> iterator = result.iterator();
- CsvFileImportResult importResult = iterator.next();
- assertCsvImportResult(importResult, Sample.class, ImportDataConstants.NB_SAMPLE_BIOMETRY);
- assertCsvImportResult(importResult, SampleData.class, ImportDataConstants.NB_SAMPLE_DATA_BIOMETRY);
- }
-
-}
Deleted: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportService2Test.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportService2Test.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportService2Test.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,92 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import fr.ifremer.echobase.entities.data.Transect;
-import fr.ifremer.echobase.entities.data.Transit;
-import fr.ifremer.echobase.services.configurations.CommonDataImportConfiguration;
-import fr.ifremer.echobase.services.configurations.CommonDataImportMode;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Tests {@link CommonDataImportService} with {@link CommonDataImportMode#TRANSECT} mode.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class CommonDataImportService2Test extends EchoBaseTestServiceSupport {
-
- protected FakeEchoBaseServiceContext initContext() {
- return new FakeEchoBaseServiceContext(
- ImportDataConstants.IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
- }
-
- @Test
- public void doImport() throws Exception {
-
- // import with mode transect
-
- assertImportCommonData();
-
- CommonDataImportConfiguration conf =
- new CommonDataImportConfiguration(getLocale());
-
- conf.setAreaOfOperationId(ImportDataConstants.AREA_OF_OPERATION_ID);
- conf.setDatum("datum");
- conf.setVoyageId(getVoyageId());
- conf.setTransectBinUnitsPingAxis("transectBinUnitsPingAxis");
- conf.setTransectGeospatialVerticalPositive("transectGeospatialVerticalPositive");
- conf.setTransectLicence("transectLicence");
-
- prepareInputFile(conf.getTransectFile(), getImportPath("transect.csv"));
-
- conf.setImportMode(CommonDataImportMode.TRANSECT);
-
- CommonDataImportService service =
- getService(CommonDataImportService.class);
-
- // let's delete every transects
- for (Transit transit : getEntities(Transit.class)) {
- transit.clearTransect();
- }
- List<CsvFileImportResult> result = service.doImport(conf, createFakeUser());
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- Iterator<CsvFileImportResult> iterator = result.iterator();
- assertCsvImportResult(iterator.next(), Transect.class,
- ImportDataConstants.NB_TRANSECT);
-
- assertImportCommonData();
- }
-
- protected String[] getImportPath(String filename) {
- return new String[]{"/import-data", "commonData", filename};
- }
-
-}
Deleted: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportServiceTest.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportServiceTest.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,99 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import fr.ifremer.echobase.entities.data.Transect;
-import fr.ifremer.echobase.entities.data.Transit;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.services.configurations.CommonDataImportConfiguration;
-import fr.ifremer.echobase.services.configurations.CommonDataImportMode;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Tests {@link CommonDataImportService} with {@link CommonDataImportMode#ALL} mode.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class CommonDataImportServiceTest extends EchoBaseTestServiceSupport {
-
- @Override
- protected FakeEchoBaseServiceContext initContext() {
- return new FakeEchoBaseServiceContext(
- ImportDataConstants.IMPORT_DATA_ECHOBASE_NO_DATA);
- }
-
- @Test
- public void doImport() throws Exception {
-
- // no data in db
-
- assertNoEntities(Voyage.class, Transit.class, Transect.class);
-
- // import with mode all (voyage / transit / transect)
-
- CommonDataImportConfiguration conf =
- new CommonDataImportConfiguration(getLocale());
-
- conf.setAreaOfOperationId(ImportDataConstants.AREA_OF_OPERATION_ID);
- conf.setDatum("datum");
- conf.setMissionId(ImportDataConstants.MISSION_ID);
- conf.setTransectBinUnitsPingAxis("transectBinUnitsPingAxis");
- conf.setTransectGeospatialVerticalPositive("transectGeospatialVerticalPositive");
- conf.setTransectLicence("transectLicence");
- conf.setTransitRelatedActivity("transitRelatedActivity");
- conf.setVoyageDescription("voyageDescription");
-
- prepareInputFile(conf.getVoyageFile(), getImportPath("voyage.csv"));
- prepareInputFile(conf.getTransitFile(), getImportPath("transit.csv"));
- prepareInputFile(conf.getTransectFile(), getImportPath("transect.csv"));
-
- conf.setImportMode(CommonDataImportMode.ALL);
-
- CommonDataImportService service =
- getService(CommonDataImportService.class);
-
- List<CsvFileImportResult> result =
- service.doImport(conf, createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(3, result.size());
- Iterator<CsvFileImportResult> iterator = result.iterator();
- assertCsvImportResult(iterator.next(), Voyage.class, ImportDataConstants.NB_VOYAGE);
- assertCsvImportResult(iterator.next(), Transit.class, ImportDataConstants.NB_TRANSIT);
- assertCsvImportResult(iterator.next(), Transect.class, ImportDataConstants.NB_TRANSECT);
-
- assertImportCommonData();
- }
-
- protected String[] getImportPath(String filename) {
- return new String[]{"/import-data", "commonData", filename};
- }
-
-}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -28,17 +28,6 @@
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.EchoBaseUserImpl;
-import fr.ifremer.echobase.entities.data.Cell;
-import fr.ifremer.echobase.entities.data.Data;
-import fr.ifremer.echobase.entities.data.DataAcquisition;
-import fr.ifremer.echobase.entities.data.DataProcessing;
-import fr.ifremer.echobase.entities.data.GearMetadataValue;
-import fr.ifremer.echobase.entities.data.Operation;
-import fr.ifremer.echobase.entities.data.OperationMetadataValue;
-import fr.ifremer.echobase.entities.data.Sample;
-import fr.ifremer.echobase.entities.data.SampleData;
-import fr.ifremer.echobase.entities.data.Transect;
-import fr.ifremer.echobase.entities.data.Transit;
import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.services.csv.CsvFileImportResult;
import org.apache.commons.io.FileUtils;
@@ -148,30 +137,6 @@
}
}
- public void assertImportCommonData() throws TopiaException {
- assertNbEntities(Voyage.class, ImportDataConstants.NB_VOYAGE);
- assertNbEntities(Transit.class, ImportDataConstants.NB_TRANSIT);
- assertNbEntities(Transect.class, ImportDataConstants.NB_TRANSECT);
- }
-
- public void assertImportOperations() throws TopiaException {
- assertNbEntities(Operation.class, ImportDataConstants.NB_OPERATION);
- assertNbEntities(OperationMetadataValue.class, ImportDataConstants.NB_OPERATION_METADATAVALUE);
- assertNbEntities(GearMetadataValue.class, ImportDataConstants.NB_GEAR_METADATAVALUE);
- }
-
- public void assertImportSampleDatas() throws TopiaException {
- assertNbEntities(Sample.class, ImportDataConstants.NB_SAMPLE);
- assertNbEntities(SampleData.class, ImportDataConstants.NB_SAMPLE_DATA);
- }
-
- public void assertImportAcousticDatas() throws TopiaException {
- assertNbEntities(DataAcquisition.class, ImportDataConstants.NB_DATA_ACQUISITION);
- assertNbEntities(DataProcessing.class, ImportDataConstants.NB_DATA_PROCESSING);
- assertNbEntities(Cell.class, ImportDataConstants.NB_CELL);
- assertNbEntities(Data.class, ImportDataConstants.NB_DATA);
- }
-
protected String getVoyageId() {
Voyage voyage = getEntities(Voyage.class).get(0);
Preconditions.checkNotNull(voyage);
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -27,6 +27,7 @@
import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.data.VoyageDAO;
import fr.ifremer.echobase.services.configurations.EmbeddedApplicationConfiguration;
+import fr.ifremer.echobase.services.importdata.AbstractImportDataServiceIT;
import org.junit.Assert;
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
@@ -45,7 +46,7 @@
protected FakeEchoBaseServiceContext initContext() {
return new FakeEchoBaseServiceContext(
- ImportDataConstants.IMPORT_DATA_ECHOBASE_OPERATION_RESULT);
+ AbstractImportDataServiceIT.IMPORT_DATA_ECHOBASE_OPERATION_RESULT);
}
@Test
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -34,7 +34,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class ExportQueryServiceTest extends EchoBaseTestServiceSupport{
+public class ExportQueryServiceTest extends EchoBaseTestServiceSupport {
@Override
protected FakeEchoBaseServiceContext initContext() {
return new FakeEchoBaseServiceContext(null);
@@ -60,9 +60,9 @@
processLibreOfficeSqlQuery("select \"t\".name FROM \"t\" WHERE (select \"s\".name FROM \"s\" WHERE rien2);",
"select t.name FROM t WHERE (select s.name FROM s WHERE rien2);");
}
-
+
protected void processLibreOfficeSqlQuery(String libreOfficeQuery,
- String expected) {
+ String expected) {
String actual = service.processLibreOfficeSqlQuery(libreOfficeQuery);
Assert.assertEquals(expected, actual);
Deleted: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ImportDataConstants.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ImportDataConstants.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ImportDataConstants.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,90 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-/**
- * constants for import data tests.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class ImportDataConstants {
-
- protected ImportDataConstants() {
- }
-
- public static final String IMPORT_DATA_ECHOBASE_NO_DATA = "/import-data/echobase-0.3-nodata.h2.db.gz";
-
- public static final String IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT = "/import-data/echobase-0.3-commonData-result.h2.db.gz";
-
- public static final String IMPORT_DATA_ECHOBASE_OPERATION_RESULT = "/import-data/echobase-0.3-operation-result.h2.db.gz";
-
- public static final String VESSEL_ID = "fr.ifremer.echobase.entities.references.Vessel#1323196672049#0.9790502711645855";
-
- public static final String MISSION_ID = "fr.ifremer.echobase.entities.references.Mission#1323127544274#0.7939481378378231";
-
- public static final String AREA_OF_OPERATION_ID = "fr.ifremer.echobase.entities.references.AreaOfOperation#1323128474277#0.011341599655098622";
-
- public static final int NB_VOYAGE = 1;
-
- public static final int NB_TRANSIT = 3;
-
- public static final int NB_TRANSECT = 251;
-
- public static final int NB_OPERATION = 131;
-
- public static final int NB_OPERATION_METADATAVALUE = 393;
-
- public static final int NB_GEAR_METADATAVALUE = 917;
-
- public static final int NB_SAMPLE_TOTAL = 1232;
-
- public static final int NB_SAMPLE_DATA_TOTAL = 1834;
-
- public static final int NB_SAMPLE_UNSORTED = 605;
-
- public static final int NB_SAMPLE_DATA_UNSORTED = 8057;
-
- public static final int NB_SAMPLE_BIOMETRY = 0;
-
- public static final int NB_SAMPLE_DATA_BIOMETRY = 0;
-
- public static final int NB_SAMPLE = NB_SAMPLE_TOTAL + NB_SAMPLE_UNSORTED + NB_SAMPLE_BIOMETRY;
-
- public static final int NB_SAMPLE_DATA = NB_SAMPLE_DATA_TOTAL + NB_SAMPLE_DATA_UNSORTED + NB_SAMPLE_DATA_BIOMETRY;
-
- public static final int NB_DATA_ACQUISITION = 61;
-
- public static final int NB_DATA_PROCESSING = 183;
-
- public static final int NB_CELL = 427;
-
- public static final int NB_DATA = 427;
-
- public static final int NB_LENGTH_AGE_KEY = 404;
-
- public static final int NB_LENGTH_WEIGHT_KEY = 7;
-
- public static final int NB_ECHOTYPE = 8;
-}
Deleted: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/OperationImportServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/OperationImportServiceTest.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/OperationImportServiceTest.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,91 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import fr.ifremer.echobase.entities.data.GearMetadataValue;
-import fr.ifremer.echobase.entities.data.Operation;
-import fr.ifremer.echobase.entities.data.OperationMetadataValue;
-import fr.ifremer.echobase.entities.references.Gear;
-import fr.ifremer.echobase.entities.references.GearMetadata;
-import fr.ifremer.echobase.services.configurations.OperationImportConfiguration;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Tests {@link OperationImportService}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class OperationImportServiceTest extends EchoBaseTestServiceSupport {
-
- protected FakeEchoBaseServiceContext initContext() {
- return new FakeEchoBaseServiceContext(
- ImportDataConstants.IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
- }
-
- protected String[] getImportPath(String filename) {
- return new String[]{"/import-data", "operation", filename};
- }
-
- @Test
- public void doImport() throws Exception {
-
- assertImportCommonData();
-
- assertNoEntities(Operation.class,
- OperationMetadataValue.class,
- GearMetadataValue.class);
-
- OperationImportConfiguration conf =
- new OperationImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
-
- prepareInputFile(conf.getOperationFile(),
- getImportPath("operation.csv"));
- prepareInputFile(conf.getOperationMetadataFile(),
- getImportPath("operationmetadatavalue.csv"));
- prepareInputFile(conf.getGearMetadataFile(),
- getImportPath("gearmetadatavalue.csv"));
-
- OperationImportService service =
- getService(OperationImportService.class);
-
- List<CsvFileImportResult> result = service.doImport(conf, createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(3, result.size());
- Iterator<CsvFileImportResult> iterator = result.iterator();
- assertCsvImportResult(iterator.next(), Operation.class, ImportDataConstants.NB_OPERATION);
- assertCsvImportResult(iterator.next(), OperationMetadataValue.class, ImportDataConstants.NB_OPERATION_METADATAVALUE);
- assertCsvImportResult(iterator.next(), GearMetadataValue.class, ImportDataConstants.NB_GEAR_METADATAVALUE);
-
- assertImportOperations();
- }
-}
Deleted: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ResultsImportServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ResultsImportServiceTest.java 2012-03-09 23:52:25 UTC (rev 344)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ResultsImportServiceTest.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -1,134 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import fr.ifremer.echobase.entities.data.Echotype;
-import fr.ifremer.echobase.entities.data.LengthAgeKey;
-import fr.ifremer.echobase.entities.data.LengthWeightKey;
-import fr.ifremer.echobase.services.configurations.ResultsImportConfiguration;
-import fr.ifremer.echobase.services.configurations.ResultsImportMode;
-import fr.ifremer.echobase.services.csv.CsvFileImportResult;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.List;
-
-/**
- * Tests {@link ResultsImportService}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class ResultsImportServiceTest extends EchoBaseTestServiceSupport {
-
- protected FakeEchoBaseServiceContext initContext() {
- return new FakeEchoBaseServiceContext(
- ImportDataConstants.IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
- }
-
- protected String[] getImportPath(String filename) {
- return new String[]{"/import-data", "result", filename};
- }
-
- @Test
- public void doImportLengthAgeKey() throws Exception {
-
- assertImportCommonData();
- assertNoEntities(LengthAgeKey.class);
-
- ResultsImportConfiguration conf =
- new ResultsImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
- conf.setImportMode(ResultsImportMode.VOYAGE);
-
- prepareInputFile(conf.getLengthAgeKeyFile(),
- getImportPath("lengthAgeKey.csv"));
-
- ResultsImportService service =
- getService(ResultsImportService.class);
-
- List<CsvFileImportResult> result =
- service.doImport(conf, createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- assertCsvImportResult(result.get(0), LengthAgeKey.class,
- ImportDataConstants.NB_LENGTH_AGE_KEY);
- }
-
- @Test
- public void doImportLengthWeightKey() throws Exception {
-
- assertImportCommonData();
- assertNoEntities(LengthWeightKey.class);
-
- ResultsImportConfiguration conf =
- new ResultsImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
- conf.setImportMode(ResultsImportMode.VOYAGE);
-
- prepareInputFile(conf.getLengthWeightKeyFile(),
- getImportPath("lengthWeightKey.csv"));
-
- ResultsImportService service =
- getService(ResultsImportService.class);
-
- List<CsvFileImportResult> result =
- service.doImport(conf, createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- assertCsvImportResult(result.get(0), LengthWeightKey.class,
- ImportDataConstants.NB_LENGTH_WEIGHT_KEY);
- }
-
- @Test
- public void doImportEchotype() throws Exception {
-
- assertImportCommonData();
- assertNoEntities(Echotype.class);
-
- ResultsImportConfiguration conf =
- new ResultsImportConfiguration(getLocale());
-
- conf.setVoyageId(getVoyageId());
- conf.setImportMode(ResultsImportMode.VOYAGE);
-
- prepareInputFile(conf.getEchotypeFile(), getImportPath("echotype.csv"));
-
- ResultsImportService service =
- getService(ResultsImportService.class);
-
- List<CsvFileImportResult> result =
- service.doImport(conf, createFakeUser());
-
- Assert.assertNotNull(result);
- Assert.assertEquals(1, result.size());
- assertCsvImportResult(result.get(0), Echotype.class,
- ImportDataConstants.NB_ECHOTYPE);
- }
-
-}
Added: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,126 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.entities.data.Cell;
+import fr.ifremer.echobase.entities.data.Data;
+import fr.ifremer.echobase.entities.data.DataAcquisition;
+import fr.ifremer.echobase.entities.data.DataProcessing;
+import fr.ifremer.echobase.entities.data.GearMetadataValue;
+import fr.ifremer.echobase.entities.data.Operation;
+import fr.ifremer.echobase.entities.data.OperationMetadataValue;
+import fr.ifremer.echobase.entities.data.Sample;
+import fr.ifremer.echobase.entities.data.SampleData;
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.Transit;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.services.EchoBaseTestServiceSupport;
+import org.nuiton.topia.TopiaException;
+
+/**
+ * Abstrac import data test.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public abstract class AbstractImportDataServiceIT extends EchoBaseTestServiceSupport {
+
+ public static final String IMPORT_DATA_ECHOBASE_NO_DATA = "/import-data/echobase-0.3-nodata.h2.db.gz";
+
+ public static final String IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT = "/import-data/echobase-0.3-commonData-result.h2.db.gz";
+
+ public static final String IMPORT_DATA_ECHOBASE_OPERATION_RESULT = "/import-data/echobase-0.3-operation-result.h2.db.gz";
+
+ public static final String VESSEL_ID = "fr.ifremer.echobase.entities.references.Vessel#1323196672049#0.9790502711645855";
+
+ public static final String MISSION_ID = "fr.ifremer.echobase.entities.references.Mission#1323127544274#0.7939481378378231";
+
+ public static final String AREA_OF_OPERATION_ID = "fr.ifremer.echobase.entities.references.AreaOfOperation#1323128474277#0.011341599655098622";
+
+ public static final int NB_VOYAGE = 1;
+
+ public static final int NB_TRANSIT = 3;
+
+ public static final int NB_TRANSECT = 251;
+
+ public static final int NB_OPERATION = 131;
+
+ public static final int NB_OPERATION_METADATAVALUE = 393;
+
+ public static final int NB_GEAR_METADATAVALUE = 917;
+
+ public static final int NB_SAMPLE_TOTAL = 1232;
+
+ public static final int NB_SAMPLE_DATA_TOTAL = 1834;
+
+ public static final int NB_SAMPLE_UNSORTED = 605;
+
+ public static final int NB_SAMPLE_DATA_UNSORTED = 8057;
+
+ public static final int NB_SAMPLE_BIOMETRY = 0;
+
+ public static final int NB_SAMPLE_DATA_BIOMETRY = 0;
+
+ public static final int NB_SAMPLE = NB_SAMPLE_TOTAL + NB_SAMPLE_UNSORTED + NB_SAMPLE_BIOMETRY;
+
+ public static final int NB_SAMPLE_DATA = NB_SAMPLE_DATA_TOTAL + NB_SAMPLE_DATA_UNSORTED + NB_SAMPLE_DATA_BIOMETRY;
+
+ public static final int NB_DATA_ACQUISITION = 61;
+
+ public static final int NB_DATA_PROCESSING = 183;
+
+ public static final int NB_CELL = 427;
+
+ public static final int NB_DATA = 427;
+
+ public static final int NB_LENGTH_AGE_KEY = 404;
+
+ public static final int NB_LENGTH_WEIGHT_KEY = 7;
+
+ public static final int NB_ECHOTYPE = 8;
+
+ public void assertImportCommonData() throws TopiaException {
+ assertNbEntities(Voyage.class, NB_VOYAGE);
+ assertNbEntities(Transit.class, NB_TRANSIT);
+ assertNbEntities(Transect.class, NB_TRANSECT);
+ }
+
+ public void assertImportOperations() throws TopiaException {
+ assertNbEntities(Operation.class, NB_OPERATION);
+ assertNbEntities(OperationMetadataValue.class, NB_OPERATION_METADATAVALUE);
+ assertNbEntities(GearMetadataValue.class, NB_GEAR_METADATAVALUE);
+ }
+
+ public void assertImportSampleDatas() throws TopiaException {
+ assertNbEntities(Sample.class, NB_SAMPLE);
+ assertNbEntities(SampleData.class, NB_SAMPLE_DATA);
+ }
+
+ public void assertImportAcousticDatas() throws TopiaException {
+ assertNbEntities(DataAcquisition.class, NB_DATA_ACQUISITION);
+ assertNbEntities(DataProcessing.class, NB_DATA_PROCESSING);
+ assertNbEntities(Cell.class, NB_CELL);
+ assertNbEntities(Data.class, NB_DATA);
+ }
+}
Copied: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AcousticDataImportServiceIT.java (from rev 334, trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AcousticDataImportServiceTest.java)
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AcousticDataImportServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AcousticDataImportServiceIT.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,120 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.entities.data.Cell;
+import fr.ifremer.echobase.entities.data.Data;
+import fr.ifremer.echobase.entities.data.DataAcquisition;
+import fr.ifremer.echobase.entities.data.DataProcessing;
+import fr.ifremer.echobase.entities.references.AcousticInstrument;
+import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
+import fr.ifremer.echobase.services.configurations.AcousticDataImportConfiguration;
+import fr.ifremer.echobase.services.configurations.CellPositionReference;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.util.List;
+
+/**
+ * Tests {@link AcousticDataImportService}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class AcousticDataImportServiceIT extends AbstractImportDataServiceIT {
+
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(
+ IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
+ }
+
+ protected String[] getImportPath(String filename) {
+ return new String[]{"/import-data", "acousticData", filename};
+ }
+
+ @Ignore
+ @Test
+ public void doImport() throws Exception {
+
+ assertImportCommonData();
+
+ assertNoEntities(DataAcquisition.class,
+ DataProcessing.class,
+ Cell.class,
+ Data.class);
+
+ AcousticDataImportConfiguration conf =
+ new AcousticDataImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+ conf.setVesselId(VESSEL_ID);
+ conf.setAcousticDensityUnit("acousticDensityUnit");
+ conf.setAcquisitionSoftwareVersionER60("acquisitionSoftwareVersionER60");
+ conf.setAcquisitionSoftwareVersionME70("acquisitionSoftwareVersionME70");
+ conf.setAddDataAcquisition(false);
+ conf.setTransceiverAcquisitionAbsorptionDescription("transceiverAcquisitionAbsorptionDescription");
+ conf.setCellPositionReference(CellPositionReference.START);
+ conf.setDigitThreshold(1.5f);
+ conf.setEchosounderSoundSpeed("echosounderSoundSpeed");
+ conf.setLoggedDataDatatype("loggedDataDatatype");
+ conf.setLoggedDataFormat("loggedDataFormat");
+ conf.setNotes("notes");
+ conf.setPingDutyCycle("pingDutyCycle");
+ conf.setProcessingDescription("processingDescription");
+ conf.setProcessingTemplate("processingTemplate");
+ conf.setSounderConstant(1.0f);
+ conf.setSoundSpeedCalculationsER60("soundSpeedCalculationsER60");
+ conf.setSoundSpeedCalculationsME70("soundSpeedCalculationsME70");
+ conf.setTransceiverAcquisitionAbsorptionDescription("transceiverAcquisitionAbsorptionDescription");
+
+ prepareInputFile(conf.getMoviesFile(), getImportPath("movies.csv"));
+
+ AcousticDataImportService service =
+ getService(AcousticDataImportService.class);
+
+ //FIXME : remove this when db will have such data
+ service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES18-11");
+ service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES38B");
+ service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES70-7C");
+ service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES120-7");
+ service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ES200-7C");
+ service.create(getDAO(AcousticInstrument.class), AcousticInstrument.PROPERTY_ID, "ME70");
+
+ List<CsvFileImportResult> result =
+ service.doImport(conf, createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ CsvFileImportResult importResult = result.get(0);
+ assertCsvImportResult(importResult, DataAcquisition.class, NB_DATA_ACQUISITION);
+ assertCsvImportResult(importResult, DataProcessing.class, NB_DATA_PROCESSING);
+ assertCsvImportResult(importResult, Cell.class, NB_CELL);
+ assertCsvImportResult(importResult, Data.class, NB_DATA);
+
+ assertImportAcousticDatas();
+ }
+
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AcousticDataImportServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CatchesDataImportServiceIT.java (from rev 338, trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CatchesDataImportServiceTest.java)
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CatchesDataImportServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CatchesDataImportServiceIT.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,187 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.entities.data.Sample;
+import fr.ifremer.echobase.entities.data.SampleData;
+import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
+import fr.ifremer.echobase.services.configurations.CatchesDataImportConfiguration;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Tests {@link CatchesDataImportService}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class CatchesDataImportServiceIT extends AbstractImportDataServiceIT {
+
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(
+ IMPORT_DATA_ECHOBASE_OPERATION_RESULT);
+ }
+
+ protected String[] getImportPath(String filename) {
+ return new String[]{"/import-data", "catchesData", filename};
+ }
+
+ @Test
+ public void doImportAllSamples() throws Exception {
+
+ assertImportCommonData();
+ assertImportOperations();
+ assertNoEntities(Sample.class, SampleData.class);
+
+ CatchesDataImportConfiguration conf =
+ new CatchesDataImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+
+ prepareInputFile(conf.getTotalSampleFile(),
+ getImportPath("totalsample.csv"));
+ prepareInputFile(conf.getSubSampleFile(),
+ getImportPath("subsample.csv"));
+// prepareInputFile(conf.getBiometrySampleFile(),
+// getImportPath("biometrysample.csv"));
+
+ CatchesDataImportService service =
+ getService(CatchesDataImportService.class);
+
+ List<CsvFileImportResult> result = service.doImport(conf,
+ createFakeUser());
+
+ Assert.assertNotNull(result);
+// Assert.assertEquals(3, result.size());
+ Assert.assertEquals(2, result.size());
+ Iterator<CsvFileImportResult> iterator = result.iterator();
+ CsvFileImportResult importResult;
+
+ importResult = iterator.next();
+ assertCsvImportResult(importResult, Sample.class, NB_SAMPLE_TOTAL, 0, NB_SAMPLE);
+ assertCsvImportResult(importResult, SampleData.class, NB_SAMPLE_DATA_TOTAL, 0, NB_SAMPLE_DATA);
+ importResult = iterator.next();
+ assertCsvImportResult(importResult, Sample.class, NB_SAMPLE_UNSORTED, 0, NB_SAMPLE);
+ assertCsvImportResult(importResult, SampleData.class, NB_SAMPLE_DATA_UNSORTED, 0, NB_SAMPLE_DATA);
+// importResult = iterator.next();
+// assertCsvImportResult(importResult, Sample.class, NB_SAMPLE_BIOMETRY, 0, NB_SAMPLE);
+// assertCsvImportResult(importResult, SampleData.class, NB_SAMPLE_DATA_BIOMETRY, 0, NB_SAMPLE_DATA);
+
+ assertImportSampleDatas();
+ }
+
+ @Ignore
+ @Test
+ public void doImportTotalSample() throws Exception {
+
+ assertImportCommonData();
+ assertImportOperations();
+ assertNoEntities(Sample.class, SampleData.class);
+
+ CatchesDataImportConfiguration conf =
+ new CatchesDataImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+
+ prepareInputFile(conf.getTotalSampleFile(),
+ getImportPath("totalsample.csv"));
+
+ CatchesDataImportService service =
+ getService(CatchesDataImportService.class);
+
+ List<CsvFileImportResult> result = service.doImport(conf,
+ createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ CsvFileImportResult importResult = result.get(0);
+ assertCsvImportResult(importResult, Sample.class, NB_SAMPLE_TOTAL);
+ assertCsvImportResult(importResult, SampleData.class, NB_SAMPLE_DATA_TOTAL);
+ }
+
+ @Ignore
+ @Test
+ public void doImportSubSample() throws Exception {
+
+ assertImportCommonData();
+ assertImportOperations();
+ assertNoEntities(Sample.class, SampleData.class);
+
+ CatchesDataImportConfiguration conf =
+ new CatchesDataImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+
+ prepareInputFile(conf.getSubSampleFile(),
+ getImportPath("subsample.csv"));
+
+ CatchesDataImportService service =
+ getService(CatchesDataImportService.class);
+
+ List<CsvFileImportResult> result = service.doImport(conf,
+ createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ Iterator<CsvFileImportResult> iterator = result.iterator();
+ CsvFileImportResult importResult = iterator.next();
+ assertCsvImportResult(importResult, Sample.class, NB_SAMPLE_UNSORTED);
+ assertCsvImportResult(importResult, SampleData.class, NB_SAMPLE_DATA_UNSORTED);
+ }
+
+ @Ignore
+ @Test
+ public void doImportBiometrySample() throws Exception {
+
+ assertImportCommonData();
+ assertImportOperations();
+ assertNoEntities(Sample.class, SampleData.class);
+
+ CatchesDataImportConfiguration conf =
+ new CatchesDataImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+
+ prepareInputFile(conf.getBiometrySampleFile(),
+ getImportPath("biometrysample.csv"));
+
+ CatchesDataImportService service =
+ getService(CatchesDataImportService.class);
+ List<CsvFileImportResult> result = service.doImport(conf,
+ createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ Iterator<CsvFileImportResult> iterator = result.iterator();
+ CsvFileImportResult importResult = iterator.next();
+ assertCsvImportResult(importResult, Sample.class, NB_SAMPLE_BIOMETRY);
+ assertCsvImportResult(importResult, SampleData.class, NB_SAMPLE_DATA_BIOMETRY);
+ }
+
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CatchesDataImportServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonData2ImportServiceIT.java (from rev 334, trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportService2Test.java)
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonData2ImportServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonData2ImportServiceIT.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,93 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.Transit;
+import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
+import fr.ifremer.echobase.services.configurations.CommonDataImportConfiguration;
+import fr.ifremer.echobase.services.configurations.CommonDataImportMode;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Tests {@link CommonDataImportService} with {@link CommonDataImportMode#TRANSECT} mode.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class CommonData2ImportServiceIT extends AbstractImportDataServiceIT {
+
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(
+ IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
+ }
+
+ @Test
+ public void doImport() throws Exception {
+
+ // import with mode transect
+
+ assertImportCommonData();
+
+ CommonDataImportConfiguration conf =
+ new CommonDataImportConfiguration(getLocale());
+
+ conf.setAreaOfOperationId(AREA_OF_OPERATION_ID);
+ conf.setDatum("datum");
+ conf.setVoyageId(getVoyageId());
+ conf.setTransectBinUnitsPingAxis("transectBinUnitsPingAxis");
+ conf.setTransectGeospatialVerticalPositive("transectGeospatialVerticalPositive");
+ conf.setTransectLicence("transectLicence");
+
+ prepareInputFile(conf.getTransectFile(), getImportPath("transect.csv"));
+
+ conf.setImportMode(CommonDataImportMode.TRANSECT);
+
+ CommonDataImportService service =
+ getService(CommonDataImportService.class);
+
+ // let's delete every transects
+ for (Transit transit : getEntities(Transit.class)) {
+ transit.clearTransect();
+ }
+ List<CsvFileImportResult> result = service.doImport(conf, createFakeUser());
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ Iterator<CsvFileImportResult> iterator = result.iterator();
+ assertCsvImportResult(iterator.next(), Transect.class,
+ NB_TRANSECT);
+
+ assertImportCommonData();
+ }
+
+ protected String[] getImportPath(String filename) {
+ return new String[]{"/import-data", "commonData", filename};
+ }
+
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonData2ImportServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonDataImportServiceIT.java (from rev 334, trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/CommonDataImportServiceTest.java)
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonDataImportServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonDataImportServiceIT.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,100 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.Transit;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
+import fr.ifremer.echobase.services.configurations.CommonDataImportConfiguration;
+import fr.ifremer.echobase.services.configurations.CommonDataImportMode;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Tests {@link CommonDataImportService} with {@link CommonDataImportMode#ALL} mode.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class CommonDataImportServiceIT extends AbstractImportDataServiceIT {
+
+ @Override
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(
+ IMPORT_DATA_ECHOBASE_NO_DATA);
+ }
+
+ @Test
+ public void doImport() throws Exception {
+
+ // no data in db
+
+ assertNoEntities(Voyage.class, Transit.class, Transect.class);
+
+ // import with mode all (voyage / transit / transect)
+
+ CommonDataImportConfiguration conf =
+ new CommonDataImportConfiguration(getLocale());
+
+ conf.setAreaOfOperationId(AREA_OF_OPERATION_ID);
+ conf.setDatum("datum");
+ conf.setMissionId(MISSION_ID);
+ conf.setTransectBinUnitsPingAxis("transectBinUnitsPingAxis");
+ conf.setTransectGeospatialVerticalPositive("transectGeospatialVerticalPositive");
+ conf.setTransectLicence("transectLicence");
+ conf.setTransitRelatedActivity("transitRelatedActivity");
+ conf.setVoyageDescription("voyageDescription");
+
+ prepareInputFile(conf.getVoyageFile(), getImportPath("voyage.csv"));
+ prepareInputFile(conf.getTransitFile(), getImportPath("transit.csv"));
+ prepareInputFile(conf.getTransectFile(), getImportPath("transect.csv"));
+
+ conf.setImportMode(CommonDataImportMode.ALL);
+
+ CommonDataImportService service =
+ getService(CommonDataImportService.class);
+
+ List<CsvFileImportResult> result =
+ service.doImport(conf, createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(3, result.size());
+ Iterator<CsvFileImportResult> iterator = result.iterator();
+ assertCsvImportResult(iterator.next(), Voyage.class, NB_VOYAGE);
+ assertCsvImportResult(iterator.next(), Transit.class, NB_TRANSIT);
+ assertCsvImportResult(iterator.next(), Transect.class, NB_TRANSECT);
+
+ assertImportCommonData();
+ }
+
+ protected String[] getImportPath(String filename) {
+ return new String[]{"/import-data", "commonData", filename};
+ }
+
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/CommonDataImportServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/OperationImportServiceIT.java (from rev 338, trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/OperationImportServiceTest.java)
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/OperationImportServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/OperationImportServiceIT.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,90 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.entities.data.GearMetadataValue;
+import fr.ifremer.echobase.entities.data.Operation;
+import fr.ifremer.echobase.entities.data.OperationMetadataValue;
+import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
+import fr.ifremer.echobase.services.configurations.OperationImportConfiguration;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Tests {@link OperationImportService}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class OperationImportServiceIT extends AbstractImportDataServiceIT {
+
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(
+ IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
+ }
+
+ protected String[] getImportPath(String filename) {
+ return new String[]{"/import-data", "operation", filename};
+ }
+
+ @Test
+ public void doImport() throws Exception {
+
+ assertImportCommonData();
+
+ assertNoEntities(Operation.class,
+ OperationMetadataValue.class,
+ GearMetadataValue.class);
+
+ OperationImportConfiguration conf =
+ new OperationImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+
+ prepareInputFile(conf.getOperationFile(),
+ getImportPath("operation.csv"));
+ prepareInputFile(conf.getOperationMetadataFile(),
+ getImportPath("operationmetadatavalue.csv"));
+ prepareInputFile(conf.getGearMetadataFile(),
+ getImportPath("gearmetadatavalue.csv"));
+
+ OperationImportService service =
+ getService(OperationImportService.class);
+
+ List<CsvFileImportResult> result = service.doImport(conf, createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(3, result.size());
+ Iterator<CsvFileImportResult> iterator = result.iterator();
+ assertCsvImportResult(iterator.next(), Operation.class, NB_OPERATION);
+ assertCsvImportResult(iterator.next(), OperationMetadataValue.class, NB_OPERATION_METADATAVALUE);
+ assertCsvImportResult(iterator.next(), GearMetadataValue.class, NB_GEAR_METADATAVALUE);
+
+ assertImportOperations();
+ }
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/OperationImportServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsImportServiceIT.java (from rev 336, trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ResultsImportServiceTest.java)
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsImportServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsImportServiceIT.java 2012-03-10 00:53:51 UTC (rev 345)
@@ -0,0 +1,135 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.importdata;
+
+import fr.ifremer.echobase.entities.data.Echotype;
+import fr.ifremer.echobase.entities.data.LengthAgeKey;
+import fr.ifremer.echobase.entities.data.LengthWeightKey;
+import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
+import fr.ifremer.echobase.services.configurations.ResultsImportConfiguration;
+import fr.ifremer.echobase.services.configurations.ResultsImportMode;
+import fr.ifremer.echobase.services.csv.CsvFileImportResult;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.List;
+
+/**
+ * Tests {@link ResultsImportService}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class ResultsImportServiceIT extends AbstractImportDataServiceIT {
+
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(
+ IMPORT_DATA_ECHOBASE_COMMON_DATA_RESULT);
+ }
+
+ protected String[] getImportPath(String filename) {
+ return new String[]{"/import-data", "result", filename};
+ }
+
+ @Test
+ public void doImportLengthAgeKey() throws Exception {
+
+ assertImportCommonData();
+ assertNoEntities(LengthAgeKey.class);
+
+ ResultsImportConfiguration conf =
+ new ResultsImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+ conf.setImportMode(ResultsImportMode.VOYAGE);
+
+ prepareInputFile(conf.getLengthAgeKeyFile(),
+ getImportPath("lengthAgeKey.csv"));
+
+ ResultsImportService service =
+ getService(ResultsImportService.class);
+
+ List<CsvFileImportResult> result =
+ service.doImport(conf, createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ assertCsvImportResult(result.get(0), LengthAgeKey.class,
+ NB_LENGTH_AGE_KEY);
+ }
+
+ @Test
+ public void doImportLengthWeightKey() throws Exception {
+
+ assertImportCommonData();
+ assertNoEntities(LengthWeightKey.class);
+
+ ResultsImportConfiguration conf =
+ new ResultsImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+ conf.setImportMode(ResultsImportMode.VOYAGE);
+
+ prepareInputFile(conf.getLengthWeightKeyFile(),
+ getImportPath("lengthWeightKey.csv"));
+
+ ResultsImportService service =
+ getService(ResultsImportService.class);
+
+ List<CsvFileImportResult> result =
+ service.doImport(conf, createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ assertCsvImportResult(result.get(0), LengthWeightKey.class,
+ NB_LENGTH_WEIGHT_KEY);
+ }
+
+ @Test
+ public void doImportEchotype() throws Exception {
+
+ assertImportCommonData();
+ assertNoEntities(Echotype.class);
+
+ ResultsImportConfiguration conf =
+ new ResultsImportConfiguration(getLocale());
+
+ conf.setVoyageId(getVoyageId());
+ conf.setImportMode(ResultsImportMode.VOYAGE);
+
+ prepareInputFile(conf.getEchotypeFile(), getImportPath("echotype.csv"));
+
+ ResultsImportService service =
+ getService(ResultsImportService.class);
+
+ List<CsvFileImportResult> result =
+ service.doImport(conf, createFakeUser());
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.size());
+ assertCsvImportResult(result.get(0), Echotype.class,
+ NB_ECHOTYPE);
+ }
+
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsImportServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r344 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services
by tchemit@users.forge.codelutin.com 09 Mar '12
by tchemit@users.forge.codelutin.com 09 Mar '12
09 Mar '12
Author: tchemit
Date: 2012-03-10 00:52:25 +0100 (Sat, 10 Mar 2012)
New Revision: 344
Url: http://forge.codelutin.com/repositories/revision/echobase/344
Log:
fix build api
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2012-03-09 23:47:04 UTC (rev 343)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2012-03-09 23:52:25 UTC (rev 344)
@@ -33,6 +33,7 @@
import fr.ifremer.echobase.entities.EntitiesUtil;
import fr.ifremer.echobase.entities.ExportQuery;
import fr.ifremer.echobase.services.configurations.EmbeddedApplicationConfiguration;
+import fr.ifremer.echobase.services.exceptions.ExportQueryNameAlreadyExistException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -167,7 +168,7 @@
protected TopiaContext createH2Batabase(EmbeddedApplicationConfiguration model,
File zipDirectory,
boolean closeRootContext
- ) throws IOException, TopiaException {
+ ) throws IOException, TopiaException, ExportQueryNameAlreadyExistException {
model.incrementsProgression();
1
0
r343 - in trunk/echobase-ui/src/main: java/fr/ifremer/echobase/ui java/fr/ifremer/echobase/ui/actions java/fr/ifremer/echobase/ui/actions/exportQuery resources/config resources/fr/ifremer/echobase/ui/actions resources/fr/ifremer/echobase/ui/actions/exportQuery resources/i18n webapp/WEB-INF webapp/WEB-INF/decorators webapp/WEB-INF/includes webapp/WEB-INF/jsp/dbeditor webapp/WEB-INF/jsp/exportQuery webapp/css
by tchemit@users.forge.codelutin.com 09 Mar '12
by tchemit@users.forge.codelutin.com 09 Mar '12
09 Mar '12
Author: tchemit
Date: 2012-03-10 00:47:04 +0100 (Sat, 10 Mar 2012)
New Revision: 343
Url: http://forge.codelutin.com/repositories/revision/echobase/343
Log:
improve export query ui
add non admin restrictions
Added:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/confirmDeleteQuery.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp
Removed:
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/export/
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-saveExportQuery-validation.xml
Modified:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java
trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml
trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQueryResult.jsp
trunk/echobase-ui/src/main/webapp/css/screen.css
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2012-03-09 23:47:04 UTC (rev 343)
@@ -93,7 +93,7 @@
applicationContext.setConfiguration(configuration);
if (log.isInfoEnabled()) {
- log.info("Initializing RootContextSupplier...");
+ log.info("Initializing RootContext...");
}
EchoBaseTopiaRootContextFactory factory =
new EchoBaseTopiaRootContextFactory();
@@ -146,7 +146,7 @@
}
if (rootContext != null) {
if (log.isInfoEnabled()) {
- log.info("Shuting down RootContextSupplier...");
+ log.info("Shuting down RootContext...");
}
if (!rootContext.isClosed()) {
try {
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2012-03-09 23:47:04 UTC (rev 343)
@@ -179,4 +179,9 @@
}
}
}
+
+ public boolean isAdmin() {
+ EchoBaseUser user = getEchoBaseUser();
+ return user!=null && user.isAdmin();
+ }
}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2012-03-09 23:47:04 UTC (rev 343)
@@ -132,6 +132,12 @@
return echoBaseSession;
}
+ public boolean isAdmin() {
+ EchoBaseSession session = getEchoBaseSession();
+ boolean result = session.isAdmin();
+ return result;
+ }
+
public static String getApplicationVersion() {
return getEchoBaseApplicationContext().getConfiguration().getApplicationVersion().toString();
}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2012-03-09 23:47:04 UTC (rev 343)
@@ -24,10 +24,14 @@
package fr.ifremer.echobase.ui.actions.exportQuery;
import com.opensymphony.xwork2.Preparable;
+import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.ExportQuery;
import fr.ifremer.echobase.services.ExportQueryService;
+import fr.ifremer.echobase.services.exceptions.ExportQueryNameAlreadyExistException;
import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import java.util.Collection;
import java.util.Map;
@@ -42,12 +46,23 @@
private static final long serialVersionUID = 1L;
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ManageExportQuery.class);
+
/** All available queries from database. */
protected Map<String, String> queries;
/** Selected query loaded from database if his id is not empty. */
protected ExportQuery query;
+ protected boolean newQuery;
+
+ protected boolean newLibreOfficeQuery;
+
+ protected boolean queryExists;
+
+ protected boolean canUpdateQuery;
+
protected transient ExportQueryService service;
public ExportQueryService getService() {
@@ -72,27 +87,67 @@
return queries;
}
+ public boolean isNewQuery() {
+ return newQuery;
+ }
+
+ public void setNewQuery(boolean newQuery) {
+ this.newQuery = newQuery;
+ }
+
+ public boolean isNewLibreOfficeQuery() {
+ return newLibreOfficeQuery;
+ }
+
+ public void setNewLibreOfficeQuery(boolean newLibreOfficeQuery) {
+ this.newLibreOfficeQuery = newLibreOfficeQuery;
+ }
+
+ public boolean isCanUpdateQuery() {
+ return canUpdateQuery;
+ }
+
+ public boolean isQueryExists() {
+ return StringUtils.isNotEmpty(getQuery().getTopiaId());
+ }
+
public String saveQuery() throws Exception {
- //TODO : do validation
+ String result = INPUT;
- query = getService().createOrUpdate(getQuery(),
- getEchoBaseSession().getEchoBaseUser()
- );
- return SUCCESS;
+ boolean safeSql = checkQuery(getQuery().getSqlQuery());
+
+ if (safeSql) {
+ try {
+ query = getService().createOrUpdate(getQuery(),
+ getEchoBaseSession().getEchoBaseUser()
+ );
+
+ result = SUCCESS;
+ } catch (ExportQueryNameAlreadyExistException e) {
+ addFieldError("query.name",
+ _("echobase.error.query.name.already.exists"));
+
+ }
+ }
+ return result;
}
public String cloneQuery() throws Exception {
- //TODO : do validation
-
getQuery().setTopiaId(null);
+ getQuery().setName(getQuery().getName() + "-clone");
query = getService().createOrUpdate(getQuery(),
getEchoBaseSession().getEchoBaseUser()
);
return SUCCESS;
}
+ public String confirmDeleteQuery() throws Exception {
+
+ return SUCCESS;
+ }
+
public String deleteQuery() throws Exception {
//TODO : do validation
@@ -102,27 +157,77 @@
}
@Override
+ public String execute() {
+
+ if (StringUtils.isNotEmpty(getQuery().getTopiaId())) {
+
+ // test query
+ checkQuery(getQuery().getSqlQuery());
+ }
+ return SUCCESS;
+ }
+
+ private boolean checkQuery(String sql) {
+ boolean result;
+ try {
+ getService().testSql(sql);
+ result = true;
+ } catch (Exception e) {
+ Throwable cause = e.getCause();
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid sql ", cause);
+ }
+ addFieldError("query.sqlQuery",
+ _("echobase.error.invalid.sql", cause.getMessage()));
+ result = false;
+ }
+ return result;
+ }
+
+ @Override
public void prepare() throws Exception {
Collection<ExportQuery> sqlQueries =
getService().getEntities(ExportQuery.class);
+
queries = sortAndDecorate(sqlQueries, null);
if (sqlQueries.isEmpty()) {
+
// no query saved
addActionMessage(_("echobase.info.no.sqlQuery.saved"));
} else {
String selectedQueryId = getQuery().getTopiaId();
- if (StringUtils.isEmpty(selectedQueryId)) {
+ if (!isQueryExists()) {
- // no query selected
- addActionMessage(_("echobase.info.no.sqlQuery.selected"));
+ if (isNewQuery() || isNewLibreOfficeQuery()) {
+
+ // new query in progress
+ addActionMessage(_("echobase.info.new.sqlQuery.inprogress"));
+ } else {
+
+ // no query selected
+ addActionMessage(_("echobase.info.no.sqlQuery.selected"));
+ }
} else {
// load query from database
query = getService().getExportQuery(selectedQueryId);
+
+ EchoBaseUser echoBaseUser =
+ getEchoBaseSession().getEchoBaseUser();
+ canUpdateQuery = echoBaseUser.isAdmin() ||
+ echoBaseUser.getEmail().equals(
+ query.getLastModifiedUser());
+
+ if (!canUpdateQuery) {
+
+ // this user can not update selected query
+ addActionMessage(
+ _("echobase.info.sqlQuery.not.modifiable"));
+ }
}
}
}
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java 2012-03-09 23:47:04 UTC (rev 343)
@@ -0,0 +1,80 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.exportQuery;
+
+import fr.ifremer.echobase.services.ExportQueryService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * To deal with a new libre office request.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class NewLibreOfficeQuery extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(NewLibreOfficeQuery.class);
+
+ protected String libreOfficeQuery;
+
+ protected String resultQuery;
+
+ public String getLibreOfficeQuery() {
+ return libreOfficeQuery;
+ }
+
+ public void setLibreOfficeQuery(String libreOfficeQuery) {
+ this.libreOfficeQuery = libreOfficeQuery;
+ }
+
+ public String getResultQuery() {
+ return resultQuery;
+ }
+
+ public void setResultQuery(String resultQuery) {
+ this.resultQuery = resultQuery;
+ }
+
+ @Override
+ public String execute() {
+
+ if (log.isInfoEnabled()) {
+ log.info("Incoming query = " + libreOfficeQuery);
+ }
+
+ ExportQueryService service = newService(ExportQueryService.class);
+
+ resultQuery = service.processLibreOfficeSqlQuery(libreOfficeQuery);
+
+ if (log.isInfoEnabled()) {
+ log.info("Processed query " + resultQuery);
+ }
+ return SUCCESS;
+ }
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml 2012-03-09 23:47:04 UTC (rev 343)
@@ -42,10 +42,10 @@
</result-types>
<!-- Display export query main page -->
- <action name="manageExportQuery" method="input"
+ <action name="manageExportQuery"
class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
<interceptor-ref name="paramsPrepareParamsStackLoggued"/>
- <result name="input">/WEB-INF/jsp/exportQuery/exportQuery.jsp</result>
+ <result>/WEB-INF/jsp/exportQuery/exportQuery.jsp</result>
</action>
<!-- Display the result of the export query execution -->
@@ -54,6 +54,14 @@
<result>/WEB-INF/jsp/exportQuery/exportQueryResult.jsp</result>
</action>
+ <!-- Display the result of the export query execution -->
+ <action name="newLibreOfficeQuery"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.NewLibreOfficeQuery">
+ <result name="input">/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp
+ </result>
+ <result type="json"/>
+ </action>
+
<!-- Get result of the export query execution -->
<action name="getExportQueryResult"
class="fr.ifremer.echobase.ui.actions.exportQuery.GetExportQueryResult">
@@ -61,7 +69,7 @@
</action>
<!-- Clone the export query -->
- <action name="cloneExportQuery" method="cloneQuery"
+ <action name="clone" method="cloneQuery"
class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
<interceptor-ref name="paramsPrepareParamsStackLoggued"/>
<result name="input">/WEB-INF/jsp/exportQuery/exportQuery.jsp</result>
@@ -69,21 +77,29 @@
</action>
<!-- Save the export query -->
- <action name="saveExportQuery" method="saveQuery"
+ <action name="save" method="saveQuery"
class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
<interceptor-ref name="paramsPrepareParamsStackLoggued"/>
<result name="input">/WEB-INF/jsp/exportQuery/exportQuery.jsp</result>
<result type="redirectExportQuery"/>
</action>
+ <!-- Confirm to delete the export query -->
+ <action name="confirmDelete" method="confirmDeleteQuery"
+ class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
+ <interceptor-ref name="paramsPrepareParamsStackLoggued"/>
+ <result>/WEB-INF/jsp/exportQuery/confirmDeleteQuery.jsp</result>
+ </action>
+
<!-- Delete the export query -->
- <action name="deleteExportQuery" method="deleteQuery"
+ <action name="delete" method="deleteQuery"
class="fr.ifremer.echobase.ui.actions.exportQuery.ManageExportQuery">
<interceptor-ref name="paramsPrepareParamsStackLoggued"/>
<result name="input">/WEB-INF/jsp/exportQuery/exportQuery.jsp</result>
<result type="redirectExportQuery"/>
</action>
+
<!-- Download the sql query csv file -->
<action name="downloadExportQueryResult"
class="fr.ifremer.echobase.ui.actions.exportQuery.DownloadExportQueryResult">
Added: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml (rev 0)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml 2012-03-09 23:47:04 UTC (rev 343)
@@ -0,0 +1,50 @@
+<!--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ -->
+<!DOCTYPE validators PUBLIC
+ "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
+ "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
+<validators>
+
+ <field name="query.name">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.name.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.description">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.description.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.sqlQuery">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.sqlQuery.requiredstring"/>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-clone-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml (rev 0)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml 2012-03-09 23:47:04 UTC (rev 343)
@@ -0,0 +1,81 @@
+<!--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ -->
+<!DOCTYPE validators PUBLIC
+ "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
+ "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
+<validators>
+
+ <field name="query.name">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.name.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.description">
+
+ <field-validator type="requiredstring">
+ <message key="echobase.error.export.description.requiredstring"/>
+ </field-validator>
+ </field>
+
+ <field name="query.sqlQuery">
+
+ <field-validator type="requiredstring" short-circuit="true">
+ <message key="echobase.error.export.sqlQuery.requiredstring"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("insert")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.insert.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("update")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.update.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("delete")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.delete.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("drop")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.drop.word"/>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[!query.sqlQuery.toLowerCase().contains("alter")]]></param>
+ <message key="echobase.error.export.sqlQuery.forbidden.alter.word"/>
+ </field-validator>
+
+ </field>
+
+</validators>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-save-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-saveExportQuery-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/export/ManageExportQuery-saveExportQuery-validation.xml 2012-03-01 22:47:17 UTC (rev 334)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery-saveExportQuery-validation.xml 2012-03-09 23:47:04 UTC (rev 343)
@@ -1,56 +0,0 @@
-<!--
- #%L
- EchoBase :: UI
-
- $Id$
- $HeadURL$
- %%
- Copyright (C) 2011 Ifremer, Codelutin
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- #L%
- -->
-<!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
-<validators>
-
- <field name="query.name">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.name.requiredstring"/>
- </field-validator>
- </field>
-
- <field name="query.description">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.description.requiredstring"/>
- </field-validator>
- </field>
-
- <field name="query.sqlQuery">
-
- <field-validator type="requiredstring">
- <message key="echobase.error.export.sqlQuery.requiredstring"/>
- </field-validator>
- <field-validator type="regex">
- <!-- TODO sletellier 2011/11/14 : Find a better regex exression to define sql query -->
- <param name="expression">^\s*select\s+.+\s+from\s+.+$</param>
- <param name="caseSensitive">false</param>
- <message key="echobase.error.export.sqlQuery.wrongformat"/>
- </field-validator>
- </field>
-
-</validators>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-03-09 23:47:04 UTC (rev 343)
@@ -1,3 +1,8 @@
+echobase.action.cancel=Cancel
+echobase.action.generateSqlQuery=Generate request
+echobase.action.newLibreOfficeQuery=New Libre office request
+echobase.action.newQuery=New request
+echobase.action.saveSqlQuery=Update query
echobase.action.toEnglish=Use english version
echobase.action.toFrench=Use the french version
echobase.action.usingEnglish=English version used
@@ -5,25 +10,41 @@
echobase.common.importError=Message d'erreur
echobase.common.importFileName=Nom du fichier importé
echobase.common.nbCreatedObjects=Nombre d'objets crées
-echobase.error.bad.password=
-echobase.error.email.already.used=
-echobase.error.login.unknown=
-echobase.error.mission.name.already.exist=
+echobase.confirm.delete.query=Confirm to delete export query
+echobase.error.bad.password=Bad password
+echobase.error.email.already.used=Email already used
+echobase.error.export.sqlQuery.forbidden.alter.word=Export query contains a forbidden word 'ALTER'
+echobase.error.export.sqlQuery.forbidden.delete.word=Export query contains a forbidden word 'DELETE'
+echobase.error.export.sqlQuery.forbidden.drop.word=Export query contains a forbidden word 'DROP'
+echobase.error.export.sqlQuery.forbidden.insert.word=Export query contains a forbidden word 'INSERT'
+echobase.error.export.sqlQuery.forbidden.update.word=Export query contains a forbidden word 'UPDATE'
+echobase.error.invalid.sql=Invalid request \: %s
+echobase.error.login.unknown=Unkwon login
+echobase.error.mission.name.already.exist=Mission name already exists
echobase.error.no.embeddedApplication.configurationFound=
echobase.error.no.embeddedApplication.exportFileFound=
echobase.error.no.exportDb.configurationFound=
echobase.error.no.exportDb.exportFileFound=
-echobase.error.required.email=
-echobase.error.required.password=
-echobase.error.warlocation.notFound=
+echobase.error.query.name.already.exists=Query name already used
+echobase.error.required.email=Email is required
+echobase.error.required.password=Password is required
+echobase.error.warlocation.notFound=War not found at location %s
echobase.info.import.failed=L'import a échoué.
echobase.info.import.succeded=
+echobase.info.new.sqlQuery.inprogress=\=New query creation in progress
echobase.info.no.sqlQuery.saved=
echobase.info.no.sqlQuery.selected=
echobase.info.no.table.selected=
echobase.info.no.voyagee.found=
+echobase.info.sqlQuery.not.modifiable=Current user can not udate the selected query
echobase.info.user.create=
echobase.info.user.delete=
echobase.info.user.update=
echobase.information.mission.created=
+echobase.legend.dbeditor.show=Visualisation de '%s'
echobase.legend.importData.result.resume=Résultat
+echobase.legend.libreOfficeQuery=Requète "libre office"
+echobase.menu.editData=Modify datas
+echobase.menu.viewData=view datas
+echobase.title.confirm.deleteQuery=Delete a export query
+echobase.title.newLibreOfficeQuery=Import a new "Libre-Office" request
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-09 23:47:04 UTC (rev 343)
@@ -1,28 +1,33 @@
echobase.action.applySqlQuery=Appliquer la requête
echobase.action.backToUserList=Retour à la liste des utilisateurs
-echobase.action.cloneSqlQuery=Cloner la requête
+echobase.action.cancel=Annuler
+echobase.action.cloneSqlQuery=Cloner
echobase.action.configureImport=Configurer l'import
echobase.action.create=Créer
echobase.action.createEmbeddedApplication=Créer l'application
echobase.action.createMission=Créer la mission
+echobase.action.createSqlQuery=Enregistrer
echobase.action.delete=Suppression
-echobase.action.deleteSqlQuery=Supprimer la requête
+echobase.action.deleteSqlQuery=Supprimer
echobase.action.downloadEmbeddedApplicationFile=Télécharger l'application embarquée
echobase.action.downloadExportDbFile=Télécharger le fichier d'export de la base complête
echobase.action.export=Exporter
echobase.action.exportSqlData=Exporter les données
echobase.action.exportTable=Exporter
+echobase.action.generateSqlQuery=Générer la requète
echobase.action.import=Importer
echobase.action.importTable=Importer
echobase.action.locale.english=Anglais
echobase.action.locale.french=Français
echobase.action.login=Connection
echobase.action.logout=Déconnexion
+echobase.action.newLibreOfficeQuery=Nouvelle requète Libre office
+echobase.action.newQuery=Nouvelle requète
echobase.action.reloadSqlQuery=Recharger
echobase.action.reset=Annuler
echobase.action.return=Retour
echobase.action.save=Sauvegarder
-echobase.action.saveSqlQuery=Enregistrer la requête
+echobase.action.saveSqlQuery=Mettre à jour
echobase.action.toEnglish=Utiliser la version anglaise
echobase.action.toFrench=Utiliser la version française
echobase.action.usingEnglish=Version anglaise utilisé
@@ -64,10 +69,16 @@
echobase.common.transitRelatedActivity=RelatedActivity (transit)
echobase.common.user=Utilisateur
echobase.common.voyageDescription=Description
+echobase.confirm.delete.query=Confirmer la suppression de la requète suivante
echobase.error.bad.password=Mot de passe incorrrect
echobase.error.email.already.used=Nom d'utilisateur déjà pris
echobase.error.export.description.requiredstring=La description de l'export est obligatoire
echobase.error.export.name.requiredstring=Le nom de l'export est obligatoire
+echobase.error.export.sqlQuery.forbidden.alter.word=La requète contient le mot 'ALTER', ce qui est interdit
+echobase.error.export.sqlQuery.forbidden.delete.word=La requète contient le mot 'DELETE', ce qui est interdit
+echobase.error.export.sqlQuery.forbidden.drop.word=La requète contient le mot 'DROP', ce qui est interdit
+echobase.error.export.sqlQuery.forbidden.insert.word=La requète contient le mot 'INSERT', ce qui est interdit
+echobase.error.export.sqlQuery.forbidden.update.word=La requète contient le mot 'UPDATE', ce qui est interdit
echobase.error.export.sqlQuery.requiredstring=La requête de l'export est obligatoire
echobase.error.export.sqlQuery.wrongformat=La requêtes n'est pas valide
echobase.error.import.acousticDensityUnit.required=acousticDensityUnit non renseigné
@@ -118,6 +129,7 @@
echobase.error.import.xtblTriFile.required=La sélection d'un fichier xtblTri est obligatoire
echobase.error.importFile.required=Fichier d'import obligatoire
echobase.error.importHistorical.input.required=Le fichier d'import est obligatoire
+echobase.error.invalid.sql=Requète non valide \: %s
echobase.error.login.unknown=Utilisateur inconnu
echobase.error.login.wrongLogin=Le login est déjà utilisé
echobase.error.mission.name.already.exist=Nom de mission déjà utilisé
@@ -125,6 +137,7 @@
echobase.error.no.embeddedApplication.exportFileFound=L'application embarquée générée non trouvée
echobase.error.no.exportDb.configurationFound=La configuration de l'export de la base non trouvée
echobase.error.no.exportDb.exportFileFound=L'archive d'export de la base non trouvée
+echobase.error.query.name.already.exists=Nom de requète déjà utilisé
echobase.error.required.email=L'email est obligatoire
echobase.error.required.password=Le mot de passe est obligatoire
echobase.error.warlocation.notFound=L'application n'a pas été trouvé à l'emplacement suivant %s
@@ -133,10 +146,12 @@
echobase.info.dbeditor.propertyDiffsResult=Résultat d'import de données
echobase.info.import.failed=L'import a échoué.
echobase.info.import.succeded=L'import a réussi.
+echobase.info.new.sqlQuery.inprogress=Nouvelle requète en cours de création
echobase.info.no.sqlQuery.saved=Aucune requête d'export sql enregistrée
echobase.info.no.sqlQuery.selected=Aucune requête d'export sql sélectionnée
echobase.info.no.table.selected=Aucune table sélectionnée
echobase.info.no.voyagee.found=Aucune campagne à exporter
+echobase.info.sqlQuery.not.modifiable=Vous ne pouvez pas modifier la requète sélectionnée
echobase.info.user.create=L'utilisateur '%s' a été créée
echobase.info.user.delete=L'utilisateur '%s' a été supprimé
echobase.info.user.update=L'utilisateur '%s' a été mis à jour
@@ -171,6 +186,7 @@
echobase.label.voyageToSelect=Voyage à exporter
echobase.legend.connectionToDb.detail=Détail de la connection à la base de données
echobase.legend.dbeditor.edit=Edition de '%s'
+echobase.legend.dbeditor.show=Visualisation de '%s'
echobase.legend.embeddedApplication.configuration=Configuration de l'application embarquée
echobase.legend.exportDb.configuration.files=Configuration de l'export
echobase.legend.importData.configuration.files=Choix des fichiers d'import
@@ -184,23 +200,26 @@
echobase.legend.importData.result.resume=Résultat
echobase.legend.importDb.configuration.files=Choix du fichier d'import de la base complête (fichier zip)
echobase.legend.importFileResult=Résultat de l'import %s
+echobase.legend.libreOfficeQuery=Requète "libre office"
echobase.legend.sqlQuery.configuration=Configuration de la requête
echobase.legend.sqlQuery.result=Résultats de la requête
echobase.menu.connectToDbInformations=Informations de connection à la base de données
echobase.menu.createEmbeddedApplication=Créer une application embarquée
-echobase.menu.dbeditor=Modifier les données
+echobase.menu.editData=Modifier les données
echobase.menu.export=Exporter des données
echobase.menu.exportDb=Exporter une base complête
echobase.menu.importData=Importer des données
echobase.menu.importDb=Importer une base complête
echobase.menu.logs=Journal des modifications
echobase.menu.users=Gérer les utilisateurs
+echobase.menu.viewData=Visualiser les données
echobase.message.askAdministratorPassword=Demander à un administrateur le mot de passe pour l'utilisateur donné
echobase.message.no.row.selected=Aucune donnée sélectionnée
echobase.message.noEntrySelection=Aucune entrée sélectionnée
echobase.message.warnEmbeddedApplicationInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de la création de l'application embarquée.
echobase.message.warnExportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de l'export.
echobase.message.warnImportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de l'import.
+echobase.title.confirm.deleteQuery=Supprimer une requète
echobase.title.connectToDbInformations=Informations de connection à la base de données
echobase.title.createEmbeddedApplication=Création de l'application embarquée
echobase.title.createMission=Créer une mission
@@ -224,5 +243,6 @@
echobase.title.importTable=Importer une table
echobase.title.login=Connexion
echobase.title.modification.detail=Détail de la modification
+echobase.title.newLibreOfficeQuery=Importer une requète Libre-office
echobase.title.users=Adminitration des utilisateurs
echobase.title.welcome=Bienvenue dans EchoBase
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2012-03-09 23:47:04 UTC (rev 343)
@@ -37,7 +37,6 @@
jQuery(document).ready(function () {
// apply common style
-// $('fieldset').attr('class', 'ui-widget-content ui-corner-all')
$('fieldset').attr('class', 'ui-corner-all')
});
</script>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml 2012-03-09 23:47:04 UTC (rev 343)
@@ -32,6 +32,8 @@
<pattern>/dbeditor/getForeignEntities*</pattern>
<pattern>/dbeditor/doExport*</pattern>
<pattern>/exportQuery/exportQueryResult*</pattern>
+ <pattern>/exportQuery/newLibreOfficeQuery*</pattern>
+ <pattern>/exportQuery/confirmDelete*</pattern>
<pattern>/importData/get*</pattern>
</excludes>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2012-03-09 23:47:04 UTC (rev 343)
@@ -24,9 +24,6 @@
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
-<s:set var="userIsAdmin"
- value="%{#session.echoBaseSession.echoBaseUser.admin}"/>
-
<div class='displayBlock top'>
<%@ include file="i18n.jsp" %>
@@ -37,8 +34,6 @@
<div id='headerRight'>
<div>
-
-
<s:text name="echobase.label.user.login">
<s:param>
<s:property value="#session.echoBaseSession.echoBaseUser.email"/>
@@ -60,7 +55,7 @@
</div>
<div class="cleanBoth menu">
<ul>
- <s:if test="%{userIsAdmin}">
+ <s:if test="%{admin}">
<li>
<s:a action="configure" namespace="/importDb" method="input" cssClass="impBase">
<span><s:text name="echobase.menu.importDb"/></s:a></span>
@@ -69,23 +64,21 @@
<s:a action="configure" namespace="/exportDb" method="input" cssClass="expBase">
<span><s:text name="echobase.menu.exportDb"/></s:a></span>
</li>
- </s:if>
- <li>
- <s:a action="selectImportType" namespace="/importData" method="input" cssClass="impDonnee">
+ <li>
+ <s:a action="selectImportType" namespace="/importData" method="input" cssClass="impDonnee">
<span><s:text name="echobase.menu.importData"/></s:a></span>
- </li>
- <li>
- <s:a action="manageExportQuery" namespace="/exportQuery" cssClass="expDonnee">
- <span><s:text name="echobase.menu.export"/></span>
- </s:a>
- </li>
- <li>
- <s:a action="dbeditor" namespace="/dbeditor" cssClass="modif">
- <span><s:text name="echobase.menu.dbeditor"/></span>
- </s:a>
- </li>
- <s:if test="%{userIsAdmin}">
+ </li>
<li>
+ <s:a action="manageExportQuery" namespace="/exportQuery" cssClass="expDonnee">
+ <span><s:text name="echobase.menu.export"/></span>
+ </s:a>
+ </li>
+ <li>
+ <s:a action="dbeditor" namespace="/dbeditor" cssClass="modif">
+ <span><s:text name="echobase.menu.editData"/></span>
+ </s:a>
+ </li>
+ <li>
<s:a action="userList" namespace="/user" cssClass="user">
<span><s:text name="echobase.menu.users"/></span>
</s:a>
@@ -96,17 +89,39 @@
<span><s:text name="echobase.menu.createEmbeddedApplication"/></span>
</s:a>
</li>
+ <li>
+ <s:a action="logs" namespace="/user" cssClass="journal">
+ <span><s:text name="echobase.menu.logs"/></span>
+ </s:a>
+ </li>
+ <li>
+ <s:a action="connectToDbInformations" namespace="/user" cssClass="info">
+ <span><s:text name="echobase.menu.connectToDbInformations"/></span>
+ </s:a>
+ </li>
</s:if>
- <li>
- <s:a action="logs" namespace="/user" cssClass="journal">
- <span><s:text name="echobase.menu.logs"/></span>
- </s:a>
- </li>
- <li>
- <s:a action="connectToDbInformations" namespace="/user" cssClass="info">
- <span><s:text name="echobase.menu.connectToDbInformations"/></span>
- </s:a>
- </li>
+ <s:else>
+ <li>
+ <s:a action="manageExportQuery" namespace="/exportQuery" cssClass="expDonnee">
+ <span><s:text name="echobase.menu.export"/></span>
+ </s:a>
+ </li>
+ <li>
+ <s:a action="dbeditor" namespace="/dbeditor" cssClass="modif">
+ <span><s:text name="echobase.menu.viewData"/></span>
+ </s:a>
+ </li>
+ <li>
+ <s:a action="logs" namespace="/user" cssClass="journal">
+ <span><s:text name="echobase.menu.logs"/></span>
+ </s:a>
+ </li>
+ <li>
+ <s:a action="connectToDbInformations" namespace="/user" cssClass="info">
+ <span><s:text name="echobase.menu.connectToDbInformations"/></span>
+ </s:a>
+ </li>
+ </s:else>
</ul>
</div>
</div>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2012-03-09 23:47:04 UTC (rev 343)
@@ -84,7 +84,7 @@
// get entity value from json
jQuery.getJSON("${getTableData}",
- { "entityType":entityType, "id":id }, function (result) {
+ { "entityType":entityType, "id":id }, function (result) {
// get metadatas from the response
var metas = result.metas;
@@ -199,28 +199,27 @@
<s:if test="tableSelected">
<sj:tabbedpanel id="io" collapsible="true">
- <sj:tab id="tab_importForm" target="importForm"
- key='echobase.title.importTable'/>
- <%--label="%{getText('echobase.title.importTable')}"/>--%>
+ <s:if test="admin">
+ <sj:tab id="tab_importForm" target="importForm"
+ key='echobase.title.importTable'/>
+ <s:form id="importForm" namespace="/dbeditor" method="post"
+ enctype="multipart/form-data">
+
+ <s:hidden key="entityType" label=''/>
+ <s:file key="importFile" required="true"
+ label="%{getText('echobase.label.importFile')}"/>
+
+ <s:checkbox key='createIfNotFound' value='true'
+ label='%{getText("echobase.label.createIfNotFound")}'/>
+ <br/>
+ <s:submit key="echobase.action.importTable" action="doImport"
+ align="right"/>
+ </s:form>
+ </s:if>
<sj:tab id="tab_exportForm" target="exportForm"
key="echobase.title.exportTable"/>
- <%--label="%{getText('echobase.title.exportTable')}"/>--%>
- <s:form id="importForm" namespace="/dbeditor" method="post"
- enctype="multipart/form-data">
-
- <s:hidden key="entityType" label=''/>
- <s:file key="importFile" required="true"
- label="%{getText('echobase.label.importFile')}"/>
-
- <s:checkbox key='createIfNotFound' value='true'
- label='%{getText("echobase.label.createIfNotFound")}'/>
- <br/>
- <s:submit key="echobase.action.importTable" action="doImport"
- align="right"/>
- </s:form>
-
<s:form id="exportForm" namespace="/dbeditor" method="post">
<s:hidden key="entityType" label=''/>
<s:textfield key="exportFileName" required="true" size="100"
@@ -294,9 +293,16 @@
<fieldset id="noRowSelected">
<legend>
- <s:text name="echobase.legend.dbeditor.edit">
- <s:param value="%{tableI18nName}"/>
- </s:text>
+ <s:if test="admin">
+ <s:text name="echobase.legend.dbeditor.edit">
+ <s:param value="%{tableI18nName}"/>
+ </s:text>
+ </s:if>
+ <s:else>
+ <s:text name="echobase.legend.dbeditor.show">
+ <s:param value="%{tableI18nName}"/>
+ </s:text>
+ </s:else>
</legend>
<i><s:text name="echobase.message.no.row.selected"/>.</i>
</fieldset>
@@ -304,67 +310,67 @@
<s:form id="editForm" namespace="/dbeditor">
<fieldset>
<legend>
- <s:text name="echobase.legend.dbeditor.edit">
- <s:param value="%{tableI18nName}"/>
- </s:text>
+ <s:if test="admin">
+ <s:text name="echobase.legend.dbeditor.edit">
+ <s:param value="%{tableI18nName}"/>
+ </s:text>
+ </s:if>
+ <s:else>
+ <s:text name="echobase.legend.dbeditor.show">
+ <s:param value="%{tableI18nName}"/>
+ </s:text>
+ </s:else>
</legend>
<s:hidden key="entityType" label=''/>
<s:hidden id="topiaId" name='topiaId' label=''/>
- <s:textfield id="entityId" name='topiaId' label='%{getText("echobase.common.id")}' readonly="true" size="250"/>
+ <s:textfield id="entityId" name='topiaId' readonly="true"
+ label='%{getText("echobase.common.id")}' size="250"/>
<s:iterator value="columnMetas" var="meta" status="status">
<s:set var="metaName" value='%{#meta.name}'/>
<s:if test="#meta.fK">
- <s:url id="urlName"
- action="getForeignEntities"
- namespace="/dbeditor"
+ <s:url id="urlName" action="getForeignEntities" namespace="/dbeditor"
escapeAmp="false">
<s:param name="entityType" value="%{#meta.typeSimpleName}"/>
</s:url>
- <sj:select id="%{#metaName}"
- label="%{#metaName}"
- href="%{urlName}"
- list="entities"
- emptyOption="true"/>
+ <sj:select id="%{#metaName}" label="%{#metaName}" readonly="%{!admin}"
+ href="%{urlName}" list="entities" emptyOption="true"/>
</s:if>
<s:else>
<s:if test='#meta.columnType == "string"'>
- <s:textfield id="%{#metaName}"
- name="%{#metaName}"
- label="%{#metaName}"
- disabled="%{#meta.fK}"
- value="" size="250"/>
+ <s:textfield id="%{#metaName}" name="%{#metaName}"
+ label="%{#metaName}" disabled="%{#meta.fK}"
+ value="" size="250" readonly="%{!admin}"/>
</s:if>
<s:elseif test='#meta.columnType == "boolean"'>
- <s:checkbox id="%{#metaName}"
- name="%{#metaName}"
+ <s:checkbox id="%{#metaName}" name="%{#metaName}"
+ readonly="%{!admin}"
label="%{#metaName}" value="%{false}"/>
</s:elseif>
<s:elseif test='#meta.columnType == "date"'>
- <sj:datepicker id="%{#metaName}"
- name="%{#metaName}"
- label="%{#metaName}"
- value="%{new java.util.Date()}"
- displayFormat="dd/mm/yy"
- timepicker="true"
- timepickerShowSecond="true"
+ <sj:datepicker id="%{#metaName}" name="%{#metaName}"
+ label="%{#metaName}" value="%{new java.util.Date()}"
+ displayFormat="dd/mm/yy" timepicker="true"
+ timepickerShowSecond="true" readonly="%{!admin}"
timepickerFormat="hh:mm:ss"/>
</s:elseif>
</s:else>
<br/>
</s:iterator>
</fieldset>
- <ul class="toolbar floatRight">
- <li><s:submit name='resetAction' key="echobase.action.reset"
- theme="simple" onclick="return false;"/>
- </li>
- <li><s:submit name="submitAction" key="echobase.action.save"
- action="editTableData" theme="simple"/>
- </li>
- </ul>
+ <s:if test="admin">
+ <ul class="toolbar floatRight">
+ <li><s:submit name='resetAction' key="echobase.action.reset"
+ theme="simple" onclick="return false;"/>
+ </li>
+ <li><s:submit name="submitAction" key="echobase.action.save"
+ action="editTableData" theme="simple"/>
+ </li>
+ </ul>
+ </s:if>
</s:form>
</s:if>
Added: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/confirmDeleteQuery.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/confirmDeleteQuery.jsp (rev 0)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/confirmDeleteQuery.jsp 2012-03-09 23:47:04 UTC (rev 343)
@@ -0,0 +1,75 @@
+<%--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ --%>
+<%@page contentType="text/html" pageEncoding="UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
+
+
+<script type="text/javascript">
+
+ function cancel() {
+ $('#confirDeleteDialog').dialog('close');
+ return false;
+ }
+</script>
+
+<div class="dialogContainer ui-corner-all">
+
+ <s:label key="echobase.confirm.delete.query" theme="simple"/>
+
+ <fieldset class="ui-corner-all">
+
+
+
+ <s:textarea name="query.name" required="true" cols="160" rows="1"
+ readonly="true"
+ label="%{getText('echobase.label.query.name')}"/>
+
+ <s:textarea name="query.description" required="true" cols="160" rows="2"
+ readonly="true"
+ label="%{getText('echobase.label.query.description')}"/>
+
+ <s:textarea name="query.sqlQuery" required="true" cols="160" rows="4"
+ label="%{getText('echobase.label.query.sql')}"/>
+
+ <br/>
+
+ <s:form namespace="/exportQuery">
+
+ <s:hidden key="query.topiaId" label=''/>
+
+ <ul class="toolbar floatRight">
+ <li>
+ <s:submit onclick="return cancel();" theme="simple"
+ key="echobase.action.cancel"/>
+ </li>
+ <li>
+ <s:submit action="delete" theme="simple"
+ key="echobase.action.deleteSqlQuery"/>
+ </li>
+ </ul>
+ </s:form>
+ </fieldset>
+
+</div>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/confirmDeleteQuery.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp 2012-03-09 23:47:04 UTC (rev 343)
@@ -25,112 +25,189 @@
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
-<s:url id="reloadUrl" action='manageExportQuery' namespace='/exportQuery'/>
-<s:url id="exportSqlResultUrl" action="exportQueryResult" namespace="/exportQuery"/>
<s:set var="noError" value="!hasErrors()"/>
+
+<%--s:set var="queryExists" value="query.topiaId != null && query.topiaId != ''"/--%>
+<%--s:set var="canUpdateQuery"
+ value="%{admin or query.lastModifiedUser == echoBaseSession.echoBaseUser.email}"/--%>
+
<script type="text/javascript">
- function reloadQuery() {
- var queryId = $('[name="query.topiaId"]').val();
- var url = "${reloadUrl}?" + $.param({ 'query.topiaId':queryId});
- window.location = url;
+ function reloadPage(params) {
+ var url = "<s:url action='manageExportQuery' namespace='/exportQuery'/>?";
+ window.location = url + $.param(params);
return false;
}
- function loadGridData() {
- // get sql query
- var sqlQuery = "${exportSqlResultUrl}?" +
- $.param({ sql :$('[name="query.sqlQuery"]').val()});
-
- $.ajax(sqlQuery, {
- success: function(data, textStatus, jqXHR) {
- $('#resultGrid').html(data);
+ function newQuery(newParam) {
+ if (<s:property value="%{queryExists or (!newQuery and !newLibreOfficeQuery)}"/>) {
+ var params = {};
+ params[newParam] = true;
+ reloadPage(params);
+ } else {
+ $('[name="query.topiaId"]').val('');
+ $('[name="query.name"]').val('');
+ $('[name="query.description"]').val('');
+ $('[name="query.sqlQuery"]').val('');
+ if (newParam=='newLibreOfficeQuery') {
+ openNewLibreOfficeDialog();
}
- });
+ }
return false;
}
- jQuery(document).ready(function () {
+ function reloadQuery() {
+ return reloadPage({'query.topiaId':'<s:property value="query.topiaId"/>'});
+ }
- $('[name="query.topiaId"]').change(function(event) {
- var url = "${reloadUrl}?" + $.param({ 'query.topiaId':this.value});
- window.location = url;
- });
+ function openNewLibreOfficeDialog() {
+ var dialog = $("#newLibreOfficeDialog");
+ var url = "<s:url action='newLibreOfficeQuery' namespace='/exportQuery' method="input"/>";
+ dialog.load(url);
+ dialog.dialog('open');
+ }
- var queryId = $('[name="query.topiaId"]').val();
- if (queryId && ${noError}) {
- // auto launch query
- loadGridData();
+ function newLibreOfficeQuery() {
+ if (<s:property value="%{queryExists or (!newQuery and !newLibreOfficeQuery)}"/>) {
+ reloadPage({'newLibreOfficeQuery':true});
+ } else {
+ $('[name="query.topiaId"]').val('');
+ $('[name="query.name"]').val('');
+ $('[name="query.description"]').val('');
+ $('[name="query.sqlQuery"]').val('');
+ openNewLibreOfficeDialog();
}
+ return false;
+ }
- });
-
-
+ function confirmDeleteQuery() {
+ var url = "<s:url action='confirmDelete' namespace='/exportQuery'/>?" +
+ $.param({ 'query.topiaId':'<s:property value="query.topiaId"/>'});
+ var dialog = $("#confirDeleteDialog");
+ dialog.load(url);
+ dialog.dialog('open');
+ return false;
+ }
</script>
<title><s:text name="echobase.title.export"/></title>
-<s:set var="queryExists" value="query.topiaId != null && query.topiaId != ''"/>
-
<s:form id="exportQueryForm" namespace="/exportQuery">
- <s:select key="query.topiaId" label="%{getText('echobase.label.sqlQueries')}"
- list="queries" headerKey="" headerValue=""/>
+ <ul class="toolbar floatLeft">
+ <li>
+ <s:submit onclick="return newQuery('newQuery');" theme="simple"
+ key="echobase.action.newQuery"/>
+ </li>
+ <li>
+ <s:submit onclick="return newQuery('newLibreOfficeQuery');" theme="simple"
+ key="echobase.action.newLibreOfficeQuery"/>
+ </li>
+ </ul>
- <br/>
-
<fieldset>
- <legend><s:text name="echobase.legend.sqlQuery.configuration"/></legend>
+ <legend><s:text name="echobase.label.sqlQueries"/></legend>
+ <s:select key="query.topiaId" cssStyle="font-size: 140%"
+ label="%{getText('echobase.label.sqlQueries')}"
+ list="queries" headerKey="" headerValue="" theme="simple"/>
+ </fieldset>
- <s:textarea key="query.name" required="true" cols="160" rows="1"
- label="%{getText('echobase.label.query.name')}"/>
+ <s:if test="%{!#noError or queryExists or newQuery or newLibreOfficeQuery}">
+ <fieldset>
+ <legend><s:text name="echobase.legend.sqlQuery.configuration"/></legend>
- <s:textarea key="query.description" required="true" cols="160" rows="2"
- label="%{getText('echobase.label.query.description')}"/>
+ <s:textarea key="query.name" required="true" cols="160" rows="1"
+ readonly="%{queryExists and !canUpdateQuery}"
+ label="%{getText('echobase.label.query.name')}"/>
- <s:textarea key="query.sqlQuery" required="true" cols="160" rows="4"
- label="%{getText('echobase.label.query.sql')}"/>
+ <s:textarea key="query.description" required="true" cols="160" rows="2"
+ readonly="%{queryExists and !canUpdateQuery}"
+ label="%{getText('echobase.label.query.description')}"/>
- <s:if test="queryExists">
+ <s:textarea key="query.sqlQuery" required="true" cols="160" rows="4"
+ readonly="%{queryExists and !canUpdateQuery}"
+ label="%{getText('echobase.label.query.sql')}"/>
- <s:label value="%{query.lastModifiedDate}" readonly="true"
- label="%{getText('echobase.common.lastModifiedDate')}"/>
+ <s:if test="queryExists">
+ <s:label value="%{query.lastModifiedDate}" readonly="true"
+ label="%{getText('echobase.common.lastModifiedDate')}"/>
- <s:label value="%{query.lastModifiedUser}" readonly="true"
- label="%{getText('echobase.common.lastModifiedUser')}"/>
+ <s:label value="%{query.lastModifiedUser}" readonly="true"
+ label="%{getText('echobase.common.lastModifiedUser')}"/>
+ </s:if>
- </s:if>
-
-
- <ul class="toolbar floatRight">
- <s:if test="queryExists">
- <li>
- <s:submit onclick="return reloadQuery();" theme="simple"
- key="echobase.action.reloadSqlQuery"/>
- </li>
- <li>
- <s:submit action="cloneExportQuery" theme="simple"
- key="echobase.action.cloneSqlQuery"/>
- </li>
- <li>
- <s:submit action="deleteExportQuery" theme="simple"
- key="echobase.action.deleteSqlQuery"/>
- </li>
- </s:if>
- <li>
- <s:submit action="saveExportQuery" theme="simple"
- key="echobase.action.saveSqlQuery"/>
- </li>
- <li>
- <s:submit key="echobase.action.applySqlQuery" theme="simple"
- onclick="return loadGridData();"/>
- </li>
- </ul>
- </fieldset>
+ <ul id="dbeditorToolbar" class="toolbar floatRight">
+ <s:if test="queryExists">
+ <li>
+ <s:submit onclick="return reloadQuery();" theme="simple"
+ key="echobase.action.reloadSqlQuery"/>
+ </li>
+ <li>
+ <s:submit action="clone" theme="simple"
+ key="echobase.action.cloneSqlQuery"/>
+ </li>
+ <s:if test="canUpdateQuery">
+ <li>
+ <s:submit onclick="return confirmDeleteQuery();" theme="simple"
+ key="echobase.action.deleteSqlQuery"/>
+ </li>
+ <li>
+ <s:submit action="save" theme="simple"
+ key="echobase.action.saveSqlQuery"/>
+ </li>
+ </s:if>
+ </s:if>
+ <s:if test="%{!queryExists}">
+ <li>
+ <s:submit action="save" theme="simple"
+ key="echobase.action.createSqlQuery"/>
+ </li>
+ </s:if>
+ </ul>
+ </fieldset>
+ </s:if>
</s:form>
<br/>
<div id="resultGrid" class="cleanBoth"></div>
+<sj:dialog id="newLibreOfficeDialog" resizable="false"
+ title="%{getText('echobase.title.newLibreOfficeQuery')}"
+ autoOpen="false" modal="true" width="780"/>
+<sj:dialog id="confirDeleteDialog" resizable="false"
+ title="%{getText('echobase.title.confirm.deleteQuery')}"
+ autoOpen="false" modal="true" width="780"/>
+
+<script type="text/javascript">
+
+ jQuery(document).ready(function () {
+
+ $('[name="query.topiaId"]').change(function (event) {
+ reloadPage({'query.topiaId':this.value});
+ });
+
+ if (<s:property value='%{#noError and queryExists}'/>) {
+
+ // load sql query
+ $.ajax(
+ {
+ url:'<s:url action="exportQueryResult" namespace="/exportQuery"/>',
+ data:{sql:$('[name="query.sqlQuery"]').val()},
+ success:function (data, textStatus, jqXHR) {
+ $('#resultGrid').html(data);
+ }
+ });
+ }
+
+ if (<s:property value="newLibreOfficeQuery"/>) {
+
+ // auto load new libreOffice dialog
+ openNewLibreOfficeDialog();
+ }
+ });
+
+</script>
+
+
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQueryResult.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQueryResult.jsp 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQueryResult.jsp 2012-03-09 23:47:04 UTC (rev 343)
@@ -52,7 +52,7 @@
<s:form action="downloadExportQueryResult" namespace="/exportQuery">
- <fieldset>
+ <fieldset class="ui-corner-all">
<legend><s:text name="echobase.legend.sqlQuery.result"/></legend>
<s:hidden key="sql" label=""/>
Added: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp (rev 0)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp 2012-03-09 23:47:04 UTC (rev 343)
@@ -0,0 +1,94 @@
+<%--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ --%>
+<%@page contentType="text/html" pageEncoding="UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
+
+<s:set var="noError" value="!hasErrors()"/>
+
+<script type="text/javascript">
+
+ function generateSqlQuery() {
+
+ var libreOfficeQuery = $('[name="libreOfficeQuery"]').val();
+
+ console.info("libreOfficeQuery = "+libreOfficeQuery);
+
+ var canQuit = true;
+
+ $.ajax(
+ {
+ url:'<s:url action="newLibreOfficeQuery" namespace="/exportQuery"/>',
+ data:{libreOfficeQuery:libreOfficeQuery},
+ async:false,
+ dataType:"json",
+ success:function (data, textStatus) {
+ var libreOfficeQuery = data.libreOfficeQuery;
+ var resultQuery = data.resultQuery;
+ console.info("libreOfficeQuery = "+libreOfficeQuery);
+ console.info("resultQuery = "+resultQuery);
+ $('[name="query.sqlQuery"]').val(resultQuery);
+ }
+ });
+
+ if (canQuit) {
+ return cancel();
+ }
+ return false;
+ }
+
+ function cancel() {
+ $('#newLibreOfficeDialog').dialog('close');
+ return false;
+ }
+
+ jQuery(document).ready(function () {
+
+ });
+
+</script>
+
+<title><s:text name="echobase.title.export"/></title>
+<div class="dialogContainer ui-corner-all">
+ <%--s:form--%>
+
+ <fieldset class="ui-corner-all">
+ <legend><s:text name="echobase.legend.libreOfficeQuery"/></legend>
+
+ <s:textarea name="libreOfficeQuery" required="true" cols="500" rows="8"
+ theme="simple" value=""/>
+
+ <ul class="toolbar floatRight">
+ <li>
+ <s:submit onclick="return cancel();" theme="simple"
+ key="echobase.action.cancel"/>
+ </li>
+ <li>
+ <s:submit onclick="return generateSqlQuery();" theme="simple"
+ key="echobase.action.generateSqlQuery"/>
+ </li>
+ </ul>
+ </fieldset>
+ <%--/s:form--%>
+</div>
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/webapp/css/screen.css
===================================================================
--- trunk/echobase-ui/src/main/webapp/css/screen.css 2012-03-09 23:45:00 UTC (rev 342)
+++ trunk/echobase-ui/src/main/webapp/css/screen.css 2012-03-09 23:47:04 UTC (rev 343)
@@ -263,11 +263,16 @@
float:right;
}
ul.toolbar {
- clear: both;
+ /*clear: both;*/
display: block;
- padding-top: 20px;
+ /*padding-top: 20px;*/
position: relative;
}
+
+#dbeditorToolbar {
+ clear: both;
+ padding-top: 20px;
+}
ul.toolbar li {
display: inline;
padding-bottom: 0;
@@ -374,9 +379,19 @@
padding:20px;
position:relative;
min-width:615px;
+ min-height:415px;
clear:both;
color:#FFF;
}
+
+.dialogContainer{
+ background:#03497c;
+ padding:20px;
+ position:relative;
+ clear:both;
+ color:#FFF;
+}
+
.containerHome{
margin:3em 8em;
background:#03497c;
@@ -408,7 +423,7 @@
label{
font-size:140%;
}
-input, textarea{
+input, textarea, select{
border:3px solid #0063ab;
border-radius:5px;
-moz-border-radius:5px;
@@ -417,7 +432,7 @@
margin-bottom: 10px;
max-width: 500px;
}
-input[type="password"], input[type="text"]{
+input[type="password"], input[type="text"], select{
height:35px;
}
input[type="submit"]{
1
0
r342 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services main/java/fr/ifremer/echobase/services/exceptions main/resources/i18n test/java/fr/ifremer/echobase/services
by tchemit@users.forge.codelutin.com 09 Mar '12
by tchemit@users.forge.codelutin.com 09 Mar '12
09 Mar '12
Author: tchemit
Date: 2012-03-10 00:45:00 +0100 (Sat, 10 Mar 2012)
New Revision: 342
Url: http://forge.codelutin.com/repositories/revision/echobase/342
Log:
improve export sql service
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportQueryService.java
trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties
trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportQueryService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportQueryService.java 2012-03-09 23:36:57 UTC (rev 341)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportQueryService.java 2012-03-09 23:45:00 UTC (rev 342)
@@ -29,12 +29,14 @@
import fr.ifremer.echobase.entities.ExportQuery;
import fr.ifremer.echobase.entities.ExportQueryImpl;
import fr.ifremer.echobase.services.csv.ExportQueryCsvModel;
+import fr.ifremer.echobase.services.exceptions.ExportQueryNameAlreadyExistException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaContextImplementor;
+import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.framework.TopiaSQLQuery;
import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.util.PagerUtil;
@@ -71,20 +73,40 @@
}
public ExportQuery createOrUpdate(ExportQuery exportQuery,
- EchoBaseUser user) {
+ EchoBaseUser user) throws ExportQueryNameAlreadyExistException {
try {
TopiaDAO<ExportQuery> dao = getDAO(ExportQuery.class);
- ExportQuery entityToSave;
// No id, creating new one entity
String id = exportQuery.getTopiaId();
- if (StringUtils.isEmpty(id)) {
+
+ boolean mustCreate = StringUtils.isEmpty(id);
+
+ String queryName = exportQuery.getName();
+
+ TopiaQuery query = dao.createQuery();
+ query.addWhere(ExportQuery.PROPERTY_NAME, TopiaQuery.Op.EQ, queryName);
+
+ if (!mustCreate) {
+ query.addWhere(ExportQuery.TOPIA_ID, TopiaQuery.Op.NEQ, id);
+ }
+
+ // check query does not already exists with this name
+ boolean queryExists = dao.existByQuery(query);
+
+ if (queryExists) {
+ throw new ExportQueryNameAlreadyExistException();
+ }
+
+ ExportQuery entityToSave;
+
+ if (mustCreate) {
entityToSave = dao.create();
} else {
entityToSave = dao.findByTopiaId(id);
}
- entityToSave.setName(exportQuery.getName());
+ entityToSave.setName(queryName);
entityToSave.setDescription(exportQuery.getDescription());
entityToSave.setSqlQuery(exportQuery.getSqlQuery());
entityToSave.setLastModifiedDate(newDate());
@@ -110,6 +132,13 @@
}
}
+ public void testSql(String sql) throws TopiaException {
+
+ GenericSQLQuery sqlQuery = new GenericSQLQuery(sql, null);
+
+ sqlQuery.getColumnNames(getTransaction());
+ }
+
public Map<String, Object>[] executeSql(String sql, PagerUtil.PagerBean pager) {
// get a query to count all rows for the request
@@ -171,6 +200,12 @@
return new ExportQueryImpl();
}
+ public String processLibreOfficeSqlQuery(String libreOfficeQuery) {
+
+ String result = libreOfficeQuery.replaceAll("\\\"", "");
+ return result;
+ }
+
private static class GenericSQLQuery extends TopiaSQLQuery<Map<String, Object>> {
protected String[] columnNames;
@@ -202,6 +237,10 @@
return rows;
}
+ public void testQuery(TopiaContext tx) throws TopiaException {
+ findSingleResult((TopiaContextImplementor) tx);
+ }
+
public String[] getColumnNames(TopiaContext tx) throws TopiaException {
findSingleResult((TopiaContextImplementor) tx);
return columnNames;
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java 2012-03-09 23:45:00 UTC (rev 342)
@@ -0,0 +1,35 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.exceptions;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class ExportQueryNameAlreadyExistException extends Exception{
+
+ private static final long serialVersionUID = 1L;
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties
===================================================================
--- trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties 2012-03-09 23:36:57 UTC (rev 341)
+++ trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties 2012-03-09 23:45:00 UTC (rev 342)
@@ -24,7 +24,6 @@
echobase.common.resultsImportMode.acoustic=
echobase.common.resultsImportMode.region=
echobase.common.resultsImportMode.voyage=
-echobase.common.sampleFile=
echobase.common.subSampleFile=
echobase.common.totalSampleFile=
echobase.common.transectFile=
@@ -35,7 +34,6 @@
echobase.importError.esduCell.notfound=
echobase.importError.fromFile=
echobase.importError.no.transit.between.date=
-echobase.importError.no.transit.imported=
echobase.importError.no.voyage.imported=
echobase.importError.transect.notfound=
echobase.importError.transit.notfound=
Modified: trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties
===================================================================
--- trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-03-09 23:36:57 UTC (rev 341)
+++ trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-03-09 23:45:00 UTC (rev 342)
@@ -34,7 +34,6 @@
echobase.importError.esduCell.notfound=Pas de cellule esdu %s déclarée pour la campagne %s lors de l'iomport d'une cellule élémentaire %s
echobase.importError.fromFile=Erreur lors de l'import du fichier %s \: %s
echobase.importError.no.transit.between.date=Pas de transit trouvé pour le voyage %s entre les dates %s et %s
-echobase.importError.no.transit.imported=Aucun transit importé
echobase.importError.no.voyage.imported=Aucun voyage importé
echobase.importError.transect.notfound=Transit non trouvé pour la campagne %s et la date %s et le navire %s
echobase.importError.transit.notfound=Transit non trouvé pour la campagne %s et la date %s
Added: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java 2012-03-09 23:45:00 UTC (rev 342)
@@ -0,0 +1,70 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * To test {@link ExportQueryService}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class ExportQueryServiceTest extends EchoBaseTestServiceSupport{
+ @Override
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(null);
+ }
+
+ ExportQueryService service;
+
+ @Before
+ public void setup() {
+ service = serviceContext.newService(ExportQueryService.class);
+ }
+
+ @Ignore
+ @Test
+ public void processLibreOfficeSqlQuery() throws Exception {
+
+ processLibreOfficeSqlQuery("select \"t\".name FROM \"t\" WHERE rien;",
+ "select t.name FROM t WHERE rien;");
+
+ processLibreOfficeSqlQuery("select \"t\".name, \"s\".name FROM \"t\", \"s\" WHERE rien;",
+ "select t.name, s.name FROM t, s WHERE rien;");
+
+ processLibreOfficeSqlQuery("select \"t\".name FROM \"t\" WHERE (select \"s\".name FROM \"s\" WHERE rien2);",
+ "select t.name FROM t WHERE (select s.name FROM s WHERE rien2);");
+ }
+
+ protected void processLibreOfficeSqlQuery(String libreOfficeQuery,
+ String expected) {
+
+ String actual = service.processLibreOfficeSqlQuery(libreOfficeQuery);
+ Assert.assertEquals(expected, actual);
+ }
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r341 - in trunk/echobase-entities/src/main: resources/i18n xmi
by tchemit@users.forge.codelutin.com 09 Mar '12
by tchemit@users.forge.codelutin.com 09 Mar '12
09 Mar '12
Author: tchemit
Date: 2012-03-10 00:36:57 +0100 (Sat, 10 Mar 2012)
New Revision: 341
Url: http://forge.codelutin.com/repositories/revision/echobase/341
Log:
renmae regionCell to postCell
Modified:
trunk/echobase-entities/src/main/resources/i18n/echobase-entities_en_GB.properties
trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties
trunk/echobase-entities/src/main/xmi/echobase.zargo
Modified: trunk/echobase-entities/src/main/resources/i18n/echobase-entities_en_GB.properties
===================================================================
--- trunk/echobase-entities/src/main/resources/i18n/echobase-entities_en_GB.properties 2012-03-08 18:36:40 UTC (rev 340)
+++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_en_GB.properties 2012-03-09 23:36:57 UTC (rev 341)
@@ -113,7 +113,6 @@
echobase.common.institution=
echobase.common.invalidSince=
echobase.common.keywords=
-echobase.common.label=
echobase.common.lastModifiedDate=
echobase.common.lastModifiedUser=
echobase.common.length=
@@ -144,7 +143,6 @@
echobase.common.method=
echobase.common.midHaulLatitude=
echobase.common.midHaulLongitude=
-echobase.common.midHauleLatitude=
echobase.common.minDepth=
echobase.common.minFishLength=
echobase.common.minLatitude=
@@ -172,6 +170,7 @@
echobase.common.pingDutyCycle=
echobase.common.platform=
echobase.common.positive=
+echobase.common.postCell=
echobase.common.precision=
echobase.common.principalInvestigator=
echobase.common.principalInvestigatorEmail=
@@ -187,7 +186,6 @@
echobase.common.referenceDatum=
echobase.common.referenceDatumType=
echobase.common.referencingMethod=
-echobase.common.regionCell=
echobase.common.relatedActivity=
echobase.common.report=
echobase.common.result=
@@ -255,7 +253,6 @@
echobase.common.transducerElevation=
echobase.common.transducerLocation=
echobase.common.transducerModel=
-echobase.common.transducerOrientation=
echobase.common.transducerProcessingBeamAngleAlongship=
echobase.common.transducerProcessingBeamAngleAthwartship=
echobase.common.transducerProcessingPsi=
@@ -263,7 +260,6 @@
echobase.common.transect=
echobase.common.transectAbstract=
echobase.common.transit=
-echobase.common.type=
echobase.common.unit=
echobase.common.units=
echobase.common.updateDate=
Modified: trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties
===================================================================
--- trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2012-03-08 18:36:40 UTC (rev 340)
+++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2012-03-09 23:36:57 UTC (rev 341)
@@ -113,7 +113,6 @@
echobase.common.institution=Institution
echobase.common.invalidSince=
echobase.common.keywords=Môts clefs
-echobase.common.label=
echobase.common.lastModifiedDate=Date de dernière modification
echobase.common.lastModifiedUser=Utilisateur de dernière modification
echobase.common.length=
@@ -144,7 +143,6 @@
echobase.common.method=
echobase.common.midHaulLatitude=
echobase.common.midHaulLongitude=
-echobase.common.midHauleLatitude=
echobase.common.minDepth=
echobase.common.minFishLength=
echobase.common.minLatitude=
@@ -172,6 +170,7 @@
echobase.common.pingDutyCycle=
echobase.common.platform=Platform
echobase.common.positive=
+echobase.common.postCell=
echobase.common.precision=
echobase.common.principalInvestigator=Chercheur
echobase.common.principalInvestigatorEmail=Courriel du chercheur
@@ -187,7 +186,6 @@
echobase.common.referenceDatum=ReferenceDatum
echobase.common.referenceDatumType=
echobase.common.referencingMethod=
-echobase.common.regionCell=
echobase.common.relatedActivity=
echobase.common.report=
echobase.common.result=
@@ -255,7 +253,6 @@
echobase.common.transducerElevation=
echobase.common.transducerLocation=
echobase.common.transducerModel=
-echobase.common.transducerOrientation=
echobase.common.transducerProcessingBeamAngleAlongship=
echobase.common.transducerProcessingBeamAngleAthwartship=
echobase.common.transducerProcessingPsi=
@@ -263,7 +260,6 @@
echobase.common.transect=Transect
echobase.common.transectAbstract=
echobase.common.transit=Transit
-echobase.common.type=
echobase.common.unit=
echobase.common.units=
echobase.common.updateDate=
Modified: trunk/echobase-entities/src/main/xmi/echobase.zargo
===================================================================
(Binary files differ)
1
0
Author: tchemit
Date: 2012-03-08 19:36:40 +0100 (Thu, 08 Mar 2012)
New Revision: 340
Url: http://forge.codelutin.com/repositories/revision/echobase/340
Log:
mise a jour CR reunion
Modified:
trunk/src/doc/reunions/reunion-2012-03-06.txt
Modified: trunk/src/doc/reunions/reunion-2012-03-06.txt
===================================================================
--- trunk/src/doc/reunions/reunion-2012-03-06.txt 2012-03-08 18:32:36 UTC (rev 339)
+++ trunk/src/doc/reunions/reunion-2012-03-06.txt 2012-03-08 18:36:40 UTC (rev 340)
@@ -48,6 +48,23 @@
Vérifier la décoration de SpeciesCategory (il manque des choses)
+Création base embarquée
+~~~~~~~~~~~~~~~~~~~~~~~
+
+C'est très lent et ça ne rends pas la main :( Il faut peut-être ne plus utiliser
+la réplication mais un export-import de la base...
+
+Il faudrait aussi pouvoir rajouter l'information du nombre de ligne dans un
+fichier : on peut le rajouter dans le nom du fichier _XXX.csv.
+
+Ca permettrait d'améliorer la barre de progression lors d'un import.
+
+Dbeditor
+~~~~~~~~
+
+remplacer la fenetre de dialogue actuelle pour la recherche car elle est pas
+pratique du tout (pas de redimensionnement, pas déplaçable...).
+
Export sql
~~~~~~~~~~
@@ -95,6 +112,8 @@
Placer l'action de création de mission au niveau de la sélection du type
d'import, ça sera plus intuitif.
+Vérifier que dans les données lgéacy on a bien du Sampledata Lcm.
+
Style
~~~~~
1
0