Author: tchemit Date: 2012-09-05 12:17:22 +0200 (Wed, 05 Sep 2012) New Revision: 618 Url: http://forge.codelutin.com/repositories/revision/echobase/618 Log: try to improve export memory usage Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java 2012-09-05 10:16:51 UTC (rev 617) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java 2012-09-05 10:17:22 UTC (rev 618) @@ -23,10 +23,14 @@ */ package fr.ifremer.echobase.services.exportdb; +import fr.ifremer.echobase.EchoBaseTechnicalException; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.services.DbEditorService; import fr.ifremer.echobase.services.DecoratorService; import fr.ifremer.echobase.services.EchoBaseServiceSupport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.csv.EntityCsvModel; import org.nuiton.topia.persistence.csv.out.EntityAssociationExportModel; @@ -49,10 +53,10 @@ * @since 0.2 */ public class ExportService extends EchoBaseServiceSupport { -// -// /** Logger. */ -// private static final Log log = LogFactory.getLog(ExportService.class); -// + + /** Logger. */ + private static final Log log = LogFactory.getLog(ExportService.class); + // public static final TimeLog TIME_LOG = new TimeLog(ExportService.class); // public ExportModelFactory<EchoBaseEntityEnum> getDefaultExportFactory() { @@ -121,9 +125,12 @@ // return model; // } - public String exportData(TableMeta<EchoBaseEntityEnum> tableMeta, boolean asSeen) { + public String exportData(TableMeta<EchoBaseEntityEnum> meta, boolean asSeen) { - String result = TopiaCsvExports.exportData(tableMeta, + if (log.isInfoEnabled()) { + log.info("Export " + meta); + } + String result = TopiaCsvExports.exportData(meta, getModelFactory(asSeen), defaultPrepareDataForExport); return result; @@ -137,13 +144,18 @@ // } } - public void exportData(TableMeta<EchoBaseEntityEnum> tableMeta, File file) { + public void exportData(TableMeta<EchoBaseEntityEnum> meta, File file) { - TopiaCsvExports.exportData(tableMeta, + if (log.isInfoEnabled()) { + log.info("Export " + meta + " to " + file); + } + + TopiaCsvExports.exportData(meta, defaultExportFactory, defaultPrepareDataForExport, file); + clearCache(); // if (log.isInfoEnabled()) { // log.info("Export table " + tableMeta + " to " + file); // } @@ -159,12 +171,18 @@ // TIME_LOG.log(s2, "exportData::exportToFile"); } - public void exportData(AssociationMeta<EchoBaseEntityEnum> associationMeta, File file) { - TopiaCsvExports.exportData(associationMeta, + public void exportData(AssociationMeta<EchoBaseEntityEnum> meta, File file) { + + if (log.isInfoEnabled()) { + log.info("Export " + meta + " to " + file); + } + TopiaCsvExports.exportData(meta, defaultExportFactory, defaultPrepareDataForExport, file); + + clearCache(); // if (log.isInfoEnabled()) { // log.info("Export association " + associationMeta + " to " + file); // } @@ -212,6 +230,14 @@ // return Export.newExport(model, datas); // } + protected void clearCache() { + try { + getTransaction().clearCache(); + } catch (TopiaException e) { + throw new EchoBaseTechnicalException("Could not clear db cache", e); + } + } + private ExportModelFactory<EchoBaseEntityEnum> defaultExportFactory = new ExportModelFactory<EchoBaseEntityEnum>() { @Override