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
September 2012
- 3 participants
- 127 discussions
r664 - in trunk: . echobase-domain echobase-services echobase-tools echobase-ui
by maven-release@users.forge.codelutin.com 14 Sep '12
by maven-release@users.forge.codelutin.com 14 Sep '12
14 Sep '12
Author: maven-release
Date: 2012-09-14 18:37:54 +0200 (Fri, 14 Sep 2012)
New Revision: 664
Url: http://forge.codelutin.com/repositories/revision/echobase/664
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/echobase-domain/pom.xml
trunk/echobase-services/pom.xml
trunk/echobase-tools/pom.xml
trunk/echobase-ui/pom.xml
trunk/pom.xml
Modified: trunk/echobase-domain/pom.xml
===================================================================
--- trunk/echobase-domain/pom.xml 2012-09-14 16:37:47 UTC (rev 663)
+++ trunk/echobase-domain/pom.xml 2012-09-14 16:37:54 UTC (rev 664)
@@ -9,7 +9,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2</version>
+ <version>1.3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-services/pom.xml
===================================================================
--- trunk/echobase-services/pom.xml 2012-09-14 16:37:47 UTC (rev 663)
+++ trunk/echobase-services/pom.xml 2012-09-14 16:37:54 UTC (rev 664)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2</version>
+ <version>1.3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-tools/pom.xml
===================================================================
--- trunk/echobase-tools/pom.xml 2012-09-14 16:37:47 UTC (rev 663)
+++ trunk/echobase-tools/pom.xml 2012-09-14 16:37:54 UTC (rev 664)
@@ -11,7 +11,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2</version>
+ <version>1.3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2012-09-14 16:37:47 UTC (rev 663)
+++ trunk/echobase-ui/pom.xml 2012-09-14 16:37:54 UTC (rev 664)
@@ -7,7 +7,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2</version>
+ <version>1.3-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-09-14 16:37:47 UTC (rev 663)
+++ trunk/pom.xml 2012-09-14 16:37:54 UTC (rev 664)
@@ -11,7 +11,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2</version>
+ <version>1.3-SNAPSHOT</version>
<modules>
<module>echobase-domain</module>
@@ -78,12 +78,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/echobase/tags/echobase-1.2</url>
+ <url>http://svn.forge.codelutin.com/svn/echobase/trunk</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/echobase/tags/echobase-1.2
+ scm:svn:http://svn.forge.codelutin.com/svn/echobase/trunk
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/echobase/tags/echobase-1.2
+ scm:svn:http://svn.forge.codelutin.com/svn/echobase/trunk
</developerConnection>
</scm>
1
0
Author: maven-release
Date: 2012-09-14 18:37:47 +0200 (Fri, 14 Sep 2012)
New Revision: 663
Url: http://forge.codelutin.com/repositories/revision/echobase/663
Log:
[maven-release-plugin] copy for tag echobase-1.2
Added:
tags/echobase-1.2/
1
0
r662 - in trunk: . echobase-domain echobase-services echobase-tools echobase-ui
by maven-release@users.forge.codelutin.com 14 Sep '12
by maven-release@users.forge.codelutin.com 14 Sep '12
14 Sep '12
Author: maven-release
Date: 2012-09-14 18:37:39 +0200 (Fri, 14 Sep 2012)
New Revision: 662
Url: http://forge.codelutin.com/repositories/revision/echobase/662
Log:
[maven-release-plugin] prepare release echobase-1.2
Modified:
trunk/echobase-domain/pom.xml
trunk/echobase-services/pom.xml
trunk/echobase-tools/pom.xml
trunk/echobase-ui/pom.xml
trunk/pom.xml
Modified: trunk/echobase-domain/pom.xml
===================================================================
--- trunk/echobase-domain/pom.xml 2012-09-14 16:12:13 UTC (rev 661)
+++ trunk/echobase-domain/pom.xml 2012-09-14 16:37:39 UTC (rev 662)
@@ -9,7 +9,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2-SNAPSHOT</version>
+ <version>1.2</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-services/pom.xml
===================================================================
--- trunk/echobase-services/pom.xml 2012-09-14 16:12:13 UTC (rev 661)
+++ trunk/echobase-services/pom.xml 2012-09-14 16:37:39 UTC (rev 662)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2-SNAPSHOT</version>
+ <version>1.2</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-tools/pom.xml
===================================================================
--- trunk/echobase-tools/pom.xml 2012-09-14 16:12:13 UTC (rev 661)
+++ trunk/echobase-tools/pom.xml 2012-09-14 16:37:39 UTC (rev 662)
@@ -11,7 +11,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2-SNAPSHOT</version>
+ <version>1.2</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2012-09-14 16:12:13 UTC (rev 661)
+++ trunk/echobase-ui/pom.xml 2012-09-14 16:37:39 UTC (rev 662)
@@ -1,15 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2-SNAPSHOT</version>
+ <version>1.2</version>
</parent>
<groupId>fr.ifremer.echobase</groupId>
@@ -372,7 +370,7 @@
<phase>generate-resources</phase>
<configuration>
<target>
- <mkdir dir="${embeddedWarDir}/WEB-INF/classes"/>
+ <mkdir dir="${embeddedWarDir}/WEB-INF/classes" />
</target>
</configuration>
<goals>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-09-14 16:12:13 UTC (rev 661)
+++ trunk/pom.xml 2012-09-14 16:37:39 UTC (rev 662)
@@ -11,7 +11,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>echobase</artifactId>
- <version>1.2-SNAPSHOT</version>
+ <version>1.2</version>
<modules>
<module>echobase-domain</module>
@@ -78,12 +78,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/echobase/trunk</url>
+ <url>http://svn.forge.codelutin.com/svn/echobase/tags/echobase-1.2</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/echobase/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/echobase/tags/echobase-1.2
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/echobase/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/echobase/tags/echobase-1.2
</developerConnection>
</scm>
1
0
Author: tchemit
Date: 2012-09-14 18:12:13 +0200 (Fri, 14 Sep 2012)
New Revision: 661
Url: http://forge.codelutin.com/repositories/revision/echobase/661
Log:
update to last stable of nuiton-utils and topia
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-09-14 14:36:44 UTC (rev 660)
+++ trunk/pom.xml 2012-09-14 16:12:13 UTC (rev 661)
@@ -133,8 +133,8 @@
<!-- libraries version -->
<eugenePluginVersion>2.5</eugenePluginVersion>
- <topiaVersion>2.6.14-SNAPSHOT</topiaVersion>
- <nuitonUtilsVersion>2.6.2-SNAPSHOT</nuitonUtilsVersion>
+ <topiaVersion>2.7</topiaVersion>
+ <nuitonUtilsVersion>2.6.2</nuitonUtilsVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
<nuitonWebVersion>1.11</nuitonWebVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
1
0
r660 - trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions
by tchemit@users.forge.codelutin.com 14 Sep '12
by tchemit@users.forge.codelutin.com 14 Sep '12
14 Sep '12
Author: tchemit
Date: 2012-09-14 16:36:44 +0200 (Fri, 14 Sep 2012)
New Revision: 660
Url: http://forge.codelutin.com/repositories/revision/echobase/660
Log:
improve pager code
Modified:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java 2012-09-14 10:18:34 UTC (rev 659)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java 2012-09-14 14:36:44 UTC (rev 660)
@@ -142,6 +142,11 @@
TopiaPagerBeanBuilder builder = new TopiaPagerBeanBuilder(pager);
+ if (useSort()) {
+ builder.setSortAscendant(isSortAscendant())
+ .setSortcolumn(getSortColumn());
+ }
+
if (StringUtils.isNotEmpty(filters)) {
Map<String, Object> filterObject =
(Map<String, Object>) JSONUtil.deserialize(filters);
@@ -161,13 +166,9 @@
if (StringUtils.isNotEmpty(searchField)) {
pager = builder.
setFilterOperationGroup("AND").
- setSortAscendant(isSortAscendant()).
- setSortcolumn(getSortColumn()).
addRule(searchOper, searchField, searchString).
toBean();
}
}
-
-
}
}
1
0
14 Sep '12
Author: tchemit
Date: 2012-09-14 12:18:34 +0200 (Fri, 14 Sep 2012)
New Revision: 659
Url: http://forge.codelutin.com/repositories/revision/echobase/659
Log:
- use new TopiaPagerBean Api
- remove at last TopiaQuery
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/EchoBaseUserDAOImpl.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/GenericSQLQuery.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java
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/exportQuery/GetExportQueryResult.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/EchoBaseUserDAOImpl.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/EchoBaseUserDAOImpl.java 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/EchoBaseUserDAOImpl.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -23,13 +23,13 @@
package fr.ifremer.echobase.entities;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.persistence.TopiaFilterPagerUtil;
+import org.nuiton.topia.persistence.pager.TopiaPagerBean;
import java.util.List;
public class EchoBaseUserDAOImpl<E extends EchoBaseUser> extends EchoBaseUserDAOAbstract<E> {
- public List<E> findAll(TopiaFilterPagerUtil.FilterPagerBean pager) throws TopiaException {
+ public List<E> findAll(TopiaPagerBean pager) throws TopiaException {
List<E> users;
if (pager == null) {
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-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -30,21 +30,22 @@
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.EntityModificationLog;
-import fr.ifremer.echobase.entities.EntityModificationLogDAO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaFilterPagerUtil;
import org.nuiton.topia.persistence.csv.EntityCsvModel;
import org.nuiton.topia.persistence.metadata.ColumnMeta;
import org.nuiton.topia.persistence.metadata.DbMeta;
import org.nuiton.topia.persistence.metadata.TableMeta;
-import org.nuiton.util.PagerUtil;
+import org.nuiton.topia.persistence.pager.FilterRule;
+import org.nuiton.topia.persistence.pager.FilterRuleGroupOperator;
+import org.nuiton.topia.persistence.pager.FilterRuleOperator;
+import org.nuiton.topia.persistence.pager.TopiaPagerBean;
+import org.nuiton.util.PagerBeanUtil;
import org.nuiton.util.beans.BeanMonitor;
import org.nuiton.util.beans.PropertyDiff;
import org.nuiton.util.csv.ExportModel;
@@ -94,19 +95,11 @@
return result;
}
- //TODO Use an object to filter datas
- public Map<?, ?>[] getData(EchoBaseEntityEnum entityType,
- TopiaFilterPagerUtil.FilterPagerBean pager,
- String sidx,
- Boolean ascendantOrder) {
+ public Map<?, ?>[] getData(EchoBaseEntityEnum type, TopiaPagerBean pager) {
- TableMeta<EchoBaseEntityEnum> meta = getTableMeta(entityType);
+ TableMeta<EchoBaseEntityEnum> meta = getTableMeta(type);
- List<TopiaEntity> entities = getEntities(meta,
- pager,
- sidx,
- ascendantOrder
- );
+ List<TopiaEntity> entities = getEntities(meta, pager);
Map<?, ?>[] rows = new Map[entities.size()];
@@ -122,173 +115,43 @@
}
public <E extends TopiaEntity> List<E> getEntities(TableMeta<EchoBaseEntityEnum> tableMeta,
- TopiaFilterPagerUtil.FilterPagerBean pager,
- String sidx,
- Boolean ascendantOrder) {
+ TopiaPagerBean pager) {
- //TODO-tchemit-2012-08-19 Replace TopiaQuery with simple hql query
- List<E> result;
EchoBaseEntityEnum entityEnum = tableMeta.getSource();
try {
TopiaDAO<E> dao = (TopiaDAO<E>) getDAO(entityEnum.getContract());
- // first query to count datas
- TopiaQuery countQuery = dao.createQuery("e");
- countQuery.addSelect("count(*)");
- String filterHql = null;
+ List<Object> paramsList = Lists.newArrayList();
- Map<String, Object> filterParams = Maps.newHashMap();
+ String hql = dao.createSimpleQuery("e");
if (pager != null && pager.canFilter()) {
-
- DecoratorService decoratorService = getDecoratorService();
-
- // prepare the filter hql code
- List<TopiaFilterPagerUtil.FilterRule> rules = pager.getRules();
- List<String> strFilterRules = Lists.newLinkedList();
- long timestamp = System.currentTimeMillis();
- int index = 0;
- for (TopiaFilterPagerUtil.FilterRule rule : rules) {
- String ruleFilter;
-
- String field = rule.getField();
-
- ColumnMeta columnMeta = tableMeta.getColumns(field);
- Preconditions.checkNotNull(
- columnMeta, "no property named " + columnMeta);
-
- TopiaFilterPagerUtil.FilterOperation op = rule.getOp();
- String data = rule.getData();
- String paramName = field + "_" + timestamp + (index++);
- String propertyName = "e." + field;
- Object realData = data;
- if (columnMeta.isFK()) {
-
- // must do a select in using the decoration pattern
-
- JXPathDecorator<?> decorator =
- (JXPathDecorator<?>) decoratorService.getDecorator(getLocale(),
- columnMeta.getType(),
- null);
-
- if (decorator.getNbToken() == 1) {
-
- // simple case one token
- String token = "f." + decorator.getProperty(0);
-
- String subQuery = op.toHql(paramName,
- token,
- data,
- filterParams);
-
- ruleFilter = propertyName + " in ( Select f From " + columnMeta.getType().getName() + " f where " + subQuery + ")";
- } else {
-
- throw new UnsupportedOperationException();
- }
-
-
- } else {
-
- if (columnMeta.isNumber()) {
- if (columnMeta.getType() == int.class ||
- columnMeta.getType() == Integer.class) {
- realData = Integer.valueOf(data);
- } else {
-
- realData = Double.valueOf(data);
- }
- } else if (columnMeta.isDate()) {
- propertyName = "str(" + propertyName + ")";
- }
- ruleFilter = op.toHql(paramName,
- propertyName,
- realData,
- filterParams);
-
- }
-
-
- strFilterRules.add("(" + ruleFilter + ")");
-
- }
-
- if (CollectionUtils.isNotEmpty(strFilterRules)) {
- TopiaFilterPagerUtil.FilterOperationGroup groupOp =
- pager.getGroupOp();
- filterHql = StringUtils.join(strFilterRules, groupOp.name());
- }
- }
-
- if (filterHql != null) {
+ String filterHql = getFilterHql(tableMeta, pager, paramsList);
if (log.isInfoEnabled()) {
log.info("filterHql = " + filterHql);
}
- for (Map.Entry<String, Object> e : filterParams.entrySet()) {
- String paramName = e.getKey();
- Object paramValue = e.getValue();
- if (log.isInfoEnabled()) {
- log.info("filterParam = " +
- paramName + "/" + paramValue);
- }
- countQuery.addParam(paramName, paramValue);
- }
- countQuery.addWhere(filterHql);
-
- String fullQuery = countQuery.fullQuery();
- if (log.isInfoEnabled()) {
- log.info("fullquery = " + fullQuery);
- }
+ hql += " WHERE " + filterHql;
}
- int count = dao.countByQuery(countQuery);
+ Object[] params = paramsList.toArray();
- TopiaQuery query = dao.createQuery("e");
+ long count = dao.countByQuery("SELECT COUNT(*) " + hql, params);
if (pager != null) {
+
pager.setRecords(count);
- PagerUtil.computeRecordIndexesAndPagesNumber(pager);
+ PagerBeanUtil.computeRecordIndexesAndPagesNumber(pager);
+ }
- int from = pager.getRecordStartIndex();
- int to = pager.getRecordEndIndex();
-
- if (log.isDebugEnabled()) {
- log.debug("Count = " + count);
- log.debug("page = " + pager.getPageIndex());
- log.debug("pageSize = " + pager.getPageSize());
- log.debug("from = " + from);
- log.debug("to = " + to);
- log.debug("pageCount= " + pager.getPagesNumber());
- }
-
- if (filterHql != null) {
- for (Map.Entry<String, Object> entry : filterParams.entrySet()) {
- String paramName = entry.getKey();
- Object paramValue = entry.getValue();
- query.addParam(paramName, paramValue);
- }
- query.addWhere(filterHql);
- }
-
- if (StringUtils.isNotEmpty(sidx)) {
- if (ascendantOrder) {
- query.addOrder(sidx);
- } else {
- query.addOrderDesc(sidx);
- }
- }
-
- query.setLimit(from, to - 1);
- }
- result = dao.findAllByQuery(query);
+ List<E> result = dao.findAllByQueryAndPager(hql, pager, params);
return result;
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException("Could not obtain data", eee);
}
}
- public <E extends TopiaEntity> Iterable<E> getEntities(TableMeta<EchoBaseEntityEnum> tableMeta,
- String extraWhereQuery) {
+ public <E extends TopiaEntity> Iterable<E> iterateOnEntities(TableMeta<EchoBaseEntityEnum> tableMeta,
+ String extraWhereQuery) {
try {
TopiaDAO<E> dao = (TopiaDAO<E>) getDAO(tableMeta.getSource().getContract());
@@ -298,6 +161,7 @@
if (extraWhereQuery != null) {
hql += " WHERE " + extraWhereQuery;
}
+ hql += " ORDER BY e.id";
Iterable<E> result = dao.findAllLazyByQuery(5000, hql);
return result;
} catch (TopiaException eee) {
@@ -318,7 +182,7 @@
}
}
- public void saveEntity(TableMeta meta,
+ public void saveEntity(TableMeta<EchoBaseEntityEnum> meta,
Map<String, String> properties,
EchoBaseUser user) {
@@ -428,14 +292,106 @@
}
}
- protected void createEntityModificationLog(
- TableMeta tableMeta,
- String messagePrefix,
- TopiaEntity entity,
- EchoBaseUser user,
- BeanMonitor monitor
- ) throws TopiaException {
+ protected <O> Decorator<O> getDecorator(Class<O> type) {
+ return getDecoratorService().getDecorator(getLocale(), type, null);
+ }
+ protected String getFilterHql(TableMeta<EchoBaseEntityEnum> tableMeta,
+ TopiaPagerBean pager,
+ List<Object> params) {
+ Preconditions.checkNotNull(pager);
+ Preconditions.checkState(pager.canFilter());
+
+ String filterHql = null;
+
+ Map<String, Object> filterParams = Maps.newHashMap();
+
+ List<String> strFilterRules = Lists.newLinkedList();
+
+ long timestamp = System.currentTimeMillis();
+ int index = 0;
+ for (FilterRule rule : pager.getRules()) {
+ String ruleFilter;
+
+ String field = rule.getField();
+
+ ColumnMeta columnMeta = tableMeta.getColumns(field);
+ Preconditions.checkNotNull(columnMeta,
+ "no property named " + columnMeta);
+
+ FilterRuleOperator op = rule.getOp();
+ String data = rule.getData();
+ String paramName = field + "_" + timestamp + (index++);
+ String propertyName = "e." + field;
+ Object realData = data;
+ if (columnMeta.isFK()) {
+
+ // must do a select in using the decoration pattern
+
+ JXPathDecorator<?> decorator =
+ (JXPathDecorator<?>) getDecorator(columnMeta.getType());
+
+ if (decorator.getNbToken() == 1) {
+
+ String fName = "f_" + timestamp + (index++);
+
+ // simple case one token
+ String token = fName + "." + decorator.getProperty(0);
+
+ String subQuery = op.toHql(paramName,
+ token,
+ data,
+ filterParams);
+
+ ruleFilter = propertyName + " IN ( SELECT f FROM " +
+ columnMeta.getType().getName() + " " +
+ fName + " WHERE " + subQuery + ")";
+ } else {
+
+ throw new UnsupportedOperationException();
+ }
+
+ } else {
+
+ if (columnMeta.isNumber()) {
+ if (columnMeta.getType() == int.class ||
+ columnMeta.getType() == Integer.class) {
+ realData = Integer.valueOf(data);
+ } else {
+
+ realData = Double.valueOf(data);
+ }
+ } else if (columnMeta.isDate()) {
+ propertyName = "str(" + propertyName + ")";
+ }
+ ruleFilter = op.toHql(paramName,
+ propertyName,
+ realData,
+ filterParams);
+ }
+
+ strFilterRules.add("(" + ruleFilter + ")");
+
+ if (CollectionUtils.isNotEmpty(strFilterRules)) {
+ FilterRuleGroupOperator groupOp =
+ pager.getGroupOp();
+ filterHql = StringUtils.join(strFilterRules, groupOp.name());
+ }
+
+ for (Map.Entry<String, Object> entry : filterParams.entrySet()) {
+ params.add(entry.getKey());
+ params.add(entry.getValue());
+ }
+ }
+ return filterHql;
+ }
+
+ protected void createEntityModificationLog(TableMeta<EchoBaseEntityEnum> tableMeta,
+ String messagePrefix,
+ TopiaEntity entity,
+ EchoBaseUser user,
+ BeanMonitor monitor) throws TopiaException {
+
StringBuilder buffer;
String topiaId = entity.getTopiaId();
@@ -491,10 +447,7 @@
}
}
- EntityModificationLogDAO dao =
- getDAO(EntityModificationLog.class, EntityModificationLogDAO.class);
-
- dao.create(
+ getDAO(EntityModificationLog.class).create(
EntityModificationLog.PROPERTY_ENTITY_TYPE, tableMeta.getSource().name(),
EntityModificationLog.PROPERTY_ENTITY_ID, topiaId,
EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
@@ -586,8 +539,7 @@
if (addDecorated) {
// translate foreign key to his decorated value
- Decorator<TopiaEntity> decorator =
- getDecoratorService().getDecorator(getLocale(), entityType, null);
+ Decorator<TopiaEntity> decorator = getDecorator(entityType);
model.addDecoratedForeignKeyForExport(
propertyName + "_lib",
propertyName,
@@ -618,4 +570,170 @@
return model;
}
+// public <E extends TopiaEntity> List<E> getEntities(TableMeta<EchoBaseEntityEnum> tableMeta, TopiaPagerBean pager) {
+//
+// //TODO-tchemit-2012-08-19 Replace TopiaQuery with simple hql query
+// List<E> result;
+// EchoBaseEntityEnum entityEnum = tableMeta.getSource();
+// try {
+// TopiaDAO<E> dao = (TopiaDAO<E>) getDAO(entityEnum.getContract());
+//
+// // first query to count datas
+// TopiaQuery countQuery = dao.createQuery("e");
+// countQuery.addSelect("count(*)");
+// String filterHql = null;
+//
+// Map<String, Object> filterParams = Maps.newHashMap();
+//
+// if (pager != null && pager.canFilter()) {
+//
+// DecoratorService decoratorService = getDecoratorService();
+//
+// // prepare the filter hql code
+// List<FilterRule> rules = pager.getRules();
+// List<String> strFilterRules = Lists.newLinkedList();
+// long timestamp = System.currentTimeMillis();
+// int index = 0;
+// for (FilterRule rule : rules) {
+// String ruleFilter;
+//
+// String field = rule.getField();
+//
+// ColumnMeta columnMeta = tableMeta.getColumns(field);
+// Preconditions.checkNotNull(
+// columnMeta, "no property named " + columnMeta);
+//
+// FilterRuleOperator op = rule.getOp();
+// String data = rule.getData();
+// String paramName = field + "_" + timestamp + (index++);
+// String propertyName = "e." + field;
+// Object realData = data;
+// if (columnMeta.isFK()) {
+//
+// // must do a select in using the decoration pattern
+//
+// JXPathDecorator<?> decorator =
+// (JXPathDecorator<?>) decoratorService.getDecorator(getLocale(),
+// columnMeta.getType(),
+// null);
+//
+// if (decorator.getNbToken() == 1) {
+//
+// // simple case one token
+// String token = "f." + decorator.getProperty(0);
+//
+// String subQuery = op.toHql(paramName,
+// token,
+// data,
+// filterParams);
+//
+// ruleFilter = propertyName + " in ( SELECT f FROM " + columnMeta.getType().getName() + " f WHERE " + subQuery + ")";
+// } else {
+//
+// throw new UnsupportedOperationException();
+// }
+//
+//
+// } else {
+//
+// if (columnMeta.isNumber()) {
+// if (columnMeta.getType() == int.class ||
+// columnMeta.getType() == Integer.class) {
+// realData = Integer.valueOf(data);
+// } else {
+//
+// realData = Double.valueOf(data);
+// }
+// } else if (columnMeta.isDate()) {
+// propertyName = "str(" + propertyName + ")";
+// }
+// ruleFilter = op.toHql(paramName,
+// propertyName,
+// realData,
+// filterParams);
+//
+// }
+//
+// strFilterRules.add("(" + ruleFilter + ")");
+// }
+//
+// if (CollectionUtils.isNotEmpty(strFilterRules)) {
+// FilterRuleGroupOperator groupOp =
+// pager.getGroupOp();
+// filterHql = StringUtils.join(strFilterRules, groupOp.name());
+// }
+// }
+//
+// if (filterHql != null) {
+// if (log.isInfoEnabled()) {
+// log.info("filterHql = " + filterHql);
+// }
+// for (Map.Entry<String, Object> e : filterParams.entrySet()) {
+// String paramName = e.getKey();
+// Object paramValue = e.getValue();
+// if (log.isInfoEnabled()) {
+// log.info("filterParam = " +
+// paramName + "/" + paramValue);
+// }
+// countQuery.addParam(paramName, paramValue);
+// }
+// countQuery.addWhere(filterHql);
+//
+// String fullQuery = countQuery.fullQuery();
+// if (log.isInfoEnabled()) {
+// log.info("fullquery = " + fullQuery);
+// }
+// }
+//
+// int count = dao.countByQuery(countQuery);
+//
+// TopiaQuery query = dao.createQuery("e");
+//
+// if (pager != null) {
+//
+// pager.setRecords(count);
+// PagerBeanUtil.computeRecordIndexesAndPagesNumber(pager);
+//
+// long from = pager.getRecordStartIndex();
+// long to = pager.getRecordEndIndex();
+//
+// if (log.isDebugEnabled()) {
+// log.debug("Count = " + count);
+// log.debug("page = " + pager.getPageIndex());
+// log.debug("pageSize = " + pager.getPageSize());
+// log.debug("from = " + from);
+// log.debug("to = " + to);
+// log.debug("pageCount= " + pager.getPagesNumber());
+// }
+//
+// if (filterHql != null) {
+// for (Map.Entry<String, Object> entry : filterParams.entrySet()) {
+// String paramName = entry.getKey();
+// Object paramValue = entry.getValue();
+// query.addParam(paramName, paramValue);
+// }
+// query.addWhere(filterHql);
+// }
+//
+// String sidx = pager.getSortColumn();
+// boolean ascendantOrder = pager.isSortAscendant();
+//
+// if (StringUtils.isNotEmpty(sidx)) {
+// if (ascendantOrder) {
+// query.addOrder(sidx);
+// } else {
+// query.addOrderDesc(sidx);
+// }
+// }
+//
+// query.setLimit((int) from, (int) to - 1);
+// }
+//
+// dao.findAllByQueryAndPager("hql", pager, filterParams.toString());
+// result = dao.findAllByQuery(query);
+// return result;
+// } catch (TopiaException eee) {
+// throw new EchoBaseTechnicalException("Could not obtain data", eee);
+// }
+// }
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -29,7 +29,7 @@
import fr.ifremer.echobase.entities.EchoBaseUserDAO;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.persistence.TopiaFilterPagerUtil;
+import org.nuiton.topia.persistence.pager.TopiaPagerBean;
import org.nuiton.util.StringUtil;
import java.util.List;
@@ -52,7 +52,7 @@
return getUsers(null);
}
- public List<EchoBaseUser> getUsers(TopiaFilterPagerUtil.FilterPagerBean pager) {
+ public List<EchoBaseUser> getUsers(TopiaPagerBean pager) {
try {
EchoBaseUserDAO dao = getDAO();
List<EchoBaseUser> users = dao.findAll(pager);
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-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportService.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -193,7 +193,7 @@
public <E extends TopiaEntity> Iterable<E> prepareData(TableMeta<EchoBaseEntityEnum> tableMeta) {
DbEditorService service = getService(DbEditorService.class);
- Iterable<E> data = service.getEntities(tableMeta, null);
+ Iterable<E> data = service.iterateOnEntities(tableMeta, null);
return data;
}
@@ -202,7 +202,7 @@
DbEditorService service = getService(DbEditorService.class);
TableMeta<EchoBaseEntityEnum> tableMeta = service.getTableMeta(associationMeta.getSource());
- Iterable<E> data = service.getEntities(tableMeta, "size(e." + associationMeta.getName() + ") > 0");
+ Iterable<E> data = service.iterateOnEntities(tableMeta, "size(e." + associationMeta.getName() + ") > 0");
return data;
}
};
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -31,7 +31,7 @@
import fr.ifremer.echobase.services.EchoBaseServiceSupport;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.topia.TopiaException;
-import org.nuiton.util.PagerUtil;
+import org.nuiton.topia.persistence.pager.TopiaPagerBean;
import org.nuiton.util.csv.Export;
import java.util.List;
@@ -124,7 +124,7 @@
sqlQuery.getColumnNames(getTransaction());
}
- public Map<String, Object>[] executeSql(String sql, PagerUtil.PagerBean pager) {
+ public Map<String, Object>[] executeSql(String sql, TopiaPagerBean pager) {
// get a query to count all rows for the request
GenericSQLQuery sqlQuery = new GenericSQLQuery(sql, pager);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/GenericSQLQuery.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/GenericSQLQuery.java 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/GenericSQLQuery.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -29,7 +29,8 @@
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaContextImplementor;
import org.nuiton.topia.framework.TopiaSQLQuery;
-import org.nuiton.util.PagerUtil;
+import org.nuiton.util.PagerBean;
+import org.nuiton.util.PagerBeanUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -39,11 +40,11 @@
import java.util.Map;
/**
-* TODO
-*
-* @author tchemit <chemit(a)codelutin.com>
-* @since 1.0
-*/
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
public class GenericSQLQuery extends TopiaSQLQuery<Map<String, Object>> {
/** Logger. */
@@ -53,9 +54,9 @@
private final String sql;
- private final PagerUtil.PagerBean pager;
+ private final PagerBean pager;
- public GenericSQLQuery(String sql, PagerUtil.PagerBean pager) {
+ public GenericSQLQuery(String sql, PagerBean pager) {
this.sql = sql;
this.pager = pager;
}
@@ -106,12 +107,12 @@
if (pager != null) {
// must count rows
- int nbRows = getNbRows(set);
+ long nbRows = getNbRows(set);
if (log.isInfoEnabled()) {
log.info("For request " + sql + ", nb rows = " + nbRows);
}
pager.setRecords(nbRows);
- PagerUtil.computeRecordIndexesAndPagesNumber(pager);
+ PagerBeanUtil.computeRecordIndexesAndPagesNumber(pager);
}
}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractJSONPaginedAction.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -23,11 +23,11 @@
*/
package fr.ifremer.echobase.ui.actions;
-import com.google.common.collect.Maps;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.json.JSONException;
import org.apache.struts2.json.JSONUtil;
-import org.nuiton.topia.persistence.TopiaFilterPagerUtil;
+import org.nuiton.topia.persistence.pager.TopiaPagerBean;
+import org.nuiton.topia.persistence.pager.TopiaPagerBeanBuilder;
import java.util.Collection;
import java.util.Map;
@@ -42,17 +42,8 @@
private static final long serialVersionUID = 1L;
- public abstract Integer getRows();
+ protected TopiaPagerBean pager = new TopiaPagerBean();
- public abstract Integer getPage();
-
- public abstract Integer getTotal();
-
- public abstract Integer getRecords();
-
- protected TopiaFilterPagerUtil.FilterPagerBean pager =
- new TopiaFilterPagerUtil.FilterPagerBean();
-
// sorting order - asc or desc
protected String sord;
@@ -67,6 +58,22 @@
protected String searchOper;
+ public final Integer getRows() {
+ return pager.getPageSize();
+ }
+
+ public final Integer getPage() {
+ return pager.getPageIndex();
+ }
+
+ public final Long getTotal() {
+ return pager.getPagesNumber();
+ }
+
+ public final Long getRecords() {
+ return pager.getRecords();
+ }
+
public void setRows(Integer rows) {
pager.setPageSize(rows);
}
@@ -133,6 +140,8 @@
protected void initFilter() throws JSONException {
+ TopiaPagerBeanBuilder builder = new TopiaPagerBeanBuilder(pager);
+
if (StringUtils.isNotEmpty(filters)) {
Map<String, Object> filterObject =
(Map<String, Object>) JSONUtil.deserialize(filters);
@@ -141,22 +150,21 @@
Collection<Map<String, String>> rules =
(Collection<Map<String, String>>) filterObject.get("rules");
- TopiaFilterPagerUtil.newFilterPagerBeanBuilder(groupOp).
- addOperations(rules).
- flush(pager);
+ pager = builder.
+ setFilterOperationGroup(groupOp).
+ addRules(rules).
+ toBean();
} else {
// could be a single search
if (StringUtils.isNotEmpty(searchField)) {
-
- Map<String, String> rule = Maps.newTreeMap();
- rule.put("op", searchOper);
- rule.put("field", searchField);
- rule.put("data", searchString);
- TopiaFilterPagerUtil.newFilterPagerBeanBuilder("AND").
- addRule(rule).
- flush(pager);
+ pager = builder.
+ setFilterOperationGroup("AND").
+ setSortAscendant(isSortAscendant()).
+ setSortcolumn(getSortColumn()).
+ addRule(searchOper, searchField, searchString).
+ toBean();
}
}
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 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -65,26 +65,6 @@
}
@Override
- public Integer getRows() {
- return pager.getPageSize();
- }
-
- @Override
- public Integer getPage() {
- return pager.getPageIndex();
- }
-
- @Override
- public Integer getTotal() {
- return pager.getPagesNumber();
- }
-
- @Override
- public Integer getRecords() {
- return pager.getRecords();
- }
-
- @Override
public String execute() throws Exception {
Boolean ascendantOrder = isSortAscendant();
@@ -98,12 +78,7 @@
log.debug("sord = " + ascendantOrder);
}
- datas = getService(DbEditorService.class).getData(
- entityType,
- pager,
- sortColumn,
- ascendantOrder
- );
+ datas = getService(DbEditorService.class).getData(entityType, pager);
if (log.isDebugEnabled()) {
log.debug("Total page = " + getTotal());
@@ -128,7 +103,8 @@
getService(DecoratorService.class).getDecorator(
getLocale(), Voyage.class, null);
- EchoBaseServiceSupport service = getService(EchoBaseServiceSupport.class);
+ EchoBaseServiceSupport service =
+ getService(EchoBaseServiceSupport.class);
for (Map row : datas) {
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -53,26 +53,6 @@
}
@Override
- public Integer getRows() {
- return pager.getPageSize();
- }
-
- @Override
- public Integer getPage() {
- return pager.getPageIndex();
- }
-
- @Override
- public Integer getTotal() {
- return pager.getPagesNumber();
- }
-
- @Override
- public Integer getRecords() {
- return pager.getRecords();
- }
-
- @Override
public String execute() throws Exception {
ExportQueryService service = getService(ExportQueryService.class);
datas = service.executeSql(sql, pager);
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java 2012-09-14 10:15:47 UTC (rev 658)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java 2012-09-14 10:18:34 UTC (rev 659)
@@ -49,26 +49,6 @@
}
@Override
- public Integer getRows() {
- return pager.getPageSize();
- }
-
- @Override
- public Integer getPage() {
- return pager.getPageIndex();
- }
-
- @Override
- public Integer getTotal() {
- return pager.getPagesNumber();
- }
-
- @Override
- public Integer getRecords() {
- return pager.getRecords();
- }
-
- @Override
public String execute() throws Exception {
List<EchoBaseUser> allUsers =
1
0
Author: tchemit
Date: 2012-09-14 12:15:47 +0200 (Fri, 14 Sep 2012)
New Revision: 658
Url: http://forge.codelutin.com/repositories/revision/echobase/658
Log:
updates to snapshot of nuiton-utils
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-09-13 05:40:07 UTC (rev 657)
+++ trunk/pom.xml 2012-09-14 10:15:47 UTC (rev 658)
@@ -134,7 +134,7 @@
<eugenePluginVersion>2.5</eugenePluginVersion>
<topiaVersion>2.6.14-SNAPSHOT</topiaVersion>
- <nuitonUtilsVersion>2.6.1</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.6.2-SNAPSHOT</nuitonUtilsVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
<nuitonWebVersion>1.11</nuitonWebVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
1
0
13 Sep '12
Author: tchemit
Date: 2012-09-13 07:40:07 +0200 (Thu, 13 Sep 2012)
New Revision: 657
Url: http://forge.codelutin.com/repositories/revision/echobase/657
Log:
fixes #1490: Fix duplicated data in export
refs #1437: Suppression des imports (debut des tests)
refs #1486: Permettre un export EchoBase plus cible (fix all db export + simplify api (no more strategy)
Added:
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removeData/
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removeData/AbstractRemoveDataServiceIT.java
Removed:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/strategy/
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellImpl.java
trunk/echobase-domain/src/main/xmi/echobase.zargo
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbMode.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseServiceFixtures.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Configure.java
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellImpl.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellImpl.java 2012-09-12 18:50:24 UTC (rev 656)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellImpl.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -50,7 +50,7 @@
}
@Override
- public void accept2(EntityVisitor visitor) {
+ public void acceptWithNoChild(EntityVisitor visitor) {
visitor.start(this);
visitor.visit(this, PROPERTY_NAME, String.class, name);
visitor.visit(this, PROPERTY_DATA, Collection.class, Data.class, data);
Modified: trunk/echobase-domain/src/main/xmi/echobase.zargo
===================================================================
(Binary files differ)
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-12 18:50:24 UTC (rev 656)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -298,7 +298,7 @@
if (extraWhereQuery != null) {
hql += " WHERE " + extraWhereQuery;
}
- Iterable<E> result = dao.findAllLazyByQuery(1000, hql);
+ Iterable<E> result = dao.findAllLazyByQuery(5000, hql);
return result;
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException("Could not obtain data", eee);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbMode.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbMode.java 2012-09-12 18:50:24 UTC (rev 656)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbMode.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -36,25 +36,39 @@
public enum ExportDbMode implements I18nAble {
/** Export only referential. */
- REFERENTIAL(n_("echobase.common.exportDbMode.referential")),
+ REFERENTIAL(n_("echobase.common.exportDbMode.referential"), true, false),
/** Export only selected data. */
- DATA(n_("echobase.common.exportDbMode.data")),
+ DATA(n_("echobase.common.exportDbMode.data"), false, true),
/** Export selected data + referential. */
- REFERENTIAL_AND_DATA(n_("echobase.common.exportDbMode.referentialAndData")),
+ REFERENTIAL_AND_DATA(n_("echobase.common.exportDbMode.referentialAndData"), true, true),
/** Export all the db. */
- ALL(n_("echobase.common.exportDbMode.all"));
+ ALL(n_("echobase.common.exportDbMode.all"), true, true);
private final String i18nKey;
- ExportDbMode(String i18nKey) {
+ private final boolean exportReferential;
+
+ private final boolean exportData;
+
+ ExportDbMode(String i18nKey, boolean exportReferential, boolean exportData) {
this.i18nKey = i18nKey;
+ this.exportReferential = exportReferential;
+ this.exportData = exportData;
}
@Override
public String getI18nKey() {
return i18nKey;
}
+
+ public boolean isExportReferential() {
+ return exportReferential;
+ }
+
+ public boolean isExportData() {
+ return exportData;
+ }
}
\ No newline at end of file
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java 2012-09-12 18:50:24 UTC (rev 656)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -23,21 +23,32 @@
*/
package fr.ifremer.echobase.services.exportdb;
-import fr.ifremer.echobase.EchoBaseTechnicalException;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.data.Cell;
+import fr.ifremer.echobase.entities.data.Result;
+import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.io.EchoBaseIOUtil;
import fr.ifremer.echobase.services.EchoBaseServiceSupport;
-import fr.ifremer.echobase.services.exportdb.strategy.AbstractExportDbStrategy;
-import fr.ifremer.echobase.services.exportdb.strategy.AllExportDbStrategy;
-import fr.ifremer.echobase.services.exportdb.strategy.DataExportDbStrategy;
-import fr.ifremer.echobase.services.exportdb.strategy.ReferentialAndDataExportDbStrategy;
-import fr.ifremer.echobase.services.exportdb.strategy.ReferentialExportDbStrategy;
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.TopiaPersistenceHelper;
+import org.nuiton.topia.persistence.csv.out.ExportEntityVisitor;
+import org.nuiton.topia.persistence.csv.out.TopiaCsvExports;
+import org.nuiton.topia.persistence.metadata.AssociationMeta;
+import org.nuiton.topia.persistence.metadata.TableMeta;
import org.nuiton.util.FileUtil;
import org.nuiton.util.TimeLog;
import java.io.File;
import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Service to import / export a complete db.
@@ -71,28 +82,186 @@
ExportDbMode exportDbMode = model.getExportDbMode();
- AbstractExportDbStrategy strategy;
+ ExportService exportService = getService(ExportService.class);
- switch (exportDbMode) {
- case REFERENTIAL:
- strategy = getService(ReferentialExportDbStrategy.class);
- break;
- case DATA:
- strategy = getService(DataExportDbStrategy.class);
- break;
- case REFERENTIAL_AND_DATA:
- strategy = getService(ReferentialAndDataExportDbStrategy.class);
- break;
- case ALL:
- strategy = getService(AllExportDbStrategy.class);
- break;
- default:
- throw new EchoBaseTechnicalException(
- "Can not deal with this exportDbMode: " + exportDbMode);
+ boolean exportVoyagesByVisitor = exportDbMode.isExportData();
+
+ if (exportVoyagesByVisitor) {
+
+ long nbVoyages = exportService.countEntities(Voyage.class);
+ if (exportDbMode == ExportDbMode.ALL ||
+ model.getVoyageIds().length == nbVoyages) {
+
+ // no need to export via visitor, can export all data tables
+ exportVoyagesByVisitor = false;
+ }
}
- strategy.doExport(model, dir);
+ List<TableMeta<EchoBaseEntityEnum>> tablesToExport = Lists.newArrayList();
+ List<AssociationMeta<EchoBaseEntityEnum>> associationsToExport = Lists.newArrayList();
+ if (exportDbMode.isExportReferential()) {
+
+ // add referential tables
+ tablesToExport.addAll(getDbMeta().getReferenceTables());
+ associationsToExport.addAll(getDbMeta().getReferenceAssociations());
+ }
+
+ if (exportDbMode.isExportData() && !exportVoyagesByVisitor) {
+
+ // will export complete data tables
+ tablesToExport.addAll(getDbMeta().getDataTables());
+ associationsToExport.addAll(getDbMeta().getDataAssociations());
+ }
+
+ if (model.isComputeSteps()) {
+
+ int nbSteps = tablesToExport.size() + associationsToExport.size();
+
+ if (exportVoyagesByVisitor) {
+ nbSteps += model.getVoyageIds().length;
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("NB steps: " + nbSteps);
+ }
+ model.setNbSteps(nbSteps);
+ }
+
+ exportTables(model, dir, tablesToExport, exportService);
+
+ exportAssociations(model, dir, associationsToExport, exportService);
+
+ if (exportVoyagesByVisitor) {
+
+ exportVoyages(model, dir, exportService);
+ }
+
EchoBaseIOUtil.compressZipFile(zipFile, dir);
}
+
+ private void exportTables(ExportDbConfiguration model,
+ File dir,
+ List<TableMeta<EchoBaseEntityEnum>> tablesToExport,
+ ExportService exportService) {
+ for (TableMeta<EchoBaseEntityEnum> meta : tablesToExport) {
+
+ model.incrementsProgress();
+
+ File entryFile = new File(dir, meta.getFilename());
+ exportService.exportData(meta, entryFile);
+ }
+ }
+
+ private void exportAssociations(ExportDbConfiguration model,
+ File dir,
+ List<AssociationMeta<EchoBaseEntityEnum>> associationsToExport,
+ ExportService exportService) {
+ for (AssociationMeta<EchoBaseEntityEnum> associationMeta : associationsToExport) {
+
+ model.incrementsProgress();
+
+ File entryFile = new File(dir, associationMeta.getFilename());
+ exportService.exportData(associationMeta, entryFile);
+ }
+ }
+
+ private void exportVoyages(ExportDbConfiguration model,
+ File dir,
+ ExportService exportService) throws IOException {
+
+ Map<EchoBaseEntityEnum, TopiaCsvExports.EntityExportContext<EchoBaseEntityEnum>> contexts =
+ TopiaCsvExports.createReplicateEntityVisitorContexts(
+ exportService.getModelFactory(false),
+ getDbMeta().getDataTables(),
+ getDbMeta().getDataAssociations(),
+ dir);
+
+ ReplicateEntityVisitor visitor = new ReplicateEntityVisitor(
+ getDbMeta().getPersistenceHelper(),
+ contexts);
+
+ try {
+ for (String voyageId : model.getVoyageIds()) {
+
+ model.incrementsProgress();
+
+ Voyage voyage = getEntityById(Voyage.class, voyageId);
+ visitor.export(voyage);
+ }
+ } finally {
+
+ // close visitor to close export files
+ visitor.close();
+ }
+ }
+
+ /**
+ * entity visitor to export data to csv files.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+ static class ReplicateEntityVisitor extends ExportEntityVisitor<EchoBaseEntityEnum> {
+
+ protected final Set<String> categoryIds;
+
+ public ReplicateEntityVisitor(TopiaPersistenceHelper<EchoBaseEntityEnum> typeProvider,
+ Map<EchoBaseEntityEnum, TopiaCsvExports.EntityExportContext<EchoBaseEntityEnum>> entityExporters) {
+ super(typeProvider, entityExporters);
+ categoryIds = Sets.newHashSet();
+ }
+
+ @Override
+ public void visit(TopiaEntity entity, String propertyName,
+ Class<?> type, Object value) {
+ if (Result.PROPERTY_CATEGORY.equals(propertyName) &&
+ entity instanceof Result) {
+
+ // export category
+ try {
+ TopiaEntity topiaEntity = (TopiaEntity) value;
+ if (categoryIds.add(topiaEntity.getTopiaId())) {
+ // add this new category
+ topiaEntity.accept(this);
+ }
+
+ } catch (TopiaException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can not visit entity " + value, e);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void visitEntityCollection(TopiaEntity entity,
+ String propertyName,
+ Class<?> collectionType,
+ Class<?> type,
+ Collection<?> cValue) {
+ if (Voyage.PROPERTY_POST_CELL.equals(propertyName) && entity instanceof Voyage) {
+
+ // special case, we don not want to visit childs of cells
+ for (Object o : cValue) {
+ Cell cell = (Cell) o;
+
+ cell.acceptWithNoChild(this);
+ }
+ } else {
+ // normal entity collection visit
+ super.visitEntityCollection(entity,
+ propertyName,
+ collectionType,
+ type,
+ cValue);
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ categoryIds.clear();
+ super.close();
+ }
+ }
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseServiceFixtures.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseServiceFixtures.java 2012-09-12 18:50:24 UTC (rev 656)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseServiceFixtures.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -31,6 +31,10 @@
*/
public class EchoBaseServiceFixtures {
+ public String completeDb2011() {
+ return "/import-data/echobase-pelgas-2011.h2.db.gz";
+ }
+
public String IMPORT_DATA_ECHOBASE_NO_DATA() {
return "/import-data/echobase-" + dbVersion() + "-nodata.h2.db.gz";
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java 2012-09-12 18:50:24 UTC (rev 656)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -23,15 +23,43 @@
*/
package fr.ifremer.echobase.services;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.data.Category;
+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.Result;
+import fr.ifremer.echobase.entities.data.Transect;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.AcousticInstrument;
+import fr.ifremer.echobase.entities.references.CellType;
+import fr.ifremer.echobase.entities.references.DataMetadata;
+import fr.ifremer.echobase.entities.references.Species;
+import fr.ifremer.echobase.entities.references.SpeciesCategory;
+import fr.ifremer.echobase.io.EchoBaseIOUtil;
import fr.ifremer.echobase.services.exportdb.ExportDbConfiguration;
import fr.ifremer.echobase.services.exportdb.ExportDbMode;
import fr.ifremer.echobase.services.exportdb.ExportDbService;
import junit.framework.Assert;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.junit.Test;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.TopiaDAO;
+import org.nuiton.topia.persistence.csv.in.TopiaCsvImports;
+import org.nuiton.topia.persistence.metadata.TableMeta;
import org.nuiton.util.FileUtil;
import java.io.File;
import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
/**
* Test {@link ExportDbService}.
@@ -46,6 +74,130 @@
fixtures.IMPORT_DATA_ECHOBASE_COMMON_DATA());
}
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ExportDbServiceTest.class);
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+
+ TopiaDAO<Voyage> voyageDAO = getDAO(Voyage.class);
+ TopiaDAO<DataProcessing> dataProcessingDAO = getDAO(DataProcessing.class);
+ TopiaDAO<DataAcquisition> dataAcquisitionDAO = getDAO(DataAcquisition.class);
+ TopiaDAO<Cell> cellDAO = getDAO(Cell.class);
+ TopiaDAO<Category> categoryDAO = getDAO(Category.class);
+ TopiaDAO<Result> resultDAO = getDAO(Result.class);
+ TopiaDAO<SpeciesCategory> speciesCategoryDAO = getDAO(SpeciesCategory.class);
+ TopiaDAO<Data> dataDAO = getDAO(Data.class);
+
+
+ Voyage voyage = getEntityById(Voyage.class, getVoyageId());
+ Assert.assertNotNull(voyage);
+
+ Transect transect = voyage.getTransit().get(0).getTransect().get(0);
+ Assert.assertNotNull(transect);
+
+ List<AcousticInstrument> acousticInstruments = getEntities(AcousticInstrument.class);
+ Assert.assertTrue(CollectionUtils.isNotEmpty(acousticInstruments));
+ AcousticInstrument acousticInstrument = acousticInstruments.get(0);
+ DataAcquisition dataAcquisition = dataAcquisitionDAO.create(
+ DataAcquisition.PROPERTY_ACOUSTIC_INSTRUMENT, acousticInstrument
+ );
+ transect.addDataAcquisition(dataAcquisition);
+ DataProcessing dataProcessing = dataProcessingDAO.create(
+ DataProcessing.PROPERTY_ID, "id",
+ DataProcessing.PROPERTY_PROCESSING_TEMPLATE, "processingtemplate"
+ );
+ dataAcquisition.addDataProcessing(dataProcessing);
+
+ List<Species> speciesList = getEntities(Species.class);
+ Assert.assertTrue(CollectionUtils.isNotEmpty(speciesList));
+ Species species = speciesList.get(0);
+
+ List<DataMetadata> dataMetadatas = getEntities(DataMetadata.class);
+ Assert.assertTrue(CollectionUtils.isNotEmpty(dataMetadatas));
+ DataMetadata dataMetadata = dataMetadatas.get(0);
+
+ SpeciesCategory speciesCategory = speciesCategoryDAO.create(
+ SpeciesCategory.PROPERTY_SPECIES, species
+ );
+
+ Category category = categoryDAO.create(
+ Category.PROPERTY_SPECIES_CATEGORY, speciesCategory
+ );
+
+ List<CellType> cellTypes = getEntities(CellType.class);
+ Assert.assertTrue(CollectionUtils.isNotEmpty(cellTypes));
+ CellType cellType = cellTypes.get(0);
+
+ Cell cell = cellDAO.create(
+ Cell.PROPERTY_NAME, "cellName",
+ Cell.PROPERTY_CELL_TYPE, cellType
+ );
+ if (log.isInfoEnabled()) {
+ log.info("cell:" + cell.getTopiaId());
+ }
+ dataProcessing.addCell(cell);
+
+ Data cellData = dataDAO.create(
+ Data.PROPERTY_DATA_METADATA, dataMetadata,
+ Data.PROPERTY_DATA_VALUE, "cellDataValue"
+ );
+ cell.addData(cellData);
+ Result cellResult = resultDAO.create(
+ Result.PROPERTY_CATEGORY, category,
+ Result.PROPERTY_DATA_METADATA, dataMetadata,
+ Result.PROPERTY_RESULT_LABEL, "cellResultLabel",
+ Result.PROPERTY_RESULT_VALUE, "cellResultValue"
+ );
+ cell.addResult(cellResult);
+
+ Cell childCell = cellDAO.create(
+ Cell.PROPERTY_NAME, "childCell",
+ Cell.PROPERTY_CELL_TYPE, cellType
+ );
+ cell.addChilds(childCell);
+
+ Data childCellData = dataDAO.create(
+ Data.PROPERTY_DATA_METADATA, dataMetadata,
+ Data.PROPERTY_DATA_VALUE, "childCellDataValue"
+ );
+ childCell.addData(childCellData);
+
+ Result childCellResult = resultDAO.create(
+ Result.PROPERTY_CATEGORY, category,
+ Result.PROPERTY_DATA_METADATA, dataMetadata,
+ Result.PROPERTY_RESULT_LABEL, "childCellResultLabel",
+ Result.PROPERTY_RESULT_VALUE, "childCellResultValue"
+ );
+ childCell.addResult(childCellResult);
+
+ Cell postCell = cellDAO.create(
+ Cell.PROPERTY_NAME, "postCellcellName",
+ Cell.PROPERTY_CELL_TYPE, cellType
+ );
+
+ postCell.addChilds(cell);
+ voyage.addPostCell(postCell);
+
+
+ Data postCellData = dataDAO.create(
+ Data.PROPERTY_DATA_METADATA, dataMetadata,
+ Data.PROPERTY_DATA_VALUE, "postCellDataValue"
+ );
+ postCell.addData(postCellData);
+
+ Result postCellResult = resultDAO.create(
+ Result.PROPERTY_CATEGORY, category,
+ Result.PROPERTY_DATA_METADATA, dataMetadata,
+ Result.PROPERTY_RESULT_LABEL, "postCellResultLabel",
+ Result.PROPERTY_RESULT_VALUE, "postCellResultValue"
+ );
+ postCell.addResult(postCellResult);
+
+ commitTransaction("Create cells");
+ }
+
@Test
public void exportReferential() throws IOException {
@@ -60,12 +212,23 @@
conf.setComputeSteps(true);
conf.setExportDbMode(ExportDbMode.REFERENTIAL);
service.doExport(conf);
- Assert.assertNotNull(conf.getExportFile());
- Assert.assertTrue(conf.getExportFile().exists());
+ File exportFile = conf.getExportFile();
+ Assert.assertNotNull(exportFile);
+ Assert.assertTrue(exportFile.exists());
+
+ // check all tables (referential) where exported
+ ZipFile zipFile = new ZipFile(exportFile);
+
+ Map<TableMeta<EchoBaseEntityEnum>, ZipEntry> tables =
+ TopiaCsvImports.discoverEntries(
+ "echobase/", getDbMeta().getReferenceTables(),
+ zipFile, Lists.<String>newArrayList());
+
+ checkAllTablesExported(zipFile, tables);
}
@Test
- public void exportData() throws IOException {
+ public void exportData() throws IOException, TopiaException {
ExportDbService service = getService(ExportDbService.class);
@@ -80,8 +243,19 @@
conf.setComputeSteps(true);
conf.setExportDbMode(ExportDbMode.DATA);
service.doExport(conf);
- Assert.assertNotNull(conf.getExportFile());
- Assert.assertTrue(conf.getExportFile().exists());
+ File exportFile = conf.getExportFile();
+ Assert.assertNotNull(exportFile);
+ Assert.assertTrue(exportFile.exists());
+
+ // check all tables (referential + data) where exported
+ ZipFile zipFile = new ZipFile(exportFile);
+
+ Map<TableMeta<EchoBaseEntityEnum>, ZipEntry> tables =
+ TopiaCsvImports.discoverEntries(
+ "echobase/", getDbMeta().getAllTables(),
+ zipFile, Lists.<String>newArrayList());
+
+ checkAllTablesExported(zipFile, tables);
}
@Test
@@ -100,8 +274,20 @@
conf.setComputeSteps(true);
conf.setExportDbMode(ExportDbMode.REFERENTIAL_AND_DATA);
service.doExport(conf);
- Assert.assertNotNull(conf.getExportFile());
- Assert.assertTrue(conf.getExportFile().exists());
+ File exportFile = conf.getExportFile();
+ Assert.assertNotNull(exportFile);
+ Assert.assertTrue(exportFile.exists());
+
+
+ // check all tables (referential + data) where exported
+ ZipFile zipFile = new ZipFile(exportFile);
+
+ Map<TableMeta<EchoBaseEntityEnum>, ZipEntry> tables =
+ TopiaCsvImports.discoverEntries(
+ "echobase/", getDbMeta().getAllTables(),
+ zipFile, Lists.<String>newArrayList());
+
+ checkAllTablesExported(zipFile, tables);
}
@Test
@@ -110,6 +296,7 @@
ExportDbService service = getService(ExportDbService.class);
ExportDbConfiguration conf = new ExportDbConfiguration();
+ conf.setVoyageIds(new String[]{getVoyageId()});
File workingDirectory = new File(getTestDir(), "work-dir");
FileUtil.createDirectoryIfNecessary(workingDirectory);
@@ -118,8 +305,34 @@
conf.setComputeSteps(true);
conf.setExportDbMode(ExportDbMode.ALL);
service.doExport(conf);
- Assert.assertNotNull(conf.getExportFile());
- Assert.assertTrue(conf.getExportFile().exists());
+ File exportFile = conf.getExportFile();
+ Assert.assertNotNull(exportFile);
+ Assert.assertTrue(exportFile.exists());
+
+
+ // check all tables (referential + data) where exported
+ ZipFile zipFile = new ZipFile(exportFile);
+
+ Map<TableMeta<EchoBaseEntityEnum>, ZipEntry> tables =
+ TopiaCsvImports.discoverEntries(
+ "echobase/", getDbMeta().getAllTables(),
+ zipFile, Lists.<String>newArrayList());
+
+ checkAllTablesExported(zipFile, tables);
}
+ private void checkAllTablesExported(ZipFile zipFile, Map<TableMeta<EchoBaseEntityEnum>, ZipEntry> tables) throws IOException {
+ for (Map.Entry<TableMeta<EchoBaseEntityEnum>, ZipEntry> entry : tables.entrySet()) {
+ TableMeta<EchoBaseEntityEnum> type = entry.getKey();
+ if (type.getSource() == EchoBaseEntityEnum.Gear) {
+ // there is some extra lines so can not count from here...
+ //FIXME should use a csv import to read entries nstead
+ continue;
+ }
+ ZipEntry zipEntry = entry.getValue();
+ long nbCells = EchoBaseIOUtil.countLines(zipFile, Sets.newHashSet(zipEntry));
+ Assert.assertEquals(1 + getEntities(type.getEntityType()).size(), nbCells);
+ }
+ }
+
}
Added: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removeData/AbstractRemoveDataServiceIT.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removeData/AbstractRemoveDataServiceIT.java (rev 0)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removeData/AbstractRemoveDataServiceIT.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -0,0 +1,54 @@
+package fr.ifremer.echobase.ui.actions.removeData;
+
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.services.EchoBaseTestServiceSupport;
+import fr.ifremer.echobase.services.FakeEchoBaseServiceContext;
+import fr.ifremer.echobase.services.removedata.RemoveDataConfiguration;
+import fr.ifremer.echobase.services.removedata.RemoveDataService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Test;
+import org.nuiton.util.TimeLog;
+
+/**
+ * Abstract it form remove data feature.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.2
+ */
+public abstract class AbstractRemoveDataServiceIT extends EchoBaseTestServiceSupport {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(AbstractRemoveDataServiceIT.class);
+
+ protected FakeEchoBaseServiceContext initContext() {
+ return new FakeEchoBaseServiceContext(fixtures.completeDb2011());
+ }
+
+ public static final TimeLog TIME_LOG =
+ new TimeLog(AbstractRemoveDataServiceIT.class);
+
+
+ protected abstract String getImportLogId();
+
+ @Test
+ public void doExport() {
+
+ RemoveDataConfiguration conf = new RemoveDataConfiguration();
+ conf.setImportLogId(getImportLogId());
+
+
+ RemoveDataService service = getService(RemoveDataService.class);
+
+ EchoBaseUser fakeUser = createFakeUser();
+
+ long s0 = TimeLog.getTime();
+
+ service.removeImport(conf, fakeUser);
+
+ TIME_LOG.log(s0, "doExport");
+
+ }
+
+}
Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removeData/AbstractRemoveDataServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Configure.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Configure.java 2012-09-12 18:50:24 UTC (rev 656)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Configure.java 2012-09-13 05:40:07 UTC (rev 657)
@@ -32,10 +32,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
import java.io.File;
import java.io.IOException;
import java.util.Map;
+import java.util.Set;
/**
* Configure the complete db export.
@@ -97,6 +99,7 @@
ExportDbConfiguration result = new ExportDbConfiguration();
result.setFileName("echobase");
result.setComputeSteps(true);
+ result.setVoyageIds(StringUtil.EMPTY_STRING_ARRAY);
return result;
}
@@ -125,5 +128,11 @@
if (log.isInfoEnabled()) {
log.info("Temporary directory to use : " + dataDirectory);
}
+
+ if (model.getExportDbMode() == ExportDbMode.ALL) {
+ voyages = loadSortAndDecorate(Voyage.class);
+ Set<String> ids = voyages.keySet();
+ model.setVoyageIds(ids.toArray(new String[ids.size()]));
+ }
}
}
\ No newline at end of file
1
0
r656 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy
by tchemit@users.forge.codelutin.com 12 Sep '12
by tchemit@users.forge.codelutin.com 12 Sep '12
12 Sep '12
Author: tchemit
Date: 2012-09-12 20:50:24 +0200 (Wed, 12 Sep 2012)
New Revision: 656
Url: http://forge.codelutin.com/repositories/revision/echobase/656
Log:
fix importDb with voyage
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/DataImportDbStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/FreeImportDbStrategy.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/DataImportDbStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/DataImportDbStrategy.java 2012-09-12 16:12:57 UTC (rev 655)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/DataImportDbStrategy.java 2012-09-12 18:50:24 UTC (rev 656)
@@ -102,6 +102,7 @@
// create a importLog entry
ImportLog importLog = dao.create(
+ ImportLog.PROPERTY_VOYAGE_ID, importedVoyage.getTopiaId(),
ImportLog.PROPERTY_IMPORT_TYPE, ImportType.VOYAGE,
ImportLog.PROPERTY_IMPORT_USER, user.getEmail(),
ImportLog.PROPERTY_IMPORT_DATE, newDate(),
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/FreeImportDbStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/FreeImportDbStrategy.java 2012-09-12 16:12:57 UTC (rev 655)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/strategy/FreeImportDbStrategy.java 2012-09-12 18:50:24 UTC (rev 656)
@@ -75,6 +75,7 @@
// create a importLog entry
ImportLog importLog = dao.create(
+ ImportLog.PROPERTY_VOYAGE_ID, importedVoyage.getTopiaId(),
ImportLog.PROPERTY_IMPORT_TYPE, ImportType.VOYAGE,
ImportLog.PROPERTY_IMPORT_USER, user.getEmail(),
ImportLog.PROPERTY_IMPORT_DATE, date,
1
0
r655 - in trunk: echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData echobase-ui/src/main/webapp/WEB-INF/jsp/embeddedApplication echobase-ui/src/main/webapp/WEB-INF/jsp/exportDb echobase-ui/src/main/webapp/WEB-INF/jsp/importData echobase-ui/src/main/webapp/WEB-INF/jsp/importDb echobase-ui/src/main/webapp/WEB-INF/jsp/removeData src/site/rst
by tchemit@users.forge.codelutin.com 12 Sep '12
by tchemit@users.forge.codelutin.com 12 Sep '12
12 Sep '12
Author: tchemit
Date: 2012-09-12 18:12:57 +0200 (Wed, 12 Sep 2012)
New Revision: 655
Url: http://forge.codelutin.com/repositories/revision/echobase/655
Log:
add voyage in remove data + fix progress model in progress jsp
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/removeData/ConfirmDelete.java
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/embeddedApplication/progress.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportDb/progress.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressAcousticImport.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCatchesImport.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCommonImport.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressOperationImport.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressResultsImport.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/progress.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/dashboard.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/deleteProgress.jsp
trunk/src/site/rst/removeimports.rst
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 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-09-12 16:12:57 UTC (rev 655)
@@ -24,11 +24,16 @@
package fr.ifremer.echobase.ui.actions.dbeditor;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
+import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.services.DbEditorService;
+import fr.ifremer.echobase.services.DecoratorService;
+import fr.ifremer.echobase.services.EchoBaseServiceSupport;
import fr.ifremer.echobase.ui.actions.AbstractJSONPaginedAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.decorator.Decorator;
import java.util.Map;
@@ -119,11 +124,21 @@
execute();
Map<String, String> importTypes = decorateEnums(ImportType.values());
+ Decorator<Voyage> voyageDecorator =
+ getService(DecoratorService.class).getDecorator(
+ getLocale(), Voyage.class, null);
+
+ EchoBaseServiceSupport service = getService(EchoBaseServiceSupport.class);
+
for (Map row : datas) {
- String importType = (String) row.get("importType");
+ String importType = (String) row.get(ImportLog.PROPERTY_IMPORT_TYPE);
String importTypeToString = importTypes.get(importType);
- row.put("importType", importTypeToString);
+ row.put(ImportLog.PROPERTY_IMPORT_TYPE, importTypeToString);
+ String voyageId = (String) row.get(ImportLog.PROPERTY_VOYAGE_ID);
+ Voyage voyage = service.getEntityById(Voyage.class, voyageId);
+ String voyageToString = voyageDecorator.toString(voyage);
+ row.put("voyage", voyageToString);
}
return SUCCESS;
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData/ConfirmDelete.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData/ConfirmDelete.java 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData/ConfirmDelete.java 2012-09-12 16:12:57 UTC (rev 655)
@@ -25,6 +25,8 @@
import com.google.common.base.Preconditions;
import fr.ifremer.echobase.entities.ImportLog;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.services.DecoratorService;
import fr.ifremer.echobase.services.EchoBaseServiceSupport;
import fr.ifremer.echobase.services.removedata.RemoveDataConfiguration;
import fr.ifremer.echobase.ui.actions.AbstractConfigureAction;
@@ -49,6 +51,7 @@
protected ImportLog importLog;
+ protected String voyage;
protected String importType;
@@ -64,6 +67,10 @@
return importLog;
}
+ public String getVoyage() {
+ return voyage;
+ }
+
@Override
protected RemoveDataConfiguration createModel() {
return new RemoveDataConfiguration();
@@ -90,6 +97,10 @@
importLog = service.getEntityById(ImportLog.class, importLogId);
importType = decorateEnums(importLog.getImportType()).entrySet().iterator().next().getValue();
+
+ Voyage voyageEntity = service.getEntityById(Voyage.class, importLog.getVoyageId());
+ this.voyage = getService(DecoratorService.class).decorate(getLocale(), voyageEntity, null);
+
}
}
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/embeddedApplication/progress.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/embeddedApplication/progress.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/embeddedApplication/progress.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -37,5 +37,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportDb/progress.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportDb/progress.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportDb/progress.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -36,5 +36,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressAcousticImport.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressAcousticImport.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressAcousticImport.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -39,5 +39,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCatchesImport.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCatchesImport.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCatchesImport.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -39,5 +39,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCommonImport.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCommonImport.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressCommonImport.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -39,5 +39,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressOperationImport.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressOperationImport.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressOperationImport.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -39,5 +39,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressResultsImport.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressResultsImport.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importData/progressResultsImport.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -39,5 +39,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/progress.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/progress.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/importDb/progress.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -36,5 +36,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -43,6 +43,12 @@
<s:property value="%{importType}"/>
</pre>
+ <s:label key='echobase.common.voyage' value=''/>
+ <div class="clearBoth"/>
+ <pre id='importVoyage' style="font-weight: bold;">
+ <s:property value="%{voyage}"/>
+ </pre>
+
<s:label key='echobase.common.importDate' value=''/>
<div class="clearBoth"/>
<pre id='importLogDate' style="font-weight: bold;">
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/dashboard.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/dashboard.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/dashboard.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -51,6 +51,8 @@
$('#extraInfos').show();
var text = $("tr[aria-selected=true] td[aria-describedby='datas_importText']").text();
$('#importLogText').html(text);
+ var voyage = $("tr[aria-selected=true] td[aria-describedby='datas_voyage']").text();
+ $('#importLogVoyage').html(voyage);
var user = $("tr[aria-selected=true] td[aria-describedby='datas_importUser']").text();
$('#importLogUser').html(user);
var date = $("tr[aria-selected=true] td[aria-describedby='datas_importDate']").text();
@@ -89,6 +91,8 @@
<sjg:gridColumn name="id" title="id" hidden="true"/>
<sjg:gridColumn name="importType" sortable="true"
title="%{getText('echobase.common.importType')}"/>
+ <sjg:gridColumn name="voyage" sortable="true"
+ title="%{getText('echobase.common.voyage')}"/>
<sjg:gridColumn name="importDate" sortable="true"
title="%{getText('echobase.common.importDate')}"/>
<sjg:gridColumn name="importText" sortable="true"
@@ -106,6 +110,11 @@
<pre id='importLogImportType' style="font-weight: bold;"></pre>
<br/>
+ <s:label key='echobase.common.voyage' value=''/>
+ <div class="clearBoth"/>
+ <pre id='importLogVoyage' style="font-weight: bold;"></pre>
+ <br/>
+
<s:label key='echobase.common.importDate' value=''/>
<div class="clearBoth"/>
<pre id='importLogDate' style="font-weight: bold;"></pre>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/deleteProgress.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/deleteProgress.jsp 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/deleteProgress.jsp 2012-09-12 16:12:57 UTC (rev 655)
@@ -36,5 +36,5 @@
<br/>
<div>
- <sj:progressbar value="%{model.progression}"/>
+ <sj:progressbar value="%{model.progress}"/>
</div>
\ No newline at end of file
Modified: trunk/src/site/rst/removeimports.rst
===================================================================
--- trunk/src/site/rst/removeimports.rst 2012-09-12 15:57:54 UTC (rev 654)
+++ trunk/src/site/rst/removeimports.rst 2012-09-12 16:12:57 UTC (rev 655)
@@ -36,10 +36,10 @@
Abstract
--------
-Ce document décrit ce qui se passe lors la suppresion d'un import.
+Ce document décrit ce qui se passe lors de la suppression d'un import.
-Import Voyage complêt)
-----------------------
+Import Voyage complêt
+---------------------
Données à supprimer
~~~~~~~~~~~~~~~~~~~
1
0