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
December 2011
- 2 participants
- 86 discussions
r188 - in trunk/echobase-tools/src: main/java/fr/ifremer/echobase/tools/loaders test/java/fr/ifremer/echobase/tools/loaders test/resources/csv/new
by tchemit@users.forge.codelutin.com 15 Dec '11
by tchemit@users.forge.codelutin.com 15 Dec '11
15 Dec '11
Author: tchemit
Date: 2011-12-15 12:02:55 +0100 (Thu, 15 Dec 2011)
New Revision: 188
Url: http://forge.codelutin.com/repositories/revision/echobase/188
Log:
impacts from catches model
Added:
trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/StrataLoader.java
trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/StrataLoaderTest.java
trunk/echobase-tools/src/test/resources/csv/new/input-Strata.csv
Removed:
trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LocalisationLoader.java
trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/LocalisationLoaderTest.java
trunk/echobase-tools/src/test/resources/csv/new/input-Localisation.csv
Modified:
trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java
trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderTest.java
Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java
===================================================================
--- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java 2011-12-15 11:02:33 UTC (rev 187)
+++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java 2011-12-15 11:02:55 UTC (rev 188)
@@ -36,7 +36,7 @@
import fr.ifremer.echobase.entities.meta.TableMeta;
import fr.ifremer.echobase.services.CsvImportResult;
import fr.ifremer.echobase.services.DbEditorService;
-import fr.ifremer.echobase.services.DbImportExportService;
+import fr.ifremer.echobase.services.DbImportService;
import fr.ifremer.echobase.services.EchoBaseServiceContext;
import fr.ifremer.echobase.services.EchoBaseServiceSupport;
import fr.ifremer.echobase.services.models.EntityCsvModel;
@@ -332,7 +332,7 @@
boolean commit,
FileType... fileTypes) throws IOException, TopiaException {
- DbImportExportService service = newService(DbImportExportService.class);
+ DbImportService service = newService(DbImportService.class);
for (FileType fileType : fileTypes) {
Deleted: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LocalisationLoader.java
===================================================================
--- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LocalisationLoader.java 2011-12-15 11:02:33 UTC (rev 187)
+++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LocalisationLoader.java 2011-12-15 11:02:55 UTC (rev 188)
@@ -1,62 +0,0 @@
-/*
- * #%L
- * EchoBase :: Tools
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.tools.loaders;
-
-import fr.ifremer.echobase.entities.meta.TableMeta;
-import fr.ifremer.echobase.entities.references.Localisation;
-import fr.ifremer.echobase.services.models.EntityCsvModel;
-import fr.ifremer.echobase.tools.FileType;
-
-/**
- * Loader of {@link Localisation}.
- * <p/>
- * TODO Import it.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.2
- */
-public class LocalisationLoader extends EntityLoader<Localisation> {
-
- public LocalisationLoader() {
- super(Localisation.class, FileType.NEW);
- }
-
- @Override
- protected EntityCsvModel<Localisation> createCsvImportModel(TableMeta meta) {
-
- EntityCsvModel<Localisation> model = EntityCsvModel.newModel(
- getCsvSeparator(),
- meta
- );
- model.newMandatoryColumn(Localisation.PROPERTY_MAX_LATITUDE);
- model.newMandatoryColumn(Localisation.PROPERTY_MIN_LATITUDE);
- model.newMandatoryColumn(Localisation.PROPERTY_MAX_LONGITUDE);
- model.newMandatoryColumn(Localisation.PROPERTY_MIN_LONGITUDE);
- model.newMandatoryColumn(Localisation.PROPERTY_BATHYMETRY);
- model.newMandatoryColumn(Localisation.PROPERTY_SEAFLOOR_SUBSTRATE);
- return model;
- }
-
-
-}
\ No newline at end of file
Copied: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/StrataLoader.java (from rev 185, trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/LocalisationLoader.java)
===================================================================
--- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/StrataLoader.java (rev 0)
+++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/StrataLoader.java 2011-12-15 11:02:55 UTC (rev 188)
@@ -0,0 +1,62 @@
+/*
+ * #%L
+ * EchoBase :: Tools
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.tools.loaders;
+
+import fr.ifremer.echobase.entities.meta.TableMeta;
+import fr.ifremer.echobase.entities.references.Strata;
+import fr.ifremer.echobase.services.models.EntityCsvModel;
+import fr.ifremer.echobase.tools.FileType;
+
+/**
+ * Loader of {@link Strata}.
+ * <p/>
+ * TODO Import it.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class StrataLoader extends EntityLoader<Strata> {
+
+ public StrataLoader() {
+ super(Strata.class, FileType.NEW);
+ }
+
+ @Override
+ protected EntityCsvModel<Strata> createCsvImportModel(TableMeta meta) {
+
+ EntityCsvModel<Strata> model = EntityCsvModel.newModel(
+ getCsvSeparator(),
+ meta
+ );
+ model.newMandatoryColumn(Strata.PROPERTY_MAX_LATITUDE);
+ model.newMandatoryColumn(Strata.PROPERTY_MIN_LATITUDE);
+ model.newMandatoryColumn(Strata.PROPERTY_MAX_LONGITUDE);
+ model.newMandatoryColumn(Strata.PROPERTY_MIN_LONGITUDE);
+ model.newMandatoryColumn(Strata.PROPERTY_DEPTH_STRATUM);
+ model.newMandatoryColumn(Strata.PROPERTY_SEAFLOOR_SUBSTRATE);
+ return model;
+ }
+
+
+}
\ No newline at end of file
Property changes on: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/StrataLoader.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderTest.java
===================================================================
--- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderTest.java 2011-12-15 11:02:33 UTC (rev 187)
+++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderTest.java 2011-12-15 11:02:55 UTC (rev 188)
@@ -349,7 +349,7 @@
entityLoaders.add(newService(CellMethodLoader.class));
entityLoaders.add(newService(DataMetadataLoader.class));
entityLoaders.add(newService(TSParametersLoader.class));
- entityLoaders.add(newService(LocalisationLoader.class));
+ entityLoaders.add(newService(StrataLoader.class));
entityLoaders.add(newService(EchotypeCategoryLoader.class));
entityLoaders.add(newService(EchotypeLoader.class));
entityLoaders.add(newService(VesselTypeLoader.class));
Deleted: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/LocalisationLoaderTest.java
===================================================================
--- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/LocalisationLoaderTest.java 2011-12-15 11:02:33 UTC (rev 187)
+++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/LocalisationLoaderTest.java 2011-12-15 11:02:55 UTC (rev 188)
@@ -1,46 +0,0 @@
-/*
- * #%L
- * EchoBase :: Tools
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.tools.loaders;
-
-import fr.ifremer.echobase.entities.references.Localisation;
-import org.junit.Test;
-
-/**
- * To test the {@link LocalisationLoader}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.2
- */
-public class LocalisationLoaderTest extends AbstractLoaderTest<Localisation, LocalisationLoader> {
-
- public LocalisationLoaderTest() {
- super(LocalisationLoader.class, 0, 0);
- }
-
- @Test
- public void testGenerateNewEntities() throws Exception {
- generateNewEntities();
- }
-
-}
Copied: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/StrataLoaderTest.java (from rev 185, trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/LocalisationLoaderTest.java)
===================================================================
--- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/StrataLoaderTest.java (rev 0)
+++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/StrataLoaderTest.java 2011-12-15 11:02:55 UTC (rev 188)
@@ -0,0 +1,46 @@
+/*
+ * #%L
+ * EchoBase :: Tools
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.tools.loaders;
+
+import fr.ifremer.echobase.entities.references.Strata;
+import org.junit.Test;
+
+/**
+ * To test the {@link StrataLoader}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class StrataLoaderTest extends AbstractLoaderTest<Strata, StrataLoader> {
+
+ public StrataLoaderTest() {
+ super(StrataLoader.class, 0, 0);
+ }
+
+ @Test
+ public void testGenerateNewEntities() throws Exception {
+ generateNewEntities();
+ }
+
+}
Property changes on: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/StrataLoaderTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-tools/src/test/resources/csv/new/input-Localisation.csv
===================================================================
--- trunk/echobase-tools/src/test/resources/csv/new/input-Localisation.csv 2011-12-15 11:02:33 UTC (rev 187)
+++ trunk/echobase-tools/src/test/resources/csv/new/input-Localisation.csv 2011-12-15 11:02:55 UTC (rev 188)
@@ -1 +0,0 @@
-maxLatitude;minLatitude;maxLongitude;minLongitude;seafloorSubstrate;bathymetre
\ No newline at end of file
Copied: trunk/echobase-tools/src/test/resources/csv/new/input-Strata.csv (from rev 185, trunk/echobase-tools/src/test/resources/csv/new/input-Localisation.csv)
===================================================================
--- trunk/echobase-tools/src/test/resources/csv/new/input-Strata.csv (rev 0)
+++ trunk/echobase-tools/src/test/resources/csv/new/input-Strata.csv 2011-12-15 11:02:55 UTC (rev 188)
@@ -0,0 +1 @@
+maxLatitude;minLatitude;maxLongitude;minLongitude;seafloorSubstrate;depthStratum
\ No newline at end of file
Property changes on: trunk/echobase-tools/src/test/resources/csv/new/input-Strata.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r187 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services main/java/fr/ifremer/echobase/services/models test/java/fr/ifremer/echobase/services
by tchemit@users.forge.codelutin.com 15 Dec '11
by tchemit@users.forge.codelutin.com 15 Dec '11
15 Dec '11
Author: tchemit
Date: 2011-12-15 12:02:33 +0100 (Thu, 15 Dec 2011)
New Revision: 187
Url: http://forge.codelutin.com/repositories/revision/echobase/187
Log:
- explode DbImportEXportService into two services
- split decoratorService
- try to improve the entity association model (need to be continued)
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java
Removed:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/CsvModelUtil.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DbImportExportServiceTest.java
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 2011-12-15 11:01:21 UTC (rev 186)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -73,6 +73,8 @@
/** Logger. */
private static final Log log = LogFactory.getLog(DbEditorService.class);
+ public static final TimeLog timeLog = new TimeLog(DbEditorService.class);
+
protected DecoratorService decoratorService;
protected DecoratorService getDecoratorService() {
@@ -665,8 +667,6 @@
return Export.newExport(model, datas);
}
- public static final TimeLog timeLog = new TimeLog(DbEditorService.class);
-
protected Export<TopiaEntity> prepareExport(AssociationMeta associationMeta) {
TableMeta tableMeta = getTableMeta(associationMeta.getSource());
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.java (from rev 184, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -0,0 +1,129 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services;
+
+import com.google.common.collect.Lists;
+import fr.ifremer.echobase.EchoBaseIOUtil;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EntitiesUtil;
+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.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.TimeLog;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Service to import / export a complete db.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class DbExportService extends EchoBaseServiceSupport {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(DbExportService.class);
+
+ public static final TimeLog timeLog = new TimeLog(DbEditorService.class);
+
+ protected DbEditorService dbEditorService;
+
+ /**
+ * Export the complete db into csv files stored in a zip archive file.
+ *
+ * @param fileName file name of the zip to create
+ * @return the zip archive file
+ */
+ public File exportDb(String fileName) {
+ File tempDirectory = new File(FileUtils.getTempDirectory(),
+ "echobase-exportDb_" + System.nanoTime());
+ tempDirectory.deleteOnExit();
+
+ File zipFile = new File(tempDirectory, fileName + ".zip");
+
+ DbEditorService service = getDbEditorService();
+ File dir = new File(tempDirectory, "echobase");
+
+ MetaFilenameAware[] entries = getEntries();
+ for (MetaFilenameAware entry : entries) {
+
+ File entryFile = new File(dir, entry.getFilename());
+
+ if (entry instanceof AssociationMeta) {
+ AssociationMeta associationMeta = (AssociationMeta) entry;
+ service.exportDatas(associationMeta, entryFile);
+ } else {
+ TableMeta meta = (TableMeta) entry;
+ service.exportDatas(meta, entryFile);
+ }
+ }
+
+ EchoBaseIOUtil.compressZipFile(zipFile, dir);
+
+ return zipFile;
+ }
+
+ public MetaFilenameAware[] getEntries() {
+
+ List<MetaFilenameAware> entities = Lists.newArrayList();
+ List<MetaFilenameAware> associations = Lists.newArrayList();
+
+ addEntries(entities, associations, EntitiesUtil.getReferenceTypesForCopy());
+ addEntries(entities, associations, EntitiesUtil.getDataTypesforCopy());
+ entities.addAll(associations);
+ return entities.toArray(new MetaFilenameAware[entities.size()]);
+ }
+
+ protected TableMeta getTableMeta(EchoBaseEntityEnum tableName) {
+ return getDbEditorService().getTableMeta(tableName);
+ }
+
+ protected void addEntries(List<MetaFilenameAware> entities,
+ List<MetaFilenameAware> associations,
+ EchoBaseEntityEnum[] types) {
+ for (EchoBaseEntityEnum type : types) {
+
+ TableMeta tableMeta = getTableMeta(type);
+ entities.add(tableMeta);
+
+// for (AssociationMeta associationMeta : tableMeta.getAssociations()) {
+// associations.add(associationMeta);
+// }
+ associations.addAll(tableMeta.getAssociations());
+ }
+ }
+
+ protected DbEditorService getDbEditorService() {
+ if (dbEditorService == null) {
+ dbEditorService = newService(DbEditorService.class);
+ }
+ return dbEditorService;
+ }
+
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.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/DbImportExportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java 2011-12-15 11:01:21 UTC (rev 186)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -1,361 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.services;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.EchoBaseFunctions;
-import fr.ifremer.echobase.EchoBaseIOUtil;
-import fr.ifremer.echobase.EchoBaseTechnicalException;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.EntitiesUtil;
-import fr.ifremer.echobase.entities.EntityModificationLog;
-import fr.ifremer.echobase.entities.meta.AssociationMeta;
-import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
-import fr.ifremer.echobase.entities.meta.TableMeta;
-import fr.ifremer.echobase.services.models.EntityAssociationCsvModel;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-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.csv.Import;
-import org.nuiton.util.csv.ImportExportModel;
-import org.nuiton.util.csv.ImportModel;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-/**
- * Service to import / export a complete db.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.2
- */
-public class DbImportExportService extends EchoBaseServiceSupport {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(DbImportExportService.class);
-
- protected DbEditorService dbEditorService;
-
- /**
- * Import a complete db from the given zip file.
- *
- * @param model model of the db import operation
- * @param user user which perform the import
- * @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 {
-
- File file = model.getInput().getFile();
-
- ZipFile zipFile = new ZipFile(file);
- try {
- MetaFilenameAware[] entries = getEntries();
-
- List<String> missingEntries = Lists.newArrayList();
-
- Map<MetaFilenameAware, ZipEntry> entriestoConsume =
- Maps.newLinkedHashMap();
-
- // check that all mandatories
- for (MetaFilenameAware entry : entries) {
- String filename = entry.getFilename();
- ZipEntry zipEntry = zipFile.getEntry("echobase/" + filename);
-
- if (zipEntry == null) {
- missingEntries.add(filename);
- } else {
- entriestoConsume.put(entry, zipEntry);
- }
- }
-
- if (!missingEntries.isEmpty()) {
-
- if (log.isWarnEnabled()) {
- log.warn("There is " + missingEntries.size() + "missing mandatory files " +
- " in import " + file + "\n" + StringUtil.join(missingEntries, "\n", false));
- }
-
-// throw new EchoBaseTechnicalException(
-// "There is some missing mandatory files " +
-// missingEntries + " in import " + file);
- }
-
- int size = entriestoConsume.size();
- model.setNbSteps(size + 1);
-
- // consume all found entries
- for (Map.Entry<MetaFilenameAware, ZipEntry> entry :
- entriestoConsume.entrySet()) {
-
- model.incrementsProgression();
-
- MetaFilenameAware entryDef = entry.getKey();
- ZipEntry value = entry.getValue();
- CsvImportResult csvResult = CsvImportResult.newResult(
- entryDef.getSource(),
- value.getName(),
- false
- );
- Reader reader =
- new InputStreamReader(zipFile.getInputStream(value));
- try {
- importFile(entryDef, reader, csvResult);
- } finally {
- reader.close();
- }
- }
-
- // add a log entry of import db
- if (log.isInfoEnabled()) {
- log.info("Import done with user " + user.getEmail());
- }
- TopiaDAO<EntityModificationLog> dao =
- getDAO(EntityModificationLog.class);
-
- dao.create(
- EntityModificationLog.PROPERTY_ENTITY_TYPE, "import db",
- EntityModificationLog.PROPERTY_ENTITY_ID, "Complete db",
- EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
- EntityModificationLog.PROPERTY_MODIFICATION_DATE, newDate(),
- EntityModificationLog.PROPERTY_MODIFICATION_TEXT, "import db from file " + file
- );
- commitTransaction("Could not commit db import from file " + file);
- } finally {
- zipFile.close();
- }
- }
-
- /**
- * Export the complete db into csv files stored in a zip archive file.
- *
- * @param fileName file name of the zip to create
- * @return the zip archive file
- */
- public File exportDb(String fileName) {
- File tempDirectory = new File(FileUtils.getTempDirectory(),
- "echobase-exportDb_" + System.nanoTime());
- tempDirectory.deleteOnExit();
-
- File zipFile = new File(tempDirectory, fileName + ".zip");
-
- DbEditorService service = getDbEditorService();
- File dir = new File(tempDirectory, "echobase");
-
- MetaFilenameAware[] entries = getEntries();
- for (MetaFilenameAware entry : entries) {
-
- File entryFile = new File(dir, entry.getFilename());
-
- if (entry instanceof AssociationMeta) {
- AssociationMeta associationMeta = (AssociationMeta) entry;
- service.exportDatas(associationMeta, entryFile);
- } else {
- TableMeta meta = (TableMeta) entry;
- service.exportDatas(meta, entryFile);
- }
- }
-
- EchoBaseIOUtil.compressZipFile(zipFile, dir);
-
- return zipFile;
- }
-
- public void importFile(MetaFilenameAware entry,
- Reader reader,
- CsvImportResult csvResult) throws IOException {
-
- DbEditorService service = getDbEditorService();
-
- if (entry instanceof AssociationMeta) {
-
- // load a association input
-
- AssociationMeta associationMeta = (AssociationMeta) entry;
-
- EchoBaseEntityEnum target = associationMeta.getTarget();
- List<TopiaEntity> targetEntities = getEntities(target);
- Map<String, TopiaEntity> targetsById =
- Maps.uniqueIndex(targetEntities, EchoBaseFunctions.TO_TOPIAID);
-
- ImportModel<TopiaEntity> model =
- EntityAssociationCsvModel.newImportModel(
- getConfiguration().getCsvSeparator(),
- associationMeta,
- targetsById
- );
-
- importEntityAssociation(associationMeta, model, csvResult, reader);
-
- } else {
-
- // normal entity table import
-
- TableMeta tableMeta = (TableMeta) entry;
-
- ImportExportModel<TopiaEntity> model =
- service.buildForImport(tableMeta);
-
- importEntities(tableMeta, model, csvResult, reader);
- }
- }
-
- public MetaFilenameAware[] getEntries() {
-
- List<MetaFilenameAware> entities = Lists.newArrayList();
- List<MetaFilenameAware> associations = Lists.newArrayList();
-
- addEntries(entities, associations, EntitiesUtil.getReferenceTypesForCopy());
- addEntries(entities, associations, EntitiesUtil.getDataTypesforCopy());
- entities.addAll(associations);
- return entities.toArray(new MetaFilenameAware[entities.size()]);
- }
-
- protected TableMeta getTableMeta(EchoBaseEntityEnum tableName) {
- return getDbEditorService().getTableMeta(tableName);
- }
-
- protected void addEntries(List<MetaFilenameAware> entities,
- List<MetaFilenameAware> associations,
- EchoBaseEntityEnum[] types) {
- for (EchoBaseEntityEnum type : types) {
-
- TableMeta tableMeta = getTableMeta(type);
- entities.add(tableMeta);
-
-// for (AssociationMeta associationMeta : tableMeta.getAssociations()) {
-// associations.add(associationMeta);
-// }
- associations.addAll(tableMeta.getAssociations());
- }
- }
-
- protected DbEditorService getDbEditorService() {
- if (dbEditorService == null) {
- dbEditorService = newService(DbEditorService.class);
- }
- return dbEditorService;
- }
-
- protected void importEntities(TableMeta meta,
- ImportExportModel<TopiaEntity> csvModel,
- CsvImportResult result,
- Reader reader) {
-
- if (log.isInfoEnabled()) {
- log.info("Will import " + meta);
- }
- Import<TopiaEntity> importer = Import.newImport(csvModel, reader);
-
- try {
- TopiaDAO<TopiaEntity> dao = getDAO(meta.getSource());
-
- for (TopiaEntity entity : importer) {
-
-
- TopiaEntity entityToSave = dao.create(TopiaEntity.TOPIA_ID,
- entity.getTopiaId());
-
- meta.copy(entity, entityToSave);
-
- result.incrementsNumberUpdated();
- }
- } catch (Exception eee) {
- throw new EchoBaseTechnicalException("Could not import entities of type " + meta.getSource(), eee);
- } finally {
-
- importer.close();
- }
- }
-
- protected <E extends TopiaEntity> void importEntityAssociation(AssociationMeta meta,
- ImportModel<E> csvModel,
- CsvImportResult result,
- Reader reader) {
- if (log.isInfoEnabled()) {
- log.info("Will import " + meta);
- }
- try {
-
- EchoBaseEntityEnum sourceType = meta.getSource();
-// EchoBaseEntityEnum targetType = meta.getTarget();
-
- Import<E> importer = Import.newImport(csvModel, reader);
- TopiaDAO<E> sourceDAO = getDAO(sourceType);
-// TopiaDAO<TopiaEntity> targetDAO = getDAO(targetType);
- List<E> sourceEntities = getEntities(sourceType);
- Map<String, E> sourcesById =
- Maps.uniqueIndex(sourceEntities, EchoBaseFunctions.TO_TOPIAID);
- try {
- for (E row : importer) {
- E entityToSave = sourcesById.get(row.getTopiaId());
- Collection<TopiaEntity> assoc = meta.getChilds(row);
- meta.setChilds(entityToSave, assoc);
-// sourceDAO.update(entityToSave);
-
-// E entityToSave = sourceDAO.findByTopiaId(row.getTopiaId());
-//
-// // check entity exits ?
-// if (entityToSave == null) {
-// throw new EchoBaseTechnicalException(
-// "Could not find entity with id " + row.getTopiaId());
-// }
-// Collection<TopiaEntity> assoc = meta.getChilds(row);
-// Collection<TopiaEntity> associationToSave = Lists.newArrayList();
-// for (TopiaEntity topiaEntity : assoc) {
-// TopiaEntity byTopiaId = targetDAO.findByTopiaId(topiaEntity.getTopiaId());
-// if (byTopiaId == null) {
-// throw new EchoBaseTechnicalException(
-// "Could not find entity with id " + topiaEntity.getTopiaId());
-// }
-// associationToSave.add(byTopiaId);
-// result.incrementsNumberUpdated();
-// }
-// meta.setChilds(entityToSave, associationToSave);
- }
- } finally {
-
- importer.close();
- }
-
- commitTransaction("Could not commit transaction");
- } catch (TopiaException eee) {
- throw new EchoBaseTechnicalException(eee);
- }
- }
-}
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java (from rev 184, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -0,0 +1,427 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.EchoBaseFunctions;
+import fr.ifremer.echobase.EchoBaseTechnicalException;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.EntitiesUtil;
+import fr.ifremer.echobase.entities.EntityModificationLog;
+import fr.ifremer.echobase.entities.meta.AssociationMeta;
+import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
+import fr.ifremer.echobase.entities.meta.TableMeta;
+import fr.ifremer.echobase.services.models.EntityAssociationImportModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+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.ImportExportModel;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportToMap;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+/**
+ * Service to import a complete db.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class DbImportService extends EchoBaseServiceSupport {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(DbImportService.class);
+
+ public static final TimeLog timeLog = new TimeLog(DbImportService.class);
+
+ protected DbEditorService dbEditorService;
+
+ protected Map<MetaFilenameAware, ZipEntry> discoverEntries(File file, ZipFile zipFile) {
+
+ List<String> missingEntries = Lists.newArrayList();
+
+ Map<MetaFilenameAware, ZipEntry> result =
+ Maps.newLinkedHashMap();
+
+ MetaFilenameAware[] entries = getEntries();
+
+ // check that all mandatories
+ for (MetaFilenameAware entry : entries) {
+ String filename = entry.getFilename();
+ ZipEntry zipEntry = zipFile.getEntry("echobase/" + filename);
+
+ if (zipEntry == null) {
+ missingEntries.add(filename);
+ } else {
+ result.put(entry, zipEntry);
+ }
+ }
+ if (!missingEntries.isEmpty()) {
+
+ if (log.isWarnEnabled()) {
+ log.warn("There is " + missingEntries.size() + "missing mandatory files " +
+ " in import " + file + "\n" + StringUtil.join(missingEntries, "\n", false));
+ }
+
+// throw new EchoBaseTechnicalException(
+// "There is some missing mandatory files " +
+// missingEntries + " in import " + file);
+ }
+
+ return result;
+ }
+
+ /**
+ * Import a complete db from the given zip file.
+ *
+ * @param model model of the db import operation
+ * @param user user which perform the import
+ * @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 {
+
+ File file = model.getInput().getFile();
+
+ ZipFile zipFile = new ZipFile(file);
+ try {
+// MetaFilenameAware[] entries = getEntries();
+//
+// List<String> missingEntries = Lists.newArrayList();
+
+ Map<MetaFilenameAware, ZipEntry> entriestoConsume = discoverEntries(
+ file, zipFile);
+
+// // check that all mandatories
+// for (MetaFilenameAware entry : entries) {
+// String filename = entry.getFilename();
+// ZipEntry zipEntry = zipFile.getEntry("echobase/" + filename);
+//
+// if (zipEntry == null) {
+// missingEntries.add(filename);
+// } else {
+// entriestoConsume.put(entry, zipEntry);
+// }
+// }
+//
+// if (!missingEntries.isEmpty()) {
+//
+// if (log.isWarnEnabled()) {
+// log.warn("There is " + missingEntries.size() + "missing mandatory files " +
+// " in import " + file + "\n" + StringUtil.join(missingEntries, "\n", false));
+// }
+//
+//// throw new EchoBaseTechnicalException(
+//// "There is some missing mandatory files " +
+//// missingEntries + " in import " + file);
+// }
+
+ int size = entriestoConsume.size();
+ model.setNbSteps(size + 1);
+
+ // consume all found entries
+ for (Map.Entry<MetaFilenameAware, ZipEntry> entry :
+ entriestoConsume.entrySet()) {
+
+ model.incrementsProgression();
+
+ MetaFilenameAware entryDef = entry.getKey();
+ ZipEntry value = entry.getValue();
+ CsvImportResult csvResult = CsvImportResult.newResult(
+ entryDef.getSource(),
+ value.getName(),
+ false
+ );
+ Reader reader =
+ new InputStreamReader(zipFile.getInputStream(value));
+ try {
+ importFile(entryDef, reader, csvResult);
+ } finally {
+ reader.close();
+ }
+ }
+
+ // add a log entry of import db
+ if (log.isInfoEnabled()) {
+ log.info("Import done with user " + user.getEmail());
+ }
+ TopiaDAO<EntityModificationLog> dao =
+ getDAO(EntityModificationLog.class);
+
+ dao.create(
+ EntityModificationLog.PROPERTY_ENTITY_TYPE, "import db",
+ EntityModificationLog.PROPERTY_ENTITY_ID, "Complete db",
+ EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
+ EntityModificationLog.PROPERTY_MODIFICATION_DATE, newDate(),
+ EntityModificationLog.PROPERTY_MODIFICATION_TEXT, "import db from file " + file.getName()
+ );
+ commitTransaction("Could not commit db import from file " + file);
+ } finally {
+ zipFile.close();
+ }
+ }
+
+ static class MyImportToMap extends ImportToMap {
+
+ public static MyImportToMap newImport(ImportModel<Map<String, Object>> model,
+ Reader reader) {
+ return new MyImportToMap(model, reader);
+ }
+
+ protected MyImportToMap(ImportModel<Map<String, Object>> model, Reader reader) {
+ super(model, reader);
+ this.reader.setSafetySwitch(false);
+ }
+
+
+ }
+
+ public <E extends TopiaEntity> void importFile(MetaFilenameAware entry,
+ Reader reader,
+ CsvImportResult csvResult) throws IOException {
+
+ DbEditorService service = getDbEditorService();
+
+ long s0;
+
+ s0 = TimeLog.getTime();
+
+ if (entry instanceof AssociationMeta) {
+
+ // load a association input
+
+ AssociationMeta meta = (AssociationMeta) entry;
+
+ if (log.isInfoEnabled()) {
+ log.info("Will import " + meta);
+ }
+
+ EchoBaseEntityEnum source = meta.getSource();
+ EchoBaseEntityEnum target = meta.getTarget();
+ timeLog.log(s0, "importFile::getTargetEntities");
+// List<TopiaEntity> targetEntities = getEntities(target);
+// Map<String, TopiaEntity> targetsById =
+// Maps.uniqueIndex(targetEntities, EchoBaseFunctions.TO_TOPIAID);
+
+ ImportModel<Map<String, Object>> model =
+ EntityAssociationImportModel.newImportModel(
+ getConfiguration().getCsvSeparator(),
+ meta
+ );
+
+// EchoBaseEntityEnum sourceType = meta.getSource();
+
+ ImportToMap importer = MyImportToMap.newImport(model, reader);
+
+ s0 = TimeLog.getTime();
+// List<E> sourceEntities = getEntities(sourceType);
+ timeLog.log(s0, "importFile::getSourceEntities");
+// Map<String, E> sourcesById =
+// Maps.uniqueIndex(sourceEntities, EchoBaseFunctions.TO_TOPIAID);
+ StringBuilder builder = new StringBuilder();
+ try {
+ s0 = TimeLog.getTime();
+ String updateString = "UPDATE " + target.getContract().getSimpleName() + " SET " + source.getContract().getSimpleName() + " = '%s' WHERE topiaId ='%s';";
+ if (log.isInfoEnabled()) {
+ log.info("Will apply " + updateString);
+ }
+ int compt = 0;
+ for (Map<String, Object> row : importer) {
+ 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) {
+ // flush it
+ getTransaction().executeSQL(builder.toString());
+ builder = new StringBuilder();
+ }
+ }
+ csvResult.incrementsNumberUpdated();
+ }
+
+ timeLog.log(s0, "importFile::import");
+ } catch (TopiaException eee) {
+ throw new EchoBaseTechnicalException(
+ "Could not execute sql script", eee);
+ } finally {
+
+ importer.close();
+ }
+
+ } else {
+
+ // normal entity table import
+
+ TableMeta meta = (TableMeta) entry;
+
+ if (log.isInfoEnabled()) {
+ log.info("Will import " + meta);
+ }
+
+ ImportModel<TopiaEntity> model = service.buildForImport(meta);
+
+ Import<TopiaEntity> importer = Import.newImport(model, reader);
+
+ try {
+ TopiaDAO<TopiaEntity> dao = getDAO(meta.getSource());
+ s0 = TimeLog.getTime();
+ for (TopiaEntity entity : importer) {
+
+ TopiaEntity entityToSave = dao.create(TopiaEntity.TOPIA_ID,
+ entity.getTopiaId());
+
+ meta.copy(entity, entityToSave);
+
+ csvResult.incrementsNumberUpdated();
+ }
+ timeLog.log(s0, "importFile::import");
+ } catch (Exception eee) {
+ throw new EchoBaseTechnicalException("Could not import entities of type " + meta.getSource(), eee);
+ } finally {
+
+ importer.close();
+ }
+
+ }
+ }
+
+ public MetaFilenameAware[] getEntries() {
+
+ List<MetaFilenameAware> entities = Lists.newArrayList();
+ List<MetaFilenameAware> associations = Lists.newArrayList();
+
+ addEntries(entities, associations, EntitiesUtil.getReferenceTypesForCopy());
+ addEntries(entities, associations, EntitiesUtil.getDataTypesforCopy());
+ entities.addAll(associations);
+ return entities.toArray(new MetaFilenameAware[entities.size()]);
+ }
+
+ protected TableMeta getTableMeta(EchoBaseEntityEnum tableName) {
+ return getDbEditorService().getTableMeta(tableName);
+ }
+
+ protected void addEntries(List<MetaFilenameAware> entities,
+ List<MetaFilenameAware> associations,
+ EchoBaseEntityEnum[] types) {
+ for (EchoBaseEntityEnum type : types) {
+
+ TableMeta tableMeta = getTableMeta(type);
+ entities.add(tableMeta);
+
+// for (AssociationMeta associationMeta : tableMeta.getAssociations()) {
+// associations.add(associationMeta);
+// }
+ associations.addAll(tableMeta.getAssociations());
+ }
+ }
+
+ protected DbEditorService getDbEditorService() {
+ if (dbEditorService == null) {
+ dbEditorService = newService(DbEditorService.class);
+ }
+ return dbEditorService;
+ }
+
+ protected void mportEntities(TableMeta meta,
+ ImportExportModel<TopiaEntity> csvModel,
+ CsvImportResult result,
+ Reader reader) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will import " + meta);
+ }
+ Import<TopiaEntity> importer = Import.newImport(csvModel, reader);
+
+ try {
+ TopiaDAO<TopiaEntity> dao = getDAO(meta.getSource());
+ long s0 = TimeLog.getTime();
+ for (TopiaEntity entity : importer) {
+
+ TopiaEntity entityToSave = dao.create(TopiaEntity.TOPIA_ID,
+ entity.getTopiaId());
+
+ meta.copy(entity, entityToSave);
+
+ result.incrementsNumberUpdated();
+ }
+ timeLog.log(s0, "importEntities");
+ } catch (Exception eee) {
+ throw new EchoBaseTechnicalException("Could not import entities of type " + meta.getSource(), eee);
+ } finally {
+
+ importer.close();
+ }
+ }
+
+ protected <E extends TopiaEntity> void mportEntityAssociation(AssociationMeta meta,
+ ImportModel<E> csvModel,
+ CsvImportResult result,
+ Reader reader) {
+ if (log.isInfoEnabled()) {
+ log.info("Will import " + meta);
+ }
+
+ EchoBaseEntityEnum sourceType = meta.getSource();
+
+ Import<E> importer = Import.newImport(csvModel, reader);
+ long s0;
+ s0 = TimeLog.getTime();
+ List<E> sourceEntities = getEntities(sourceType);
+ timeLog.log(s0, "importEntityAssociation::getEntities");
+ Map<String, E> sourcesById =
+ Maps.uniqueIndex(sourceEntities, EchoBaseFunctions.TO_TOPIAID);
+ try {
+ s0 = TimeLog.getTime();
+ for (E row : importer) {
+ E entityToSave = sourcesById.get(row.getTopiaId());
+ Collection<TopiaEntity> assoc = meta.getChilds(row);
+ meta.setChilds(entityToSave, assoc);
+ result.incrementsNumberUpdated();
+ }
+ timeLog.log(s0, "importEntityAssociation::import");
+ } finally {
+
+ importer.close();
+ }
+ }
+}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java 2011-12-15 11:01:21 UTC (rev 186)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -26,64 +26,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.ExportQuery;
-import fr.ifremer.echobase.entities.data.Cell;
-import fr.ifremer.echobase.entities.data.Data;
-import fr.ifremer.echobase.entities.data.DataAcquisition;
-import fr.ifremer.echobase.entities.data.DataProcessing;
-import fr.ifremer.echobase.entities.data.Operation;
-import fr.ifremer.echobase.entities.data.OperationGearMetadataValue;
-import fr.ifremer.echobase.entities.data.OperationMetadataValue;
-import fr.ifremer.echobase.entities.data.Result;
-import fr.ifremer.echobase.entities.data.Sample;
-import fr.ifremer.echobase.entities.data.SampleData;
-import fr.ifremer.echobase.entities.data.Transect;
-import fr.ifremer.echobase.entities.data.Transit;
-import fr.ifremer.echobase.entities.data.Voyage;
-import fr.ifremer.echobase.entities.references.AcousticInstrument;
-import fr.ifremer.echobase.entities.references.AgeCategory;
-import fr.ifremer.echobase.entities.references.AreaOfOperation;
-import fr.ifremer.echobase.entities.references.Calibration;
-import fr.ifremer.echobase.entities.references.Category;
-import fr.ifremer.echobase.entities.references.CategoryMeaning;
-import fr.ifremer.echobase.entities.references.CategoryRef;
-import fr.ifremer.echobase.entities.references.CategoryType;
-import fr.ifremer.echobase.entities.references.CellMethod;
-import fr.ifremer.echobase.entities.references.CellType;
-import fr.ifremer.echobase.entities.references.DataMetadata;
-import fr.ifremer.echobase.entities.references.DataProtocol;
-import fr.ifremer.echobase.entities.references.DataQuality;
-import fr.ifremer.echobase.entities.references.DataType;
-import fr.ifremer.echobase.entities.references.DepthStratum;
-import fr.ifremer.echobase.entities.references.Echotype;
-import fr.ifremer.echobase.entities.references.EchotypeCategory;
-import fr.ifremer.echobase.entities.references.Gear;
-import fr.ifremer.echobase.entities.references.GearCaracteristic;
-import fr.ifremer.echobase.entities.references.GearMetadata;
-import fr.ifremer.echobase.entities.references.GearMetadataValue;
-import fr.ifremer.echobase.entities.references.GearType;
-import fr.ifremer.echobase.entities.references.Impacte;
-import fr.ifremer.echobase.entities.references.Localisation;
-import fr.ifremer.echobase.entities.references.MeasureType;
-import fr.ifremer.echobase.entities.references.MeasurementMetadata;
-import fr.ifremer.echobase.entities.references.Mission;
-import fr.ifremer.echobase.entities.references.Moment;
-import fr.ifremer.echobase.entities.references.OperationMetadata;
-import fr.ifremer.echobase.entities.references.OperationType;
-import fr.ifremer.echobase.entities.references.ReferenceDatum;
-import fr.ifremer.echobase.entities.references.ReferenceDatumType;
-import fr.ifremer.echobase.entities.references.ReferencingMethod;
-import fr.ifremer.echobase.entities.references.SampleDataType;
-import fr.ifremer.echobase.entities.references.SampleType;
-import fr.ifremer.echobase.entities.references.SexeCategory;
-import fr.ifremer.echobase.entities.references.SizeCategory;
-import fr.ifremer.echobase.entities.references.Species;
-import fr.ifremer.echobase.entities.references.SpeciesCategory;
-import fr.ifremer.echobase.entities.references.Station;
-import fr.ifremer.echobase.entities.references.TSParameters;
-import fr.ifremer.echobase.entities.references.Vessel;
-import fr.ifremer.echobase.entities.references.VesselType;
+import fr.ifremer.echobase.EchoBaseDecoratorProvider;
import org.apache.commons.collections.CollectionUtils;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.util.decorator.Decorator;
@@ -168,190 +111,4 @@
return decorator;
}
- static class EchoBaseDecoratorProvider extends DecoratorMulti18nProvider {
-
- @Override
- protected void loadDecorators(Locale locale) {
-
- // EchoBaseUser decorator
- registerJXPathDecorator(locale, EchoBaseUser.class, "${email}$s");
-
- // ExportQuery decorator
- registerJXPathDecorator(locale, ExportQuery.class, "${name}$s - ${description}$s");
-
- // AcousticInstrument decorator
- registerJXPathDecorator(locale, AcousticInstrument.class, "${id}$s");
-
- // AgeCategory decorator
- registerJXPathDecorator(locale, AgeCategory.class, "${name}$s");
-
- // AreaOfOperation decorator
- registerJXPathDecorator(locale, AreaOfOperation.class, "${name}$s");
-
- // Calibration decorator
- registerJXPathDecorator(locale, Calibration.class, "${date}$s - acquisition ${aquisitionMethod}$s");
-
- // Category decorator
- registerJXPathDecorator(locale, Category.class, "${classCode}$s ${categoryValue}$s");
-
- // CategoryMeaning decorator
- registerJXPathDecorator(locale, CategoryMeaning.class, "${name}$s");
-
- // CategoryRef decorator
- registerJXPathDecorator(locale, CategoryRef.class, "${genusSpecies}$s");
-
- // CategoryType decorator
- registerJXPathDecorator(locale, CategoryType.class, "${name}$s");
-
- // CellMethod decorator
- registerJXPathDecorator(locale, CellMethod.class, "${name}$s");
-
- // CellType decorator
- registerJXPathDecorator(locale, CellType.class, "${name}$s");
-
- // DataMetadata decorator
- registerJXPathDecorator(locale, DataMetadata.class, "${name}$s");
-
- // DataProtocol decorator
- registerJXPathDecorator(locale, DataProtocol.class, "${description}$s [ ${startValidityDate}$s - ${endValidityDate}$s ]");
-
- // DataQuality decorator
- registerJXPathDecorator(locale, DataQuality.class, "${qualityDataFlagValues}$s - ${flagMeanings}$s");
-
- // DataType decorator
- registerJXPathDecorator(locale, DataType.class, "${name}$s");
-
- // DepthStratum decorator
- registerJXPathDecorator(locale, DepthStratum.class, "${id}$s - ${meaning}$s");
-
- // Echotype decorator
- registerJXPathDecorator(locale, Echotype.class, "${id}$s - ${name}$s");
-
- // EchotypeCategory decorator
- registerJXPathDecorator(locale, EchotypeCategory.class, "${name}$s");
-
- // Gear decorator
- registerJXPathDecorator(locale, Gear.class, "${name}$s [ ${startValidityDate}$s - ${endValidityDate}$s ]");
-
- // GearCaracteristic decorator
- registerJXPathDecorator(locale, GearCaracteristic.class, "${name}$s");
-
- // GearMetadata decorator
- registerJXPathDecorator(locale, GearMetadata.class, "${name}$s");
-
- // GearMetadataValue decorator
- registerJXPathDecorator(locale, GearMetadataValue.class, "${dataValue}$s");
-
- // GearType decorator
- registerJXPathDecorator(locale, GearType.class, "${name}$s");
-
- // Impacte decorator
- registerJXPathDecorator(locale, Impacte.class, "${measurementUnit}$s - ${species.genusSpecies}");
-
- // Localisation decorator
- registerJXPathDecorator(locale, Localisation.class, "Latitude <${minLatitude}$s - ${maxLatitude}$s>, Longitude <${minLongitude}$s - ${maxLongitude}$s>");
-
- // MeasurementMetadata decorator
- registerJXPathDecorator(locale, MeasurementMetadata.class, "${name}$s");
-
- // MeasureType decorator
- registerJXPathDecorator(locale, MeasureType.class, "${name}$s");
-
- // Mission decorator
- registerJXPathDecorator(locale, Mission.class, "${name}$s");
-
- // Moment decorator
- registerJXPathDecorator(locale, Moment.class, "${name}$s");
-
- // OperationMetadata decorator
- registerJXPathDecorator(locale, OperationMetadata.class, "${name}$s");
-
- // OperationType decorator
- registerJXPathDecorator(locale, OperationType.class, "${name}$s");
-
- // ReferenceDatum decorator
- registerJXPathDecorator(locale, ReferenceDatum.class, "${id}$s");
-
- // ReferenceDatumType decorator
- registerJXPathDecorator(locale, ReferenceDatumType.class, "${name}$s");
-
- // ReferencingMethod decorator
- registerJXPathDecorator(locale, ReferencingMethod.class, "${name}$s");
-
- // SampleDataType decorator
- registerJXPathDecorator(locale, SampleDataType.class, "${name}$s");
-
- // SampleType decorator
- registerJXPathDecorator(locale, SampleType.class, "${name}$s - level ${level}$s");
-
- // SexeCategory decorator
- registerJXPathDecorator(locale, SexeCategory.class, "${name}$s");
-
- // SizeCategory decorator
- registerJXPathDecorator(locale, SizeCategory.class, "${name}$s");
-
- // Species decorator
- registerJXPathDecorator(locale, Species.class, "${genusSpecies}$s");
-
- //TODO
- // SpeciesCategory decorator
- registerJXPathDecorator(locale, SpeciesCategory.class, "${species.genusSpecies}$s - ...");
-
- // Station decorator
- registerJXPathDecorator(locale, Station.class, "${startLatitude}$s - ${startLongitude}$s");
-
- //TODO
- // TSParameters decorator
- registerJXPathDecorator(locale, TSParameters.class, "${}$s");
-
- // Vessel decorator
- registerJXPathDecorator(locale, Vessel.class, "${name}$s");
-
- // VesselType decorator
- registerJXPathDecorator(locale, VesselType.class, "${name}$s");
-
- // Cell decorator
- registerJXPathDecorator(locale, Cell.class, "${name}$s");
-
- // Data decorator
- registerJXPathDecorator(locale, Data.class, "${dataValue}$s");
-
- //TODO
- // DataAcquisition decorator
- registerJXPathDecorator(locale, DataAcquisition.class, "");
-
- //TODO
- // DataProcessing decorator
- registerJXPathDecorator(locale, DataProcessing.class, "");
-
- // Operation decorator
- registerJXPathDecorator(locale, Operation.class, "${startDate}$s - ${endDate}$s");
-
- // OperationGearMetadataValue decorator
- registerJXPathDecorator(locale, OperationGearMetadataValue.class, "${dataValue}");
-
- // OperationMetadataValue decorator
- registerJXPathDecorator(locale, OperationMetadataValue.class, "${dataValue}$s - moment ${moment.name}");
-
- // Result decorator
- registerJXPathDecorator(locale, Result.class, "${resultvalue}$s");
-
- // Sample decorator
- registerJXPathDecorator(locale, Sample.class, "${resultvalue}$s");
-
- // SampleData decorator
- registerJXPathDecorator(locale, SampleData.class, "${resultvalue}$s");
-
- // Transect decorator
- registerJXPathDecorator(locale, Transect.class, "${title}$s - Vessel ${vessel}$s");
-
- // Transit decorator
- registerJXPathDecorator(locale, Transit.class, "${startTime}$s - ${endTime}$s");
-
- // Voyage decorator
- registerJXPathDecorator(locale, Voyage.class, "${voyageName}$s");
-
-
- }
- }
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/CsvModelUtil.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/CsvModelUtil.java 2011-12-15 11:01:21 UTC (rev 186)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/CsvModelUtil.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -35,6 +35,7 @@
import org.nuiton.util.StringUtil;
import org.nuiton.util.csv.Common;
import org.nuiton.util.csv.ValueFormatter;
+import org.nuiton.util.csv.ValueParser;
import org.nuiton.util.csv.ValueParserFormatter;
import java.text.ParseException;
@@ -124,6 +125,17 @@
}
}
+ public static final AssociationValueParser ASSOCIATION_VALUE_PARSER = new AssociationValueParser();
+
+ public static class AssociationValueParser implements ValueParser<String[]> {
+
+ @Override
+ public String[] parse(String value) throws ParseException {
+ String[] ids = value.split("\\|");
+ return ids;
+ }
+ }
+
public static class ForeignKeyValue<E extends TopiaEntity> implements ValueParserFormatter<E> {
protected final Class<E> entityType;
Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java (from rev 184, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationCsvModel.java)
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -0,0 +1,102 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services.models;
+
+import fr.ifremer.echobase.entities.meta.AssociationMeta;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportableColumn;
+import org.nuiton.util.csv.ModelBuilder;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A model to import / export associations of entities into csv files.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class EntityAssociationImportModel implements ImportModel<Map<String, Object>> {
+
+ protected final char separator;
+
+ protected final AssociationMeta meta;
+
+ protected ModelBuilder<Map<String, Object>> modelBuilder;
+
+ public static ImportModel<Map<String, Object>> newImportModel(char separator,
+ AssociationMeta meta
+ ) {
+ EntityAssociationImportModel model = new EntityAssociationImportModel(
+ separator, meta);
+
+ // topiaId <-> topiaId
+ model.modelBuilder.newMandatoryColumn(
+ TopiaEntity.TOPIA_ID,
+ CsvModelUtil.<Map<String, Object>, String>newMapProperty(TopiaEntity.TOPIA_ID)
+ );
+
+ // add association -> target
+// Class<TopiaEntity> target =
+// (Class<TopiaEntity>) meta.getTarget().getImplementation();
+
+ model.modelBuilder.newMandatoryColumn(
+ meta.getName(),
+ CsvModelUtil.ASSOCIATION_VALUE_PARSER,
+ CsvModelUtil.<Map<String, Object>, String[]>newMapProperty("target")
+ );
+
+ return model;
+ }
+
+ @Override
+ public char getSeparator() {
+ return separator;
+ }
+
+ @Override
+ public Iterable<ImportableColumn<Map<String, Object>, Object>> getColumnsForImport() {
+ return (Collection)
+ modelBuilder.getColumnsForImport();
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> headerNames) {
+ }
+
+ @Override
+ public Map<String, Object> newEmptyInstance() {
+ return null;
+ }
+
+ protected EntityAssociationImportModel(char separator, AssociationMeta meta) {
+ this.separator = separator;
+ this.meta = meta;
+ modelBuilder = new ModelBuilder<Map<String, Object>>();
+ }
+
+
+}
\ No newline at end of file
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DbImportExportServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DbImportExportServiceTest.java 2011-12-15 11:01:21 UTC (rev 186)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DbImportExportServiceTest.java 2011-12-15 11:02:33 UTC (rev 187)
@@ -47,7 +47,7 @@
import java.util.Set;
/**
- * Test the {@link DbImportExportService}.
+ * Test the {@link DbExportService}.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.2
1
0
r186 - in trunk/echobase-entities/src/main: java/fr/ifremer/echobase java/fr/ifremer/echobase/entities resources/i18n xmi
by tchemit@users.forge.codelutin.com 15 Dec '11
by tchemit@users.forge.codelutin.com 15 Dec '11
15 Dec '11
Author: tchemit
Date: 2011-12-15 12:01:21 +0100 (Thu, 15 Dec 2011)
New Revision: 186
Url: http://forge.codelutin.com/repositories/revision/echobase/186
Log:
modify catches model + add decoratorProvider
Added:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java
Modified:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java
trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties
trunk/echobase-entities/src/main/xmi/echobase.zargo
Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java (rev 0)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java 2011-12-15 11:01:21 UTC (rev 186)
@@ -0,0 +1,281 @@
+/*
+ * #%L
+ * EchoBase :: Entities
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase;
+
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.ExportQuery;
+import fr.ifremer.echobase.entities.data.Cell;
+import fr.ifremer.echobase.entities.data.Data;
+import fr.ifremer.echobase.entities.data.DataAcquisition;
+import fr.ifremer.echobase.entities.data.DataProcessing;
+import fr.ifremer.echobase.entities.data.GearMetadataValue;
+import fr.ifremer.echobase.entities.data.Operation;
+import fr.ifremer.echobase.entities.data.OperationMetadataValue;
+import fr.ifremer.echobase.entities.data.Result;
+import fr.ifremer.echobase.entities.data.Sample;
+import fr.ifremer.echobase.entities.data.SampleData;
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.Transit;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.AcousticInstrument;
+import fr.ifremer.echobase.entities.references.AgeCategory;
+import fr.ifremer.echobase.entities.references.AreaOfOperation;
+import fr.ifremer.echobase.entities.references.Calibration;
+import fr.ifremer.echobase.entities.references.Category;
+import fr.ifremer.echobase.entities.references.CategoryMeaning;
+import fr.ifremer.echobase.entities.references.CategoryRef;
+import fr.ifremer.echobase.entities.references.CategoryType;
+import fr.ifremer.echobase.entities.references.CellMethod;
+import fr.ifremer.echobase.entities.references.CellType;
+import fr.ifremer.echobase.entities.references.DataMetadata;
+import fr.ifremer.echobase.entities.references.DataProtocol;
+import fr.ifremer.echobase.entities.references.DataQuality;
+import fr.ifremer.echobase.entities.references.DataType;
+import fr.ifremer.echobase.entities.references.DepthStratum;
+import fr.ifremer.echobase.entities.references.Echotype;
+import fr.ifremer.echobase.entities.references.EchotypeCategory;
+import fr.ifremer.echobase.entities.references.Gear;
+import fr.ifremer.echobase.entities.references.GearCharacteristic;
+import fr.ifremer.echobase.entities.references.GearCharacteristicValue;
+import fr.ifremer.echobase.entities.references.GearMetadata;
+import fr.ifremer.echobase.entities.references.GearType;
+import fr.ifremer.echobase.entities.references.Impacte;
+import fr.ifremer.echobase.entities.references.LengthAgeKey;
+import fr.ifremer.echobase.entities.references.MeasureType;
+import fr.ifremer.echobase.entities.references.MeasurementMetadata;
+import fr.ifremer.echobase.entities.references.Mission;
+import fr.ifremer.echobase.entities.references.OperationEvent;
+import fr.ifremer.echobase.entities.references.OperationMetadata;
+import fr.ifremer.echobase.entities.references.OperationType;
+import fr.ifremer.echobase.entities.references.ReferenceDatum;
+import fr.ifremer.echobase.entities.references.ReferenceDatumType;
+import fr.ifremer.echobase.entities.references.ReferencingMethod;
+import fr.ifremer.echobase.entities.references.SampleDataType;
+import fr.ifremer.echobase.entities.references.SampleType;
+import fr.ifremer.echobase.entities.references.SexeCategory;
+import fr.ifremer.echobase.entities.references.SizeCategory;
+import fr.ifremer.echobase.entities.references.Species;
+import fr.ifremer.echobase.entities.references.SpeciesCategory;
+import fr.ifremer.echobase.entities.references.Strata;
+import fr.ifremer.echobase.entities.references.TSParameters;
+import fr.ifremer.echobase.entities.references.Vessel;
+import fr.ifremer.echobase.entities.references.VesselType;
+import fr.ifremer.echobase.entities.references.WeightLengthKey;
+import org.nuiton.util.decorator.DecoratorMulti18nProvider;
+
+import java.util.Locale;
+
+/**
+ * Decorator provider.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class EchoBaseDecoratorProvider extends DecoratorMulti18nProvider {
+
+ @Override
+ protected void loadDecorators(Locale locale) {
+
+ // EchoBaseUser decorator
+ registerJXPathDecorator(locale, EchoBaseUser.class, "${email}$s");
+
+ // ExportQuery decorator
+ registerJXPathDecorator(locale, ExportQuery.class, "${name}$s - ${description}$s");
+
+ // AcousticInstrument decorator
+ registerJXPathDecorator(locale, AcousticInstrument.class, "${id}$s");
+
+ // AgeCategory decorator
+ registerJXPathDecorator(locale, AgeCategory.class, "${name}$s");
+
+ // AreaOfOperation decorator
+ registerJXPathDecorator(locale, AreaOfOperation.class, "${name}$s");
+
+ // Calibration decorator
+ registerJXPathDecorator(locale, Calibration.class, "${date}$s - acquisition ${aquisitionMethod}$s");
+
+ // Category decorator
+ registerJXPathDecorator(locale, Category.class, "${classCode}$s ${categoryValue}$s");
+
+ // CategoryMeaning decorator
+ registerJXPathDecorator(locale, CategoryMeaning.class, "${name}$s");
+
+ // CategoryRef decorator
+ registerJXPathDecorator(locale, CategoryRef.class, "${genusSpecies}$s");
+
+ // CategoryType decorator
+ registerJXPathDecorator(locale, CategoryType.class, "${name}$s");
+
+ // CellMethod decorator
+ registerJXPathDecorator(locale, CellMethod.class, "${name}$s");
+
+ // CellType decorator
+ registerJXPathDecorator(locale, CellType.class, "${name}$s");
+
+ // DataMetadata decorator
+ registerJXPathDecorator(locale, DataMetadata.class, "${name}$s");
+
+ // DataProtocol decorator
+ registerJXPathDecorator(locale, DataProtocol.class, "${description}$s [ ${validSince}$td/%2$tm/%2$tY - ${invalidSince}$td/%3$tm/%3$tY ]");
+
+ // DataQuality decorator
+ registerJXPathDecorator(locale, DataQuality.class, "${qualityDataFlagValues}$s - ${flagMeanings}$s");
+
+ // DataType decorator
+ registerJXPathDecorator(locale, DataType.class, "${name}$s");
+
+ // DepthStratum decorator
+ registerJXPathDecorator(locale, DepthStratum.class, "${id}$s - ${meaning}$s");
+
+ // Echotype decorator
+ registerJXPathDecorator(locale, Echotype.class, "${id}$s - ${name}$s");
+
+ // EchotypeCategory decorator
+ registerJXPathDecorator(locale, EchotypeCategory.class, "${name}$s");
+
+ // Gear decorator
+ registerJXPathDecorator(locale, Gear.class, "${name}$s [ ${validSince}$td/%2$tm/%2$tY - ${invalidSince}$td/%3$tm/%3$tY ]");
+
+ // GearCaracteristic decorator
+ registerJXPathDecorator(locale, GearCharacteristic.class, "${name}$s");
+
+ // GearMetadata decorator
+ registerJXPathDecorator(locale, GearMetadata.class, "${name}$s");
+
+ // GearCharacteristicValue decorator
+ registerJXPathDecorator(locale, GearCharacteristicValue.class, "${dataValue}$s");
+
+ // GearMetadataValue decorator
+ registerJXPathDecorator(locale, GearMetadataValue.class, "${dataValue}$s");
+
+ // GearType decorator
+ registerJXPathDecorator(locale, GearType.class, "${name}$s");
+
+ // Impacte decorator
+ registerJXPathDecorator(locale, Impacte.class, "${measurementUnit}$s - ${species.genusSpecies}");
+
+ // LengthAgeKey decorator
+ registerJXPathDecorator(locale, LengthAgeKey.class, "Age ${age}$s - Length ${length}");
+
+ // MeasurementMetadata decorator
+ registerJXPathDecorator(locale, MeasurementMetadata.class, "${name}$s");
+
+ // MeasureType decorator
+ registerJXPathDecorator(locale, MeasureType.class, "${name}$s");
+
+ // Mission decorator
+ registerJXPathDecorator(locale, Mission.class, "${name}$s");
+
+ // OperationEvent decorator
+ registerJXPathDecorator(locale, OperationEvent.class, "${name}$s");
+
+ // OperationMetadata decorator
+ registerJXPathDecorator(locale, OperationMetadata.class, "${name}$s");
+
+ // OperationType decorator
+ registerJXPathDecorator(locale, OperationType.class, "${name}$s");
+
+ // ReferenceDatum decorator
+ registerJXPathDecorator(locale, ReferenceDatum.class, "${id}$s");
+
+ // ReferenceDatumType decorator
+ registerJXPathDecorator(locale, ReferenceDatumType.class, "${name}$s");
+
+ // ReferencingMethod decorator
+ registerJXPathDecorator(locale, ReferencingMethod.class, "${name}$s");
+
+ // SampleDataType decorator
+ registerJXPathDecorator(locale, SampleDataType.class, "${name}$s");
+
+ // SampleType decorator
+ registerJXPathDecorator(locale, SampleType.class, "${name}$s - level ${level}$s");
+
+ // SexeCategory decorator
+ registerJXPathDecorator(locale, SexeCategory.class, "${name}$s");
+
+ // SizeCategory decorator
+ registerJXPathDecorator(locale, SizeCategory.class, "${name}$s");
+
+ // Species decorator
+ registerJXPathDecorator(locale, Species.class, "${genusSpecies}$s");
+
+ //TODO
+ // SpeciesCategory decorator
+ registerJXPathDecorator(locale, SpeciesCategory.class, "${species.genusSpecies}$s - ...");
+
+ // Strata decorator
+ registerJXPathDecorator(locale, Strata.class, "Latitude <${minLatitude}$s - ${maxLatitude}$s>, Longitude <${minLongitude}$s - ${maxLongitude}$s>");
+
+ //TODO
+ // TSParameters decorator
+ registerJXPathDecorator(locale, TSParameters.class, "${}$s");
+
+ // Vessel decorator
+ registerJXPathDecorator(locale, Vessel.class, "${name}$s");
+
+ // VesselType decorator
+ registerJXPathDecorator(locale, VesselType.class, "${name}$s");
+
+ // WeightLengthKey decorator
+ registerJXPathDecorator(locale, WeightLengthKey.class, "Species ${species.genusSpecies}$s - a=${aParameter}$s, b=${bParameter}$s");
+
+ // Cell decorator
+ registerJXPathDecorator(locale, Cell.class, "${name}$s");
+
+ // Data decorator
+ registerJXPathDecorator(locale, Data.class, "${dataValue}$s");
+
+ //TODO
+ // DataAcquisition decorator
+ registerJXPathDecorator(locale, DataAcquisition.class, "");
+
+ //TODO
+ // DataProcessing decorator
+ registerJXPathDecorator(locale, DataProcessing.class, "");
+
+ // Operation decorator
+ registerJXPathDecorator(locale, Operation.class, "${startDate}$td/%1$tm/%1$tY - ${endDate}$td/%2$tm/%2$tY");
+
+ // OperationMetadataValue decorator
+ registerJXPathDecorator(locale, OperationMetadataValue.class, "${dataValue}$s - moment ${moment.name}");
+
+ // Result decorator
+ registerJXPathDecorator(locale, Result.class, "${resultvalue}$s");
+
+ // Sample decorator
+ registerJXPathDecorator(locale, Sample.class, "${resultvalue}$s");
+
+ // SampleData decorator
+ registerJXPathDecorator(locale, SampleData.class, "${resultvalue}$s");
+
+ // Transect decorator
+ registerJXPathDecorator(locale, Transect.class, "${title}$s - Vessel ${vessel}$s");
+
+ // Transit decorator
+ registerJXPathDecorator(locale, Transit.class, "${startTime}$td/%1$tm/%1$tY - ${endTime}$td/%2$tm/%2$tY");
+
+ // Voyage decorator
+ registerJXPathDecorator(locale, Voyage.class, "${name}$s [ ${startDate}$td/%2$tm/%2$tY - ${endDate}$td/%3$tm/%3$tY ]");
+ }
+}
Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.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 2011-12-14 07:14:58 UTC (rev 185)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java 2011-12-15 11:01:21 UTC (rev 186)
@@ -53,7 +53,7 @@
result.add(EchoBaseEntityEnum.Result);
result.add(EchoBaseEntityEnum.Operation);
result.add(EchoBaseEntityEnum.OperationMetadataValue);
- result.add(EchoBaseEntityEnum.OperationGearMetadataValue);
+ result.add(EchoBaseEntityEnum.GearMetadataValue);
result.add(EchoBaseEntityEnum.Sample);
result.add(EchoBaseEntityEnum.SampleData);
@@ -72,7 +72,7 @@
result.add(EchoBaseEntityEnum.Sample);
result.add(EchoBaseEntityEnum.OperationMetadataValue);
- result.add(EchoBaseEntityEnum.OperationGearMetadataValue);
+ result.add(EchoBaseEntityEnum.GearMetadataValue);
result.add(EchoBaseEntityEnum.Operation);
result.add(EchoBaseEntityEnum.Data);
@@ -101,19 +101,19 @@
result.add(EchoBaseEntityEnum.ReferenceDatumType);
result.add(EchoBaseEntityEnum.VesselType);
result.add(EchoBaseEntityEnum.EchotypeCategory);
- result.add(EchoBaseEntityEnum.Localisation);
+ result.add(EchoBaseEntityEnum.Strata);
result.add(EchoBaseEntityEnum.CellMethod);
result.add(EchoBaseEntityEnum.AcousticInstrument);
result.add(EchoBaseEntityEnum.CategoryType);
result.add(EchoBaseEntityEnum.GearType);
result.add(EchoBaseEntityEnum.CategoryMeaning);
result.add(EchoBaseEntityEnum.Species);
- result.add(EchoBaseEntityEnum.GearCaracteristic);
+ result.add(EchoBaseEntityEnum.GearCharacteristic);
result.add(EchoBaseEntityEnum.ReferenceDatum);
result.add(EchoBaseEntityEnum.DepthStratum);
result.add(EchoBaseEntityEnum.Category);
result.add(EchoBaseEntityEnum.ReferencingMethod);
- result.add(EchoBaseEntityEnum.GearMetadataValue);
+ result.add(EchoBaseEntityEnum.GearCharacteristicValue);
result.add(EchoBaseEntityEnum.GearMetadata);
result.add(EchoBaseEntityEnum.Calibration);
result.add(EchoBaseEntityEnum.OperationType);
@@ -123,18 +123,19 @@
result.add(EchoBaseEntityEnum.Vessel);
result.add(EchoBaseEntityEnum.Echotype);
result.add(EchoBaseEntityEnum.DataMetadata);
+ result.add(EchoBaseEntityEnum.LengthAgeKey);
+ result.add(EchoBaseEntityEnum.WeightLengthKey);
result.add(EchoBaseEntityEnum.CellType);
result.add(EchoBaseEntityEnum.Impacte);
result.add(EchoBaseEntityEnum.Mission);
+ result.add(EchoBaseEntityEnum.OperationEvent);
result.add(EchoBaseEntityEnum.OperationMetadata);
- result.add(EchoBaseEntityEnum.Station);
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.Moment);
result.add(EchoBaseEntityEnum.SpeciesCategory);
return result.toArray(new EchoBaseEntityEnum[result.size()]);
}
@@ -146,7 +147,7 @@
public static EchoBaseEntityEnum[] getReferenceTypesForCopy() {
List<EchoBaseEntityEnum> result = Lists.newLinkedList();
- result.add(EchoBaseEntityEnum.Localisation);
+ result.add(EchoBaseEntityEnum.Strata);
result.add(EchoBaseEntityEnum.SexeCategory);
result.add(EchoBaseEntityEnum.AgeCategory);
result.add(EchoBaseEntityEnum.SizeCategory);
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 2011-12-14 07:14:58 UTC (rev 185)
+++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2011-12-15 11:01:21 UTC (rev 186)
@@ -1,4 +1,5 @@
echobase.common.TSParameters=
+echobase.common.aParameter=
echobase.common.accuracyEstimate=
echobase.common.acknowledgement=
echobase.common.acousticDensityUnit=
@@ -6,6 +7,7 @@
echobase.common.acquisitionSoftwareVersion=
echobase.common.addOffset=
echobase.common.admin=Administrateur
+echobase.common.age=
echobase.common.ageCategory=
echobase.common.altCallsign=
echobase.common.aquisitionMethod=
@@ -15,8 +17,8 @@
echobase.common.authorReference=
echobase.common.axis=
echobase.common.b=
+echobase.common.bParameter=
echobase.common.baracoudaCode=
-echobase.common.bathymetry=
echobase.common.binSizePingAxis=
echobase.common.binSizeRangeAxis=
echobase.common.binUnitsPingAxis=
@@ -41,7 +43,7 @@
echobase.common.dataAcquisition=dataAcquisition
echobase.common.dataCentre=Centre de données
echobase.common.dataCentreEmail=Courriel du centre de données
-echobase.common.dataClass=
+echobase.common.dataLabel=
echobase.common.dataMetadata=
echobase.common.dataProcessing=dataProcessing
echobase.common.dataProtocol=
@@ -67,8 +69,6 @@
echobase.common.endLocality=
echobase.common.endPort=
echobase.common.endTime=
-echobase.common.endTimeFillageEngin=
-echobase.common.endValidityDate=
echobase.common.enginePower=
echobase.common.entityId=Identifiant de l'entité
echobase.common.entityModificationLog=Journal des modifications
@@ -80,13 +80,16 @@
echobase.common.flagMeanings=
echobase.common.frequency=
echobase.common.gear=
-echobase.common.gearCaracteristic=
+echobase.common.gearCharacteristic=
+echobase.common.gearCharacteristicValue=
echobase.common.gearMetadata=
echobase.common.gearMetadataValue=
echobase.common.gearShootingEndLatitude=
echobase.common.gearShootingEndLongitude=
+echobase.common.gearShootingEndTime=
echobase.common.gearShootingStartLatitude=
echobase.common.gearShootingStartLongitude=
+echobase.common.gearShootingStartTime=
echobase.common.gearType=
echobase.common.genusSpecies=
echobase.common.geospatialLatMax=
@@ -96,22 +99,23 @@
echobase.common.geospatialVerticalMax=
echobase.common.geospatialVerticalMin=
echobase.common.geospatialVerticalPositive=
+echobase.common.group=
echobase.common.history=
echobase.common.id=Identifiant
echobase.common.imo=
echobase.common.impacte=
echobase.common.institution=Institution
+echobase.common.invalidSince=
echobase.common.keywords=Môts clefs
-echobase.common.label=
echobase.common.lastModifiedDate=Date de dernière modification
echobase.common.lastModifiedUser=Utilisateur de dernière modification
echobase.common.length=
+echobase.common.lengthAgeKey=
echobase.common.level=
echobase.common.licence=
echobase.common.linestring=
echobase.common.litteratureReference=
echobase.common.litteratureReferences=Références
-echobase.common.localisation=
echobase.common.loggedDataDatatype=
echobase.common.loggedDataFormat=
echobase.common.longName=
@@ -131,14 +135,13 @@
echobase.common.modificationDate=Date de modification
echobase.common.modificationText=Modification
echobase.common.modificationUser=Utilisateur
-echobase.common.moment=
echobase.common.mz=
echobase.common.name=Nom
echobase.common.noiseDesign=
echobase.common.notes=
echobase.common.numberSampled=
echobase.common.operation=
-echobase.common.operationGearMetadataValue=
+echobase.common.operationEvent=
echobase.common.operationMetadata=
echobase.common.operationMetadataValue=
echobase.common.operationType=
@@ -146,6 +149,7 @@
echobase.common.organisationLevelAcknowledgements=
echobase.common.organisationReferences=
echobase.common.password=Mot de passe
+echobase.common.percentAtAge=
echobase.common.pingDutyCycle=
echobase.common.platform=
echobase.common.positive=
@@ -169,6 +173,7 @@
echobase.common.sampleDataType=
echobase.common.sampleType=
echobase.common.sampleWeight=
+echobase.common.sampling=
echobase.common.scaleFactor=
echobase.common.seafloorSubstrate=
echobase.common.sexeCategory=
@@ -181,14 +186,10 @@
echobase.common.sqlQuery=requête SQL
echobase.common.standardName=
echobase.common.startDate=
-echobase.common.startLatitude=
echobase.common.startLocality=
-echobase.common.startLongitude=
echobase.common.startPort=
echobase.common.startTime=
-echobase.common.startTimeFillageEngin=
-echobase.common.startValidityDate=
-echobase.common.station=station
+echobase.common.strata=
echobase.common.taxonCode=
echobase.common.taxonFatherMemocode=
echobase.common.taxonSystematicLevel=
@@ -230,10 +231,13 @@
echobase.common.transectAbstract=
echobase.common.transit=transit
echobase.common.type=
+echobase.common.unit=
echobase.common.units=
echobase.common.validMax=
echobase.common.validMin=
+echobase.common.validSince=
echobase.common.vessel=Navire
echobase.common.vesselType=
echobase.common.voyage=Campagne
+echobase.common.weightLengthKey=
echobase.config.data.directory.description=Chemin de l'application
Modified: trunk/echobase-entities/src/main/xmi/echobase.zargo
===================================================================
(Binary files differ)
1
0
14 Dec '11
Author: tchemit
Date: 2011-12-14 08:14:58 +0100 (Wed, 14 Dec 2011)
New Revision: 185
Url: http://forge.codelutin.com/repositories/revision/echobase/185
Log:
fix dependencies
Modified:
trunk/echobase-tools/pom.xml
trunk/echobase-ui/pom.xml
trunk/pom.xml
Modified: trunk/echobase-tools/pom.xml
===================================================================
--- trunk/echobase-tools/pom.xml 2011-12-13 17:23:10 UTC (rev 184)
+++ trunk/echobase-tools/pom.xml 2011-12-14 07:14:58 UTC (rev 185)
@@ -38,9 +38,11 @@
<version>${project.version}</version>
</dependency>
+ <!-- librairie d'access aux bases ms-access -->
+
<dependency>
- <groupId>fr.ird</groupId>
- <artifactId>msaccess-importer</artifactId>
+ <groupId>com.healthmarketscience.jackcess</groupId>
+ <artifactId>jackcess</artifactId>
</dependency>
<!-- database dependencies -->
@@ -70,16 +72,6 @@
</dependency>
<dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
-
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- </dependency>
-
- <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
@@ -106,13 +98,13 @@
<!-- transitive dependencies -->
<dependency>
- <groupId>org.nuiton.i18n</groupId>
- <artifactId>nuiton-i18n</artifactId>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-utils</artifactId>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
- <artifactId>nuiton-utils</artifactId>
+ <artifactId>nuiton-csv</artifactId>
</dependency>
<dependency>
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2011-12-13 17:23:10 UTC (rev 184)
+++ trunk/echobase-ui/pom.xml 2011-12-14 07:14:58 UTC (rev 185)
@@ -34,11 +34,6 @@
</dependency>
<dependency>
- <groupId>fr.ird</groupId>
- <artifactId>msaccess-importer</artifactId>
- </dependency>
-
- <dependency>
<groupId>org.nuiton.web</groupId>
<artifactId>nuiton-struts2</artifactId>
</dependency>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-12-13 17:23:10 UTC (rev 184)
+++ trunk/pom.xml 2011-12-14 07:14:58 UTC (rev 185)
@@ -119,6 +119,7 @@
<postgresqlVersion>9.1-901.jdbc4</postgresqlVersion>
<slf4jVersion>1.6.4</slf4jVersion>
<jettyVersion>7.5.3.v20111011</jettyVersion>
+ <jackcessVersion>1.2.0</jackcessVersion>
<!-- This version does not work (missing javax.el api in overlay) -->
<!--<jettyVersion>8.0.1.v20110908</jettyVersion>-->
@@ -140,11 +141,11 @@
<dependencyManagement>
<dependencies>
+ <!-- librairie d'access aux bases ms-access -->
<dependency>
- <groupId>fr.ird</groupId>
- <artifactId>msaccess-importer</artifactId>
- <version>${msaccessImporterVersion}</version>
- <scope>compile</scope>
+ <groupId>com.healthmarketscience.jackcess</groupId>
+ <artifactId>jackcess</artifactId>
+ <version>${jackcessVersion}</version>
</dependency>
<!-- librairie des lutins-->
@@ -238,7 +239,6 @@
</dependency>
<!-- base postgres -->
-
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
1
0
r184 - trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor
by tchemit@users.forge.codelutin.com 13 Dec '11
by tchemit@users.forge.codelutin.com 13 Dec '11
13 Dec '11
Author: tchemit
Date: 2011-12-13 18:23:10 +0100 (Tue, 13 Dec 2011)
New Revision: 184
Url: http://forge.codelutin.com/repositories/revision/echobase/184
Log:
fix topiaid when save entity
Modified:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2011-12-13 17:21:48 UTC (rev 183)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2011-12-13 17:23:10 UTC (rev 184)
@@ -42,7 +42,7 @@
private static final long serialVersionUID = 1L;
/** Logger. */
- private static final Log log = LogFactory.getLog(ImportTable.class);
+ private static final Log log = LogFactory.getLog(GetEntities.class);
/** Type of entity to load. */
protected EchoBaseEntityEnum entityType;
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java 2011-12-13 17:21:48 UTC (rev 183)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java 2011-12-13 17:23:10 UTC (rev 184)
@@ -49,7 +49,7 @@
protected EchoBaseEntityEnum entityType;
/** id of entity to save. */
- protected String id;
+ protected String topiaId;
/** Metas of the table */
protected TableMeta tableMeta;
@@ -64,8 +64,8 @@
this.entityType = entityType;
}
- public void setId(String id) {
- this.id = id;
+ public void setTopiaId(String topiaId) {
+ this.topiaId = topiaId;
}
@Override
@@ -93,7 +93,7 @@
}
}
}
- properties.put(TopiaEntity.TOPIA_ID, id);
+ properties.put(TopiaEntity.TOPIA_ID, topiaId);
service.saveEntity(tableMeta,
properties,
1
0
r183 - trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor
by tchemit@users.forge.codelutin.com 13 Dec '11
by tchemit@users.forge.codelutin.com 13 Dec '11
13 Dec '11
Author: tchemit
Date: 2011-12-13 18:21:48 +0100 (Tue, 13 Dec 2011)
New Revision: 183
Url: http://forge.codelutin.com/repositories/revision/echobase/183
Log:
fix conflict with id property
Modified:
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
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 2011-12-13 17:21:22 UTC (rev 182)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2011-12-13 17:21:48 UTC (rev 183)
@@ -255,6 +255,11 @@
formatter='formatEntityLabel'
sortable="true"/>
</s:if>
+ <s:elseif test="#meta.name == 'id'">
+ <sjg:gridColumn name="ID"
+ title="id"
+ sortable="true" editable="true"/>
+ </s:elseif>
<s:else>
<sjg:gridColumn name="%{#meta.name}"
title="%{#meta.name}"
@@ -287,7 +292,7 @@
<s:hidden key="entityType" label=''/>
- <s:hidden id="id" name='id' label=''/>
+ <s:hidden id="topiaId" name='topiaId' label=''/>
<s:iterator value="columnMetas" var="meta" status="status">
<s:set var="metaName" value='%{#meta.name}'/>
1
0
r182 - trunk/echobase-ui/src/main/webapp/WEB-INF/includes
by tchemit@users.forge.codelutin.com 13 Dec '11
by tchemit@users.forge.codelutin.com 13 Dec '11
13 Dec '11
Author: tchemit
Date: 2011-12-13 18:21:22 +0100 (Tue, 13 Dec 2011)
New Revision: 182
Url: http://forge.codelutin.com/repositories/revision/echobase/182
Log:
only admin can load a full db
Modified:
trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2011-12-13 17:20:56 UTC (rev 181)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2011-12-13 17:21:22 UTC (rev 182)
@@ -54,10 +54,12 @@
</div>
<div class="cleanBoth">
<ul>
+ <s:if test="%{userIsAdmin}">
<li>
<s:a action="configureImport" namespace="/importDb" method="input">
<s:text name="echobase.menu.importDb"/></s:a>
</li>
+ </s:if>
<li>
<s:a action="configureMission" namespace="/importData" method="input">
<s:text name="echobase.menu.importData"/></s:a>
1
0
r181 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services
by tchemit@users.forge.codelutin.com 13 Dec '11
by tchemit@users.forge.codelutin.com 13 Dec '11
13 Dec '11
Author: tchemit
Date: 2011-12-13 18:20:56 +0100 (Tue, 13 Dec 2011)
New Revision: 181
Url: http://forge.codelutin.com/repositories/revision/echobase/181
Log:
fix loadRow when property is id (avoid conflict with topiaId)
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java
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 2011-12-13 17:19:39 UTC (rev 180)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2011-12-13 17:20:56 UTC (rev 181)
@@ -106,7 +106,28 @@
String sidx,
Boolean ascendantOrder) {
- return getDatas(entityType, pager, sidx, ascendantOrder, true);
+ TableMeta meta = getTableMeta(entityType);
+
+ List<TopiaEntity> entities = getEntities(meta,
+ pager,
+ sidx,
+ ascendantOrder,
+ null
+ );
+
+ Map<?, ?>[] rows = new Map[entities.size()];
+
+ ImportExportModel<TopiaEntity> model = buildForLoad(meta, "id", true);
+
+ int i = 0;
+ for (Object o : entities) {
+ TopiaEntity entity = (TopiaEntity) o;
+ Map<String, Object> row = loadRow(entity, model);
+ rows[i++] = row;
+ }
+ return rows;
+
+// return getDatas(entityType, pager, sidx, ascendantOrder, true);
}
@@ -169,41 +190,13 @@
}
}
- public Map<?, ?>[] getDatas(EchoBaseEntityEnum entityType,
- Pager pager,
- String sidx,
- Boolean ascendantOrder,
- boolean addDecorated) {
-
- TableMeta meta = getTableMeta(entityType);
-
- List<TopiaEntity> entities = getEntities(meta,
- pager,
- sidx,
- ascendantOrder,
- null
- );
-
- Map<?, ?>[] rows = new Map[entities.size()];
-
- ImportExportModel<TopiaEntity> model = buildForLoad(meta, addDecorated);
-
- int i = 0;
- for (Object o : entities) {
- TopiaEntity entity = (TopiaEntity) o;
- Map<String, Object> row = loadRow(entity, model);
- rows[i++] = row;
- }
- return rows;
- }
-
public Map<?, ?> getData(TableMeta tableMeta, String topiaId) {
EchoBaseEntityEnum entityEnum = tableMeta.getSource();
try {
TopiaDAO<?> dao = getDAO(entityEnum.getContract());
TopiaEntity entity = dao.findByTopiaId(topiaId);
- ImportExportModel<TopiaEntity> model = buildForLoad(tableMeta, true);
+ ImportExportModel<TopiaEntity> model = buildForLoad(tableMeta, TopiaEntity.TOPIA_ID, true);
return loadRow(entity, model);
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException("Could not obtain data", eee);
@@ -497,9 +490,17 @@
} catch (Exception eee) {
throw new EchoBaseTechnicalException(
"Could not obtain property [" + propertyName +
- "] value ", eee);
+ "] value from entity " + entity.getTopiaId(), eee);
}
- String formatedValue = column.formatValue(value);
+ String formatedValue;
+ try {
+ formatedValue = column.formatValue(value);
+ } catch (Exception eee) {
+ throw new EchoBaseTechnicalException(
+ "Could not format property [" + propertyName +
+ "] from value [" + value +
+ "] from entity " + entity.getTopiaId(), eee);
+ }
row.put(propertyName, formatedValue);
}
@@ -607,12 +608,13 @@
}
protected <E extends TopiaEntity> ImportExportModel<E> buildForLoad(TableMeta meta,
+ String idName,
boolean addDecorated) {
EntityCsvModel<E> model = EntityCsvModel.newModel(
getConfiguration().getCsvSeparator(),
meta,
- "id"
+ idName
);
for (ColumnMeta columnMeta : meta) {
@@ -638,6 +640,18 @@
);
}
+ } else if ("id".equals(propertyName)) {
+
+ if ("id".equals(idName)) {
+
+ // there will be a conflict with this meta, rename it to ID
+ model.addDefaultColumn("ID", propertyName, type);
+ } else {
+
+ // no id conflict
+ model.addDefaultColumn(propertyName, type);
+
+ }
} else {
model.addDefaultColumn(propertyName, type);
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java 2011-12-13 17:19:39 UTC (rev 180)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportExportService.java 2011-12-13 17:20:56 UTC (rev 181)
@@ -31,6 +31,7 @@
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.EntitiesUtil;
+import fr.ifremer.echobase.entities.EntityModificationLog;
import fr.ifremer.echobase.entities.meta.AssociationMeta;
import fr.ifremer.echobase.entities.meta.MetaFilenameAware;
import fr.ifremer.echobase.entities.meta.TableMeta;
@@ -76,8 +77,9 @@
* @param model model of the db import operation
* @param user user which perform the import
* @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 {
+ public void importDb(ImportDbConfiguration model, EchoBaseUser user) throws IOException, TopiaException {
File file = model.getInput().getFile();
@@ -143,6 +145,16 @@
if (log.isInfoEnabled()) {
log.info("Import done with user " + user.getEmail());
}
+ TopiaDAO<EntityModificationLog> dao =
+ getDAO(EntityModificationLog.class);
+
+ dao.create(
+ EntityModificationLog.PROPERTY_ENTITY_TYPE, "import db",
+ EntityModificationLog.PROPERTY_ENTITY_ID, "Complete db",
+ EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
+ EntityModificationLog.PROPERTY_MODIFICATION_DATE, newDate(),
+ EntityModificationLog.PROPERTY_MODIFICATION_TEXT, "import db from file " + file
+ );
commitTransaction("Could not commit db import from file " + file);
} finally {
zipFile.close();
@@ -300,20 +312,20 @@
}
try {
- EchoBaseEntityEnum sourceType = meta.getSource();
+ EchoBaseEntityEnum sourceType = meta.getSource();
// EchoBaseEntityEnum targetType = meta.getTarget();
- Import<E> importer = Import.newImport(csvModel, reader);
+ Import<E> importer = Import.newImport(csvModel, reader);
TopiaDAO<E> sourceDAO = getDAO(sourceType);
// TopiaDAO<TopiaEntity> targetDAO = getDAO(targetType);
- List<E> sourceEntities = getEntities(sourceType);
- Map<String, E> sourcesById =
- Maps.uniqueIndex(sourceEntities, EchoBaseFunctions.TO_TOPIAID);
- try {
- for (E row : importer) {
- E entityToSave = sourcesById.get(row.getTopiaId());
- Collection<TopiaEntity> assoc = meta.getChilds(row);
- meta.setChilds(entityToSave, assoc);
+ List<E> sourceEntities = getEntities(sourceType);
+ Map<String, E> sourcesById =
+ Maps.uniqueIndex(sourceEntities, EchoBaseFunctions.TO_TOPIAID);
+ try {
+ for (E row : importer) {
+ E entityToSave = sourcesById.get(row.getTopiaId());
+ Collection<TopiaEntity> assoc = meta.getChilds(row);
+ meta.setChilds(entityToSave, assoc);
// sourceDAO.update(entityToSave);
// E entityToSave = sourceDAO.findByTopiaId(row.getTopiaId());
@@ -335,13 +347,13 @@
// result.incrementsNumberUpdated();
// }
// meta.setChilds(entityToSave, associationToSave);
+ }
+ } finally {
+
+ importer.close();
}
- } finally {
- importer.close();
- }
-
- commitTransaction("Could not commit transaction");
+ commitTransaction("Could not commit transaction");
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException(eee);
}
1
0
Author: tchemit
Date: 2011-12-13 18:19:39 +0100 (Tue, 13 Dec 2011)
New Revision: 180
Url: http://forge.codelutin.com/repositories/revision/echobase/180
Log:
upgrade pom
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-12-13 16:08:03 UTC (rev 179)
+++ trunk/pom.xml 2011-12-13 17:19:39 UTC (rev 180)
@@ -112,9 +112,9 @@
<nuitonI18nVersion>2.4.1</nuitonI18nVersion>
<nuitonWebVersion>1.8</nuitonWebVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
- <struts2Version>2.2.3.1</struts2Version>
+ <struts2Version>2.3.1</struts2Version>
<jqueryPluginVersion>3.2.0</jqueryPluginVersion>
- <seleniumVersion>2.14.0</seleniumVersion>
+ <seleniumVersion>2.15.0</seleniumVersion>
<h2Version>1.3.162</h2Version>
<postgresqlVersion>9.1-901.jdbc4</postgresqlVersion>
<slf4jVersion>1.6.4</slf4jVersion>
1
0
Author: maven-release
Date: 2011-12-13 17:08:03 +0100 (Tue, 13 Dec 2011)
New Revision: 179
Url: http://forge.codelutin.com/repositories/revision/echobase/179
Log:
add echobase initial data zip
Added:
tags/echobase-0.2-2011-12-13.zip
Added: tags/echobase-0.2-2011-12-13.zip
===================================================================
(Binary files differ)
Property changes on: tags/echobase-0.2-2011-12-13.zip
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
1
0