r659 - in trunk: echobase-domain/src/main/java/fr/ifremer/echobase/entities echobase-services/src/main/java/fr/ifremer/echobase/services echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery echobase-ui/src/main/
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@codelutin.com> -* @since 1.0 -*/ + * TODO + * + * @author tchemit <chemit@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 =
participants (1)
-
tchemit@users.forge.codelutin.com