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
- 1820 discussions
r376 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services test/java/fr/ifremer/echobase/services
by tchemit@users.forge.codelutin.com 19 Mar '12
by tchemit@users.forge.codelutin.com 19 Mar '12
19 Mar '12
Author: tchemit
Date: 2012-03-19 17:46:45 +0100 (Mon, 19 Mar 2012)
New Revision: 376
Url: http://forge.codelutin.com/repositories/revision/echobase/376
Log:
improve code for embedded create application + improve logs of impot db
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.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-19 16:42:51 UTC (rev 375)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2012-03-19 16:46:45 UTC (rev 376)
@@ -29,6 +29,7 @@
import fr.ifremer.echobase.EchoBaseTechnicalException;
import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory;
import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.EntitiesUtil;
import fr.ifremer.echobase.entities.ExportQuery;
import fr.ifremer.echobase.services.configurations.EmbeddedApplicationConfiguration;
import fr.ifremer.echobase.services.configurations.ExportDbConfiguration;
@@ -90,67 +91,130 @@
public File createEmbeddedApplication(EmbeddedApplicationConfiguration model) {
- File warLocation = model.getWarLocation();
+ int nbSteps = computeNbSteps(model);
+ model.setNbSteps(nbSteps);
String fileName = model.getFileName();
- model.setNbSteps(5);
-
File tempDirectory = model.getWorkingDirectory();
+ tempDirectory.deleteOnExit();
File zipFile = new File(tempDirectory, fileName + ".zip");
+ model.setEmbeddedApplicationFile(zipFile);
- tempDirectory.deleteOnExit();
-
File dir = new File(tempDirectory, fileName);
- model.setEmbeddedApplicationFile(zipFile);
-
if (log.isInfoEnabled()) {
log.info("Creates embedded application to file [" + zipFile + "]");
}
+
+ // export db to csv
+ File exportZipFile = exportDb(model, tempDirectory);
+
+ // create static archive structure
+ createStaticArchiveStructure(model, dir);
+
+ model.incrementsProgression();
+
+ // create h2 db in /db
+ TopiaContext rootContext =
+ new EchoBaseTopiaRootContextFactory().newEmbeddedDatabase(dir);
+
try {
+
+ TopiaContext topiaContext = rootContext.beginTransaction();
+
+ model.incrementsProgression();
+
+ // create new service context (with new transaction)
+ EchoBaseServiceContext newServiceContext =
+ DefaultEchoBaseServiceContext.newContext(serviceContext,
+ topiaContext);
+
+ EchoBaseUser admin = createUsers(newServiceContext);
+
+ model.incrementsProgression();
+
+ copyExportQueries(newServiceContext, admin);
+
+ model.incrementsProgression();
+
+ importDb(model, newServiceContext, exportZipFile, admin);
+
+ } catch (Exception eee) {
+ throw new EchoBaseTechnicalException("Could not create h2 embedded database at "+dir,eee);
+ } finally {
+ try {
+ rootContext.closeContext();
+ } catch (TopiaException eee) {
+ throw new EchoBaseTechnicalException("Could not close h2 embedded database at "+dir,eee);
+ }
+ }
+
+ EchoBaseIOUtil.compressZipFile(zipFile, dir);
+ return zipFile;
+ }
+
+ protected int computeNbSteps(EmbeddedApplicationConfiguration model) {
+ int nbSteps = 4;
+
+ // export db steps
+
+ nbSteps += EntitiesUtil.getReferenceEntries(getDbMeta()).length;
+ if (model.getVoyageIds() != null) {
+ nbSteps += model.getVoyageIds().length;
+ }
+
+ // import db stesp
+ nbSteps += EntitiesUtil.getEntries(getDbMeta()).length;
+ return nbSteps;
+ }
+
+ protected void createStaticArchiveStructure(EmbeddedApplicationConfiguration model, File dir) {
+
+
+ try {
+ File warLocation = model.getWarLocation();
+
// create /
FileUtil.createDirectoryIfNecessary(dir);
// copy embedded files to /
copyEmbeddedFiles(model, dir);
- model.incrementsProgression();
-
// copy war to /
FileUtil.copy(warLocation, new File(dir, warLocation.getName()));
+ } catch (Exception eee) {
+ throw new EchoBaseTechnicalException("Could not create embedded zip structure at " + dir, eee);
+ }
+ }
+ protected File exportDb(EmbeddedApplicationConfiguration model,
+ File tempDirectory) {
+
+ try {
// create export zip file
- File exportZipFile = exportDb(model, tempDirectory);
+ ExportDbConfiguration exportconfiguration =
+ new ExportDbConfiguration(model);
+ exportconfiguration.setFileName("echobase-export");
+ File exportTempDir = new File(tempDirectory, "exportDb");
+ exportconfiguration.setWorkingDirectory(exportTempDir);
+ exportconfiguration.setVoyageIds(model.getVoyageIds());
+ ExportDbService exportDbService =
+ serviceContext.newService(ExportDbService.class);
+ exportDbService.exportPartialDb(exportconfiguration, false);
+ File exportZipFile = exportconfiguration.getExportFile();
if (log.isInfoEnabled()) {
log.info("Export zip file = " + exportZipFile);
}
-
- // create h2 db in /db
- createH2Batabase(model, dir, true, exportZipFile);
-
- } catch (Exception eee) {
+ return exportZipFile;
+ } catch (IOException eee) {
throw new EchoBaseTechnicalException(
- "Could not create zip structure at location " +
- dir, eee);
+ "Could not export db to zip", eee);
}
- EchoBaseIOUtil.compressZipFile(zipFile, dir);
- return zipFile;
- }
- protected File exportDb(EmbeddedApplicationConfiguration model,
- File tempDirectory) throws IOException {
- ExportDbConfiguration exportconfiguration = new ExportDbConfiguration(model);
- exportconfiguration.setFileName("echobase-export");
- exportconfiguration.setWorkingDirectory(new File(tempDirectory, "exportDb"));
- exportconfiguration.setVoyageIds(model.getVoyageIds());
-
- ExportDbService exportDbService = serviceContext.newService(ExportDbService.class);
- exportDbService.exportPartialDb(exportconfiguration, false);
- return exportconfiguration.getExportFile();
}
protected void copyEmbeddedFiles(EmbeddedApplicationConfiguration model,
@@ -161,8 +225,6 @@
String in = startFile.getInputFileName();
String out = startFile.getOutputFileName();
- model.incrementsProgression();
-
InputStream inputStream =
getClass().getResourceAsStream(EMBEDDED_PATH + in);
try {
@@ -171,7 +233,8 @@
if (log.isInfoEnabled()) {
log.info("Copy configuration to " + in + " to " + outputFile);
}
- OutputStreamWriter outputStream = new OutputStreamWriter(new FileOutputStream(outputFile), Charsets.UTF_8);
+ OutputStreamWriter outputStream = new OutputStreamWriter(
+ new FileOutputStream(outputFile), Charsets.UTF_8);
try {
IOUtils.copy(inputStream, outputStream);
} finally {
@@ -183,91 +246,56 @@
}
}
- protected TopiaContext createH2Batabase(EmbeddedApplicationConfiguration model,
- File zipDirectory,
- boolean closeRootContext,
- File exportZipFile
- ) throws IOException, TopiaException, ExportQueryNameAlreadyExistException {
+ protected EchoBaseUser createUsers(EchoBaseServiceContext newServiceContext) {
- model.incrementsProgression();
+ // get user service from h2 db
+ UserService userService =
+ newServiceContext.newService(UserService.class);
- // create new h2 db
- TopiaContext rootContext =
- new EchoBaseTopiaRootContextFactory().newEmbeddedDatabase(zipDirectory);
+ // create admin user
+ userService.createDefaultUsers();
- TopiaContext topiaContext = rootContext.beginTransaction();
- try {
+ // get admin from h2 db
+ EchoBaseUser admin = userService.getUserByEmail(
+ UserService.DEFAULT_ADMIN_EMAIL);
+ return admin;
+ }
- model.incrementsProgression();
+ protected void copyExportQueries(EchoBaseServiceContext newServiceContext,
+ EchoBaseUser admin) throws TopiaException, ExportQueryNameAlreadyExistException {
- // create new service context (with new transaction)
- EchoBaseServiceContext newServiceContext =
- DefaultEchoBaseServiceContext.newContext(serviceContext,
- topiaContext);
+ // get all export queries from application
+ List<ExportQuery> queries = getEntities(ExportQuery.class);
- // get user service from h2 db
- UserService userService =
- newServiceContext.newService(UserService.class);
+ // replicate queries
+ getTransaction().replicateEntities(
+ newServiceContext.getTransaction(), queries);
- // create admin user
- userService.createDefaultUsers();
+ // create export sql service from h2 db
+ ExportQueryService exportQueryService =
+ newServiceContext.newService(ExportQueryService.class);
- // get admin from h2 db
- EchoBaseUser admin = userService.getUserByEmail(
- UserService.DEFAULT_ADMIN_EMAIL);
+ // get all queries from h2 db
+ queries = exportQueryService.getEntities(ExportQuery.class);
- model.incrementsProgression();
-
- // get export query service
- ExportQueryService exportQueryService =
- getService(ExportQueryService.class);
-
- // get all export queries from application
- List<ExportQuery> queries =
- exportQueryService.getEntities(ExportQuery.class);
-
- // remove link to application user
- for (ExportQuery query : queries) {
- query.setLastModifiedUser(null);
- }
-
- // replicate queries
- getTransaction().replicateEntities(topiaContext, queries);
-
- // create export sql service from h2 db
- exportQueryService =
- newServiceContext.newService(ExportQueryService.class);
-
- // get all queries from h2 db
- queries = exportQueryService.getEntities(ExportQuery.class);
-
- // attach them to default created admin user in the db
- for (ExportQuery query : queries) {
- exportQueryService.createOrUpdate(query, admin);
- }
-
- model.incrementsProgression();
-
- importDb(model, newServiceContext, exportZipFile, admin);
-
- } finally {
- if (closeRootContext) {
- rootContext.closeContext();
- }
+ // attach them to default created admin user in the db
+ for (ExportQuery query : queries) {
+ exportQueryService.createOrUpdate(query, admin);
}
- return rootContext;
}
protected void importDb(EmbeddedApplicationConfiguration model,
EchoBaseServiceContext newServiceContext,
File exportZipFile,
EchoBaseUser admin) throws IOException, TopiaException {
- ImportDbConfiguration importConfiguration = new ImportDbConfiguration(model, getLocale());
+ ImportDbConfiguration importConfiguration =
+ new ImportDbConfiguration(model, getLocale());
importConfiguration.getInput().setFile(exportZipFile);
- importConfiguration.setWorkingDirectory(new File(model.getWorkingDirectory(), "importDb"));
+ File importTempDir = new File(model.getWorkingDirectory(), "importDb");
+ importConfiguration.setWorkingDirectory(importTempDir);
- ImportDbService importDbService = newServiceContext.newService(ImportDbService.class);
-
+ ImportDbService importDbService =
+ newServiceContext.newService(ImportDbService.class);
importDbService.importDb(importConfiguration, admin, false);
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-03-19 16:42:51 UTC (rev 375)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-03-19 16:46:45 UTC (rev 376)
@@ -39,7 +39,6 @@
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.util.StringUtil;
import org.nuiton.util.TimeLog;
import org.nuiton.util.csv.Import;
import org.nuiton.util.csv.ImportModel;
@@ -86,14 +85,26 @@
ZipFile zipFile = new ZipFile(file);
try {
+ List<String> missingEntries = Lists.newArrayList();
+
Map<MetaFilenameAware, ZipEntry> entriestoConsume = discoverEntries(
- file, zipFile);
+ file, zipFile, missingEntries);
if (computeSteps) {
int size = entriestoConsume.size();
- model.setNbSteps(size + 1);
+ model.setNbSteps(size + missingEntries.size() + 1);
}
+ for (String missingEntry : missingEntries) {
+
+ // skip thoses not found entries
+ model.incrementsProgression();
+
+ if (log.isInfoEnabled()) {
+ log.info("Skip not found entry " + missingEntry);
+ }
+ }
+
// consume all found entries
for (Map.Entry<MetaFilenameAware, ZipEntry> entry :
entriestoConsume.entrySet()) {
@@ -137,10 +148,9 @@
}
protected Map<MetaFilenameAware, ZipEntry> discoverEntries(File file,
- ZipFile zipFile) {
+ ZipFile zipFile,
+ List<String> missingEntries) {
- List<String> missingEntries = Lists.newArrayList();
-
Map<MetaFilenameAware, ZipEntry> result =
Maps.newLinkedHashMap();
@@ -157,10 +167,10 @@
result.put(entry, zipEntry);
}
}
- if (!missingEntries.isEmpty() && log.isWarnEnabled()) {
- log.warn("There is " + missingEntries.size() + " missing files " +
- " in import " + file + "\n" + StringUtil.join(missingEntries, "\n", false));
- }
+// if (!missingEntries.isEmpty() && log.isWarnEnabled()) {
+// log.warn("There is " + missingEntries.size() + " missing files " +
+// " in import " + file + "\n" + StringUtil.join(missingEntries, "\n", false));
+// }
return result;
}
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-19 16:42:51 UTC (rev 375)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java 2012-03-19 16:46:45 UTC (rev 376)
@@ -62,5 +62,8 @@
File zipFile = service.createEmbeddedApplication(conf);
Assert.assertTrue(zipFile.exists());
+ Assert.assertEquals(100f, conf.getProgression(), 1);
+
+ // TODO Test that embedded db has exactly same number of data than in incoming db
}
}
1
0
r375 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations
by tchemit@users.forge.codelutin.com 19 Mar '12
by tchemit@users.forge.codelutin.com 19 Mar '12
19 Mar '12
Author: tchemit
Date: 2012-03-19 17:42:51 +0100 (Mon, 19 Mar 2012)
New Revision: 375
Url: http://forge.codelutin.com/repositories/revision/echobase/375
Log:
add javadoc
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java 2012-03-19 16:00:01 UTC (rev 374)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java 2012-03-19 16:42:51 UTC (rev 375)
@@ -26,10 +26,10 @@
import java.io.Serializable;
/**
- * TODO
+ * Cotnract for a progression model while long service actions.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since TODO
+ * @since 0.3
*/
public interface ProgressionModel extends Serializable {
1
0
r374 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase main/java/fr/ifremer/echobase/services main/java/fr/ifremer/echobase/services/configurations main/java/fr/ifremer/echobase/services/csv main/java/fr/ifremer/echobase/services/exceptions main/java/fr/ifremer/echobase/services/importdata test/java/fr/ifremer/echobase/services test/java/fr/ifremer/echobase/services/importdata
by tchemit@users.forge.codelutin.com 19 Mar '12
by tchemit@users.forge.codelutin.com 19 Mar '12
19 Mar '12
Author: tchemit
Date: 2012-03-19 17:00:01 +0100 (Mon, 19 Mar 2012)
New Revision: 374
Url: http://forge.codelutin.com/repositories/revision/echobase/374
Log:
reformat codes
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticDataImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/BiometrySampleImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModelRow.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModelRow.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModelRow.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -89,6 +89,6 @@
}
public boolean hasFile() {
- return file!=null;
+ return file != null;
}
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -72,8 +72,8 @@
/**
* Import a complete db from the given zip file.
*
- * @param model model of the db import operation
- * @param user user which perform the import
+ * @param model model of the db import operation
+ * @param user user which perform the import
* @param computeSteps flag to compute stesp inside this method
* @throws IOException if any io exception while import
* @throws TopiaException if any pb while topia treatment
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -23,8 +23,6 @@
*/
package fr.ifremer.echobase.services.configurations;
-import org.nuiton.util.StringUtil;
-
import java.io.IOException;
import java.io.Serializable;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticDataImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticDataImportModel.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticDataImportModel.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -41,7 +41,7 @@
public class AcousticDataImportModel extends CsvModelUtil.AbstractImportModel<AcousticDataImportModelRow> {
-/*
+ /*
ESDU Data
Latitude MOVIES_EILayer\\cellset\\lat, OK
@@ -71,7 +71,7 @@
NumberOfSamplesEchoIntegrated MOVIES_EILayer\\cellset\\ni
minEIthr MOVIES_EILayer\cellset\thresholdlow
maxEIthr MOVIES_EILayer\cellset\thresholdup
- */
+ */
public AcousticDataImportModel(char separator,
Map<String, AcousticInstrument> instrumentsById) {
super(separator);
@@ -147,8 +147,8 @@
newIgnoredColumn("MOVIES_EILayer\\eilayer");//BN
newMandatoryColumn("MOVIES_EILayer\\eilayer\\sa", AcousticDataImportModelRow.PROPERTY_CELL_NASC, CsvModelUtil.PRIMITIVE_FLOAT);//BO
newIgnoredColumn("MOVIES_EILayer\\eilayer\\sv");//BP
- newMandatoryColumn("MOVIES_EILayer\\eilayer\\ni", AcousticDataImportModelRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED,CsvModelUtil.PRIMITIVE_INTEGER);//BQ
- newMandatoryColumn("MOVIES_EILayer\\eilayer\\nt", AcousticDataImportModelRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED,CsvModelUtil.PRIMITIVE_INTEGER);//BR
+ newMandatoryColumn("MOVIES_EILayer\\eilayer\\ni", AcousticDataImportModelRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED, CsvModelUtil.PRIMITIVE_INTEGER);//BQ
+ newMandatoryColumn("MOVIES_EILayer\\eilayer\\nt", AcousticDataImportModelRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED, CsvModelUtil.PRIMITIVE_INTEGER);//BR
newIgnoredColumn("MOVIES_EILayer\\boterr");//BR
newIgnoredColumn("MOVIES_EILayer\\boterr\\sa");//BT
newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/BiometrySampleImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/BiometrySampleImportModel.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/BiometrySampleImportModel.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -27,7 +27,6 @@
import fr.ifremer.echobase.entities.data.Sample;
import fr.ifremer.echobase.entities.data.SampleData;
import fr.ifremer.echobase.entities.references.SampleDataType;
-import fr.ifremer.echobase.entities.references.SizeCategory;
import fr.ifremer.echobase.entities.references.Species;
import java.util.Map;
@@ -40,7 +39,7 @@
*/
public class BiometrySampleImportModel extends CsvModelUtil.AbstractImportModel<BiometrySampleImportModelRow> {
- public BiometrySampleImportModel(char separator,Map<String, Operation> operationMap,
+ public BiometrySampleImportModel(char separator, Map<String, Operation> operationMap,
Map<String, Species> speciesMap,
Map<String, SampleDataType> sampleDataTypeMap) {
super(separator);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModel.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModel.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -23,9 +23,9 @@
*/
package fr.ifremer.echobase.services.csv;
+import fr.ifremer.echobase.entities.data.Echotype;
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.references.Species;
import java.util.Map;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModelRow.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchotypeImportModelRow.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -23,10 +23,10 @@
*/
package fr.ifremer.echobase.services.csv;
+import fr.ifremer.echobase.entities.data.Echotype;
+import fr.ifremer.echobase.entities.data.EchotypeImpl;
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.EchotypeImpl;
import fr.ifremer.echobase.entities.references.Species;
import java.io.Serializable;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModel.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModel.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -23,8 +23,8 @@
*/
package fr.ifremer.echobase.services.csv;
+import fr.ifremer.echobase.entities.data.LengthAgeKey;
import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.data.LengthAgeKey;
import fr.ifremer.echobase.entities.references.Species;
import fr.ifremer.echobase.entities.references.Strata;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModelRow.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthAgeKeyImportModelRow.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -23,9 +23,9 @@
*/
package fr.ifremer.echobase.services.csv;
-import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.data.LengthAgeKey;
import fr.ifremer.echobase.entities.data.LengthAgeKeyImpl;
+import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.references.Species;
import fr.ifremer.echobase.entities.references.Strata;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModel.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModel.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -23,8 +23,8 @@
*/
package fr.ifremer.echobase.services.csv;
+import fr.ifremer.echobase.entities.data.LengthWeightKey;
import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.data.LengthWeightKey;
import fr.ifremer.echobase.entities.references.SizeCategory;
import fr.ifremer.echobase.entities.references.Species;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModelRow.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/LengthWeightKeyImportModelRow.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -23,9 +23,9 @@
*/
package fr.ifremer.echobase.services.csv;
-import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.data.LengthWeightKey;
import fr.ifremer.echobase.entities.data.LengthWeightKeyImpl;
+import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.references.SizeCategory;
import fr.ifremer.echobase.entities.references.Species;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -34,7 +34,7 @@
public class RegionCellAssociationImportModelRow {
protected Cell esduCell;
-
+
protected Cell regionSurfaceCell;
protected Cell regionBottomCell;
Modified: 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 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -29,7 +29,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class ExportQueryNameAlreadyExistException extends Exception{
+public class ExportQueryNameAlreadyExistException extends Exception {
private static final long serialVersionUID = 1L;
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -43,7 +43,6 @@
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.TransectImportModel;
@@ -51,6 +50,7 @@
import fr.ifremer.echobase.services.csv.TransitImportModel;
import fr.ifremer.echobase.services.csv.TransitImportModelRow;
import fr.ifremer.echobase.services.csv.VoyageImportModel;
+import fr.ifremer.echobase.services.exceptions.MissionNameAlreadyExistException;
import org.nuiton.topia.TopiaException;
import org.nuiton.util.csv.Import;
import org.nuiton.util.csv.ImportModel;
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-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -32,9 +32,9 @@
import java.io.File;
/**
- * Test all fuctionnality of {@link EmbeddedApplicationService}
+ * Test {@link EmbeddedApplicationService}.
*
- * @author sletellier <letellier(a)codelutin.com>
+ * @author tchemit <chemit(a)codelutin.com>
* @since 0.2
*/
public class EmbeddedApplicationServiceTest extends EchoBaseTestServiceSupport {
@@ -63,44 +63,4 @@
Assert.assertTrue(zipFile.exists());
}
-
-// @Test
-// public void replicateVoyageEntity() throws Exception {
-//
-// String voyageId = getVoyageId();
-//
-// // create new H2 dataBase in target/voyageId
-// TopiaEntity voyageMocked = getEntityById(Voyage.class, voyageId);
-//
-// File testBaseDir = new File(getTestDir(), "replicated");
-//
-// EmbeddedApplicationService service =
-// getService(EmbeddedApplicationService.class);
-//
-// EmbeddedApplicationConfiguration conf = new EmbeddedApplicationConfiguration();
-// conf.setVoyageIds(voyageId);
-// TopiaContext rootContextDest = service.createH2Batabase(conf,
-// testBaseDir,
-// false);
-//
-// // verify that replicated voyage is in new base
-// TopiaContext transactionDest = null;
-// try {
-// transactionDest = rootContextDest.beginTransaction();
-// VoyageDAO voyageDAO = EchoBaseDAOHelper.getVoyageDAO(transactionDest);
-// Voyage voyageReplicated = voyageDAO.findByTopiaId(voyageId);
-//
-// // assert voyage is in new base
-// Assert.assertNotNull(voyageReplicated);
-//
-// // and same ids
-// Assert.assertEquals(voyageMocked, voyageReplicated);
-//
-// // TODO sletellier 20111124 : try to test deph equality between entities
-// } finally {
-// if (transactionDest != null) {
-// transactionDest.closeContext();
-// }
-// }
-// }
}
Modified: 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 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -55,11 +55,11 @@
public static final String IMPORT_DATA_ECHOBASE_OPERATION_RESULT = "/import-data/echobase-0.3-operation-result.h2.db.gz";
- public static final String IMPORT_DATA_ECHOBASE_CATCHES= "/import-data/echobase-0.3-catches.h2.db.gz";
+ public static final String IMPORT_DATA_ECHOBASE_CATCHES = "/import-data/echobase-0.3-catches.h2.db.gz";
- public static final String IMPORT_DATA_ECHOBASE_CATCHES_AND_ACOUSTIC= "/import-data/echobase-0.3-catches-and-acoustic.h2.db.gz";
+ public static final String IMPORT_DATA_ECHOBASE_CATCHES_AND_ACOUSTIC = "/import-data/echobase-0.3-catches-and-acoustic.h2.db.gz";
- public static final String IMPORT_DATA_ECHOBASE_CATCHES_AND_ACOUSTIC_AND_VOYAGE_RESULT= "/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz";
+ public static final String IMPORT_DATA_ECHOBASE_CATCHES_AND_ACOUSTIC_AND_VOYAGE_RESULT = "/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz";
public static final String VESSEL_ID = "fr.ifremer.echobase.entities.references.Vessel#1323196672049#0.9790502711645855";
@@ -111,7 +111,7 @@
public static final int NB_ESDU_RESULT_BY_ECHOTYPE = 8;
- public static final int NB_ESDU_RESULT_BY_ECHOTYPE_AND_SPECIES= 8;
+ public static final int NB_ESDU_RESULT_BY_ECHOTYPE_AND_SPECIES = 8;
public void assertImportCommonData() throws TopiaException {
assertNbEntities(Voyage.class, NB_VOYAGE);
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-19 15:58:51 UTC (rev 373)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-19 16:00:01 UTC (rev 374)
@@ -142,7 +142,6 @@
getImportPath("regionResults.csv"));
-
ResultsImportService service =
getService(ResultsImportService.class);
1
0
19 Mar '12
Author: tchemit
Date: 2012-03-19 16:58:51 +0100 (Mon, 19 Mar 2012)
New Revision: 373
Url: http://forge.codelutin.com/repositories/revision/echobase/373
Log:
redo embeddedApplication service using csv export-import (works much much better than hibernate replication)
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ReplicateEntityVisitor.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/DefaultProgressionModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java
Removed:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseImport.java
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportDbService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/EmbeddedApplicationConfiguration.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ExportDbConfiguration.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ImportDbConfiguration.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/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/EmbeddedApplicationServiceTest.java
trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz
trunk/echobase-services/src/test/resources/log4j.properties
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -74,6 +74,17 @@
}
}
+ public final <E extends TopiaEntity> long countEntities(Class<E> entityType) {
+ Preconditions.checkNotNull(entityType);
+ try {
+ long result = getDAO(entityType).count();
+ return result;
+ } catch (TopiaException eee) {
+ throw new EchoBaseTechnicalException(
+ "Could not count data for type " + entityType, eee);
+ }
+ }
+
public final <E extends TopiaEntity> E getEntityById(Class<E> entityType, String id) {
Preconditions.checkNotNull(entityType);
Preconditions.checkArgument(StringUtils.isNotEmpty(id));
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-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -28,19 +28,17 @@
import fr.ifremer.echobase.EchoBaseIOUtil;
import fr.ifremer.echobase.EchoBaseTechnicalException;
import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.EntitiesUtil;
import fr.ifremer.echobase.entities.ExportQuery;
import fr.ifremer.echobase.services.configurations.EmbeddedApplicationConfiguration;
+import fr.ifremer.echobase.services.configurations.ExportDbConfiguration;
+import fr.ifremer.echobase.services.configurations.ImportDbConfiguration;
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;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.replication.TopiaReplicationService;
-import org.nuiton.topia.replication.model.ReplicationModel;
import org.nuiton.util.FileUtil;
import java.io.File;
@@ -123,8 +121,15 @@
// copy war to /
FileUtil.copy(warLocation, new File(dir, warLocation.getName()));
+ // create export zip file
+ File exportZipFile = exportDb(model, tempDirectory);
+
+ if (log.isInfoEnabled()) {
+ log.info("Export zip file = " + exportZipFile);
+ }
+
// create h2 db in /db
- createH2Batabase(model, dir, true);
+ createH2Batabase(model, dir, true, exportZipFile);
} catch (Exception eee) {
throw new EchoBaseTechnicalException(
@@ -136,8 +141,21 @@
return zipFile;
}
- protected void copyEmbeddedFiles(EmbeddedApplicationConfiguration model, File zipDirectory) throws IOException, URISyntaxException {
+ protected File exportDb(EmbeddedApplicationConfiguration model,
+ File tempDirectory) throws IOException {
+ ExportDbConfiguration exportconfiguration = new ExportDbConfiguration(model);
+ exportconfiguration.setFileName("echobase-export");
+ exportconfiguration.setWorkingDirectory(new File(tempDirectory, "exportDb"));
+ exportconfiguration.setVoyageIds(model.getVoyageIds());
+ ExportDbService exportDbService = serviceContext.newService(ExportDbService.class);
+ exportDbService.exportPartialDb(exportconfiguration, false);
+ return exportconfiguration.getExportFile();
+ }
+
+ protected void copyEmbeddedFiles(EmbeddedApplicationConfiguration model,
+ File zipDirectory) throws IOException, URISyntaxException {
+
for (EmbeddedFile startFile : EmbeddedFile.values()) {
String in = startFile.getInputFileName();
@@ -167,7 +185,8 @@
protected TopiaContext createH2Batabase(EmbeddedApplicationConfiguration model,
File zipDirectory,
- boolean closeRootContext
+ boolean closeRootContext,
+ File exportZipFile
) throws IOException, TopiaException, ExportQueryNameAlreadyExistException {
model.incrementsProgression();
@@ -229,18 +248,8 @@
model.incrementsProgression();
- // replicate referentiel to new h2 db
- replicateReferentiel(topiaContext);
+ importDb(model, newServiceContext, exportZipFile, admin);
- String[] voyageIds = model.getVoyageIds();
-
- if (voyageIds != null) {
-
- model.incrementsProgression();
-
- // replicate selected voyage to new h2 db
- replicateData(topiaContext, voyageIds);
- }
} finally {
if (closeRootContext) {
rootContext.closeContext();
@@ -249,30 +258,17 @@
return rootContext;
}
- protected void replicateData(TopiaContext topiaContextDest,
- String... voyagesIds) throws TopiaException {
- TopiaReplicationService service = getTransaction().getService(TopiaReplicationService.class);
- ReplicationModel replicationModel = service.prepare(EntitiesUtil.getDataTypes(), true, voyagesIds);
- try {
- service.doReplicate(replicationModel, topiaContextDest);
- } catch (Exception eee) {
- throw new EchoBaseTechnicalException(
- "Failed to replicate referentiel : ", eee);
- }
- }
+ protected void importDb(EmbeddedApplicationConfiguration model,
+ EchoBaseServiceContext newServiceContext,
+ File exportZipFile,
+ EchoBaseUser admin) throws IOException, TopiaException {
+ ImportDbConfiguration importConfiguration = new ImportDbConfiguration(model, getLocale());
+ importConfiguration.getInput().setFile(exportZipFile);
+ importConfiguration.setWorkingDirectory(new File(model.getWorkingDirectory(), "importDb"));
- protected void replicateReferentiel(TopiaContext topiaContextDest) throws TopiaException {
+ ImportDbService importDbService = newServiceContext.newService(ImportDbService.class);
- // Get all referenciel contracts
- EchoBaseEntityEnum[] referencielClass = EntitiesUtil.getReferenceTypes();
- TopiaReplicationService service = getTransaction().getService(TopiaReplicationService.class);
- ReplicationModel replicationModel = service.prepareForAll(referencielClass);
- try {
- service.doReplicate(replicationModel, topiaContextDest);
- } catch (Exception eee) {
- throw new EchoBaseTechnicalException(
- "Failed to replicate referentiel : ", eee);
- }
+ importDbService.importDb(importConfiguration, admin, false);
}
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportDbService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportDbService.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportDbService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -23,8 +23,11 @@
*/
package fr.ifremer.echobase.services;
+import com.google.common.collect.Multimap;
import fr.ifremer.echobase.EchoBaseIOUtil;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EntitiesUtil;
+import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.meta.AssociationMeta;
import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
import fr.ifremer.echobase.entities.meta.TableMeta;
@@ -92,8 +95,88 @@
exportService.exportDatas(meta, entryFile);
}
}
+ if (log.isInfoEnabled()) {
+ log.info("Export zip file = " + zipFile);
+ }
+ EchoBaseIOUtil.compressZipFile(zipFile, dir);
+ }
+ /**
+ * Export the partial db into csv files at the given location.
+ *
+ * @param model file name of the zip to create
+ * @param computeSteps flag to compute stesp inside this method
+ * @throws IOException if could not create or write files.
+ */
+ public void exportPartialDb(ExportDbConfiguration model,
+ boolean computeSteps) throws IOException {
+
+ String fileName = model.getFileName();
+
+ File tempDirectory = model.getWorkingDirectory();
+ File dir = new File(tempDirectory, "echobase");
+ FileUtil.createDirectoryIfNecessary(dir);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export to " + dir);
+ }
+
+ File zipFile = new File(tempDirectory, fileName + ".zip");
+ model.setExportFile(zipFile);
+
+ ExportService exportService = getService(ExportService.class);
+
+ MetaFilenameAware[] refEntries =
+ EntitiesUtil.getReferenceEntries(getDbMeta());
+
+ if (computeSteps) {
+ int nbstesp = refEntries.length;
+
+ if (model.getVoyageIds() != null) {
+ nbstesp += model.getVoyageIds().length;
+ }
+
+ model.setNbSteps(nbstesp);
+ }
+ for (MetaFilenameAware entry : refEntries) {
+
+ model.incrementsProgression();
+
+ File entryFile = new File(dir, entry.getFilename());
+ if (entry instanceof AssociationMeta) {
+ AssociationMeta associationMeta = (AssociationMeta) entry;
+ exportService.exportDatas(associationMeta, entryFile);
+ } else {
+ TableMeta meta = (TableMeta) entry;
+ exportService.exportDatas(meta, entryFile);
+ }
+ }
+
+ MetaFilenameAware[] dataEntries =
+ EntitiesUtil.getDataEntries(getDbMeta());
+ Multimap<EchoBaseEntityEnum, MetaFilenameAware> dataAssociationEntries =
+ EntitiesUtil.getDataAssociationsEntries(getDbMeta());
+
+ ReplicateEntityVisitor visitor = ReplicateEntityVisitor.createVisitor(
+ exportService,
+ dataEntries,
+ dataAssociationEntries,
+ dir
+ );
+
+ try {
+ for (String voyageId : model.getVoyageIds()) {
+
+ model.incrementsProgression();
+
+ Voyage voyage = getEntityById(Voyage.class, voyageId);
+ visitor.export(voyage);
+ }
+ } finally {
+ // clear visitor will close export files
+ visitor.clear();
+ }
+
EchoBaseIOUtil.compressZipFile(zipFile, dir);
}
-
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -33,6 +33,7 @@
import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
import fr.ifremer.echobase.entities.meta.TableMeta;
import fr.ifremer.echobase.services.configurations.ImportDbConfiguration;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
@@ -73,11 +74,12 @@
*
* @param model model of the db import operation
* @param user user which perform the import
+ * @param computeSteps flag to compute stesp inside this method
* @throws IOException if any io exception while import
* @throws TopiaException if any pb while topia treatment
*/
public void importDb(ImportDbConfiguration model,
- EchoBaseUser user) throws IOException, TopiaException {
+ EchoBaseUser user, boolean computeSteps) throws IOException, TopiaException {
File file = model.getInput().getFile();
@@ -87,8 +89,10 @@
Map<MetaFilenameAware, ZipEntry> entriestoConsume = discoverEntries(
file, zipFile);
- int size = entriestoConsume.size();
- model.setNbSteps(size + 1);
+ if (computeSteps) {
+ int size = entriestoConsume.size();
+ model.setNbSteps(size + 1);
+ }
// consume all found entries
for (Map.Entry<MetaFilenameAware, ZipEntry> entry :
@@ -282,12 +286,14 @@
String topiaId = (String) row.get(TopiaEntity.TOPIA_ID);
String[] associations = (String[]) row.get("target");
for (String association : associations) {
- builder.append(String.format(updateString, topiaId, association)).append('\n');
- compt++;
- if (compt % 10000 == 0) {
- // flush it
- getTransaction().executeSQL(builder.toString());
- builder = new StringBuilder();
+ if (StringUtils.isNotEmpty(association)) {
+ builder.append(String.format(updateString, topiaId, association)).append('\n');
+ compt++;
+ if (compt % 10000 == 0) {
+ // flush it
+ getTransaction().executeSQL(builder.toString());
+ builder = new StringBuilder();
+ }
}
}
csvResult.incrementsNumberUpdated();
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ReplicateEntityVisitor.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ReplicateEntityVisitor.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ReplicateEntityVisitor.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -0,0 +1,229 @@
+/*
+ * #%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.Maps;
+import com.google.common.collect.Multimap;
+import fr.ifremer.echobase.EchoBaseTechnicalException;
+import fr.ifremer.echobase.csv.EntityExportContext;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.meta.AssociationMeta;
+import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
+import fr.ifremer.echobase.entities.meta.TableMeta;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.EntityVisitor;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.util.TimeLog;
+import org.nuiton.util.csv.ExportModel;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * entity visitor to export data to csv files.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class ReplicateEntityVisitor implements EntityVisitor {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ReplicateEntityVisitor.class);
+
+ public static final TimeLog TIME_LOG =
+ new TimeLog(ReplicateEntityVisitor.class);
+
+ public static ReplicateEntityVisitor createVisitor(ExportService service,
+ MetaFilenameAware[] entityMetas,
+ Multimap<EchoBaseEntityEnum, MetaFilenameAware> associations,
+ File container) throws FileNotFoundException {
+
+ Preconditions.checkNotNull(service);
+ Preconditions.checkNotNull(entityMetas);
+ Preconditions.checkNotNull(associations);
+ Preconditions.checkNotNull(container);
+
+ Map<Class<?>, EntityExportContext> contexts = Maps.newHashMap();
+
+ for (MetaFilenameAware entityMeta : entityMetas) {
+ TableMeta meta = (TableMeta) entityMeta;
+ EchoBaseEntityEnum source = meta.getSource();
+
+ Collection<MetaFilenameAware> metaFilenameAwares = associations.get(source);
+
+ ExportModel<TopiaEntity> model = service.buildForExport(meta, false);
+
+ EntityExportContext exportContext = new EntityExportContext(
+ model,
+ meta,
+ container);
+
+ // save both for contract and implementation with same context
+ contexts.put(source.getContract(), exportContext);
+ contexts.put(source.getImplementation(), exportContext);
+
+ for (MetaFilenameAware metaFilenameAware : metaFilenameAwares) {
+ AssociationMeta associationMeta = (AssociationMeta) metaFilenameAware;
+
+ ExportModel<TopiaEntity> associationModel =
+ service.buildForExport(associationMeta);
+ exportContext.addAssociationExportContext(associationMeta,
+ associationModel,
+ container);
+ }
+ }
+
+ ReplicateEntityVisitor result = new ReplicateEntityVisitor(contexts);
+ return result;
+ }
+
+ /** Export for simple entity. */
+ protected final Map<Class<?>, EntityExportContext> entityExporters;
+
+ public ReplicateEntityVisitor(Map<Class<?>, EntityExportContext> entityExporters) {
+ this.entityExporters = entityExporters;
+ }
+
+ public void export(TopiaEntity entity) {
+ Preconditions.checkNotNull(entity);
+ long s1 = TimeLog.getTime();
+ try {
+ entity.accept(this);
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException(
+ "Could not export entity " + entity.getTopiaId(), e);
+ } finally {
+ TIME_LOG.log(s1, "export::" + entity.getTopiaId());
+ }
+ }
+
+ @Override
+ public void start(TopiaEntity entity) {
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Starts export of entity " + entity.getTopiaId());
+ }
+ EntityExportContext entityExporter =
+ entityExporters.get(entity.getClass());
+ entityExporter.setData(entity);
+ entityExporter.write();
+ } catch (Exception e) {
+ throw new EchoBaseTechnicalException(
+ "Could not export entity " + entity, e);
+ } finally {
+ if (log.isDebugEnabled()) {
+ log.debug("Ends export of entity " + entity.getTopiaId());
+ }
+ }
+ }
+
+ @Override
+ public void end(TopiaEntity entity) {
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Starts export of association of entity " +
+ entity.getTopiaId());
+ }
+ EntityExportContext entityExporter =
+ entityExporters.get(entity.getClass());
+ entityExporter.writeAssociations();
+ } catch (Exception e) {
+ throw new EchoBaseTechnicalException(
+ "Could not export associations of entity " + entity, e);
+ } finally {
+ if (log.isDebugEnabled()) {
+ log.debug("Ends export of association of entity " +
+ entity.getTopiaId());
+ }
+ }
+ }
+
+ @Override
+ public void visit(TopiaEntity entity, String propertyName,
+ Class<?> type, Object value) {
+ // do nothing
+ }
+
+ @Override
+ public void visit(TopiaEntity entity,
+ String propertyName,
+ Class<?> collectionType,
+ Class<?> type,
+ Object value) {
+
+ if (TopiaEntity.class.isAssignableFrom(type) &&
+ entityExporters.containsKey(type)) {
+ Collection<?> cValue = (Collection<?>) value;
+
+ if (CollectionUtils.isNotEmpty(cValue)) {
+
+ int i = 0;
+ for (Object currentValue : cValue) {
+ TopiaEntity currentEntity = (TopiaEntity) currentValue;
+ visit(entity,
+ propertyName,
+ type,
+ collectionType,
+ i++,
+ currentEntity
+ );
+
+ }
+ }
+ }
+ }
+
+ @Override
+ public void visit(TopiaEntity entity,
+ String propertyName,
+ Class<?> collectionType, Class<?> type,
+ int index,
+ Object value) {
+ try {
+ ((TopiaEntity) value).accept(this);
+ } catch (TopiaException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can not visit entity " + value, e);
+ }
+ }
+ }
+
+ @Override
+ public void clear() {
+
+ // use at the end of visit (or later)
+
+ for (EntityExportContext exportContext : entityExporters.values()) {
+ IOUtils.closeQuietly(exportContext);
+ }
+ }
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ReplicateEntityVisitor.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -34,58 +34,65 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.2
*/
-public abstract class AbstractEchobaseActionConfiguration implements Serializable {
+public abstract class AbstractEchobaseActionConfiguration implements Serializable, ProgressionModel {
private static final long serialVersionUID = 1L;
- private int nbSteps;
+ private final ProgressionModel progressionModel;
- private float stepIncrement;
+ private Exception error;
- private float progression;
+ protected AbstractEchobaseActionConfiguration() {
+ progressionModel = new DefaultProgressionModel();
+ }
- private long startTime;
+ protected AbstractEchobaseActionConfiguration(ProgressionModel progressionModel) {
+ this.progressionModel = progressionModel;
+ }
- private long endTime;
-
- private Exception error;
-
- public final int getNbSteps() {
- return nbSteps;
+ @Override
+ public final long getNbSteps() {
+ return progressionModel.getNbSteps();
}
+ @Override
public final float getProgression() {
- return progression;
+ return progressionModel.getProgression();
}
+ @Override
public final void setProgression(float progression) {
- this.progression = progression;
+ progressionModel.setProgression(progression);
}
+ @Override
public final void incrementsProgression() {
- setProgression(progression + stepIncrement);
+ progressionModel.incrementsProgression();
}
- public final void setNbSteps(int nbSteps) {
-
- this.nbSteps = nbSteps;
- stepIncrement = 100f / nbSteps;
+ @Override
+ public final void setNbSteps(long nbSteps) {
+ progressionModel.setNbSteps(nbSteps);
}
+ @Override
public final long getStartTime() {
- return startTime;
+ return progressionModel.getStartTime();
}
+ @Override
public final void setStartTime(long startTime) {
- this.startTime = startTime;
+ progressionModel.setStartTime(startTime);
}
+ @Override
public final long getEndTime() {
- return endTime;
+ return progressionModel.getEndTime();
}
+ @Override
public final void setEndTime(long endTime) {
- this.endTime = endTime;
+ progressionModel.setEndTime(endTime);
}
public Exception getError() {
@@ -96,10 +103,9 @@
this.error = error;
}
+ @Override
public String getActionTime() {
- long sTime = getStartTime();
- long eTime = getEndTime();
- return StringUtil.convertTime(eTime - sTime);
+ return progressionModel.getActionTime();
}
public void beginAction() {
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/DefaultProgressionModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/DefaultProgressionModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/DefaultProgressionModel.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -0,0 +1,79 @@
+package fr.ifremer.echobase.services.configurations;
+
+import org.nuiton.util.StringUtil;
+
+/**
+ * Default progression model implementation.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class DefaultProgressionModel implements ProgressionModel {
+
+ private static final long serialVersionUID = 1L;
+
+ private long nbSteps;
+
+ private float stepIncrement;
+
+ private float progression;
+
+ private long startTime;
+
+ private long endTime;
+
+ @Override
+ public long getNbSteps() {
+ return nbSteps;
+ }
+
+ @Override
+ public float getProgression() {
+ return progression;
+ }
+
+ @Override
+ public void setProgression(float progression) {
+ this.progression = progression;
+ }
+
+ @Override
+ public long getStartTime() {
+ return startTime;
+ }
+
+ @Override
+ public void setStartTime(long startTime) {
+ this.startTime = startTime;
+ }
+
+ @Override
+ public long getEndTime() {
+ return endTime;
+ }
+
+
+ @Override
+ public void setEndTime(long endTime) {
+ this.endTime = endTime;
+ }
+
+ @Override
+ public final void incrementsProgression() {
+ setProgression(progression + stepIncrement);
+ }
+
+ @Override
+ public final void setNbSteps(long nbSteps) {
+
+ this.nbSteps = nbSteps;
+ stepIncrement = 100f / nbSteps;
+ }
+
+ @Override
+ public String getActionTime() {
+ long sTime = getStartTime();
+ long eTime = getEndTime();
+ return StringUtil.convertTime(eTime - sTime);
+ }
+}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/EmbeddedApplicationConfiguration.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/EmbeddedApplicationConfiguration.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/EmbeddedApplicationConfiguration.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -82,7 +82,7 @@
return voyageIds;
}
- public void setVoyageIds(String[] voyageIds) {
+ public void setVoyageIds(String... voyageIds) {
this.voyageIds = Arrays.copyOf(voyageIds, voyageIds.length);
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ExportDbConfiguration.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ExportDbConfiguration.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ExportDbConfiguration.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -44,6 +44,16 @@
private File exportFile;
+ /** Ids of voyages to push in embedded application (with all their datas). */
+ private String[] voyageIds;
+
+ public ExportDbConfiguration() {
+ }
+
+ public ExportDbConfiguration(ProgressionModel progressionModel) {
+ super(progressionModel);
+ }
+
public String getFileName() {
return fileName;
}
@@ -68,6 +78,14 @@
this.exportFile = exportFile;
}
+ public String[] getVoyageIds() {
+ return voyageIds;
+ }
+
+ public void setVoyageIds(String... voyageIds) {
+ this.voyageIds = voyageIds;
+ }
+
@Override
public void destroy() throws IOException {
if (workingDirectory != null) {
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ImportDbConfiguration.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ImportDbConfiguration.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ImportDbConfiguration.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -44,11 +44,16 @@
protected File workingDirectory;
- protected InputFile input;
+ protected final InputFile input;
+ public ImportDbConfiguration(ProgressionModel progressionModel,
+ Locale locale) {
+ super(progressionModel);
+ input = InputFile.newFile(l_(locale, "echobase.common.importDbFile"));
+ }
+
public ImportDbConfiguration(Locale locale) {
- input = InputFile.newFile(
- l_(locale, "echobase.common.importDbFile"));
+ input = InputFile.newFile(l_(locale, "echobase.common.importDbFile"));
}
public File getWorkingDirectory() {
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -0,0 +1,55 @@
+/*
+ * #%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.configurations;
+
+import java.io.Serializable;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since TODO
+ */
+public interface ProgressionModel extends Serializable {
+
+ long getNbSteps();
+
+ float getProgression();
+
+ void setProgression(float progression);
+
+ void incrementsProgression();
+
+ void setNbSteps(long nbSteps);
+
+ long getStartTime();
+
+ void setStartTime(long startTime);
+
+ long getEndTime();
+
+ void setEndTime(long endTime);
+
+ String getActionTime();
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ProgressionModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseImport.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseImport.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseImport.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -1,137 +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.csv;
-
-import com.google.common.base.Charsets;
-import org.nuiton.util.StringUtil;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportModel;
-import org.nuiton.util.csv.ImportRuntimeException;
-import org.nuiton.util.csv.ImportableColumn;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * This extends of the {@link Import} offers to allow case on header names.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class EchoBaseImport<E> extends Import<E> {
-
- public static String[] getHeader(File file, char charSeprator) {
-
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charsets.UTF_8.name()));
- try {
- String header = reader.readLine();
- String[] result = header.split(charSeprator + "");
- return result;
- } finally {
- reader.close();
- }
- } catch (IOException e) {
- throw new ImportRuntimeException("Could not obtain header of file " + file, e);
- }
- }
-
- public static <E> EchoBaseImport<E> newImport(ImportModel<E> model,
- InputStream inputStream) {
- return new EchoBaseImport<E>(model, inputStream);
- }
-
- public static <E> EchoBaseImport<E> newImport(ImportModel<E> model,
- Reader reader) {
- return new EchoBaseImport<E>(model, reader);
- }
-
- public EchoBaseImport(ImportModel<E> importModel, InputStream inputStream) {
- super(importModel, inputStream);
- }
-
- public EchoBaseImport(ImportModel<E> importModel, Reader reader) {
- super(importModel, reader);
- }
-
- @Override
- protected void checkAllMandatoryHeadersArePresent(String[] headers) {
-
- List<String> csvHeaders = new ArrayList<String>();
- for (String header : headers) {
- csvHeaders.add(header.toLowerCase());
- }
-// Collections.addAll(csvHeaders, headers);
-
- List<String> mandatoryHeadersNames = new ArrayList<String>();
- for (ImportableColumn<E, ?> field : getAllMandatoryHeaders()) {
-// mandatoryHeadersNames.add(field.getHeaderName());
- mandatoryHeadersNames.add(field.getHeaderName().toLowerCase());
- }
- mandatoryHeadersNames.removeAll(csvHeaders);
-
- if (!mandatoryHeadersNames.isEmpty()) {
- String validationMessage =
- _("csv.import.error.missingMandatoryHeaders",
- StringUtil.join(mandatoryHeadersNames, ", ", true));
- throw new ImportRuntimeException(validationMessage);
- }
- }
-
- @Override
- protected void checkHeaderNamesAreAllKnown(String[] headers) {
- List<String> csvHeaders = new ArrayList<String>();
- for (String header : headers) {
- csvHeaders.add(header.toLowerCase());
- }
-// Collections.addAll(csvHeaders, headers);
-
- for (ImportableColumn<E, ?> field : model.getColumnsForImport()) {
- csvHeaders.remove(field.getHeaderName().toLowerCase());
-// csvHeaders.remove(field.getHeaderName());
- }
- if (!csvHeaders.isEmpty()) {
- List<String> validHeaderNames = new LinkedList<String>();
- for (ImportableColumn<E, ?> importableColumn :
- model.getColumnsForImport()) {
- validHeaderNames.add(importableColumn.getHeaderName());
- }
- String validationMessage =
- _("csv.import.error.unrecognizedHeaders",
- StringUtil.join(csvHeaders, ", ", true),
- StringUtil.join(validHeaderNames, ", ", true));
- throw new ImportRuntimeException(validationMessage);
- }
- }
-}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -28,6 +28,7 @@
import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.EchoBasePredicates;
import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.csv.EchoBaseImport;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.data.Cell;
@@ -50,7 +51,6 @@
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.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -29,6 +29,7 @@
import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.EchoBasePredicates;
import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.csv.EchoBaseImport;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.data.Operation;
@@ -51,7 +52,6 @@
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;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonDataImportService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -29,6 +29,7 @@
import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.EchoBaseTechnicalException;
import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.csv.EchoBaseImport;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.data.Transect;
@@ -45,7 +46,6 @@
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;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -27,6 +27,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.csv.EchoBaseImport;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.data.GearMetadataValue;
@@ -46,7 +47,6 @@
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;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -30,6 +30,7 @@
import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.EchoBasePredicates;
import fr.ifremer.echobase.InputFile;
+import fr.ifremer.echobase.csv.EchoBaseImport;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.data.Category;
@@ -58,7 +59,6 @@
import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeImportModel;
import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeImportModelRow;
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;
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-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EmbeddedApplicationServiceTest.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -23,15 +23,10 @@
*/
package fr.ifremer.echobase.services;
-import fr.ifremer.echobase.entities.EchoBaseDAOHelper;
-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;
-import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.util.FileUtil;
import java.io.File;
@@ -46,13 +41,13 @@
protected FakeEchoBaseServiceContext initContext() {
return new FakeEchoBaseServiceContext(
- AbstractImportDataServiceIT.IMPORT_DATA_ECHOBASE_OPERATION_RESULT);
+ AbstractImportDataServiceIT.IMPORT_DATA_ECHOBASE_CATCHES_AND_ACOUSTIC_AND_VOYAGE_RESULT);
}
@Test
public void testCreateEmbeddedApplication() throws Exception {
EmbeddedApplicationConfiguration conf = new EmbeddedApplicationConfiguration();
- conf.setVoyageIds(new String[]{getVoyageId()});
+ conf.setVoyageIds(getVoyageId());
File workingDirectory = new File(getTestDir(), "work-dir");
FileUtil.createDirectoryIfNecessary(workingDirectory);
@@ -69,43 +64,43 @@
Assert.assertTrue(zipFile.exists());
}
- @Test
- public void replicateVoyageEntity() throws Exception {
-
- String voyageId = getVoyageId();
-
- // create new H2 dataBase in target/voyageId
- TopiaEntity voyageMocked = getEntityById(Voyage.class, voyageId);
-
- File testBaseDir = new File(getTestDir(), "replicated");
-
- EmbeddedApplicationService service =
- getService(EmbeddedApplicationService.class);
-
- EmbeddedApplicationConfiguration conf = new EmbeddedApplicationConfiguration();
- conf.setVoyageIds(new String[]{voyageId});
- TopiaContext rootContextDest = service.createH2Batabase(conf,
- testBaseDir,
- false);
-
- // verify that replicated voyage is in new base
- TopiaContext transactionDest = null;
- try {
- transactionDest = rootContextDest.beginTransaction();
- VoyageDAO voyageDAO = EchoBaseDAOHelper.getVoyageDAO(transactionDest);
- Voyage voyageReplicated = voyageDAO.findByTopiaId(voyageId);
-
- // assert voyage is in new base
- Assert.assertNotNull(voyageReplicated);
-
- // and same ids
- Assert.assertEquals(voyageMocked, voyageReplicated);
-
- // TODO sletellier 20111124 : try to test deph equality between entities
- } finally {
- if (transactionDest != null) {
- transactionDest.closeContext();
- }
- }
- }
+// @Test
+// public void replicateVoyageEntity() throws Exception {
+//
+// String voyageId = getVoyageId();
+//
+// // create new H2 dataBase in target/voyageId
+// TopiaEntity voyageMocked = getEntityById(Voyage.class, voyageId);
+//
+// File testBaseDir = new File(getTestDir(), "replicated");
+//
+// EmbeddedApplicationService service =
+// getService(EmbeddedApplicationService.class);
+//
+// EmbeddedApplicationConfiguration conf = new EmbeddedApplicationConfiguration();
+// conf.setVoyageIds(voyageId);
+// TopiaContext rootContextDest = service.createH2Batabase(conf,
+// testBaseDir,
+// false);
+//
+// // verify that replicated voyage is in new base
+// TopiaContext transactionDest = null;
+// try {
+// transactionDest = rootContextDest.beginTransaction();
+// VoyageDAO voyageDAO = EchoBaseDAOHelper.getVoyageDAO(transactionDest);
+// Voyage voyageReplicated = voyageDAO.findByTopiaId(voyageId);
+//
+// // assert voyage is in new base
+// Assert.assertNotNull(voyageReplicated);
+//
+// // and same ids
+// Assert.assertEquals(voyageMocked, voyageReplicated);
+//
+// // TODO sletellier 20111124 : try to test deph equality between entities
+// } finally {
+// if (transactionDest != null) {
+// transactionDest.closeContext();
+// }
+// }
+// }
}
Added: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -0,0 +1,82 @@
+/*
+ * #%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.services.configurations.ExportDbConfiguration;
+import fr.ifremer.echobase.services.importdata.AbstractImportDataServiceIT;
+import org.junit.Test;
+import org.nuiton.util.FileUtil;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Test {@link ExportDbService}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class ExportDbServiceTest extends EchoBaseTestServiceSupport {
+
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(
+ AbstractImportDataServiceIT.IMPORT_DATA_ECHOBASE_CATCHES_AND_ACOUSTIC_AND_VOYAGE_RESULT);
+ }
+
+ @Test
+ public void exportDb() throws IOException {
+
+ ExportDbService service =
+ serviceContext.newService(ExportDbService.class);
+
+ ExportDbConfiguration conf = new ExportDbConfiguration();
+
+ conf.setVoyageIds(getVoyageId());
+
+ File workingDirectory = new File(getTestDir(), "work-dir");
+ FileUtil.createDirectoryIfNecessary(workingDirectory);
+ conf.setWorkingDirectory(workingDirectory);
+ conf.setFileName("echobase");
+
+ service.exportDb(conf);
+ }
+
+ @Test
+ public void exportPartialDb() throws IOException {
+
+ ExportDbService service =
+ serviceContext.newService(ExportDbService.class);
+
+ ExportDbConfiguration conf = new ExportDbConfiguration();
+
+ conf.setVoyageIds(getVoyageId());
+
+ File workingDirectory = new File(getTestDir(), "work-dir");
+ FileUtil.createDirectoryIfNecessary(workingDirectory);
+ conf.setWorkingDirectory(workingDirectory);
+ conf.setFileName("echobase");
+
+ service.exportPartialDb(conf, true);
+ }
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz
===================================================================
(Binary files differ)
Modified: trunk/echobase-services/src/test/resources/log4j.properties
===================================================================
--- trunk/echobase-services/src/test/resources/log4j.properties 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-services/src/test/resources/log4j.properties 2012-03-19 15:58:51 UTC (rev 373)
@@ -30,4 +30,5 @@
# package level
log4j.logger.fr.ifremer.echobase=INFO
+#log4j.logger.fr.ifremer.echobase.services.ReplicateEntityVisitor=DEBUG
log4j.logger.fr.ifremer.echobase.services.importdata.AcousticDataImportService=DEBUG
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java 2012-03-19 15:55:36 UTC (rev 372)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java 2012-03-19 15:58:51 UTC (rev 373)
@@ -65,7 +65,7 @@
model.getInput().getFileName());
}
- service.importDb(model, getEchoBaseSession().getEchoBaseUser());
+ service.importDb(model, getEchoBaseSession().getEchoBaseUser(), true);
}
@Override
1
0
r372 - in trunk/echobase-entities/src: main/java/fr/ifremer/echobase main/java/fr/ifremer/echobase/csv main/java/fr/ifremer/echobase/entities main/resources main/resources/i18n test/java/fr/ifremer/echobase/entities
by tchemit@users.forge.codelutin.com 19 Mar '12
by tchemit@users.forge.codelutin.com 19 Mar '12
19 Mar '12
Author: tchemit
Date: 2012-03-19 16:55:36 +0100 (Mon, 19 Mar 2012)
New Revision: 372
Url: http://forge.codelutin.com/repositories/revision/echobase/372
Log:
move csv neutral api to entity module
Added:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/AssociationExportContext.java
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseExport.java
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseImport.java
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EntityExportContext.java
Modified:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java
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/resources/topia-h2.properties
trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.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-19 15:10:55 UTC (rev 371)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java 2012-03-19 15:55:36 UTC (rev 372)
@@ -24,11 +24,13 @@
package fr.ifremer.echobase;
import com.google.common.base.Function;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.data.DataProcessing;
import fr.ifremer.echobase.entities.data.Echotype;
import fr.ifremer.echobase.entities.data.Operation;
import fr.ifremer.echobase.entities.data.Transect;
import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
import fr.ifremer.echobase.entities.references.AcousticInstrument;
import fr.ifremer.echobase.entities.references.AgeCategory;
import fr.ifremer.echobase.entities.references.AreaOfOperation;
@@ -303,6 +305,13 @@
}
};
+ public static final Function<MetaFilenameAware,EchoBaseEntityEnum> META_BY_SOURCE = new Function<MetaFilenameAware, EchoBaseEntityEnum>() {
+ @Override
+ public EchoBaseEntityEnum apply(MetaFilenameAware input) {
+ return input.getSource();
+ }
+ };
+
public static String getSpeciesCategoryKey(Species species, SizeCategory sizeCategory, SexCategory sexCategory) {
String key = species.getBaracoudaCode();
if (sizeCategory != null) {
Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/AssociationExportContext.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/AssociationExportContext.java (rev 0)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/AssociationExportContext.java 2012-03-19 15:55:36 UTC (rev 372)
@@ -0,0 +1,110 @@
+/*
+ * #%L
+ * EchoBase :: Entities
+ *
+ * $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.csv;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
+import fr.ifremer.echobase.entities.meta.AssociationMeta;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.util.csv.ExportModel;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.List;
+
+/**
+ * To export associations as csv files.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class AssociationExportContext implements Closeable {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(AssociationExportContext.class);
+
+ /** association meta to export. */
+ protected final AssociationMeta meta;
+
+ /** Exporter object. */
+ protected final EchoBaseExport export;
+
+ /** Where to export datas. */
+ protected final Writer writer;
+
+ protected final File entryFile;
+
+ public AssociationExportContext(ExportModel<TopiaEntity> model,
+ AssociationMeta meta,
+ File container,
+ List<TopiaEntity> data) throws FileNotFoundException {
+ Preconditions.checkNotNull(model);
+ Preconditions.checkNotNull(meta);
+ Preconditions.checkNotNull(container);
+ Preconditions.checkNotNull(data);
+ this.meta = meta;
+
+ export = EchoBaseExport.newExport(model, data, true);
+
+ entryFile = new File(container, meta.getFilename());
+ if (log.isDebugEnabled()) {
+ log.debug("Creates AssociationExportContext::" + meta + " - " + entryFile.getName());
+ }
+ writer = new OutputStreamWriter(new FileOutputStream(entryFile),
+ Charsets.UTF_8);
+ }
+
+ @Override
+ public void close() throws IOException {
+ try {
+ if (export.isHeaderWritten()) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Export association " + meta + " to " + entryFile);
+ }
+ writer.flush();
+ } else {
+
+ // this file was not used, delete it
+ FileUtils.deleteQuietly(entryFile);
+ }
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ }
+
+ public void write() throws Exception {
+ export.write(writer);
+ }
+}
Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/AssociationExportContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseExport.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseExport.java (rev 0)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseExport.java 2012-03-19 15:55:36 UTC (rev 372)
@@ -0,0 +1,101 @@
+/*
+ * #%L
+ * EchoBase :: Entities
+ *
+ * $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.csv;
+
+import org.nuiton.util.csv.Export;
+import org.nuiton.util.csv.ExportModel;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Writer;
+import java.nio.charset.Charset;
+
+/**
+ * Extends the {@link Export} classes to be able to generate only once
+ * the header.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class EchoBaseExport<E> extends Export<E> {
+
+ public static <E> EchoBaseExport<E> newExport(ExportModel<E> model,
+ Iterable<E> data,
+ boolean writeOnceHeader) {
+ return new EchoBaseExport<E>(model, data, writeOnceHeader);
+ }
+
+ public static <E> void exportToWriter(ExportModel<E> model,
+ Iterable<E> data,
+ Writer writer,
+ boolean writeOnceHeader) throws Exception {
+ Export<E> exporter = newExport(model, data, writeOnceHeader);
+ exporter.write(writer);
+ }
+
+ public static <E> void exportToFile(ExportModel<E> model,
+ Iterable<E> data,
+ File file,
+ Charset charset,
+ boolean writeOnceHeader) throws Exception {
+ Export<E> exporter = newExport(model, data, writeOnceHeader);
+ exporter.write(file, charset);
+ }
+
+ public static <E> String exportToString(ExportModel<E> model,
+ Iterable<E> data,
+ Charset charset,
+ boolean writeOnceHeader) throws Exception {
+ Export<E> exporter = newExport(model, data, writeOnceHeader);
+ return exporter.toString(charset);
+ }
+
+ protected final boolean writeOnceHeader;
+
+ protected boolean headerWritten;
+
+ public boolean isHeaderWritten() {
+ return headerWritten;
+ }
+
+ protected EchoBaseExport(ExportModel<E> model,
+ Iterable<E> data,
+ boolean writeOnceHeader) {
+ super(model, data);
+ this.writeOnceHeader = writeOnceHeader;
+ }
+
+ @Override
+ protected void writeHeader(Writer writer) throws IOException {
+ if (!writeOnceHeader || !headerWritten) {
+
+ // no header generated, let's do it!
+
+ super.writeHeader(writer);
+
+ // mark it as written
+ headerWritten = true;
+ }
+ }
+}
Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseExport.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseImport.java (from rev 369, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseImport.java)
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseImport.java (rev 0)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseImport.java 2012-03-19 15:55:36 UTC (rev 372)
@@ -0,0 +1,137 @@
+/*
+ * #%L
+ * EchoBase :: Entities
+ *
+ * $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.csv;
+
+import com.google.common.base.Charsets;
+import org.nuiton.util.StringUtil;
+import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportRuntimeException;
+import org.nuiton.util.csv.ImportableColumn;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * This extends of the {@link Import} offers to allow case on header names.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class EchoBaseImport<E> extends Import<E> {
+
+ public static String[] getHeader(File file, char charSeprator) {
+
+ try {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charsets.UTF_8.name()));
+ try {
+ String header = reader.readLine();
+ String[] result = header.split(charSeprator + "");
+ return result;
+ } finally {
+ reader.close();
+ }
+ } catch (IOException e) {
+ throw new ImportRuntimeException("Could not obtain header of file " + file, e);
+ }
+ }
+
+ public static <E> EchoBaseImport<E> newImport(ImportModel<E> model,
+ InputStream inputStream) {
+ return new EchoBaseImport<E>(model, inputStream);
+ }
+
+ public static <E> EchoBaseImport<E> newImport(ImportModel<E> model,
+ Reader reader) {
+ return new EchoBaseImport<E>(model, reader);
+ }
+
+ public EchoBaseImport(ImportModel<E> importModel, InputStream inputStream) {
+ super(importModel, inputStream);
+ }
+
+ public EchoBaseImport(ImportModel<E> importModel, Reader reader) {
+ super(importModel, reader);
+ }
+
+ @Override
+ protected void checkAllMandatoryHeadersArePresent(String[] headers) {
+
+ List<String> csvHeaders = new ArrayList<String>();
+ for (String header : headers) {
+ csvHeaders.add(header.toLowerCase());
+ }
+// Collections.addAll(csvHeaders, headers);
+
+ List<String> mandatoryHeadersNames = new ArrayList<String>();
+ for (ImportableColumn<E, ?> field : getAllMandatoryHeaders()) {
+// mandatoryHeadersNames.add(field.getHeaderName());
+ mandatoryHeadersNames.add(field.getHeaderName().toLowerCase());
+ }
+ mandatoryHeadersNames.removeAll(csvHeaders);
+
+ if (!mandatoryHeadersNames.isEmpty()) {
+ String validationMessage =
+ _("csv.import.error.missingMandatoryHeaders",
+ StringUtil.join(mandatoryHeadersNames, ", ", true));
+ throw new ImportRuntimeException(validationMessage);
+ }
+ }
+
+ @Override
+ protected void checkHeaderNamesAreAllKnown(String[] headers) {
+ List<String> csvHeaders = new ArrayList<String>();
+ for (String header : headers) {
+ csvHeaders.add(header.toLowerCase());
+ }
+// Collections.addAll(csvHeaders, headers);
+
+ for (ImportableColumn<E, ?> field : model.getColumnsForImport()) {
+ csvHeaders.remove(field.getHeaderName().toLowerCase());
+// csvHeaders.remove(field.getHeaderName());
+ }
+ if (!csvHeaders.isEmpty()) {
+ List<String> validHeaderNames = new LinkedList<String>();
+ for (ImportableColumn<E, ?> importableColumn :
+ model.getColumnsForImport()) {
+ validHeaderNames.add(importableColumn.getHeaderName());
+ }
+ String validationMessage =
+ _("csv.import.error.unrecognizedHeaders",
+ StringUtil.join(csvHeaders, ", ", true),
+ StringUtil.join(validHeaderNames, ", ", true));
+ throw new ImportRuntimeException(validationMessage);
+ }
+ }
+}
Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EchoBaseImport.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EntityExportContext.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EntityExportContext.java (rev 0)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EntityExportContext.java 2012-03-19 15:55:36 UTC (rev 372)
@@ -0,0 +1,143 @@
+/*
+ * #%L
+ * EchoBase :: Entities
+ *
+ * $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.csv;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ifremer.echobase.entities.meta.AssociationMeta;
+import fr.ifremer.echobase.entities.meta.TableMeta;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.util.csv.ExportModel;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * to export entity as csv files.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class EntityExportContext implements Closeable {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EntityExportContext.class);
+
+ /** meta to export. */
+ protected final TableMeta meta;
+
+ /** Exporter object. */
+ protected final EchoBaseExport export;
+
+ /** Where to export datas. */
+ protected final Writer writer;
+
+ /**
+ * Unique list to store data to export. (will be shared with
+ * association export context.)
+ */
+ protected final List<TopiaEntity> data;
+
+ /** Association export context for this type of entity. */
+ protected final Collection<AssociationExportContext> associationExportContexts;
+
+ protected final File entryFile;
+
+ public EntityExportContext(ExportModel<TopiaEntity> model,
+ TableMeta meta,
+ File container) throws FileNotFoundException {
+ Preconditions.checkNotNull(model);
+ Preconditions.checkNotNull(meta);
+ Preconditions.checkNotNull(container);
+
+ this.meta = meta;
+ export = EchoBaseExport.newExport(model, data = Lists.newArrayList(), true);
+ entryFile = new File(container, meta.getFilename());
+ if (log.isDebugEnabled()) {
+ log.debug("Creates EntityExportContext::" + meta + " - " + entryFile.getName());
+ }
+ writer = new OutputStreamWriter(new FileOutputStream(entryFile), Charsets.UTF_8);
+ associationExportContexts = Lists.newArrayList();
+ }
+
+ public void addAssociationExportContext(AssociationMeta meta,
+ ExportModel<TopiaEntity> model,
+ File container) throws FileNotFoundException {
+ associationExportContexts.add(
+ new AssociationExportContext(model,
+ meta,
+ container,
+ data)
+ );
+ }
+
+ public void setData(TopiaEntity entity) {
+ data.clear();
+ data.add(entity);
+ }
+
+ @Override
+ public void close() throws IOException {
+
+ try {
+ if (export.isHeaderWritten()) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Export table " + meta + " to " + entryFile);
+ }
+ writer.flush();
+ } else {
+ // this file was not used, delete it
+ FileUtils.deleteQuietly(entryFile);
+ }
+ } finally {
+ IOUtils.closeQuietly(writer);
+ for (AssociationExportContext c : associationExportContexts) {
+ c.close();
+ }
+ }
+ }
+
+ public void write() throws Exception {
+ export.write(writer);
+ }
+
+ public void writeAssociations() throws Exception {
+ for (AssociationExportContext c : associationExportContexts) {
+ c.write();
+ }
+ }
+}
Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/csv/EntityExportContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java 2012-03-19 15:10:55 UTC (rev 371)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java 2012-03-19 15:55:36 UTC (rev 372)
@@ -24,6 +24,9 @@
package fr.ifremer.echobase.entities;
import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
+import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.entities.meta.DbMeta;
import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
import fr.ifremer.echobase.entities.meta.TableMeta;
@@ -46,39 +49,7 @@
List<EchoBaseEntityEnum> result = Lists.newLinkedList();
- result.add(EchoBaseEntityEnum.Voyage);
- result.add(EchoBaseEntityEnum.Transit);
- result.add(EchoBaseEntityEnum.Transect);
- result.add(EchoBaseEntityEnum.DataAcquisition);
- result.add(EchoBaseEntityEnum.DataProcessing);
- result.add(EchoBaseEntityEnum.Cell);
- result.add(EchoBaseEntityEnum.Data);
-
- result.add(EchoBaseEntityEnum.Operation);
- result.add(EchoBaseEntityEnum.OperationMetadataValue);
- result.add(EchoBaseEntityEnum.GearMetadataValue);
- result.add(EchoBaseEntityEnum.Sample);
result.add(EchoBaseEntityEnum.SampleData);
-
- result.add(EchoBaseEntityEnum.Echotype);
- result.add(EchoBaseEntityEnum.LengthAgeKey);
- result.add(EchoBaseEntityEnum.LengthWeightKey);
- result.add(EchoBaseEntityEnum.Category);
-
- result.add(EchoBaseEntityEnum.Result);
-
- return result.toArray(new EchoBaseEntityEnum[result.size()]);
- }
-
- /**
- * @return the entity types of data in correct order for replication
- * purpose.
- */
- public static EchoBaseEntityEnum[] getDataTypesForCopy() {
-
- List<EchoBaseEntityEnum> result = Lists.newLinkedList();
-
- result.add(EchoBaseEntityEnum.SampleData);
result.add(EchoBaseEntityEnum.Sample);
result.add(EchoBaseEntityEnum.OperationMetadataValue);
@@ -97,7 +68,6 @@
result.add(EchoBaseEntityEnum.Transect);
result.add(EchoBaseEntityEnum.Transit);
-
result.add(EchoBaseEntityEnum.LengthAgeKey);
result.add(EchoBaseEntityEnum.LengthWeightKey);
@@ -107,57 +77,10 @@
}
/**
- * @return the entity types of reference in correct order for replication
- * purpose.
- */
- public static EchoBaseEntityEnum[] getReferenceTypes() {
- List<EchoBaseEntityEnum> result = Lists.newLinkedList();
- result.add(EchoBaseEntityEnum.SexCategory);
- result.add(EchoBaseEntityEnum.AgeCategory);
- result.add(EchoBaseEntityEnum.SizeCategory);
- result.add(EchoBaseEntityEnum.MeasureType);
- result.add(EchoBaseEntityEnum.DataType);
- result.add(EchoBaseEntityEnum.ReferenceDatumType);
- result.add(EchoBaseEntityEnum.VesselType);
- result.add(EchoBaseEntityEnum.EchotypeCategory);
- result.add(EchoBaseEntityEnum.DepthStratum);
- result.add(EchoBaseEntityEnum.Strata);
- result.add(EchoBaseEntityEnum.CellMethod);
- result.add(EchoBaseEntityEnum.AcousticInstrument);
- result.add(EchoBaseEntityEnum.CategoryType);
- result.add(EchoBaseEntityEnum.CategoryMeaning);
- result.add(EchoBaseEntityEnum.Species);
- result.add(EchoBaseEntityEnum.GearCharacteristic);
- result.add(EchoBaseEntityEnum.ReferenceDatum);
- result.add(EchoBaseEntityEnum.ReferencingMethod);
- result.add(EchoBaseEntityEnum.GearCharacteristicValue);
- result.add(EchoBaseEntityEnum.GearMetadata);
- result.add(EchoBaseEntityEnum.Calibration);
- result.add(EchoBaseEntityEnum.MeasurementMetadata);
- result.add(EchoBaseEntityEnum.SampleDataType);
- result.add(EchoBaseEntityEnum.SampleType);
- result.add(EchoBaseEntityEnum.Vessel);
- result.add(EchoBaseEntityEnum.DataMetadata);
- result.add(EchoBaseEntityEnum.CellType);
- result.add(EchoBaseEntityEnum.Impacte);
- result.add(EchoBaseEntityEnum.Mission);
- result.add(EchoBaseEntityEnum.OperationEvent);
- result.add(EchoBaseEntityEnum.OperationMetadata);
- result.add(EchoBaseEntityEnum.AreaOfOperation);
- result.add(EchoBaseEntityEnum.CategoryRef);
- result.add(EchoBaseEntityEnum.DataQuality);
- result.add(EchoBaseEntityEnum.TSParameters);
- result.add(EchoBaseEntityEnum.Gear);
- result.add(EchoBaseEntityEnum.DataProtocol);
- result.add(EchoBaseEntityEnum.SpeciesCategory);
- return result.toArray(new EchoBaseEntityEnum[result.size()]);
- }
-
- /**
* @return the entity types of reference in correct order for copy
* purpose (says import / export of all a database.
*/
- public static EchoBaseEntityEnum[] getReferenceTypesForCopy() {
+ public static EchoBaseEntityEnum[] getReferenceTypes() {
List<EchoBaseEntityEnum> result = Lists.newLinkedList();
// with no dep
@@ -210,12 +133,40 @@
List<MetaFilenameAware> entities = Lists.newArrayList();
List<MetaFilenameAware> associations = Lists.newArrayList();
- addEntries(dbMeta, entities, associations, getReferenceTypesForCopy());
- addEntries(dbMeta, entities, associations, getDataTypesForCopy());
+ addEntries(dbMeta, entities, associations, getReferenceTypes());
+ addEntries(dbMeta, entities, associations, getDataTypes());
entities.addAll(associations);
return entities.toArray(new MetaFilenameAware[entities.size()]);
}
+ public static MetaFilenameAware[] getReferenceEntries(DbMeta dbMeta) {
+
+ List<MetaFilenameAware> entities = Lists.newArrayList();
+ List<MetaFilenameAware> associations = Lists.newArrayList();
+
+ addEntries(dbMeta, entities, associations, getReferenceTypes());
+ entities.addAll(associations);
+ return entities.toArray(new MetaFilenameAware[entities.size()]);
+ }
+
+ public static MetaFilenameAware[] getDataEntries(DbMeta dbMeta) {
+
+ List<MetaFilenameAware> entities = Lists.newArrayList();
+
+ addEntries(dbMeta, entities, null, getDataTypes());
+ return entities.toArray(new MetaFilenameAware[entities.size()]);
+ }
+
+ public static Multimap<EchoBaseEntityEnum, MetaFilenameAware> getDataAssociationsEntries(DbMeta dbMeta) {
+
+ List<MetaFilenameAware> associations = Lists.newArrayList();
+
+ addEntries(dbMeta, null, associations, getDataTypes());
+
+ Multimap<EchoBaseEntityEnum, MetaFilenameAware> associationsBySource = Multimaps.index(associations, EchoBaseFunctions.META_BY_SOURCE);
+ return associationsBySource;
+ }
+
protected static void addEntries(DbMeta dbMeta,
List<MetaFilenameAware> entities,
List<MetaFilenameAware> associations,
@@ -223,8 +174,12 @@
for (EchoBaseEntityEnum type : types) {
TableMeta tableMeta = getTableMeta(dbMeta, type);
- entities.add(tableMeta);
- associations.addAll(tableMeta.getAssociations());
+ if (entities != null) {
+ entities.add(tableMeta);
+ }
+ if (associations != null) {
+ associations.addAll(tableMeta.getAssociations());
+ }
}
}
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-19 15:10:55 UTC (rev 371)
+++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_en_GB.properties 2012-03-19 15:55:36 UTC (rev 372)
@@ -1,3 +1,5 @@
+csv.import.error.missingMandatoryHeaders=
+csv.import.error.unrecognizedHeaders=
echobase.common.AParameter=
echobase.common.BParameter=
echobase.common.TSParameters=
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-19 15:10:55 UTC (rev 371)
+++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2012-03-19 15:55:36 UTC (rev 372)
@@ -1,3 +1,5 @@
+csv.import.error.missingMandatoryHeaders=
+csv.import.error.unrecognizedHeaders=
echobase.common.AParameter=
echobase.common.BParameter=
echobase.common.TSParameters=
Modified: trunk/echobase-entities/src/main/resources/topia-h2.properties
===================================================================
--- trunk/echobase-entities/src/main/resources/topia-h2.properties 2012-03-19 15:10:55 UTC (rev 371)
+++ trunk/echobase-entities/src/main/resources/topia-h2.properties 2012-03-19 15:55:36 UTC (rev 372)
@@ -24,9 +24,6 @@
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
-# Replication configuration
-topia.service.replication=org.nuiton.topia.replication.TopiaReplicationServiceImpl
-
hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.connection.username=sa
hibernate.connection.password=sa
Modified: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.java
===================================================================
--- trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.java 2012-03-19 15:10:55 UTC (rev 371)
+++ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.java 2012-03-19 15:55:36 UTC (rev 372)
@@ -24,25 +24,15 @@
package fr.ifremer.echobase.entities;
import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.references.Mission;
import junit.framework.Assert;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.junit.Test;
-import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaEntityEnum;
-import org.nuiton.topia.replication.TopiaReplicationModelBuilder;
-import org.nuiton.topia.replication.model.ReplicationModel;
-import org.nuiton.topia.replication.model.ReplicationNode;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.List;
-import java.util.Set;
/**
* To test the class {@link EntitiesUtil}.
@@ -52,9 +42,6 @@
*/
public class EntitiesUtilTest {
- /** Logger. */
- private static final Log log = LogFactory.getLog(EntitiesUtilTest.class);
-
@Test
public void getReferenceTypes() {
@@ -73,23 +60,6 @@
}
@Test
- public void getReferenceTypesForCopy() {
-
- List<EchoBaseEntityEnum> types =
- Arrays.asList(EntitiesUtil.getReferenceTypesForCopy());
-
- List<EchoBaseEntityEnum> expectedTypes =
- Lists.newArrayList(getContractsOf(Mission.class.getPackage()));
-
- Assert.assertNotNull(types);
-
- for (EchoBaseEntityEnum type : expectedTypes) {
- Assert.assertTrue("Missing type : " + type, types.contains(type));
- }
- Assert.assertEquals(expectedTypes.size(), types.size());
- }
-
- @Test
public void getDataTypes() {
List<EchoBaseEntityEnum> types =
@@ -97,24 +67,7 @@
List<EchoBaseEntityEnum> expectedTypes =
Lists.newArrayList(getContractsOf(Voyage.class.getPackage()));
- Assert.assertNotNull(types);
- for (EchoBaseEntityEnum type : expectedTypes) {
- Assert.assertTrue("Missing type : " + type, types.contains(type));
- }
- Assert.assertEquals(expectedTypes.size(), types.size());
- }
-
-
- @Test
- public void getDataTypesForCopy() {
-
- List<EchoBaseEntityEnum> types =
- Arrays.asList(EntitiesUtil.getDataTypesForCopy());
-
- List<EchoBaseEntityEnum> expectedTypes =
- Lists.newArrayList(getContractsOf(Voyage.class.getPackage()));
-
Assert.assertNotNull(types);
for (EchoBaseEntityEnum type : expectedTypes) {
@@ -123,90 +76,6 @@
Assert.assertEquals(expectedTypes.size(), types.size());
}
- @Test
- public void testGetReferentielCopyModel() throws TopiaException {
-
- EchoBaseEntityEnum[] types = EntitiesUtil.getReferenceTypesForCopy();
- Set<TopiaEntityEnum> dones = Sets.newHashSet();
-
- ReplicationModel model = new ReplicationModel(types, false);
- new TopiaReplicationModelBuilder().initModel(model, false);
- List<ReplicationNode> order = model.getOrder();
-
- StringBuilder buffer = new StringBuilder();
- for (ReplicationNode node : order) {
- TopiaEntityEnum type = node.getContract();
- Assert.assertTrue(type + " was already treated.", dones.add(type));
- Collection<ReplicationNode> dependencies = node.getDependencies().values();
- for (ReplicationNode dependency : node.getDependencies().values()) {
- TopiaEntityEnum dependencyType = dependency.getContract();
- Assert.assertTrue(dependencyType +
- " was detected as a dependency of node " +
- type + " but was not still registred",
- dones.contains(dependencyType));
- }
- Collection<ReplicationNode> assocations = node.getAssociations().values();
- for (ReplicationNode assocation : assocations) {
- TopiaEntityEnum assocationType = assocation.getContract();
- Assert.assertTrue(assocationType +
- " was detected as a association of node " +
- type + " but was not still registred",
- dones.contains(assocationType));
- }
- buffer.append('\n');
- buffer.append(type);
- buffer.append(" - ");
- buffer.append(dependencies);
- buffer.append(" - ");
- buffer.append(assocations);
- }
- if (log.isInfoEnabled()) {
- log.info(buffer.toString());
- }
- }
-
- @Test
- public void testGetDataCopyModel() throws TopiaException {
-
- EchoBaseEntityEnum[] types = EntitiesUtil.getDataTypesForCopy();
- Set<TopiaEntityEnum> dones = Sets.newHashSet();
-
- ReplicationModel model = new ReplicationModel(types, false);
- new TopiaReplicationModelBuilder().initModel(model, false);
- List<ReplicationNode> order = model.getOrder();
-
- StringBuilder buffer = new StringBuilder();
- for (ReplicationNode node : order) {
- TopiaEntityEnum type = node.getContract();
- Assert.assertTrue(type + " was already treated.", dones.add(type));
- Collection<ReplicationNode> dependencies = node.getDependencies().values();
- for (ReplicationNode dependency : node.getDependencies().values()) {
- TopiaEntityEnum dependencyType = dependency.getContract();
- Assert.assertTrue(dependencyType +
- " was detected as a dependency of node " +
- type + " but was not still registred",
- dones.contains(dependencyType));
- }
- Collection<ReplicationNode> assocations = node.getAssociations().values();
- for (ReplicationNode assocation : assocations) {
- TopiaEntityEnum assocationType = assocation.getContract();
- Assert.assertTrue(assocationType +
- " was detected as a association of node " +
- type + " but was not still registred",
- dones.contains(assocationType));
- }
- buffer.append('\n');
- buffer.append(type);
- buffer.append(" - ");
- buffer.append(dependencies);
- buffer.append(" - ");
- buffer.append(assocations);
- }
- if (log.isInfoEnabled()) {
- log.info(buffer.toString());
- }
- }
-
/**
* Used to get all contract of a package
*
1
0
Author: tchemit
Date: 2012-03-19 16:10:55 +0100 (Mon, 19 Mar 2012)
New Revision: 371
Url: http://forge.codelutin.com/repositories/revision/echobase/371
Log:
use last snpashot of nuiton-utils + nuiton-csv in entities module
Modified:
trunk/echobase-entities/pom.xml
trunk/pom.xml
Modified: trunk/echobase-entities/pom.xml
===================================================================
--- trunk/echobase-entities/pom.xml 2012-03-19 07:18:36 UTC (rev 370)
+++ trunk/echobase-entities/pom.xml 2012-03-19 15:10:55 UTC (rev 371)
@@ -29,6 +29,11 @@
<artifactId>nuiton-utils</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-csv</artifactId>
+ </dependency>
+
<!--dependency>
<groupId>fr.ird</groupId>
<artifactId>msaccess-importer</artifactId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-03-19 07:18:36 UTC (rev 370)
+++ trunk/pom.xml 2012-03-19 15:10:55 UTC (rev 371)
@@ -125,7 +125,7 @@
<eugenePluginVersion>2.4.2</eugenePluginVersion>
<topiaVersion>2.6.7</topiaVersion>
- <nuitonUtilsVersion>2.4.4</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.4.6-SNAPSHOT</nuitonUtilsVersion>
<nuitonI18nVersion>2.4.1</nuitonI18nVersion>
<nuitonWebVersion>1.10</nuitonWebVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
1
0
19 Mar '12
Author: tchemit
Date: 2012-03-19 08:18:36 +0100 (Mon, 19 Mar 2012)
New Revision: 370
Url: http://forge.codelutin.com/repositories/revision/echobase/370
Log:
prepare last result imports
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModelRow.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModelRow.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModelRow.java
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpeciesCategory-validation.xml
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeMap-validation.xml
Removed:
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpecies-validation.xml
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportConfiguration.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportMode.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.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
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResults.java
trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeRegion-validation.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureResults.jsp
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportConfiguration.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportConfiguration.java 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportConfiguration.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -54,15 +54,24 @@
/** Acoustic result by echotype import. */
protected final InputFile acousticByEchotypeFile;
- /** Acoustic result by echotype and species import. */
- protected final InputFile acousticByEchotypeAndSpeciesFile;
+ /** Acoustic result by echotype and species category import. */
+ protected final InputFile acousticByEchotypeAndSpeciesCategoryFile;
/** Region file to import. */
protected final InputFile regionsFile;
/** Region cell associations file to import. */
- protected final InputFile associationFile;
+ protected final InputFile regionAssociationFile;
+ /** Region cell results file to import. */
+ protected final InputFile regionResultFile;
+
+ /** Map cells file to import. */
+ protected final InputFile mapsFile;
+
+ /** Map cell results file to import. */
+ protected final InputFile mapResultFile;
+
/** Echotype file to import. */
protected final InputFile echotypeFile;
@@ -74,9 +83,15 @@
public ResultsImportConfiguration(Locale locale) {
regionsFile = InputFile.newFile(
- l_(locale, "echobase.common.regionsFile"));
- associationFile = InputFile.newFile(
- l_(locale, "echobase.common.associationFile"));
+ l_(locale, "echobase.common.cellRegionsFile"));
+ regionAssociationFile = InputFile.newFile(
+ l_(locale, "echobase.common.cellRegionAssociationFile"));
+ regionResultFile = InputFile.newFile(
+ l_(locale, "echobase.common.cellRegionResultFile"));
+ mapsFile = InputFile.newFile(
+ l_(locale, "echobase.common.cellMapsFile"));
+ mapResultFile = InputFile.newFile(
+ l_(locale, "echobase.common.cellMapResultFile"));
echotypeFile = InputFile.newFile(
l_(locale, "echobase.common.echotypeFile"));
lengthAgeKeyFile = InputFile.newFile(
@@ -85,8 +100,8 @@
l_(locale, "echobase.common.lengthWeightKeyFile"));
acousticByEchotypeFile = InputFile.newFile(
l_(locale, "echobase.common.acousticByEchotypeFile"));
- acousticByEchotypeAndSpeciesFile = InputFile.newFile(
- l_(locale, "echobase.common.acousticByEchotypeAndSpeciesFile"));
+ acousticByEchotypeAndSpeciesCategoryFile = InputFile.newFile(
+ l_(locale, "echobase.common.acousticByEchotypeAndSpeciesCategoryFile"));
}
public String getVoyageId() {
@@ -125,10 +140,22 @@
return regionsFile;
}
- public InputFile getAssociationFile() {
- return associationFile;
+ public InputFile getRegionAssociationFile() {
+ return regionAssociationFile;
}
+ public InputFile getRegionResultFile() {
+ return regionResultFile;
+ }
+
+ public InputFile getMapsFile() {
+ return mapsFile;
+ }
+
+ public InputFile getMapResultFile() {
+ return mapResultFile;
+ }
+
public InputFile getEchotypeFile() {
return echotypeFile;
}
@@ -145,15 +172,16 @@
return acousticByEchotypeFile;
}
- public InputFile getAcousticByEchotypeAndSpeciesFile() {
- return acousticByEchotypeAndSpeciesFile;
+ public InputFile getAcousticByEchotypeAndSpeciesCategoryFile() {
+ return acousticByEchotypeAndSpeciesCategoryFile;
}
@Override
public InputFile[] getInputFiles() {
- return new InputFile[]{regionsFile, associationFile, echotypeFile,
+ return new InputFile[]{regionsFile, regionAssociationFile, regionResultFile,
+ mapsFile, mapResultFile, echotypeFile,
lengthAgeKeyFile, lengthWeightKeyFile,
acousticByEchotypeFile,
- acousticByEchotypeAndSpeciesFile};
+ acousticByEchotypeAndSpeciesCategoryFile};
}
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportMode.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportMode.java 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/ResultsImportMode.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -47,8 +47,8 @@
/** Import acoustic results by echotype. */
ACOUSTIC_BY_ECHOTYPE(n_("echobase.common.resultsImportMode.acoustic.byEchotype")),
- /** Import acoustic results by echotype and species. */
- ACOUSTIC_BY_ECHOTYPE_AND_SPECIES(n_("echobase.common.resultsImportMode.acoustic.byEchotypeAndspecies"));
+ /** Import acoustic results by echotype and species category. */
+ ACOUSTIC_BY_ECHOTYPE_AND_SPECIES_CATEGORY(n_("echobase.common.resultsImportMode.acoustic.byEchotypeAndSpeciesCategory"));
private final String i18nKey;
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModel.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,42 @@
+/*
+ * #%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.csv;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class MapImportModel extends CsvModelUtil.AbstractImportModel<MapImportModelRow> {
+
+ public MapImportModel(char separator) {
+ super(separator);
+ }
+
+ @Override
+ public MapImportModelRow newEmptyInstance() {
+ return new MapImportModelRow();
+ }
+}
\ No newline at end of file
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModelRow.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModelRow.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,33 @@
+/*
+ * #%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.csv;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class MapImportModelRow {
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapImportModelRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModel.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,42 @@
+/*
+ * #%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.csv;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class MapResultImportModel extends CsvModelUtil.AbstractImportModel<MapResultImportModelRow> {
+
+ public MapResultImportModel(char separator) {
+ super(separator);
+ }
+
+ @Override
+ public MapResultImportModelRow newEmptyInstance() {
+ return new MapResultImportModelRow();
+ }
+}
\ No newline at end of file
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModelRow.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModelRow.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,33 @@
+/*
+ * #%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.csv;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class MapResultImportModelRow {
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/MapResultImportModelRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -23,6 +23,8 @@
*/
package fr.ifremer.echobase.services.csv;
+import fr.ifremer.echobase.entities.data.Cell;
+
/**
* Bean used as a row for import of {@link RegionCellAssociationImportModel}.
*
@@ -31,8 +33,37 @@
*/
public class RegionCellAssociationImportModelRow {
+ protected Cell esduCell;
+
+ protected Cell regionSurfaceCell;
+ protected Cell regionBottomCell;
+
public RegionCellAssociationImportModelRow() {
}
+
+ public Cell getEsduCell() {
+ return esduCell;
+ }
+
+ public void setEsduCell(Cell esduCell) {
+ this.esduCell = esduCell;
+ }
+
+ public Cell getRegionSurfaceCell() {
+ return regionSurfaceCell;
+ }
+
+ public void setRegionSurfaceCell(Cell regionSurfaceCell) {
+ this.regionSurfaceCell = regionSurfaceCell;
+ }
+
+ public Cell getRegionBottomCell() {
+ return regionBottomCell;
+ }
+
+ public void setRegionBottomCell(Cell regionBottomCell) {
+ this.regionBottomCell = regionBottomCell;
+ }
}
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModel.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,42 @@
+/*
+ * #%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.csv;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class RegionResultImportModel extends CsvModelUtil.AbstractImportModel<RegionResultImportModelRow> {
+
+ public RegionResultImportModel(char separator) {
+ super(separator);
+ }
+
+ @Override
+ public RegionResultImportModelRow newEmptyInstance() {
+ return new RegionResultImportModelRow();
+ }
+}
\ No newline at end of file
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModelRow.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModelRow.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,33 @@
+/*
+ * #%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.csv;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class RegionResultImportModelRow {
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionResultImportModelRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -65,9 +65,15 @@
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.MapImportModel;
+import fr.ifremer.echobase.services.csv.MapImportModelRow;
+import fr.ifremer.echobase.services.csv.MapResultImportModel;
+import fr.ifremer.echobase.services.csv.MapResultImportModelRow;
import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModel;
import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModelRow;
import fr.ifremer.echobase.services.csv.RegionCellImportModel;
+import fr.ifremer.echobase.services.csv.RegionResultImportModel;
+import fr.ifremer.echobase.services.csv.RegionResultImportModelRow;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.TopiaDAO;
@@ -178,14 +184,14 @@
}
break;
- case ACOUSTIC_BY_ECHOTYPE_AND_SPECIES: {
+ case ACOUSTIC_BY_ECHOTYPE_AND_SPECIES_CATEGORY: {
// get selected voyage
Voyage voyage = getEntityById(Voyage.class,
configuration.getVoyageId());
InputFile inputFile =
- configuration.getAcousticByEchotypeAndSpeciesFile();
+ configuration.getAcousticByEchotypeAndSpeciesCategoryFile();
if (inputFile.hasFile()) {
@@ -199,28 +205,66 @@
}
break;
- case REGION:
+ case REGION: {
- if (configuration.getRegionsFile().hasFile()) {
+ // get selected voyage
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+
+ InputFile inputFile = configuration.getRegionsFile();
+
+ if (inputFile.hasFile()) {
CsvFileImportResult importResult = importRegionsFile(
- configuration.getRegionsFile());
+ inputFile, voyage);
- addResultAndLog(result, configuration.getRegionsFile(),
- importResult, user);
+ addResultAndLog(result, inputFile, importResult, user);
}
- if (configuration.getAssociationFile().hasFile()) {
+ inputFile = configuration.getRegionAssociationFile();
+ if (inputFile.hasFile()) {
CsvFileImportResult importResult = importRegionAssociationFile(
- configuration.getAssociationFile());
+ inputFile, voyage);
- addResultAndLog(result, configuration.getAssociationFile(),
+ addResultAndLog(result, inputFile, importResult, user);
+ }
+
+ inputFile = configuration.getRegionResultFile();
+ if (inputFile.hasFile()) {
+ CsvFileImportResult importResult = importRegionResultFile(
+ inputFile, voyage, configuration.getResultLabel());
+
+ addResultAndLog(result, inputFile, importResult, user);
+ }
+ }
+ break;
+ case MAP: {
+
+ // get selected voyage
+ Voyage voyage = getEntityById(Voyage.class,
+ configuration.getVoyageId());
+
+ InputFile inputFile = configuration.getMapsFile();
+ if (inputFile.hasFile()) {
+ CsvFileImportResult importResult = importMapFile(
+ inputFile, voyage);
+
+ addResultAndLog(result, inputFile,
importResult, user);
}
- break;
+ inputFile = configuration.getMapResultFile();
+ if (inputFile.hasFile()) {
+ CsvFileImportResult importResult = importMapResultFile(
+ inputFile, voyage, configuration.getResultLabel());
+
+ addResultAndLog(result, inputFile, importResult, user);
+ }
+ }
+ break;
}
return result;
}
- protected CsvFileImportResult importRegionsFile(InputFile inputFile) throws ImportException {
+ protected CsvFileImportResult importRegionsFile(InputFile inputFile, Voyage voyage) throws ImportException {
if (log.isInfoEnabled()) {
log.info("Starts import of region from file " +
@@ -254,12 +298,13 @@
}
}
- protected CsvFileImportResult importRegionAssociationFile(InputFile inputFile) throws ImportException {
+ protected CsvFileImportResult importRegionAssociationFile(InputFile inputFile,
+ Voyage voyage) throws ImportException {
RegionCellAssociationImportModel csvModel = new RegionCellAssociationImportModel(
serviceContext.getConfiguration().getCsvSeparator());
if (log.isInfoEnabled()) {
- log.info("Starts import of region association from file " +
+ log.info("Starts import of region cell association from file " +
inputFile.getFileName());
}
@@ -288,6 +333,113 @@
}
}
+ protected CsvFileImportResult importRegionResultFile(InputFile inputFile,
+ Voyage voyage,
+ String resultLabel) throws ImportException {
+ RegionResultImportModel csvModel = new RegionResultImportModel(
+ serviceContext.getConfiguration().getCsvSeparator());
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of region cell results from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ CellDAO dao = getDAO(Cell.class, CellDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ Import<RegionResultImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (RegionResultImportModelRow row : importer) {
+
+ //TODO
+
+ importResult.incrementsNumberUpdated(EchoBaseEntityEnum.Cell);
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importMapFile(InputFile inputFile,
+ Voyage voyage) throws ImportException {
+ MapImportModel csvModel = new MapImportModel(
+ serviceContext.getConfiguration().getCsvSeparator());
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of Map cells from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ CellDAO dao = getDAO(Cell.class, CellDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ EchoBaseImport<MapImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (MapImportModelRow row : importer) {
+
+ //TODO
+
+ importResult.incrementsNumberUpdated(EchoBaseEntityEnum.Cell);
+ }
+
+ return importResult;
+ } catch (ImportRuntimeException e) {
+ throw new ImportException(getLocale(), inputFile, e);
+ } finally {
+ closeReader(reader, inputFile);
+ }
+ }
+
+ protected CsvFileImportResult importMapResultFile(InputFile inputFile,
+ Voyage voyage,
+ String resultLabel) throws ImportException {
+ MapResultImportModel csvModel = new MapResultImportModel(
+ serviceContext.getConfiguration().getCsvSeparator());
+
+ if (log.isInfoEnabled()) {
+ log.info("Starts import of Map cell results from file " +
+ inputFile.getFileName());
+ }
+
+ CsvFileImportResult importResult = new CsvFileImportResult(
+ inputFile.getFileName());
+
+ CellDAO dao = getDAO(Cell.class, CellDAO.class);
+
+ Reader reader = getInputFileReader(inputFile);
+ try {
+ EchoBaseImport<MapResultImportModelRow> importer =
+ EchoBaseImport.newImport(csvModel, reader);
+
+ for (MapResultImportModelRow 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 {
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-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties 2012-03-19 07:18:36 UTC (rev 370)
@@ -1,12 +1,16 @@
csv.import.error.missingMandatoryHeaders=
csv.import.error.unrecognizedHeaders=
-echobase.common.acousticByEchotypeAndSpeciesFile=
+echobase.common.acousticByEchotypeAndSpeciesCategoryFile=
echobase.common.acousticByEchotypeFile=
-echobase.common.associationFile=
echobase.common.biometrySampleFile=
+echobase.common.cellMapResultFile=
+echobase.common.cellMapsFile=
echobase.common.cellPositionReference.end=
echobase.common.cellPositionReference.mid=
echobase.common.cellPositionReference.start=
+echobase.common.cellRegionAssociationFile=
+echobase.common.cellRegionResultFile=
+echobase.common.cellRegionsFile=
echobase.common.commonDataImportMode.all=
echobase.common.commonDataImportMode.transect=
echobase.common.echotypeFile=
@@ -22,10 +26,8 @@
echobase.common.moviesFile=
echobase.common.operationFile=
echobase.common.operationMetadataFile=
-echobase.common.regionsFile=
-echobase.common.resultsImportMode.acoustic=
echobase.common.resultsImportMode.acoustic.byEchotype=
-echobase.common.resultsImportMode.acoustic.byEchotypeAndspecies=
+echobase.common.resultsImportMode.acoustic.byEchotypeAndSpeciesCategory=
echobase.common.resultsImportMode.map=
echobase.common.resultsImportMode.region=
echobase.common.resultsImportMode.voyage=
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-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-03-19 07:18:36 UTC (rev 370)
@@ -1,12 +1,16 @@
csv.import.error.missingMandatoryHeaders=
csv.import.error.unrecognizedHeaders=
-echobase.common.acousticByEchotypeAndSpeciesFile=Fichier d'import
+echobase.common.acousticByEchotypeAndSpeciesCategoryFile=Fichier d'import
echobase.common.acousticByEchotypeFile=Fichier d'import
-echobase.common.associationFile=Fichier d'associations de cellules
echobase.common.biometrySampleFile=Fichier BiometrySample
+echobase.common.cellMapResultFile=Fichier de résultats de cellules Carte
+echobase.common.cellMapsFile=Fichier des cellules Cartes
echobase.common.cellPositionReference.end=Fin
echobase.common.cellPositionReference.mid=Milieu
echobase.common.cellPositionReference.start=Début
+echobase.common.cellRegionAssociationFile=Fichier d'associations de cellules Région
+echobase.common.cellRegionResultFile=Fichier de résultats de cellules Région
+echobase.common.cellRegionsFile=Fichier des cellules Région
echobase.common.commonDataImportMode.all=Import Voyage / Transit / Transects
echobase.common.commonDataImportMode.transect=Import Transects
echobase.common.echotypeFile=Fichier echotype
@@ -22,10 +26,9 @@
echobase.common.moviesFile=Fichier Movies
echobase.common.operationFile=Fichier Opérations
echobase.common.operationMetadataFile=Fichier Méta-données opération
-echobase.common.regionsFile=Fichier des régions
echobase.common.resultsImportMode.acoustic.byEchotype=Import des résultats acoustiques par echotype
-echobase.common.resultsImportMode.acoustic.byEchotypeAndspecies=Import des résultats acoustiques par echotype et espèce
-echobase.common.resultsImportMode.map=Import des cellules de type Map
+echobase.common.resultsImportMode.acoustic.byEchotypeAndSpeciesCategory=Import des résultats acoustiques par echotype et catégorie d'espèce
+echobase.common.resultsImportMode.map=Import des cellules de type Carte
echobase.common.resultsImportMode.region=Import des cellules de type Région
echobase.common.resultsImportMode.voyage=Import des résultats du voyage
echobase.common.subSampleFile=Fichier SubSample
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -23,8 +23,6 @@
*/
package fr.ifremer.echobase.services.importdata;
-import fr.ifremer.echobase.entities.data.Data;
-import fr.ifremer.echobase.entities.data.LengthAgeKey;
import fr.ifremer.echobase.entities.data.Result;
import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
import fr.ifremer.echobase.services.configurations.ResultsImportConfiguration;
@@ -100,7 +98,7 @@
conf.setResultLabel("resultLabel");
conf.setVoyageId(getVoyageId());
- conf.setImportMode(ResultsImportMode.ACOUSTIC_BY_ECHOTYPE_AND_SPECIES);
+ conf.setImportMode(ResultsImportMode.ACOUSTIC_BY_ECHOTYPE_AND_SPECIES_CATEGORY);
prepareInputFile(conf.getAcousticByEchotypeFile(),
getImportPath("acousticResultByEchotypeAndSpecies.csv"));
@@ -116,4 +114,77 @@
assertCsvImportResult(result.get(0), Result.class, NB_ESDU_RESULT_BY_ECHOTYPE_AND_SPECIES);
}
+ @Ignore
+ @Test
+ public void doImportRegion() throws Exception {
+
+ //TODO
+
+ assertImportCommonData();
+ assertImportOperations();
+ assertImportAcousticDatas();
+ assertImportVoyageResult();
+
+ assertNoEntities(Result.class);
+
+ ResultsImportConfiguration conf =
+ new ResultsImportConfiguration(getLocale());
+
+ conf.setResultLabel("resultLabel");
+ conf.setVoyageId(getVoyageId());
+ conf.setImportMode(ResultsImportMode.REGION);
+
+ prepareInputFile(conf.getRegionsFile(),
+ getImportPath("regions.csv"));
+ prepareInputFile(conf.getRegionAssociationFile(),
+ getImportPath("regionAssociations.csv"));
+ prepareInputFile(conf.getRegionsFile(),
+ getImportPath("regionResults.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), Result.class, NB_ESDU_RESULT_BY_ECHOTYPE_AND_SPECIES);
+ }
+
+ @Ignore
+ @Test
+ public void doImportMap() throws Exception {
+
+ //TODO
+
+ assertImportCommonData();
+ assertImportOperations();
+ assertImportAcousticDatas();
+ assertImportVoyageResult();
+
+ assertNoEntities(Result.class);
+
+ ResultsImportConfiguration conf =
+ new ResultsImportConfiguration(getLocale());
+
+ conf.setResultLabel("resultLabel");
+ conf.setVoyageId(getVoyageId());
+ conf.setImportMode(ResultsImportMode.MAP);
+
+ prepareInputFile(conf.getAcousticByEchotypeFile(),
+ getImportPath("acousticResultByEchotypeAndSpecies.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), Result.class, NB_ESDU_RESULT_BY_ECHOTYPE_AND_SPECIES);
+ }
}
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResults.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResults.java 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResults.java 2012-03-19 07:18:36 UTC (rev 370)
@@ -95,7 +95,7 @@
}
@InputConfig(methodName = "input")
- public String modeAcousticByEchotypeAndSpecies() throws Exception {
+ public String modeAcousticByEchotypeAndSpeciesCategory() throws Exception {
return execute();
}
@@ -106,6 +106,12 @@
return execute();
}
+ @InputConfig(methodName = "input")
+ public String modeMap() throws Exception {
+
+ return execute();
+ }
+
public Map<String, String> getVoyages() {
return voyages;
}
@@ -139,18 +145,54 @@
getModel().getRegionsFile().setFileName(fileName);
}
- public void setAssociationFile(File file) {
- getModel().getAssociationFile().setFile(file);
+ public void setRegionAssociationFile(File file) {
+ getModel().getRegionAssociationFile().setFile(file);
}
- public void setAssociationFileContentType(String contentType) {
- getModel().getAssociationFile().setContentType(contentType);
+ public void setRegionAssociationFileContentType(String contentType) {
+ getModel().getRegionAssociationFile().setContentType(contentType);
}
- public void setAssociationFileFileName(String fileName) {
- getModel().getAssociationFile().setFileName(fileName);
+ public void setRegionAssociationFileFileName(String fileName) {
+ getModel().getRegionAssociationFile().setFileName(fileName);
}
+ public void setRegionResultFile(File file) {
+ getModel().getRegionResultFile().setFile(file);
+ }
+
+ public void setRegionResultFileContentType(String contentType) {
+ getModel().getRegionResultFile().setContentType(contentType);
+ }
+
+ public void setRegionResultFileFileName(String fileName) {
+ getModel().getRegionResultFile().setFileName(fileName);
+ }
+
+ public void setMapsFile(File file) {
+ getModel().getMapsFile().setFile(file);
+ }
+
+ public void setMapsFileContentType(String contentType) {
+ getModel().getMapsFile().setContentType(contentType);
+ }
+
+ public void setMapsFileFileName(String fileName) {
+ getModel().getMapsFile().setFileName(fileName);
+ }
+
+ public void setMapResultFile(File file) {
+ getModel().getMapResultFile().setFile(file);
+ }
+
+ public void setMapResultFileContentType(String contentType) {
+ getModel().getMapResultFile().setContentType(contentType);
+ }
+
+ public void setMapResultFileFileName(String fileName) {
+ getModel().getMapResultFile().setFileName(fileName);
+ }
+
public void setLengthAgeKeyFile(File file) {
getModel().getLengthAgeKeyFile().setFile(file);
}
@@ -199,16 +241,16 @@
getModel().getAcousticByEchotypeFile().setFileName(fileName);
}
- public void setAcousticByEchotypeAndSpeciesFile(File file) {
- getModel().getAcousticByEchotypeAndSpeciesFile().setFile(file);
+ public void setAcousticByEchotypeAndSpeciesCategoryFileFile(File file) {
+ getModel().getAcousticByEchotypeAndSpeciesCategoryFile().setFile(file);
}
- public void setAcousticByEchotypeAndSpeciesFileContentType(String contentType) {
- getModel().getAcousticByEchotypeAndSpeciesFile().setContentType(contentType);
+ public void setAcousticByEchotypeAndSpeciesCategoryFileContentType(String contentType) {
+ getModel().getAcousticByEchotypeAndSpeciesCategoryFile().setContentType(contentType);
}
- public void setAcousticByEchotypeAndSpeciesFileName(String fileName) {
- getModel().getAcousticByEchotypeAndSpeciesFile().setFileName(fileName);
+ public void setAcousticByEchotypeAndSpeciesCategoryFileName(String fileName) {
+ getModel().getAcousticByEchotypeAndSpeciesCategoryFile().setFileName(fileName);
}
}
Deleted: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpecies-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpecies-validation.xml 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpecies-validation.xml 2012-03-19 07:18:36 UTC (rev 370)
@@ -1,47 +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 "-//Apache Struts//XWork Validator 1.0.3//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
-<validators>
-
- <field name="model.voyageId">
- <field-validator type="nrequiredstring">
- <message key="echobase.error.import.voyage.required"/>
- </field-validator>
- </field>
-
- <field name="resultLabel">
- <field-validator type="nrequiredstring">
- <message key="echobase.error.import.resultLabel.required"/>
- </field-validator>
- </field>
-
- <field name="acousticByEchotypeAndSpeciesFile">
- <field-validator type="nfieldexpression">
- <param name="expression">model.acousticByEchotypeAndSpeciesFile.file!=null</param>
- <message key="echobase.error.import.acousticByEchotypeAndSpeciesFile.required"/>
- </field-validator>
- </field>
-
-</validators>
\ No newline at end of file
Copied: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpeciesCategory-validation.xml (from rev 369, trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpecies-validation.xml)
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpeciesCategory-validation.xml (rev 0)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpeciesCategory-validation.xml 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,47 @@
+<!--
+ #%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 "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="model.voyageId">
+ <field-validator type="nrequiredstring">
+ <message key="echobase.error.import.voyage.required"/>
+ </field-validator>
+ </field>
+
+ <field name="resultLabel">
+ <field-validator type="nrequiredstring">
+ <message key="echobase.error.import.resultLabel.required"/>
+ </field-validator>
+ </field>
+
+ <field name="acousticByEchotypeAndSpeciesCategoryFile">
+ <field-validator type="nfieldexpression">
+ <param name="expression">model.acousticByEchotypeAndSpeciesCategoryFile.file!=null</param>
+ <message key="echobase.error.import.acousticByEchotypeAndSpeciesCategoryFile.required"/>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeAcousticByEchotypeAndSpeciesCategory-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/importData/ConfigureResults-ConfigureResults-modeMap-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeMap-validation.xml (rev 0)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeMap-validation.xml 2012-03-19 07:18:36 UTC (rev 370)
@@ -0,0 +1,54 @@
+<!--
+ #%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 "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="model.voyageId">
+ <field-validator type="nrequiredstring">
+ <message key="echobase.error.import.voyage.required"/>
+ </field-validator>
+ </field>
+
+ <field name="resultLabel">
+ <field-validator type="nrequiredstring">
+ <message key="echobase.error.import.resultLabel.required"/>
+ </field-validator>
+ </field>
+
+ <field name="mapsFile">
+ <field-validator type="nfieldexpression">
+ <param name="expression">model.mapsFile.file!=null</param>
+ <message key="echobase.error.import.mapsFile.required"/>
+ </field-validator>
+ </field>
+
+ <field name="mapResultFile">
+ <field-validator type="nfieldexpression">
+ <param name="expression">model.mapResultFile.file!=null</param>
+ <message key="echobase.error.import.mapResultFile.required"/>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeMap-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeRegion-validation.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeRegion-validation.xml 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/importData/ConfigureResults-ConfigureResults-modeRegion-validation.xml 2012-03-19 07:18:36 UTC (rev 370)
@@ -31,6 +31,12 @@
</field-validator>
</field>
+ <field name="resultLabel">
+ <field-validator type="nrequiredstring">
+ <message key="echobase.error.import.resultLabel.required"/>
+ </field-validator>
+ </field>
+
<field name="regionsFile">
<field-validator type="nfieldexpression">
<param name="expression">model.regionsFile.file!=null</param>
@@ -38,11 +44,18 @@
</field-validator>
</field>
- <field name="associationFile">
+ <field name="regionAssociationFile">
<field-validator type="nfieldexpression">
- <param name="expression">model.associationFile.file!=null</param>
- <message key="echobase.error.import.associationFile.required"/>
+ <param name="expression">model.regionAssociationFile.file!=null</param>
+ <message key="echobase.error.import.regionAssociationFile.required"/>
</field-validator>
</field>
+ <field name="regionResultFile">
+ <field-validator type="nfieldexpression">
+ <param name="expression">model.regionResultFile.file!=null</param>
+ <message key="echobase.error.import.regionResultFile.required"/>
+ </field-validator>
+ </field>
+
</validators>
\ No newline at end of file
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-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-19 07:18:36 UTC (rev 370)
@@ -83,13 +83,12 @@
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.acousticByEchotypeAndSpeciesFile.required=La sélection d'un fichier d'import est obligatoire
+echobase.error.import.acousticByEchotypeAndSpeciesCategoryFile.required=La sélection d'un fichier d'import est obligatoire
echobase.error.import.acousticByEchotypeFile.required=La sélection d'un fichier d'import est obligatoire
echobase.error.import.acousticDensityUnit.required=acousticDensityUnit non renseigné
echobase.error.import.acquisitionSoftwareVersionER60.required=acquisitionSoftwareVersionER60 non renseigné
echobase.error.import.acquisitionSoftwareVersionME70.required=acquisitionSoftwareVersionME70 non renseigné
echobase.error.import.areaOfOperation.required=La sélection d'une zone d'opération est obligatoire
-echobase.error.import.associationFile.required=La sélection d'un fichier Association est obligatoire
echobase.error.import.biometrySampleFile.required=La sélection d'un fichier BiometrySample est obligatoire
echobase.error.import.cellPositionReference.required=La sélection d'un cellPositionReference est obligatoire
echobase.error.import.datum.required=Datum de la campagne non rengeigné
@@ -101,6 +100,8 @@
echobase.error.import.lengthWeightKeyFile.required=La sélection d'un fichier lengthWeightKey est obligatoire
echobase.error.import.loggedDataDatatype.required=loggedDataDatatype non renseigné
echobase.error.import.loggedDataFormat.required=loggedDataFormat non renseigné
+echobase.error.import.mapResultFile.required=La sélection d'un fichier de résultat de Carte est obligatoire
+echobase.error.import.mapsFile.required=La sélection d'un fichier Carte est obligatoire
echobase.error.import.mission.required=La sélection d'une mission est obligatoire
echobase.error.import.missionAbstract.required=Le résumé de la mission est obligatoire
echobase.error.import.missionName.required=Le nom de la mission est obligatoire
@@ -111,6 +112,8 @@
echobase.error.import.pingDutyCycle.required=pingDutyCycle non renseigné
echobase.error.import.processingDescription.required=processingDescription non renseigné
echobase.error.import.processingTemplate.required=processingTemplate non renseigné
+echobase.error.import.regionAssociationFile.required=La sélection d'un fichier d'association de Région est obligatoire
+echobase.error.import.regionResultFile.required=La sélection d'un fichier de résultat de Région est obligatoire
echobase.error.import.regionsFile.required=La sélection d'un fichier Region est obligatoire
echobase.error.import.resultImportFile.required=Veuillez donner au moins un fichier à importer
echobase.error.import.resultLabel.required=Le champs ResultLabel est obligatoire
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureResults.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureResults.jsp 2012-03-16 18:02:23 UTC (rev 369)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/configureResults.jsp 2012-03-19 07:18:36 UTC (rev 370)
@@ -24,8 +24,8 @@
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
-<script type="text/javascript"
- src="<s:url value='/js/gridHelper.js' />"></script>
+<%--script type="text/javascript"
+ src="<s:url value='/js/gridHelper.js' />"></script--%>
<title>
Configuration <s:text name="echobase.common.importDataMode.results"/>
</title>
@@ -34,22 +34,16 @@
jQuery(document).ready(function () {
+ // to change form when mode is changed
$('[name="model.importMode"]').change(function (event) {
$('[class~="importMode"]').hide();
$('#' + this.value).show();
$('#' + this.value + ' .errorMessage').hide();
});
+ // show incoming mode
var incomingVal = $('[name="model.importMode"][checked="checked"]').val();
$('#' + incomingVal).show();
-
- $.autoSelectVoyageAndVessel(
- $('#ACOUSTIC_model_voyageId'),
- $('[name="model.vesselId"]'),
- '<s:url action="getVesselsForVoyage" namespace="/importData"/>',
- '<s:property value="model.voyageId"/>',
- '<s:property value="model.vesselId"/>'
- );
});
</script>
@@ -80,13 +74,12 @@
<s:file key="echotypeFile" required="true"
label='%{getText("echobase.common.echotypeFile")}'/>
-
</fieldset>
<br/>
<s:submit action="ConfigureResults-modeVoyage" key='echobase.action.import'/>
</s:form>
-<s:form id="REGION" namespace="/importData" method="POST"
+<s:form id="ACOUSTIC_BY_ECHOTYPE" namespace="/importData" method="POST"
enctype="multipart/form-data" cssClass="hidden importMode">
<fieldset>
@@ -94,24 +87,25 @@
<s:text name="echobase.legend.importData.configure"/>
</legend>
- <s:hidden key="model.importMode" value="REGION" label=''/>
+ <s:hidden key="model.importMode" value="ACOUSTIC" label=''/>
<s:select key="model.voyageId" required="true"
label='%{getText("echobase.common.voyage")}'
list="voyages" headerKey="" headerValue=""/>
- <s:file key="regionsFile" required="true"
- label='%{getText("echobase.common.regionsFile")}'/>
+ <s:textfield key="model.resultLabel" size="40" required="true"
+ label='%{getText("echobase.common.resultLabel")}'/>
- <s:file key="associationFile" required="true"
- label='%{getText("echobase.common.associationFile")}'/>
-
+ <s:file key="acousticByEchotypeFile" required="true"
+ label='%{getText("echobase.common.acousticByEchotypeFile")}'/>
</fieldset>
<br/>
- <s:submit action="ConfigureResults-modeRegion" key='echobase.action.import'/>
+ <s:submit action="ConfigureResults-modeAcousticByEchotype"
+ key='echobase.action.import'/>
</s:form>
-<s:form id="ACOUSTIC_BY_ECHOTYPE" namespace="/importData" method="POST"
+<s:form id="ACOUSTIC_BY_ECHOTYPE_AND_SPECIES_CATEGORY" namespace="/importData"
+ method="POST"
enctype="multipart/form-data" cssClass="hidden importMode">
<fieldset>
@@ -128,17 +122,15 @@
<s:textfield key="model.resultLabel" size="40" required="true"
label='%{getText("echobase.common.resultLabel")}'/>
- <s:file key="acousticByEchotypeFile" required="true"
- label='%{getText("echobase.common.acousticByEchotypeFile")}'/>
-
+ <s:file key="acousticByEchotypeAndSpeciesCategoryFile" required="true"
+ label='%{getText("echobase.common.acousticByEchotypeAndSpeciesCategoryFile")}'/>
</fieldset>
<br/>
- <s:submit action="ConfigureResults-modeAcousticByEchotype"
+ <s:submit action="ConfigureResults-modeAcousticByEchotypeAndSpeciesCategory"
key='echobase.action.import'/>
</s:form>
-<s:form id="ACOUSTIC_BY_ECHOTYPE_AND_SPECIES" namespace="/importData"
- method="POST"
+<s:form id="REGION" namespace="/importData" method="POST"
enctype="multipart/form-data" cssClass="hidden importMode">
<fieldset>
@@ -146,7 +138,7 @@
<s:text name="echobase.legend.importData.configure"/>
</legend>
- <s:hidden key="model.importMode" value="ACOUSTIC" label=''/>
+ <s:hidden key="model.importMode" value="REGION" label=''/>
<s:select key="model.voyageId" required="true"
label='%{getText("echobase.common.voyage")}'
@@ -155,11 +147,42 @@
<s:textfield key="model.resultLabel" size="40" required="true"
label='%{getText("echobase.common.resultLabel")}'/>
- <s:file key="acousticByEchotypeFile" required="true"
- label='%{getText("echobase.common.acousticByEchotypeAndSpeciesFile")}'/>
+ <s:file key="regionsFile" required="true"
+ label='%{getText("echobase.common.cellRegionsFile")}'/>
+ <s:file key="regionAssociationFile" required="true"
+ label='%{getText("echobase.common.cellRegionAssociationFile")}'/>
+
+ <s:file key="regionResultFile" required="true"
+ label='%{getText("echobase.common.cellRegionResultFile")}'/>
</fieldset>
<br/>
- <s:submit action="ConfigureResults-modeAcousticByEchotypeAndSpecies"
- key='echobase.action.import'/>
-</s:form>
\ No newline at end of file
+ <s:submit action="ConfigureResults-modeRegion" key='echobase.action.import'/>
+</s:form>
+
+<s:form id="MAP" namespace="/importData" method="POST"
+ enctype="multipart/form-data" cssClass="hidden importMode">
+
+ <fieldset>
+ <legend>
+ <s:text name="echobase.legend.importData.configure"/>
+ </legend>
+
+ <s:hidden key="model.importMode" value="REGION" label=''/>
+
+ <s:select key="model.voyageId" required="true"
+ label='%{getText("echobase.common.voyage")}'
+ list="voyages" headerKey="" headerValue=""/>
+
+ <s:textfield key="model.resultLabel" size="40" required="true"
+ label='%{getText("echobase.common.resultLabel")}'/>
+
+ <s:file key="mapsFile" required="true"
+ label='%{getText("echobase.common.cellMapsFile")}'/>
+
+ <s:file key="mapResultFile" required="true"
+ label='%{getText("echobase.common.cellMapResultFile")}'/>
+ </fieldset>
+ <br/>
+ <s:submit action="ConfigureResults-modeMap" key='echobase.action.import'/>
+</s:form>
1
0
r368 - in trunk/echobase-tools/src/test: java/fr/ifremer/echobase/tools/loaders resources/csv/new
by tchemit@users.forge.codelutin.com 16 Mar '12
by tchemit@users.forge.codelutin.com 16 Mar '12
16 Mar '12
Author: tchemit
Date: 2012-03-16 18:59:54 +0100 (Fri, 16 Mar 2012)
New Revision: 368
Url: http://forge.codelutin.com/repositories/revision/echobase/368
Log:
nupdate data type
Modified:
trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/DataTypeLoaderIT.java
trunk/echobase-tools/src/test/resources/csv/new/input-DataType.csv
Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/DataTypeLoaderIT.java
===================================================================
--- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/DataTypeLoaderIT.java 2012-03-16 11:57:15 UTC (rev 367)
+++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/DataTypeLoaderIT.java 2012-03-16 17:59:54 UTC (rev 368)
@@ -35,7 +35,7 @@
public class DataTypeLoaderIT extends AbstractLoaderIT<DataType, DataTypeLoader> {
public DataTypeLoaderIT() {
- super(DataTypeLoader.class, 16, 0);
+ super(DataTypeLoader.class, 17, 0);
}
@Test
Modified: trunk/echobase-tools/src/test/resources/csv/new/input-DataType.csv
===================================================================
--- trunk/echobase-tools/src/test/resources/csv/new/input-DataType.csv 2012-03-16 11:57:15 UTC (rev 367)
+++ trunk/echobase-tools/src/test/resources/csv/new/input-DataType.csv 2012-03-16 17:59:54 UTC (rev 368)
@@ -15,3 +15,4 @@
Formula;String;
MeanXe;Double;
EsduFlag;String;
+NumberOfSamples;Integer;
\ No newline at end of file
1
0
r367 - in trunk: echobase-entities/src/main/java/fr/ifremer/echobase echobase-services/src/main/java/fr/ifremer/echobase/services echobase-services/src/main/java/fr/ifremer/echobase/services/csv echobase-services/src/main/resources/i18n echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor echobase-ui/src/main/resources/i18n echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor
by tchemit@users.forge.codelutin.com 16 Mar '12
by tchemit@users.forge.codelutin.com 16 Mar '12
16 Mar '12
Author: tchemit
Date: 2012-03-16 12:57:15 +0100 (Fri, 16 Mar 2012)
New Revision: 367
Url: http://forge.codelutin.com/repositories/revision/echobase/367
Log:
permettre l'export d'une table comme ?\195?\160 l'?\195?\169cran + am?\195?\169lioration d?\195?\169coration de Species (ajout baracoudaCode)
Modified:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java
trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.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
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java 2012-03-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java 2012-03-16 11:57:15 UTC (rev 367)
@@ -210,7 +210,7 @@
registerJXPathDecorator(locale, SizeCategory.class, "${name}$s");
// Species decorator
- registerJXPathDecorator(locale, Species.class, "${genusSpecies}$s");
+ registerJXPathDecorator(locale, Species.class, "${genusSpecies}$s (${baracoudaCode}$s)");
// SpeciesCategory decorator
registerJXPathDecorator(locale, SpeciesCategory.class, "${species/genusSpecies}$s - (size:: ${sizeCategoryName}$s) - (age: ${ageCategoryLabel}$s) - (sex: ${sexCategoryLabel}$s)");
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-03-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-03-16 11:57:15 UTC (rev 367)
@@ -33,7 +33,6 @@
import fr.ifremer.echobase.entities.meta.ColumnMeta;
import fr.ifremer.echobase.entities.meta.DbMeta;
import fr.ifremer.echobase.entities.meta.TableMeta;
-import fr.ifremer.echobase.services.csv.CsvModelUtil;
import fr.ifremer.echobase.services.csv.EntityCsvModel;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -50,6 +49,7 @@
import org.nuiton.util.csv.ExportableColumn;
import org.nuiton.util.csv.ImportExportModel;
import org.nuiton.util.csv.ImportableColumn;
+import org.nuiton.util.decorator.Decorator;
import org.nuiton.util.decorator.JXPathDecorator;
import org.nuiton.web.struts2.FilterPagerUtil;
@@ -107,7 +107,7 @@
Map<?, ?>[] rows = new Map[entities.size()];
- ImportExportModel<TopiaEntity> model = buildForLoad(meta, "id", true);
+ ExportModel<TopiaEntity> model = buildForLoad(meta, "id", true);
int i = 0;
for (Object o : entities) {
@@ -543,9 +543,9 @@
return model;
}
- protected <E extends TopiaEntity> ImportExportModel<E> buildForLoad(TableMeta meta,
- String idName,
- boolean addDecorated) {
+ protected <E extends TopiaEntity> ExportModel<E> buildForLoad(TableMeta meta,
+ String idName,
+ boolean addDecorated) {
EntityCsvModel<E> model = EntityCsvModel.newModel(
getConfiguration().getCsvSeparator(),
@@ -566,13 +566,16 @@
if (addDecorated) {
// translate foreign key to his decorated value
- model.newColumnForExport(
+ Decorator<TopiaEntity> decorator =
+ getDecoratorService().getDecorator(getLocale(), entityType, null);
+ model.addDecoratedForeignKeyForExport(
propertyName + "_lib",
propertyName,
- CsvModelUtil.newForeignKeyDecoratedValue(
- entityType,
- getDecoratorService(),
- getLocale())
+ decorator
+// CsvModelUtil.newForeignKeyDecoratedValue(
+// entityType,
+// getDecoratorService(),
+// getLocale())
);
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java 2012-03-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java 2012-03-16 11:57:15 UTC (rev 367)
@@ -36,6 +36,7 @@
import org.nuiton.util.TimeLog;
import org.nuiton.util.csv.Export;
import org.nuiton.util.csv.ExportModel;
+import org.nuiton.util.decorator.Decorator;
import java.io.File;
import java.util.List;
@@ -62,21 +63,46 @@
return model;
}
- public <E extends TopiaEntity> ExportModel<E> buildForExport(TableMeta meta) {
+ public <E extends TopiaEntity> ExportModel<E> buildForExport(TableMeta meta, boolean asSeen) {
- EntityCsvModel<E> model = EntityCsvModel.newModel(
- getConfiguration().getCsvSeparator(),
- meta,
- TopiaEntity.TOPIA_ID
- );
+ EntityCsvModel<E> model;
+ if (asSeen) {
+
+ // no need to have topiaId as first column
+ model = EntityCsvModel.newModel(
+ getConfiguration().getCsvSeparator(),
+ meta
+ );
+ } else {
+
+ // normla export add topiaId column
+ model = EntityCsvModel.newModel(
+ getConfiguration().getCsvSeparator(),
+ meta,
+ TopiaEntity.TOPIA_ID
+ );
+ }
+
+ DecoratorService service = getService(DecoratorService.class);
+
for (ColumnMeta columnMeta : meta) {
String propertyName = columnMeta.getName();
Class<?> type = columnMeta.getType();
if (columnMeta.isFK()) {
Class<TopiaEntity> entityType = (Class<TopiaEntity>) type;
- model.addForeignKeyForExport(propertyName, entityType);
+ if (asSeen) {
+
+ // export decorated foreign key value
+ Decorator<TopiaEntity> decorator =
+ service.getDecorator(getLocale(), entityType, null);
+ model.addDecoratedForeignKeyForExport(propertyName, propertyName, decorator);
+ } else {
+
+ // export foreign key value as his topiaId
+ model.addForeignKeyForExport(propertyName, entityType);
+ }
} else {
model.addDefaultColumn(propertyName, type);
}
@@ -84,9 +110,9 @@
return model;
}
- public String exportDatas(TableMeta tableMeta) {
+ public String exportDatas(TableMeta tableMeta, boolean asSeen) {
- Export<TopiaEntity> export = prepareExport(tableMeta);
+ Export<TopiaEntity> export = prepareExport(tableMeta, asSeen);
try {
return export.toString(Charsets.UTF_8);
@@ -101,7 +127,7 @@
log.info("Export table " + tableMeta + " to " + file);
}
long s1 = TimeLog.getTime();
- Export<TopiaEntity> export = prepareExport(tableMeta);
+ Export<TopiaEntity> export = prepareExport(tableMeta, false);
TIME_LOG.log(s1, "exportDatas::prepareExport");
long s2 = TimeLog.getTime();
try {
@@ -130,11 +156,11 @@
TIME_LOG.log(s2, "exportDatas::exportToFile");
}
- protected Export<TopiaEntity> prepareExport(TableMeta tableMeta) {
+ protected Export<TopiaEntity> prepareExport(TableMeta tableMeta, boolean asSeen) {
DbEditorService service = getService(DbEditorService.class);
List<TopiaEntity> datas = service.getEntities(tableMeta, null, null, null, null);
- ExportModel<TopiaEntity> model = buildForExport(tableMeta);
+ ExportModel<TopiaEntity> model = buildForExport(tableMeta, asSeen);
return Export.newExport(model, datas);
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java 2012-03-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java 2012-03-16 11:57:15 UTC (rev 367)
@@ -32,7 +32,6 @@
import fr.ifremer.echobase.entities.data.ResultImpl;
import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.entities.references.DataMetadata;
-import fr.ifremer.echobase.services.DecoratorService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.topia.TopiaException;
@@ -60,7 +59,6 @@
import java.util.Collection;
import java.util.Date;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -95,11 +93,6 @@
return new ForeignKeyValueForAssociation<E>(type, propertyName, universe);
}
- public static <E extends TopiaEntity> ForeignKeyDecoratedValue<E> newForeignKeyDecoratedValue(Class<E> entityType,
- DecoratorService decoratorService, Locale locale) {
- return new ForeignKeyDecoratedValue<E>(entityType, decoratorService, locale);
- }
-
public static <E extends TopiaEntity> ValueFormatter<Collection<E>> newAssociationValueFormatter() {
return new AssociationValueParserFormatter<E>(null, null);
}
@@ -280,32 +273,7 @@
}
}
- public static class ForeignKeyDecoratedValue<E extends TopiaEntity> implements ValueFormatter<E> {
- protected final Class<E> entityType;
-
- protected final DecoratorService decoratorService;
-
- protected final Locale locale;
-
- public ForeignKeyDecoratedValue(Class<E> entityType, DecoratorService decoratorService, Locale locale) {
- this.entityType = entityType;
- this.decoratorService = decoratorService;
- this.locale = locale;
-
- }
-
- @Override
- public String format(E e) {
- String value = "";
- if (e != null) {
-
- value = decoratorService.decorate(locale, e, null);
- }
- return value;
- }
- }
-
protected CsvModelUtil() {
// avoid instanciation on helper class
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java 2012-03-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java 2012-03-16 11:57:15 UTC (rev 367)
@@ -28,6 +28,8 @@
import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.entities.meta.TableMeta;
import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.util.csv.ValueFormatter;
+import org.nuiton.util.decorator.Decorator;
import java.util.Collection;
import java.util.Collections;
@@ -77,6 +79,11 @@
);
}
+ public <T> void addDecoratedForeignKeyForExport(String headerName, String propertyName, Decorator<T> decorator) {
+ modelBuilder.newColumnForExport(headerName, propertyName,
+ new ForeignKeyDecoratedValue<T>(decorator));
+ }
+
public <E extends TopiaEntity> void addForeignKeyForImport(String headerName,
String propertyName,
Class<E> entityType,
@@ -211,19 +218,24 @@
}
}
-// public ImportableColumn<E, String> newMandatoryColumn(String headerName,
-// String propertyName) {
-// return modelBuilder.newMandatoryColumn(headerName, propertyName);
-// }
-//
-// public ImportableColumn<E, String> newMandatoryColumn(String headerName) {
-// return modelBuilder.newMandatoryColumn(headerName, headerName);
-// }
-//
-// public <T> ImportableColumn<E, T> newMandatoryColumn(String headerName, String propertyName, ValueParser<T> valueParser) {
-// return modelBuilder.newMandatoryColumn(headerName, valueParser, CsvModelUtil.<E, T>newBeanProperty(propertyName));
-// }
+ public static class ForeignKeyDecoratedValue<E> implements ValueFormatter<E> {
+ protected final Decorator<E> decorator;
+
+ public ForeignKeyDecoratedValue(Decorator<E> decorator) {
+ this.decorator = decorator;
+ }
+
+ @Override
+ public String format(E e) {
+ String value = "";
+ if (e != null) {
+ value = decorator.toString(e);
+ }
+ return value;
+ }
+ }
+
protected EntityCsvModel(char separator,
TableMeta tableMeta) {
super(separator);
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-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties 2012-03-16 11:57:15 UTC (rev 367)
@@ -35,6 +35,7 @@
echobase.common.transitFile=
echobase.common.voyageFile=
echobase.importError.can.only.import.one.voyage.atime=
+echobase.importError.dataMetadata.notFound=
echobase.importError.duplicate.sample=
echobase.importError.esduCell.notfound=
echobase.importError.fromFile=
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.java 2012-03-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.java 2012-03-16 11:57:15 UTC (rev 367)
@@ -61,6 +61,9 @@
/** Type of the file to export. */
protected String contentType;
+ /** Export datas as seen on screen (no topiaId). */
+ protected boolean exportAsSeen;
+
public void setEntityType(EchoBaseEntityEnum entityType) {
this.entityType = entityType;
}
@@ -69,6 +72,10 @@
this.exportFileName = exportFileName;
}
+ public void setExportAsSeen(boolean exportAsSeen) {
+ this.exportAsSeen = exportAsSeen;
+ }
+
public InputStream getInputStream() {
return inputStream;
}
@@ -91,7 +98,7 @@
ExportService exportService = newService(ExportService.class);
TableMeta table = serviceContext.getDbMeta().getTable(entityType);
- String content = exportService.exportDatas(table);
+ String content = exportService.exportDatas(table, exportAsSeen);
if (log.isDebugEnabled()) {
log.debug("file to export " + content);
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-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-03-16 11:57:15 UTC (rev 367)
@@ -46,6 +46,7 @@
echobase.info.user.delete=
echobase.info.user.update=
echobase.information.mission.created=
+echobase.label.exportAsSeen=Export as seen on screen
echobase.legend.dbeditor.show=Visualisation de '%s'
echobase.legend.importData.result.resume=Résultat
echobase.legend.libreOfficeQuery=Requète "libre office"
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-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-16 11:57:15 UTC (rev 367)
@@ -167,6 +167,7 @@
echobase.label.createIfNotFound=Créer les entités non trouvées en base
echobase.label.embeddedApplicationFileName=Nom de l'archive à télécharger
echobase.label.embeddedWarFileName=Nom du war à utiliser
+echobase.label.exportAsSeen=Exporter "comme à l'écran"
echobase.label.exportDbFileName=Nom du fichier d'export
echobase.label.exportFileName=Nom du fichier d'export
echobase.label.import.accoustique=Fichier accoustique
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-16 10:08:35 UTC (rev 366)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2012-03-16 11:57:15 UTC (rev 367)
@@ -225,6 +225,8 @@
<s:textfield key="exportFileName" required="true" size="100"
label="%{getText('echobase.label.exportFileName')}"/>
+ <s:checkbox key='exportAsSeen' value='false'
+ label='%{getText("echobase.label.exportAsSeen")}'/>
<br/>
<s:submit key="echobase.action.exportTable" action="doExport"
align="right"/>
1
0
r366 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services/csv main/java/fr/ifremer/echobase/services/importdata main/resources/i18n test/java/fr/ifremer/echobase/services/importdata test/resources test/resources/import-data
by tchemit@users.forge.codelutin.com 16 Mar '12
by tchemit@users.forge.codelutin.com 16 Mar '12
16 Mar '12
Author: tchemit
Date: 2012-03-16 11:08:35 +0100 (Fri, 16 Mar 2012)
New Revision: 366
Url: http://forge.codelutin.com/repositories/revision/echobase/366
Log:
les imports de r?\195?\169sultas continuent...
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java
Removed:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java
Modified:
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/ResultsImportService.java
trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java
trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz
trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic.h2.db.gz
trunk/echobase-services/src/test/resources/log4j.properties
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java (from rev 362, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -0,0 +1,101 @@
+/*
+ * #%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.csv;
+
+import com.google.common.collect.Lists;
+import fr.ifremer.echobase.entities.data.CellDAO;
+import fr.ifremer.echobase.entities.data.Echotype;
+import fr.ifremer.echobase.entities.data.Result;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.AgeCategory;
+import fr.ifremer.echobase.entities.references.DataMetadata;
+import fr.ifremer.echobase.entities.references.SizeCategory;
+import fr.ifremer.echobase.entities.references.Species;
+import org.nuiton.util.csv.ImportRuntimeException;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Model to import {@link Result} for esdu cell and echotypes.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class AcousticResultByEchotypeAndSpeciesCategoryImportModel extends CsvModelUtil.AbstractImportModel<AcousticResultByEchotypeAndSpeciesCategoryImportModelRow> {
+
+ public static List<DataMetadata> getMetas(Map<String, DataMetadata> dataMetadataMap,
+ String... headers) {
+
+ List<String> metadataNames = Lists.newArrayList(headers);
+ metadataNames.remove(AcousticResultByEchotypeImportModelRow.PROPERTY_ECHOTYPE);
+ metadataNames.remove("name");
+
+ List<DataMetadata> result = Lists.newArrayList();
+
+ for (String header : headers) {
+
+ DataMetadata dataMetadata = dataMetadataMap.get(header);
+ if (dataMetadata == null) {
+ throw new ImportRuntimeException(
+ "Could not find dataMetadata with name [" + header + "]");
+ }
+ result.add(dataMetadata);
+ }
+ return result;
+ }
+
+ public AcousticResultByEchotypeAndSpeciesCategoryImportModel(
+ char separator,
+ Map<String, Echotype> echotypeMap,
+ Map<String, Species> speciesMap,
+ Map<String, SizeCategory> sizeCategoryMap,
+ Map<String, AgeCategory> ageCategoryMap,
+ Voyage voyage,
+ CellDAO cellDAO,
+ List<DataMetadata> dataMetadatas) {
+ super(separator);
+
+ newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap);
+ newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap);
+ newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_LENGTH, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap);
+ newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_AGE, AgeCategory.class, AgeCategory.PROPERTY_NAME, ageCategoryMap);
+ newMandatoryColumn("name", AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_CELL, CsvModelUtil.newCellValueParser(voyage, cellDAO));
+
+
+ for (DataMetadata metadata : dataMetadatas) {
+ String name = metadata.getName();
+ newMandatoryColumn(
+ name,
+ CsvModelUtil.newResultValueParser(metadata),
+ CsvModelUtil.<AcousticResultByEchotypeAndSpeciesCategoryImportModelRow>newResultValueSetter());
+ }
+ }
+
+ @Override
+ public AcousticResultByEchotypeAndSpeciesCategoryImportModelRow newEmptyInstance() {
+ return new AcousticResultByEchotypeAndSpeciesCategoryImportModelRow();
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.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/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java (from rev 362, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -0,0 +1,74 @@
+/*
+ * #%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.csv;
+
+import fr.ifremer.echobase.entities.references.AgeCategory;
+import fr.ifremer.echobase.entities.references.SizeCategory;
+import fr.ifremer.echobase.entities.references.Species;
+
+/**
+ * Bean used as a row for import of
+ * {@link AcousticResultByEchotypeAndSpeciesCategoryImportModel}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class AcousticResultByEchotypeAndSpeciesCategoryImportModelRow extends AcousticResultByEchotypeImportModelRow {
+
+ public static final String PROPERTY_SPECIES = "species";
+
+ public static final String PROPERTY_LENGTH = "length";
+
+ public static final String PROPERTY_AGE = "age";
+
+ protected Species species;
+
+ private SizeCategory length;
+
+ private AgeCategory age;
+
+ public Species getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(Species species) {
+ this.species = species;
+ }
+
+ public SizeCategory getLength() {
+ return length;
+ }
+
+ public void setLength(SizeCategory length) {
+ this.length = length;
+ }
+
+ public AgeCategory getAge() {
+ return age;
+ }
+
+ public void setAge(AgeCategory age) {
+ this.age = age;
+ }
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -1,95 +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.csv;
-
-import com.google.common.collect.Lists;
-import fr.ifremer.echobase.entities.data.CellDAO;
-import fr.ifremer.echobase.entities.data.Echotype;
-import fr.ifremer.echobase.entities.data.Result;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.references.DataMetadata;
-import fr.ifremer.echobase.entities.references.Species;
-import org.nuiton.util.csv.ImportRuntimeException;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Model to import {@link Result} for esdu cell and echotypes.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class AcousticResultByEchotypeAndSpeciesImportModel extends CsvModelUtil.AbstractImportModel<AcousticResultByEchotypeAndSpeciesImportModelRow> {
-
- public static List<DataMetadata> getMetas(Map<String, DataMetadata> dataMetadataMap,
- String... headers) {
-
- List<String> metadataNames = Lists.newArrayList(headers);
- metadataNames.remove(AcousticResultByEchotypeImportModelRow.PROPERTY_ECHOTYPE);
- metadataNames.remove("name");
-
- List<DataMetadata> result = Lists.newArrayList();
-
- for (String header : headers) {
-
- DataMetadata dataMetadata = dataMetadataMap.get(header);
- if (dataMetadata == null) {
- throw new ImportRuntimeException(
- "Could not find dataMetadata with name [" + header + "]");
- }
- result.add(dataMetadata);
- }
- return result;
- }
-
- public AcousticResultByEchotypeAndSpeciesImportModel(
- char separator,
- Map<String, Echotype> echotypeMap,
- Map<String, Species> speciesMap,
- Voyage voyage,
- CellDAO cellDAO,
- List<DataMetadata> dataMetadatas) {
- super(separator);
-
- newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesImportModelRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap);
- newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesImportModelRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap);
- newMandatoryColumn("name", AcousticResultByEchotypeAndSpeciesImportModelRow.PROPERTY_CELL, CsvModelUtil.newCellValueParser(voyage, cellDAO));
-
-
- for (DataMetadata metadata : dataMetadatas) {
- String name = metadata.getName();
- newMandatoryColumn(
- name,
- CsvModelUtil.newResultValueParser(metadata),
- CsvModelUtil.<AcousticResultByEchotypeAndSpeciesImportModelRow>newResultValueSetter());
- }
- }
-
- @Override
- public AcousticResultByEchotypeAndSpeciesImportModelRow newEmptyInstance() {
- return new AcousticResultByEchotypeAndSpeciesImportModelRow();
- }
-
-}
\ No newline at end of file
Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -1,48 +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.csv;
-
-import fr.ifremer.echobase.entities.references.Species;
-
-/**
- * Bean used as a row for import of {@link AcousticResultByEchotypeAndSpeciesImportModel}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class AcousticResultByEchotypeAndSpeciesImportModelRow extends AcousticResultByEchotypeImportModelRow {
-
- public static final String PROPERTY_SPECIES = "species";
-
- protected Species species;
-
- public Species getSpecies() {
- return species;
- }
-
- public void setSpecies(Species species) {
- this.species = species;
- }
-
-}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -34,8 +34,7 @@
import fr.ifremer.echobase.entities.data.Category;
import fr.ifremer.echobase.entities.data.CategoryDAO;
import fr.ifremer.echobase.entities.data.Echotype;
-import fr.ifremer.echobase.entities.references.ProcessedAge;
-import fr.ifremer.echobase.entities.references.ProcessedLength;
+import fr.ifremer.echobase.entities.references.AgeCategory;
import fr.ifremer.echobase.entities.references.SexCategory;
import fr.ifremer.echobase.entities.references.SizeCategory;
import fr.ifremer.echobase.entities.references.Species;
@@ -210,10 +209,13 @@
protected SpeciesCategory getSpeciesCategory(SpeciesCategoryDAO speciesCategoryDAO,
Species species,
SizeCategory sizeCategory,
- SexCategory sexCategory) {
+ AgeCategory ageCategory,
+ SexCategory sexCategory,
+ CsvFileImportResult importResult) {
SpeciesCategory category = findByProperties(
speciesCategoryDAO,
SpeciesCategory.PROPERTY_SPECIES, species,
+ SpeciesCategory.PROPERTY_AGE_CATEGORY, ageCategory,
SpeciesCategory.PROPERTY_SIZE_CATEGORY, sizeCategory,
SpeciesCategory.PROPERTY_SEX_CATEGORY, sexCategory
);
@@ -226,32 +228,43 @@
category.setSpecies(species);
category.setSizeCategory(sizeCategory);
category.setSexCategory(sexCategory);
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.SpeciesCategory);
}
return category;
}
- protected Category getResultCategory(CategoryDAO speciesCategoryDAO,
+ protected Category getResultCategory(CategoryDAO categoryDAO,
+ SpeciesCategoryDAO speciesCategoryDAO,
Echotype echotype,
Species species,
- ProcessedLength processedLength,
- ProcessedAge processedAge) {
+ SizeCategory sizeCategory,
+ AgeCategory ageCategory,
+ CsvFileImportResult importResult) {
+
+ // get species categorie first
+
+ SpeciesCategory speciesCategory = getSpeciesCategory(
+ speciesCategoryDAO,
+ species,
+ sizeCategory,
+ ageCategory,
+ null,
+ importResult);
+
Category category = findByProperties(
- speciesCategoryDAO,
+ categoryDAO,
Category.PROPERTY_ECHOTYPE, echotype,
- Category.PROPERTY_SPECIES, species,
- Category.PROPERTY_PROCESSED_LENGTH, processedLength,
- Category.PROPERTY_PROCESSED_AGE, processedAge
+ Category.PROPERTY_SPECIES_CATEGORY, speciesCategory
);
if (category == null) {
// create it
- category = create(speciesCategoryDAO);
+ category = create(categoryDAO);
category.setEchotype(echotype);
- category.setSpecies(species);
- category.setProcessedLength(processedLength);
- category.setProcessedAge(processedAge);
+ category.setSpeciesCategory(speciesCategory);
+ importResult.incrementsNumberCreated(EchoBaseEntityEnum.Category);
}
return category;
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -187,6 +187,7 @@
Reader reader = getInputFileReader(inputFile);
Locale locale = getLocale();
+ String dataProcessingId = null;
try {
Import<AcousticDataImportModelRow> importer =
EchoBaseImport.newImport(csvModel, reader);
@@ -199,6 +200,13 @@
rowNumber++;
+ if (dataProcessingId==null) {
+
+ // compute once for all the common dataprocessing id used
+ // for hole the movies file
+ dataProcessingId = row.getEiLayer()+ configuration.getProcessingTemplate();
+ }
+
Date startDate = row.getCellDateStart();
// get transect to use
@@ -288,6 +296,7 @@
// create data processing
dataProcessing = createDataProcessing(
configuration,
+ dataProcessingId,
softwareVersion,
soundSpeedCalculations,
row,
@@ -521,6 +530,7 @@
}
private DataProcessing createDataProcessing(AcousticDataImportConfiguration configuration,
+ String id,
String softwareVersion,
String soundSpeedCalculations,
AcousticDataImportModelRow row,
@@ -536,12 +546,10 @@
String acousticDensityUnit = configuration.getAcousticDensityUnit();
String notes = configuration.getNotes();
- String processingId = row.getEiLayer() + processingTemplate;
-
DataProcessing dataProcessing = create(dataProcessingDAO);
// fill from manual configuration
- dataProcessing.setId(processingId);
+ dataProcessing.setId(id);
dataProcessing.setProcessingTemplate(processingTemplate);
dataProcessing.setProcessingDescription(processingDescription);
dataProcessing.setSounderConstant(sounderConstant);
@@ -568,9 +576,9 @@
row.getTransceiverAcquisitionGain();
Float transceiverAcquisitionSacorrection =
row.getTransceiverAcquisitionSacorrection();
-// Float eIThreshold = row.getEiThreshold();
+ int eIThreshold = row.getMaxEIthr();
-// dataProcessing.setEiThreshold(eIThreshold);
+ dataProcessing.setEiThreshold(eIThreshold);
dataProcessing.setTransceiverProcessingSacorrection(transceiverAcquisitionSacorrection);
dataProcessing.setTransceiverProcessingAbsorption(transceiverAcquisitionAbsorption);
dataProcessing.setTransceiverProcessingGain(transceiverAcquisitionGain);
@@ -578,7 +586,6 @@
dataProcessing.setTransducerProcessingBeamAngleAthwartship(transducerAcquisitionBeamAngleAthwartship);
dataProcessing.setTransducerProcessingBeamAngleAlongship(transducerAcquisitionBeamAngleAlongship);
-
return dataProcessing;
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -203,7 +203,9 @@
speciesCategoryDAO,
species,
sizeCategory,
- null
+ null,
+ null,
+ importResult
);
SampleType sampleType;
@@ -360,7 +362,9 @@
speciesCategoryDAO,
species,
sizeCategory,
- sexCategory
+ null,
+ sexCategory,
+ importResult
);
// find the sample with this category
@@ -470,7 +474,9 @@
speciesCategoryDAO,
species,
null,
- null
+ null,
+ null,
+ importResult
);
sample.setSpeciesCategory(category);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -42,6 +42,7 @@
import fr.ifremer.echobase.entities.data.LengthWeightKeyDAO;
import fr.ifremer.echobase.entities.data.Result;
import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.AgeCategory;
import fr.ifremer.echobase.entities.references.DataMetadata;
import fr.ifremer.echobase.entities.references.DepthStratum;
import fr.ifremer.echobase.entities.references.SizeCategory;
@@ -52,8 +53,8 @@
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.AcousticResultByEchotypeAndSpeciesImportModel;
-import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeAndSpeciesImportModelRow;
+import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeAndSpeciesCategoryImportModel;
+import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeAndSpeciesCategoryImportModelRow;
import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeImportModel;
import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeImportModelRow;
import fr.ifremer.echobase.services.csv.CsvFileImportResult;
@@ -338,8 +339,11 @@
// find speciesCategory
SpeciesCategory speciesCategory = getSpeciesCategory(
speciesCategoryDAO,
- species, sizeCategory,
- null
+ species,
+ sizeCategory,
+ null,
+ null,
+ importResult
);
lengthWeightKey.setSpeciesCategory(speciesCategory);
@@ -517,7 +521,7 @@
Map<String, Echotype> echotypeMap = Maps.uniqueIndex(
voyage.getEchotype(),
EchoBaseFunctions.ECHOTYPE_NAME);
-
+
List<DataMetadata> metas =
AcousticResultByEchotypeImportModel.getMetas(
getLocale(), dataMetadataMap, header);
@@ -532,6 +536,8 @@
metas);
CategoryDAO categoryDAO = (CategoryDAO) getDAO(Category.class);
+ SpeciesCategoryDAO speciesCategoryDAO =
+ getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
Reader reader = getInputFileReader(inputFile);
try {
@@ -543,10 +549,12 @@
Cell cell = row.getCell();
Category category = getResultCategory(categoryDAO,
+ speciesCategoryDAO,
row.getEchotype(),
null,
null,
- null);
+ null,
+ importResult);
List<Result> results = row.getResult();
@@ -602,15 +610,27 @@
Species.class,
EchoBaseFunctions.SPECIES_BARACOUDA_CODE);
+ Map<String, SizeCategory> sizeCategoryMap = getEntitiesMap(
+ SizeCategory.class,
+ EchoBaseFunctions.SIZE_CATEGORY_NAME);
+
+ Map<String, AgeCategory> ageCategoryMap = getEntitiesMap(
+ AgeCategory.class,
+ EchoBaseFunctions.AGE_CATEGORY_NAME);
List<DataMetadata> metas =
AcousticResultByEchotypeImportModel.getMetas(getLocale(), dataMetadataMap, header);
CellDAO cellDAO = (CellDAO) getDAO(Cell.class);
- AcousticResultByEchotypeAndSpeciesImportModel csvModel = new AcousticResultByEchotypeAndSpeciesImportModel(
+ SpeciesCategoryDAO speciesCategoryDAO =
+ getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class);
+
+ AcousticResultByEchotypeAndSpeciesCategoryImportModel csvModel = new AcousticResultByEchotypeAndSpeciesCategoryImportModel(
serviceContext.getConfiguration().getCsvSeparator(),
echotypeMap,
speciesMap,
+ sizeCategoryMap,
+ ageCategoryMap,
voyage,
cellDAO,
metas);
@@ -619,18 +639,20 @@
Reader reader = getInputFileReader(inputFile);
try {
- EchoBaseImport<AcousticResultByEchotypeAndSpeciesImportModelRow> importer =
+ EchoBaseImport<AcousticResultByEchotypeAndSpeciesCategoryImportModelRow> importer =
EchoBaseImport.newImport(csvModel, reader);
- for (AcousticResultByEchotypeAndSpeciesImportModelRow row : importer) {
+ for (AcousticResultByEchotypeAndSpeciesCategoryImportModelRow row : importer) {
Cell cell = row.getCell();
Category category = getResultCategory(categoryDAO,
+ speciesCategoryDAO,
row.getEchotype(),
row.getSpecies(),
- null,
- null);
+ row.getLength(),
+ row.getAge(),
+ importResult);
List<Result> results = row.getResult();
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-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-03-16 10:08:35 UTC (rev 366)
@@ -10,7 +10,6 @@
echobase.common.commonDataImportMode.all=Import Voyage / Transit / Transects
echobase.common.commonDataImportMode.transect=Import Transects
echobase.common.echotypeFile=Fichier echotype
-echobase.importError.dataMetadata.notFound=Une colonne de Metadata nommée %s non trouvée (valeurs existantes : %s)
echobase.common.gearMetadataFile=Fichier Méta-données d'engin
echobase.common.importDataMode.accousticData=Import des données accoustiques
echobase.common.importDataMode.catchesData=Import des données de pêche
@@ -35,6 +34,7 @@
echobase.common.transitFile=Fichier des transits
echobase.common.voyageFile=Fichier des voyages
echobase.importError.can.only.import.one.voyage.atime=Vous ne pouvez pas importer plus d'un voyage à la fois.
+echobase.importError.dataMetadata.notFound=Une colonne de Metadata nommée %s non trouvée (valeurs existantes \: %s)
echobase.importError.duplicate.sample=L'opération %s ne peut pas contenir deux échantillons de même type %s, espèce %s et taille %s
echobase.importError.esduCell.notfound=Un nouveau dataAquisition pour la campagne %s, navire %s, instrument %s doit être crée mais il reste des cellules élémentaires non rattachées à une cellule ESDU (ligne %s)
echobase.importError.fromFile=Erreur lors de l'import du fichier %s \: %s
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-16 10:08:35 UTC (rev 366)
@@ -100,7 +100,7 @@
conf.setResultLabel("resultLabel");
conf.setVoyageId(getVoyageId());
- conf.setImportMode(ResultsImportMode.ACOUSTIC_BY_ECHOTYPE);
+ conf.setImportMode(ResultsImportMode.ACOUSTIC_BY_ECHOTYPE_AND_SPECIES);
prepareInputFile(conf.getAcousticByEchotypeFile(),
getImportPath("acousticResultByEchotypeAndSpecies.csv"));
Modified: trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz
===================================================================
(Binary files differ)
Modified: trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic.h2.db.gz
===================================================================
(Binary files differ)
Modified: trunk/echobase-services/src/test/resources/log4j.properties
===================================================================
--- trunk/echobase-services/src/test/resources/log4j.properties 2012-03-16 10:07:43 UTC (rev 365)
+++ trunk/echobase-services/src/test/resources/log4j.properties 2012-03-16 10:08:35 UTC (rev 366)
@@ -30,4 +30,4 @@
# package level
log4j.logger.fr.ifremer.echobase=INFO
-#log4j.logger.fr.ifremer.echobase.services.importdata.AcousticDataImportService=DEBUG
+log4j.logger.fr.ifremer.echobase.services.importdata.AcousticDataImportService=DEBUG
1
0