r213 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services main/java/fr/ifremer/echobase/services/models test/java/fr/ifremer/echobase/services
Author: tchemit Date: 2011-12-26 11:10:04 +0100 (Mon, 26 Dec 2011) New Revision: 213 Url: http://forge.codelutin.com/repositories/revision/echobase/213 Log: introduce two atomic servies (ImportService and Exportservice) introduce two atomic services (for db import / export) improve service api (add a cache of services) Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationExportModel.java Removed: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationCsvModel.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 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/EchoBaseServiceSupport.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.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-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2011-12-26 10:10:04 UTC (rev 213) @@ -29,13 +29,10 @@ import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EntityModificationLog; -import fr.ifremer.echobase.entities.meta.AssociationMeta; import fr.ifremer.echobase.entities.meta.ColumnMeta; import fr.ifremer.echobase.entities.meta.DbMeta; -import fr.ifremer.echobase.entities.meta.MetaFilenameAware; import fr.ifremer.echobase.entities.meta.TableMeta; import fr.ifremer.echobase.services.models.CsvModelUtil; -import fr.ifremer.echobase.services.models.EntityAssociationCsvModel; import fr.ifremer.echobase.services.models.EntityCsvModel; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -47,17 +44,10 @@ import org.nuiton.util.TimeLog; import org.nuiton.util.beans.BeanMonitor; import org.nuiton.util.beans.PropertyDiff; -import org.nuiton.util.csv.Export; -import org.nuiton.util.csv.ExportModel; import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.Import; import org.nuiton.util.csv.ImportExportModel; import org.nuiton.util.csv.ImportableColumn; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; import java.util.Collection; import java.util.List; import java.util.Map; @@ -75,13 +65,8 @@ public static final TimeLog timeLog = new TimeLog(DbEditorService.class); - protected DecoratorService decoratorService; - protected DecoratorService getDecoratorService() { - if (decoratorService == null) { - decoratorService = newService(DecoratorService.class); - } - return decoratorService; + return getService(DecoratorService.class); } public <E extends TopiaEntity> List<E> getForeignDatas(Class<E> entityType) { @@ -128,8 +113,6 @@ rows[i++] = row; } return rows; - -// return getDatas(entityType, pager, sidx, ascendantOrder, true); } @@ -240,104 +223,6 @@ commitTransaction("Could not commit transaction"); } - public CsvImportResult importDatas(EchoBaseEntityEnum entityType, - String importFileName, - File importFile, - boolean createIfNotFound, - EchoBaseUser user) throws IOException { - - TableMeta meta = getTableMeta(entityType); - ImportExportModel<TopiaEntity> csvModel = buildForImport(meta); - String messagePrefix = "Import du fichier " + importFileName + " le " + newDate(); - - CsvImportResult result = CsvImportResult.newResult(entityType, - importFileName, - createIfNotFound); - BufferedReader bf = new BufferedReader(new FileReader(importFile)); - try { - - Import<TopiaEntity> importer = Import.newImport(csvModel, bf); - - try { - for (TopiaEntity entity : importer) { - boolean create = saveEntity(meta, - messagePrefix, - entity, - user, - createIfNotFound - ); - - if (create) { - - result.incrementsNumberCreated(); - } else { - - result.incrementsNumberUpdated(); - } - } - } finally { - - importer.close(); - } - - commitTransaction("Could not commit transaction"); - } catch (EchoBaseTechnicalException eee) { - throw eee; - } catch (Exception eee) { - log.error("Failed to read import file " + importFile.getName(), eee); - throw new EchoBaseTechnicalException(eee); - } finally { - bf.close(); - } - return result; - } - - public String exportDatas(TableMeta tableMeta) { - - Export<TopiaEntity> export = prepareExport(tableMeta); - - try { - return export.startExportAsString(); - } catch (Exception eee) { - throw new EchoBaseTechnicalException("Can not export datas", eee); - } - } - - public void exportDatas(TableMeta tableMeta, File file) { - - if (log.isInfoEnabled()) { - log.info("Export table " + tableMeta + " to " + file); - } - long s1 = TimeLog.getTime(); - Export<TopiaEntity> export = prepareExport(tableMeta); - timeLog.log(s1, "prepareExport"); - long s2 = TimeLog.getTime(); - try { - export.exportToFile(file); - } catch (Exception eee) { - throw new EchoBaseTechnicalException("Can not export datas", eee); - } - timeLog.log(s2, "exportToFile"); - } - - public void exportDatas(AssociationMeta associationMeta, File file) { - - if (log.isInfoEnabled()) { - log.info("Export association " + associationMeta + " to " + file); - } - long s1 = TimeLog.getTime(); - Export<TopiaEntity> export = prepareExport(associationMeta); - timeLog.log(s1, "prepareExport"); - - long s2 = TimeLog.getTime(); - try { - export.exportToFile(file); - } catch (Exception eee) { - throw new EchoBaseTechnicalException("Can not export datas", eee); - } - timeLog.log(s2, "exportToFile"); - } - public boolean saveEntity(TableMeta tableMeta, String messagePrefix, TopiaEntity entity, @@ -509,80 +394,6 @@ return row; } - public <E extends TopiaEntity> EntityCsvModel<E> buildForImport(MetaFilenameAware meta) { - if (meta instanceof AssociationMeta) { - return buildForImport((AssociationMeta) meta); - } - if (meta instanceof TableMeta) { - return buildForImport((TableMeta) meta); - } - throw new IllegalStateException("Can't do a thing with " + meta); - } - - public <E extends TopiaEntity> EntityCsvModel<E> buildForImport(TableMeta meta) { - - EntityCsvModel<E> model = EntityCsvModel.newModel( - getConfiguration().getCsvSeparator(), - meta, - TopiaEntity.TOPIA_ID - ); - - for (ColumnMeta columnMeta : meta) { - String propertyName = columnMeta.getName(); - Class<?> type = columnMeta.getType(); - if (columnMeta.isFK()) { - - Class<TopiaEntity> entityType = (Class<TopiaEntity>) type; - Collection<TopiaEntity> universe = getForeignDatas(entityType); - model.addForeignKeyForImport(propertyName, entityType, universe); - } else { - model.addDefaultColumn(propertyName, type); - } - } - return model; - } - - public <E extends TopiaEntity> ExportModel<E> buildForExport(AssociationMeta associationMeta) { - - ExportModel<E> model = EntityAssociationCsvModel.newExportModel( - getConfiguration().getCsvSeparator(), - associationMeta - ); - return model; - } - - public <E extends TopiaEntity> ExportModel<E> buildForExport(MetaFilenameAware meta) { - if (meta instanceof AssociationMeta) { - return buildForExport((AssociationMeta) meta); - } - if (meta instanceof TableMeta) { - return buildForExport((TableMeta) meta); - } - throw new IllegalStateException("Can't do a thing with " + meta); - } - - public <E extends TopiaEntity> ExportModel<E> buildForExport(TableMeta meta) { - - EntityCsvModel<E> model = EntityCsvModel.newModel( - getConfiguration().getCsvSeparator(), - meta, - TopiaEntity.TOPIA_ID - ); - - for (ColumnMeta columnMeta : meta) { - String propertyName = columnMeta.getName(); - Class<?> type = columnMeta.getType(); - if (columnMeta.isFK()) { - - Class<TopiaEntity> entityType = (Class<TopiaEntity>) type; - model.addForeignKeyForExport(propertyName, entityType); - } else { - model.addDefaultColumn(propertyName, type); - } - } - return model; - } - protected <E extends TopiaEntity> ImportExportModel<E> buildForSave(TableMeta meta) { EntityCsvModel<E> model = EntityCsvModel.newModel( @@ -661,18 +472,4 @@ return model; } - protected Export<TopiaEntity> prepareExport(TableMeta tableMeta) { - List<TopiaEntity> datas = getEntities(tableMeta, null, null, null, null); - ExportModel<TopiaEntity> model = buildForExport(tableMeta); - return Export.newExport(model, datas); - } - - protected Export<TopiaEntity> prepareExport(AssociationMeta associationMeta) { - - TableMeta tableMeta = getTableMeta(associationMeta.getSource()); - List<TopiaEntity> datas = getEntities(tableMeta, null, null, null, "size(e." + associationMeta.getName() + ") > 0"); - - ExportModel<TopiaEntity> model = buildForExport(associationMeta); - return Export.newExport(model, datas); - } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.java 2011-12-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbExportService.java 2011-12-26 10:10:04 UTC (rev 213) @@ -23,9 +23,7 @@ */ 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; @@ -36,7 +34,6 @@ import org.nuiton.util.TimeLog; import java.io.File; -import java.util.List; /** * Service to import / export a complete db. @@ -52,8 +49,6 @@ 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. * @@ -67,20 +62,20 @@ File zipFile = new File(tempDirectory, fileName + ".zip"); - DbEditorService service = getDbEditorService(); + ExportService exportService = getService(ExportService.class); File dir = new File(tempDirectory, "echobase"); - MetaFilenameAware[] entries = getEntries(); + MetaFilenameAware[] entries = EntitiesUtil.getEntries(getDbMeta()); for (MetaFilenameAware entry : entries) { File entryFile = new File(dir, entry.getFilename()); if (entry instanceof AssociationMeta) { AssociationMeta associationMeta = (AssociationMeta) entry; - service.exportDatas(associationMeta, entryFile); + exportService.exportDatas(associationMeta, entryFile); } else { TableMeta meta = (TableMeta) entry; - service.exportDatas(meta, entryFile); + exportService.exportDatas(meta, entryFile); } } @@ -89,41 +84,4 @@ 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; - } - } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java 2011-12-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java 2011-12-26 10:10:04 UTC (rev 213) @@ -25,8 +25,6 @@ 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; @@ -34,17 +32,14 @@ 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.framework.TopiaContextImplementor; 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; @@ -52,7 +47,6 @@ 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; @@ -72,39 +66,6 @@ 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)); - } - } - - return result; - } - /** * Import a complete db from the given zip file. * @@ -169,6 +130,38 @@ } } + protected Map<MetaFilenameAware, ZipEntry> discoverEntries(File file, + ZipFile zipFile) { + + List<String> missingEntries = Lists.newArrayList(); + + Map<MetaFilenameAware, ZipEntry> result = + Maps.newLinkedHashMap(); + + MetaFilenameAware[] entries = EntitiesUtil.getEntries(getDbMeta()); + + // 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 files " + + " in import " + file + "\n" + StringUtil.join(missingEntries, "\n", false)); + } + } + + return result; + } + static class MyImportToMap extends ImportToMap { public static MyImportToMap newImport(ImportModel<Map<String, Object>> model, @@ -176,34 +169,51 @@ return new MyImportToMap(model, reader); } - protected MyImportToMap(ImportModel<Map<String, Object>> model, Reader reader) { + protected MyImportToMap(ImportModel<Map<String, Object>> model, + Reader reader) { super(model, reader); this.reader.setSafetySwitch(false); } - } public void importFile(MetaFilenameAware entry, Reader reader, CsvImportResult csvResult) throws IOException, TopiaException { - long s0 = TimeLog.getTime(); if (log.isInfoEnabled()) { log.info("Will import " + entry); } + ImportService importService = getService(ImportService.class); + if (entry instanceof AssociationMeta) { // load a association input - importAssociationfile((AssociationMeta) entry, reader, csvResult); + AssociationMeta meta = (AssociationMeta) entry; + ImportModel<Map<String, Object>> model = importService.buildForImport(meta); + ImportToMap importer = MyImportToMap.newImport(model, reader); + try { + importAssociationfile(meta, importer, csvResult); + } finally { + importer.close(); + } + } else { // normal entity table import - importEntityFile((TableMeta) entry, reader, csvResult); + TableMeta meta = (TableMeta) entry; + ImportModel<TopiaEntity> model = importService.buildForImport(meta); + Import<TopiaEntity> importer = Import.newImport(model, reader); + + try { + importEntityFile(meta, importer, csvResult); + } finally { + importer.close(); + } } timeLog.log(s0, "importFile::done"); @@ -215,190 +225,66 @@ timeLog.log(s0, "importFile::flushTransaction"); } + protected void importEntityFile(TableMeta meta, + Import<TopiaEntity> importer, + CsvImportResult csvResult) throws TopiaException { - public MetaFilenameAware[] getEntries() { + TopiaDAO<TopiaEntity> dao = getDAO(meta.getSource()); + for (TopiaEntity entity : importer) { - List<MetaFilenameAware> entities = Lists.newArrayList(); - List<MetaFilenameAware> associations = Lists.newArrayList(); + TopiaEntity entityToSave = dao.create(TopiaEntity.TOPIA_ID, + entity.getTopiaId()); - addEntries(entities, associations, EntitiesUtil.getReferenceTypesForCopy()); - addEntries(entities, associations, EntitiesUtil.getDataTypesforCopy()); - entities.addAll(associations); - return entities.toArray(new MetaFilenameAware[entities.size()]); - } + meta.copy(entity, entityToSave); - protected void importEntityFile(TableMeta meta, Reader reader, CsvImportResult csvResult) { - - ImportModel<TopiaEntity> model = getDbEditorService().buildForImport(meta); - - Import<TopiaEntity> importer = Import.newImport(model, 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); - - csvResult.incrementsNumberUpdated(); - } - - } catch (Exception eee) { - throw new EchoBaseTechnicalException("Could not import entities of type " + meta.getSource(), eee); - } finally { - - importer.close(); + csvResult.incrementsNumberUpdated(); } } - protected void flushTransaction() throws TopiaException { - TopiaContextImplementor tx = (TopiaContextImplementor) getTransaction(); - tx.getHibernate().flush(); - } + protected void importAssociationfile(AssociationMeta meta, + ImportToMap importer, + CsvImportResult csvResult) throws TopiaException { - protected void importAssociationfile(AssociationMeta meta, Reader reader, CsvImportResult csvResult) { EchoBaseEntityEnum source = meta.getSource(); EchoBaseEntityEnum target = meta.getTarget(); - ImportModel<Map<String, Object>> model = - EntityAssociationImportModel.newImportModel( - getConfiguration().getCsvSeparator(), - meta - ); - - ImportToMap importer = MyImportToMap.newImport(model, reader); - StringBuilder builder = new StringBuilder(); - try { - String updateString; - String targetTableName = target.getContract().getSimpleName(); - String sourceTableName = source.getContract().getSimpleName(); - String table = targetTableName; - if (source == EchoBaseEntityEnum.Voyage && target == EchoBaseEntityEnum.Echotype) { - table = targetTableName + "_" + sourceTableName; - updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE " + meta.getName() + " ='%s';"; - } else if (source == EchoBaseEntityEnum.Voyage && target == EchoBaseEntityEnum.Strata) { - table = targetTableName + "_" + source.getContract().getSimpleName(); - updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE " + meta.getName() + " ='%s';"; - } else { - updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE topiaId ='%s';"; - } - - if (log.isDebugEnabled()) { - log.debug("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 == 0) { - // flush it - getTransaction().executeSQL(builder.toString()); - builder = new StringBuilder(); - } - } - csvResult.incrementsNumberUpdated(); - } - if (builder.length() > 0) { - getTransaction().executeSQL(builder.toString()); - } - } catch (TopiaException eee) { - throw new EchoBaseTechnicalException( - "Could not execute sql script", eee); - } finally { - - importer.close(); + String updateString; + String targetTableName = target.getContract().getSimpleName(); + String sourceTableName = source.getContract().getSimpleName(); + String table = targetTableName; + if (source == EchoBaseEntityEnum.Voyage && target == EchoBaseEntityEnum.Echotype) { + table = targetTableName + "_" + sourceTableName; + updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE " + meta.getName() + " ='%s';"; + } else if (source == EchoBaseEntityEnum.Voyage && target == EchoBaseEntityEnum.Strata) { + table = targetTableName + "_" + source.getContract().getSimpleName(); + updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE " + meta.getName() + " ='%s';"; + } else { + updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE topiaId ='%s';"; } - } - 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); - associations.addAll(tableMeta.getAssociations()); + if (log.isDebugEnabled()) { + log.debug("Will apply " + updateString); } - } - - 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(); + 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 == 0) { + // flush it + getTransaction().executeSQL(builder.toString()); + builder = new StringBuilder(); + } } - timeLog.log(s0, "importEntities"); - } catch (Exception eee) { - throw new EchoBaseTechnicalException("Could not import entities of type " + meta.getSource(), eee); - } finally { - - importer.close(); + csvResult.incrementsNumberUpdated(); } - } - - protected <E extends TopiaEntity> void mportEntityAssociation(AssociationMeta meta, - ImportModel<E> csvModel, - CsvImportResult result, - Reader reader) { - if (log.isInfoEnabled()) { - log.info("Will import " + meta); + if (builder.length() > 0) { + getTransaction().executeSQL(builder.toString()); } - - 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/EchoBaseServiceSupport.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2011-12-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2011-12-26 10:10:04 UTC (rev 213) @@ -24,6 +24,7 @@ package fr.ifremer.echobase.services; import com.google.common.base.Preconditions; +import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseConfiguration; import fr.ifremer.echobase.EchoBaseTechnicalException; import fr.ifremer.echobase.entities.EchoBaseDAOHelper; @@ -33,12 +34,14 @@ import org.apache.commons.lang3.time.DateUtils; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; import java.util.Date; import java.util.List; import java.util.Locale; +import java.util.Map; /** * @author sletellier <letellier@codelutin.com> @@ -48,6 +51,8 @@ protected EchoBaseServiceContext serviceContext; + protected Map<Class<?>, EchoBaseService> services; + @Override public void setServiceContext(EchoBaseServiceContext serviceContext) { this.serviceContext = serviceContext; @@ -57,6 +62,7 @@ Class<E> contract = (Class<E>) entityType.getContract(); return getEntities(contract); } + public <E extends TopiaEntity> List<E> getEntities(Class<E> entityType) { Preconditions.checkNotNull(entityType); try { @@ -97,9 +103,16 @@ return serviceContext.getConfiguration(); } - protected <E extends EchoBaseService> E newService(Class<E> serviceClass) { - E e = serviceContext.newService(serviceClass); - return e; + protected <E extends EchoBaseService> E getService(Class<E> serviceClass) { + if (services == null) { + services = Maps.newHashMap(); + } + E service = (E) services.get(serviceClass); + if (service == null) { + service = serviceContext.newService(serviceClass); + services.put(serviceClass, service); + } + return service; } protected <E extends TopiaEntity> TopiaDAO<E> getDAO(EchoBaseEntityEnum entityEnum) throws TopiaException { @@ -123,6 +136,11 @@ } } + protected void flushTransaction() throws TopiaException { + TopiaContextImplementor tx = (TopiaContextImplementor) getTransaction(); + tx.getHibernate().flush(); + } + protected Date newDate() { Date result = new Date(); DateUtils.setMilliseconds(result, 0); Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2011-12-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2011-12-26 10:10:04 UTC (rev 213) @@ -204,7 +204,7 @@ // get export query service ExportSqlService exportSqlService = - newService(ExportSqlService.class); + getService(ExportSqlService.class); // get all export queries from application List<ExportQuery> queries = exportSqlService.getEntities(ExportQuery.class); Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java 2011-12-26 10:10:04 UTC (rev 213) @@ -0,0 +1,150 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services; + +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.entities.meta.AssociationMeta; +import fr.ifremer.echobase.entities.meta.ColumnMeta; +import fr.ifremer.echobase.entities.meta.TableMeta; +import fr.ifremer.echobase.services.models.EntityAssociationExportModel; +import fr.ifremer.echobase.services.models.EntityCsvModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.util.TimeLog; +import org.nuiton.util.csv.Export; +import org.nuiton.util.csv.ExportModel; + +import java.io.File; +import java.util.List; + +/** + * To export datas from db to csv files. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class ExportService extends EchoBaseServiceSupport { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ExportService.class); + + public static final TimeLog timeLog = new TimeLog(ExportService.class); + + public <E extends TopiaEntity> ExportModel<E> buildForExport(AssociationMeta associationMeta) { + + ExportModel<E> model = EntityAssociationExportModel.newExportModel( + getConfiguration().getCsvSeparator(), + associationMeta + ); + return model; + } + + public <E extends TopiaEntity> ExportModel<E> buildForExport(TableMeta meta) { + + EntityCsvModel<E> model = EntityCsvModel.newModel( + getConfiguration().getCsvSeparator(), + meta, + TopiaEntity.TOPIA_ID + ); + + for (ColumnMeta columnMeta : meta) { + String propertyName = columnMeta.getName(); + Class<?> type = columnMeta.getType(); + if (columnMeta.isFK()) { + + Class<TopiaEntity> entityType = (Class<TopiaEntity>) type; + model.addForeignKeyForExport(propertyName, entityType); + } else { + model.addDefaultColumn(propertyName, type); + } + } + return model; + } + + public String exportDatas(TableMeta tableMeta) { + + Export<TopiaEntity> export = prepareExport(tableMeta); + + try { + return export.startExportAsString(); + } catch (Exception eee) { + throw new EchoBaseTechnicalException("Can not export datas", eee); + } + } + + public void exportDatas(TableMeta tableMeta, File file) { + + if (log.isInfoEnabled()) { + log.info("Export table " + tableMeta + " to " + file); + } + long s1 = TimeLog.getTime(); + Export<TopiaEntity> export = prepareExport(tableMeta); + timeLog.log(s1, "exportDatas::prepareExport"); + long s2 = TimeLog.getTime(); + try { + export.exportToFile(file); + } catch (Exception eee) { + throw new EchoBaseTechnicalException("Can not export datas", eee); + } + timeLog.log(s2, "exportDatas::exportToFile"); + } + + public void exportDatas(AssociationMeta associationMeta, File file) { + + if (log.isInfoEnabled()) { + log.info("Export association " + associationMeta + " to " + file); + } + long s1 = TimeLog.getTime(); + Export<TopiaEntity> export = prepareExport(associationMeta); + timeLog.log(s1, "prepareExport"); + + long s2 = TimeLog.getTime(); + try { + export.exportToFile(file); + } catch (Exception eee) { + throw new EchoBaseTechnicalException("Can not export datas", eee); + } + timeLog.log(s2, "exportToFile"); + } + + protected Export<TopiaEntity> prepareExport(TableMeta tableMeta) { + DbEditorService service = getService(DbEditorService.class); + + List<TopiaEntity> datas = service.getEntities(tableMeta, null, null, null, null); + ExportModel<TopiaEntity> model = buildForExport(tableMeta); + return Export.newExport(model, datas); + } + + protected Export<TopiaEntity> prepareExport(AssociationMeta associationMeta) { + + DbEditorService service = getService(DbEditorService.class); + + TableMeta tableMeta = service.getTableMeta(associationMeta.getSource()); + List<TopiaEntity> datas = service.getEntities(tableMeta, null, null, null, "size(e." + associationMeta.getName() + ") > 0"); + + ExportModel<TopiaEntity> model = buildForExport(associationMeta); + return Export.newExport(model, datas); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ExportService.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportService.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportService.java 2011-12-26 10:10:04 UTC (rev 213) @@ -0,0 +1,147 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services; + +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.meta.AssociationMeta; +import fr.ifremer.echobase.entities.meta.ColumnMeta; +import fr.ifremer.echobase.entities.meta.TableMeta; +import fr.ifremer.echobase.services.models.EntityAssociationImportModel; +import fr.ifremer.echobase.services.models.EntityCsvModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.util.csv.Import; +import org.nuiton.util.csv.ImportExportModel; +import org.nuiton.util.csv.ImportModel; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Collection; +import java.util.Map; + +/** + * To import datas from csv files into the db. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class ImportService extends EchoBaseServiceSupport { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportService.class); + + public <E extends TopiaEntity> EntityCsvModel<E> buildForImport(TableMeta meta) { + + DbEditorService service = getService(DbEditorService.class); + + EntityCsvModel<E> model = EntityCsvModel.newModel( + getConfiguration().getCsvSeparator(), + meta, + TopiaEntity.TOPIA_ID + ); + + for (ColumnMeta columnMeta : meta) { + String propertyName = columnMeta.getName(); + Class<?> type = columnMeta.getType(); + if (columnMeta.isFK()) { + + Class<TopiaEntity> entityType = (Class<TopiaEntity>) type; + Collection<TopiaEntity> universe = service.getForeignDatas(entityType); + model.addForeignKeyForImport(propertyName, entityType, universe); + } else { + model.addDefaultColumn(propertyName, type); + } + } + return model; + } + + public ImportModel<Map<String, Object>> buildForImport(AssociationMeta meta) { + + ImportModel<Map<String, Object>> model = + EntityAssociationImportModel.newImportModel( + getConfiguration().getCsvSeparator(), + meta + ); + return model; + } + + public CsvImportResult importDatas(EchoBaseEntityEnum entityType, + String importFileName, + File importFile, + boolean createIfNotFound, + EchoBaseUser user) throws IOException { + + DbEditorService service = getService(DbEditorService.class); + + TableMeta meta = service.getTableMeta(entityType); + ImportExportModel<TopiaEntity> csvModel = buildForImport(meta); + String messagePrefix = "Import du fichier " + importFileName + " le " + newDate(); + + CsvImportResult result = CsvImportResult.newResult(entityType, + importFileName, + createIfNotFound); + BufferedReader bf = new BufferedReader(new FileReader(importFile)); + try { + + Import<TopiaEntity> importer = Import.newImport(csvModel, bf); + + try { + for (TopiaEntity entity : importer) { + boolean create = service.saveEntity(meta, + messagePrefix, + entity, + user, + createIfNotFound + ); + + if (create) { + + result.incrementsNumberCreated(); + } else { + + result.incrementsNumberUpdated(); + } + } + } finally { + + importer.close(); + } + + commitTransaction("Could not commit transaction"); + } catch (EchoBaseTechnicalException eee) { + throw eee; + } catch (Exception eee) { + log.error("Failed to read import file " + importFile.getName(), eee); + throw new EchoBaseTechnicalException(eee); + } finally { + bf.close(); + } + return result; + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportService.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/models/EntityAssociationCsvModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationCsvModel.java 2011-12-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationCsvModel.java 2011-12-26 10:10:04 UTC (rev 213) @@ -1,133 +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.models; - -import fr.ifremer.echobase.entities.meta.AssociationMeta; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.util.csv.ExportModel; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ImportExportModel; -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@codelutin.com> - * @since 0.2 - */ -public class EntityAssociationCsvModel<E extends TopiaEntity> implements ImportExportModel<E> { - - protected final char separator; - - protected final AssociationMeta meta; - - protected ModelBuilder<E> modelBuilder; - - public static <E extends TopiaEntity> ImportModel<E> newImportModel(char separator, - AssociationMeta meta, - Map<String, TopiaEntity> targetsById - ) { - EntityAssociationCsvModel<E> model = new EntityAssociationCsvModel<E>( - separator, meta); - - // topiaId <-> topiaId - model.modelBuilder.newColumnForImportExport( - TopiaEntity.TOPIA_ID, - TopiaEntity.TOPIA_ID - ); - - // add association -> target - Class<TopiaEntity> target = - (Class<TopiaEntity>) meta.getTarget().getImplementation(); - - model.modelBuilder.newColumnForImportExport( - meta.getName(), - meta.getName(), - CsvModelUtil.newAssociationValueParserFormatter(target, targetsById) - ); - - return model; - } - - public static <E extends TopiaEntity> ExportModel<E> newExportModel(char separator, - AssociationMeta meta - ) { - EntityAssociationCsvModel<E> model = new EntityAssociationCsvModel<E>( - separator, - meta); - - // topiaId <-> topiaId - model.modelBuilder.newColumnForExport( - TopiaEntity.TOPIA_ID, - TopiaEntity.TOPIA_ID - ); - - model.modelBuilder.newColumnForExport( - meta.getName(), - meta.getName(), - CsvModelUtil.newAssociationValueFormatter() - ); - return model; - } - - @Override - public char getSeparator() { - return separator; - } - - @Override - public Iterable<ExportableColumn<E, Object>> getColumnsForExport() { - return (Collection) - modelBuilder.getColumnsForExport(); - } - - @Override - public Iterable<ImportableColumn<E, Object>> getColumnsForImport() { - return (Collection) - modelBuilder.getColumnsForImport(); - } - - @Override - public void pushCsvHeaderNames(List<String> headerNames) { - } - - @Override - public E newEmptyInstance() { - return (E) meta.newEntity(); - } - - protected EntityAssociationCsvModel(char separator, AssociationMeta meta) { - this.separator = separator; - this.meta = meta; - modelBuilder = new ModelBuilder<E>(); - } - - -} \ No newline at end of file Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationExportModel.java (from rev 211, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationCsvModel.java) =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationExportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationExportModel.java 2011-12-26 10:10:04 UTC (rev 213) @@ -0,0 +1,87 @@ +/* + * #%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.ExportModel; +import org.nuiton.util.csv.ExportableColumn; +import org.nuiton.util.csv.ModelBuilder; + +import java.util.Collection; + +/** + * A model to export associations of entities into csv files. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class EntityAssociationExportModel<E extends TopiaEntity> implements ExportModel<E> { + + protected final char separator; + + protected final AssociationMeta meta; + + protected ModelBuilder<E> modelBuilder; + + public static <E extends TopiaEntity> ExportModel<E> newExportModel(char separator, + AssociationMeta meta + ) { + EntityAssociationExportModel<E> model = new EntityAssociationExportModel<E>( + separator, + meta); + + // topiaId <-> topiaId + model.modelBuilder.newColumnForExport( + TopiaEntity.TOPIA_ID, + TopiaEntity.TOPIA_ID + ); + + model.modelBuilder.newColumnForExport( + meta.getName(), + meta.getName(), + CsvModelUtil.newAssociationValueFormatter() + ); + return model; + } + + @Override + public char getSeparator() { + return separator; + } + + @Override + public Iterable<ExportableColumn<E, Object>> getColumnsForExport() { + return (Collection) + modelBuilder.getColumnsForExport(); + } + + protected EntityAssociationExportModel(char separator, AssociationMeta meta) { + this.separator = separator; + this.meta = meta; + modelBuilder = new ModelBuilder<E>(); + } + + +} \ No newline at end of file Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationExportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java 2011-12-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/EntityAssociationImportModel.java 2011-12-26 10:10:04 UTC (rev 213) @@ -34,7 +34,7 @@ import java.util.Map; /** - * A model to import / export associations of entities into csv files. + * A model to import associations of entities into csv files. * * @author tchemit <chemit@codelutin.com> * @since 0.2 Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.java 2011-12-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.java 2011-12-26 10:10:04 UTC (rev 213) @@ -93,9 +93,7 @@ public DbMeta getDbMeta() { if (dbMeta == null) { - List<EchoBaseEntityEnum> entityEnums = - Lists.newArrayList(EchoBaseEntityEnum.values()); - dbMeta = DbMeta.newDbMeta(entityEnums); + dbMeta = DbMeta.newDbMeta(); } return dbMeta; } 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-26 10:02:16 UTC (rev 212) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DbImportExportServiceTest.java 2011-12-26 10:10:04 UTC (rev 213) @@ -120,7 +120,7 @@ @Test public void testGetDataCopyModel() throws TopiaException { - EchoBaseEntityEnum[] types = EntitiesUtil.getDataTypesforCopy(); + EchoBaseEntityEnum[] types = EntitiesUtil.getDataTypesForCopy(); Set<TopiaEntityEnum> dones = Sets.newHashSet(); ReplicationModel model = new ReplicationModel(types, false);
participants (1)
-
tchemit@users.forge.codelutin.com