r623 - in trunk: . echobase-services/src/main/java/fr/ifremer/echobase/services echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb
Author: tchemit Date: 2012-09-05 18:05:37 +0200 (Wed, 05 Sep 2012) New Revision: 623 Url: http://forge.codelutin.com/repositories/revision/echobase/623 Log: fixes #1459: Improve usage of memory for exportDb Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java trunk/pom.xml Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-05 11:19:56 UTC (rev 622) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-05 16:05:37 UTC (rev 623) @@ -105,8 +105,7 @@ List<TopiaEntity> entities = getEntities(meta, pager, sidx, - ascendantOrder, - null + ascendantOrder ); Map<?, ?>[] rows = new Map[entities.size()]; @@ -125,8 +124,7 @@ public <E extends TopiaEntity> List<E> getEntities(TableMeta<EchoBaseEntityEnum> tableMeta, TopiaFilterPagerUtil.FilterPagerBean pager, String sidx, - Boolean ascendantOrder, - String extraWhereQuery) { + Boolean ascendantOrder) { //TODO-tchemit-2012-08-19 Replace TopiaQuery with simple hql query List<E> result; @@ -281,14 +279,6 @@ } query.setLimit(from, to - 1); - if (StringUtils.isNotEmpty(extraWhereQuery)) { - query.addWhere(extraWhereQuery); - } - } else { - - if (StringUtils.isNotEmpty(extraWhereQuery)) { - query.addWhere(extraWhereQuery); - } } result = dao.findAllByQuery(query); return result; @@ -297,6 +287,24 @@ } } + public <E extends TopiaEntity> Iterable<E> getEntities(TableMeta<EchoBaseEntityEnum> tableMeta, + String extraWhereQuery) { + + try { + TopiaDAO<E> dao = (TopiaDAO<E>) getDAO(tableMeta.getSource().getContract()); + + String hql = "FROM " + + dao.getTopiaEntityEnum().getImplementationFQN()+" e"; + if (extraWhereQuery != null) { + hql += " WHERE " + extraWhereQuery; + } + Iterable<E> result = dao.findAllLazyByQuery(1000, hql); + return result; + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException("Could not obtain data", eee); + } + } + public Map<?, ?> getData(TableMeta<EchoBaseEntityEnum> tableMeta, String topiaId) { EchoBaseEntityEnum entityEnum = tableMeta.getSource(); 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 11:19:56 UTC (rev 622) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java 2012-09-05 16:05:37 UTC (rev 623) @@ -44,7 +44,6 @@ import org.nuiton.util.decorator.Decorator; import java.io.File; -import java.util.List; /** * To export datas from db to csv files. @@ -325,19 +324,19 @@ private PrepareDataForExport<EchoBaseEntityEnum> defaultPrepareDataForExport = new PrepareDataForExport<EchoBaseEntityEnum>() { @Override - public <E extends TopiaEntity> List<E> prepareData(TableMeta<EchoBaseEntityEnum> tableMeta) { + public <E extends TopiaEntity> Iterable<E> prepareData(TableMeta<EchoBaseEntityEnum> tableMeta) { DbEditorService service = getService(DbEditorService.class); - List<E> data = service.getEntities(tableMeta, null, null, null, null); + Iterable<E> data = service.getEntities(tableMeta, null); return data; } @Override - public <E extends TopiaEntity> List<E> prepareData(AssociationMeta<EchoBaseEntityEnum> associationMeta) { + public <E extends TopiaEntity> Iterable<E> prepareData(AssociationMeta<EchoBaseEntityEnum> associationMeta) { DbEditorService service = getService(DbEditorService.class); TableMeta<EchoBaseEntityEnum> tableMeta = service.getTableMeta(associationMeta.getSource()); - List<E> data = service.getEntities(tableMeta, null, null, null, "size(e." + associationMeta.getName() + ") > 0"); + Iterable<E> data = service.getEntities(tableMeta, "size(e." + associationMeta.getName() + ") > 0"); return data; } }; Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-09-05 11:19:56 UTC (rev 622) +++ trunk/pom.xml 2012-09-05 16:05:37 UTC (rev 623) @@ -63,10 +63,8 @@ <timezone>Europe/Paris</timezone> </developer> - </developers> - - <contributors> - <contributor> + <developer> + <id>mdoray</id> <name>Mathieu Doray</name> <email>mathieu dot doray at ifremer dot fr</email> <organization>Ifremer</organization> @@ -75,9 +73,10 @@ <role>document writer</role> </roles> <timezone>Europe/Paris</timezone> - </contributor> - </contributors> + </developer> + </developers> + <scm> <url>http://svn.forge.codelutin.com/svn/echobase/trunk</url> <connection> @@ -134,7 +133,7 @@ <!-- libraries version --> <eugenePluginVersion>2.5</eugenePluginVersion> - <topiaVersion>2.6.13</topiaVersion> + <topiaVersion>2.6.14-SNAPSHOT</topiaVersion> <nuitonUtilsVersion>2.6.1</nuitonUtilsVersion> <nuitonI18nVersion>2.5</nuitonI18nVersion> <nuitonWebVersion>1.11</nuitonWebVersion>
participants (1)
-
tchemit@users.forge.codelutin.com