Author: fdesbois Date: 2010-06-04 00:14:18 +0200 (Fri, 04 Jun 2010) New Revision: 3030 Url: http://chorem.org/repositories/revision/pollen/3030 Log: Move Filter managment to ToPIA Added: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java Removed: trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties trunk/pollen-business/src/main/xmi/pollen.zargo trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,212 +0,0 @@ -package org.chorem.pollen; - -import org.nuiton.topia.framework.TopiaQuery; -import org.nuiton.topia.persistence.TopiaEntity; - -/** - * EntityQueryProperty is used to simplify property concatenation in TopiaQuery. - * The usage is simple, the EntityQueryProperty need a mainAlias which - * represents the entity in a TopiaQuery. Then the {@link #nameProperty(String)} - * is called to retrieve the correct property name used for the query. Exemple - * : - * <pre> - * BoatDAO dao = AppDAOHelper.getBoatDAO(topiaContext); - * <p/> - * // Property used in the query - * EntityQueryProperty boatProperty = new EntityQueryProperty("B"); - * <p/> - * // It's better to create the query with the property name - * TopiaQuery query = dao.createQuery(boatProperty.name()); - * <p/> - * // The property NAME of the boat need to be find equals to "ULUBERLU" - * query.add(boatProperty.nameProperty(Boat.NAME), "ULUBERLU"); - * <p/> - * // It's avoid doing this : - * query.add("B." + Boat.NAME, "ULUBERLU"); - * </pre> - * This last exemple is a simple case but for a more complex query with more - * than one entity, it's obvious that concatenation using + is not a good - * practice.<br /> You can also use this class as a superclass for each entity, - * ex : - * <pre> - * public class BoatProperty extends EntityQueryProperty { - * <p/> - * public BoatProperty(String mainAlias) { - * super(mainAlias); - * } - * <p/> - * public String namePropertyName() { - * return nameProperty(Boat.NAME); - * } - * } - * </pre> - * <p/> - * Created: 14 avr. 2010 - * - * @author fdesbois <fdesbois@codelutin.com> - */ -public class EntityQueryProperty { - - /** alias of the entity * */ - protected String mainAlias; - - /** name of the property used for join in query * */ - protected String propertyJoin; - - /** class of the entity * */ - protected Class<?> entityClass; - - /** - * Default constructor. mainAlias, propertyJoin and entityClass are null. - * You can use setters to initalize these three properties. You can use - * {@link #nameProperty(String)} method with a mainAlias null. - */ - public EntityQueryProperty() { - } - - /** - * Constructor with mainAlias. - * - * @param mainAlias of the entity corresponding to this EntityQueryProperty - */ - public EntityQueryProperty(String mainAlias) { - setMainAlias(mainAlias); - } - - /** - * Constructor with mainAlias and entityClass. - * - * @param entityClass class of the entity corresponding to this - * EntityQueryProperty - * @param mainAlias alias of the entity corresponding to this - * EntityQueryProperty - */ - public EntityQueryProperty(Class<?> entityClass, - String mainAlias) { - this(mainAlias); - setEntityClass(entityClass); - } - - /** - * Setter for mainAlias. - * - * @param mainAlias of the entity corresponding to this EntityQueryProperty - */ - public void setMainAlias(String mainAlias) { - this.mainAlias = mainAlias; - } - - /** - * Setter for propertyJoin. - * - * @param propertyName name of the property used for join - * @see #namePropertyJoin() - */ - public void setPropertyJoin(String propertyName) { - this.propertyJoin = propertyName; - } - - /** - * Setter for entityClass. - * - * @param entityClass class of the entity corresponding to this - * EntityQueryProperty - */ - public void setEntityClass(Class<?> entityClass) { - this.entityClass = entityClass; - } - - /** - * Name the entity as a property for a TopiaQuery. Careful, this name can be - * null if no mainAlias is properly set. - * - * @return the entity name to use in a TopiaQuery - */ - public String name() { - return mainAlias; - } - - /** - * Name a property from the Entity for a TopiaQuery. No matter if the - * mainAlias is null or not, the property will be correctly named. - * - * @param propertyName to named in the TopiaQuery - * @return the property name to use in a TopiaQuery - */ - public String nameProperty(String propertyName) { - return TopiaQuery.getProperty(mainAlias, propertyName); - } - - /** - * Name the property Id (TOPIA_ID) of the entity. - * - * @return the property name to use in a TopiaQuery - */ - public String namePropertyId() { - return nameProperty(TopiaEntity.TOPIA_ID); - } - - /** - * Name the property CreateDate (TOPIA_CREATE_DATE) of the entity. - * - * @return the property name to use in a TopiaQuery - */ - public String namePropertyCreateDate() { - return nameProperty(TopiaEntity.TOPIA_CREATE_DATE); - } - - /** - * Name the property join. The propertyJoin attribute need to be set to - * avoid NullPointerException. - * - * @return the property name to use in a TopiaQuery - */ - public String namePropertyJoin() { - if (propertyJoin == null) { - throw new NullPointerException("propertyJoin is not set"); - } - return nameProperty(propertyJoin); - } - - public String namePropertyForJoin(String collectionProperty, - EntityQueryProperty elementProperty) { - return nameProperty(collectionProperty) + " as " + elementProperty.name(); - } - - /** - * Get the entityClass associated with this EntityQueryProperty. Can be - * useful in some case, to create other query for exemple or to use it in - * {@link TopiaQuery#addFrom(Class)} method. The entityClass need to be set - * before calling this method to avoid NullPointerException. - * - * @return the entity class corresponding to this EntityQueryProperty. - */ - public Class<?> getEntityClass() { - if (entityClass == null) { - throw new NullPointerException("entitClass is not set"); - } - return entityClass; - } - - /** - * Instanciate a new {@link TopiaQuery} based on this EntityQueryProperty. - * The entityClass need to be set although the TopiaQuery can't be - * instantiate. - * - * @return a new TopiaQuery with the main entity as the EntityQueryProperty - * provides it. - */ - public TopiaQuery newQuery() { - return new TopiaQuery((Class<? extends TopiaEntity>)getEntityClass(), name()); - } - - /** - * Simply the main name (mainAlias) of the EntityQueryProperty. - * - * @return the entity name associated to this EntityQueryProperty - */ - @Override - public String toString() { - return name(); - } -} Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -4,6 +4,7 @@ import org.chorem.pollen.service.ServiceUser; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.util.ApplicationConfig; @@ -123,4 +124,6 @@ */ void closeTransaction(TopiaContext transaction); + public EntityFilter getNewFilter(); + } //PollenContext Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -13,6 +13,8 @@ import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaContextFactory; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.EntityFilter; +import org.nuiton.topia.framework.TopiaFilter; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.ArgumentsParserException; import static org.nuiton.i18n.I18n._; @@ -116,7 +118,7 @@ // Set context in PollenProperty enum to use easily method // getValue() on PollenProperty PollenProperty.setContext(this); - PollenQueryHelper.setContext(this); + PollenUtils.setContext(this); createSuperAdmin(serviceUser); // @@ -382,4 +384,9 @@ return null; } + @Override + public EntityFilter getNewFilter() { + return new TopiaFilter(); + } + } Added: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java (rev 0) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -0,0 +1,23 @@ +package org.chorem.pollen; + +/** + * Created: 3 juin 2010 + * + * @author fdesbois <fdesbois@codelutin.com> + * @version $Id$ + */ +public class PollenQueryAlias { + + public static final String POLL = "P"; + + public static final String POLL_PARTICIPANT = "A"; + + public static final String POLL_LIST = "PL"; + + public static final String FAVORITE_PARTICIPANT = "FP"; + + public static final String FAVORITE_LIST = "FL"; + + public static final String COMMENT = "C"; + +} Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,62 +0,0 @@ -package org.chorem.pollen; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; -import org.chorem.pollen.entity.PollAccount; -import org.chorem.pollen.entity.Vote; -import org.nuiton.topia.framework.TopiaQuery; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.TopiaEntity; - -import java.util.Date; - -/** - * Created: 21 mai 2010 - * - * @author fdesbois <fdesbois@codelutin.com> - * @version $Id$ - */ -public class PollenQueryHelper { - - public static final String ALIAS_POLL = "P"; - - public static final String ALIAS_POLL_PARTICIPANT = "A"; - - public static final String ALIAS_POLL_LIST = "PL"; - - public static final String ALIAS_FAVORITE_PARTICIPANT = "FP"; - - public static final String ALIAS_FAVORITE_LIST = "FL"; - - public static final String PROPERTY_CHOICE_VOTE = - TopiaQuery.getProperty(PollAccount.PROPERTY_CHOICE_VOTE, - Vote.PROPERTY_CHOICE); - - private static final Log log = LogFactory.getLog(PollenQueryHelper.class); - - private static PollenContext context; - - public static void setContext(PollenContext context) { - PollenQueryHelper.context = context; - } - - public static Date getCurrentDate() { - return context.getCurrentDate(); - } - - public static TopiaQuery createQuery(Class<?> entityClass, String alias) { - return new TopiaQuery((Class<? extends TopiaEntity>)entityClass, alias); - } - - public static TopiaQuery createQueryFiltered(TopiaDAO dao, - EntityFilter filter) { - - TopiaQuery query = dao.createQuery(); - - ((TopiaFilter)filter).applyOnQuery(query); - - return query; - } -} Copied: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java (from rev 3028, trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java) =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java (rev 0) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -0,0 +1,28 @@ +package org.chorem.pollen; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.chorem.pollen.entity.PollAccount; +import org.chorem.pollen.entity.Vote; +import org.nuiton.topia.framework.TopiaQuery; + +import java.util.Date; + +/** + * Created: 21 mai 2010 + * + * @author fdesbois <fdesbois@codelutin.com> + * @version $Id$ + */ +public class PollenUtils { + + private static PollenContext context; + + public static void setContext(PollenContext context) { + PollenUtils.context = context; + } + + public static Date getCurrentDate() { + return context.getCurrentDate(); + } +} Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,126 +0,0 @@ -package org.chorem.pollen.bean; - -import org.apache.commons.lang.StringUtils; -import org.nuiton.topia.TopiaNotFoundException; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaId; - -import java.beans.PropertyChangeListener; - -/** - * Created: 3 juin 2010 - * - * @author fdesbois <fdesbois@codelutin.com> - * @version $Id$ - */ -public interface EntityFilter { - - public static final String PROPERTY_START_INDEX = "startIndex"; - - public static final String PROPERTY_END_INDEX = "endIndex"; - - public static final String PROPERTY_ORDER_BY = "orderBy"; - - public static final String PROPERTY_REFERENCE_ID = "referenceId"; - - public static final String PROPERTY_REFERENCE_PROPERTY = "referenceProperty"; - - /** - * Get the value of startIndex - * - * @return the value of startIndex - */ - public Integer getStartIndex(); - - /** - * Set the value of startIndex - * - * @param startIndex new value of startIndex - */ - public void setStartIndex(Integer startIndex); - - /** - * Get the value of orderBy - * - * @return the value of orderBy - */ - public String getOrderBy(); - - /** - * Set the value of orderBy - * - * @param orderBy new value of orderBy - */ - public void setOrderBy(String orderBy); - - /** - * Get the value of endIndex - * - * @return the value of endIndex - */ - public Integer getEndIndex(); - - /** - * Set the value of endIndex - * - * @param endIndex new value of endIndex - */ - public void setEndIndex(Integer endIndex); - - /** - * Get the value of referenceId - * - * @return the value of referenceId - */ - public String getReferenceId(); - - /** - * Set the value of referenceId - * - * @param referenceId - */ - public void setReferenceId(String referenceId); - - /** - * Set the value of referenceId from {@code entity} - * - * @param entity - */ - public void setReference(Object entity) throws IllegalArgumentException; - - /** - * Used to check if the filter contains a reference. - * - * @return true if the filter contains a reference - */ - public boolean hasReference(); - - /** - * Get the value of referenceProperty - * - * @return the value of referenceProperty - */ - public String getReferenceProperty(); - - /** - * Set the value of referenceProperty - * - * @param referenceProperty - */ - public void setReferenceProperty(String referenceProperty); - - /** - * Add PropertyChangeListener. - * - * @param listener - */ - public void addPropertyChangeListener(PropertyChangeListener listener); - - /** - * Remove PropertyChangeListener. - * - * @param listener - */ - public void removePropertyChangeListener(PropertyChangeListener listener); - -} Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,291 +0,0 @@ -package org.chorem.pollen.bean; - -import org.apache.commons.lang.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaNotFoundException; -import org.nuiton.topia.framework.TopiaQuery; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaId; - -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.util.ArrayList; -import java.util.List; - -/** - * Filter - * <p/> - * Created: 23 avr. 2010 - * - * @author fdesbois - * @since 2.0 - */ -public class TopiaFilter implements EntityFilter { - - private static final Log log = LogFactory.getLog(TopiaFilter.class); - - protected Integer startIndex; - - protected Integer endIndex; - - protected String orderBy; - - protected String referenceId; - - protected String referenceProperty; - - private PropertyChangeSupport propertyChangeSupport = - new PropertyChangeSupport(this); - - @Override - public Integer getStartIndex() { - return startIndex; - } - - @Override - public void setStartIndex(Integer startIndex) { - Integer oldStartIndex = this.startIndex; - this.startIndex = startIndex; - propertyChangeSupport.firePropertyChange(PROPERTY_START_INDEX, - oldStartIndex, startIndex); - } - - @Override - public String getOrderBy() { - return orderBy; - } - - @Override - public void setOrderBy(String orderBy) { - String oldOrderBy = this.orderBy; - this.orderBy = orderBy; - propertyChangeSupport.firePropertyChange(PROPERTY_ORDER_BY, - oldOrderBy, orderBy); - } - - @Override - public Integer getEndIndex() { - return endIndex; - } - - @Override - public void setEndIndex(Integer endIndex) { - Integer oldEndIndex = this.endIndex; - this.endIndex = endIndex; - propertyChangeSupport.firePropertyChange(PROPERTY_END_INDEX, - oldEndIndex, endIndex); - } - - @Override - public String getReferenceId() { - return referenceId; - } - - @Override - public void setReferenceId(String referenceId) { - String oldReferenceId = this.referenceId; - this.referenceId = referenceId; - propertyChangeSupport.firePropertyChange(PROPERTY_REFERENCE_ID, - oldReferenceId, referenceId); - } - - @Override - public void setReference(Object entity) throws IllegalArgumentException { - - if (! (entity instanceof TopiaEntity)) { - throw new IllegalArgumentException("Can't set reference of type '" + - entity.getClass().getName() + "' need a TopiaEntity"); - } - - setReferenceId(((TopiaEntity)entity).getTopiaId()); - } - - @Override - public boolean hasReference() { - return StringUtils.isNotEmpty(referenceId); - } - - @Override - public String getReferenceProperty() { - return referenceProperty; - } - - @Override - public void setReferenceProperty(String referenceProperty) { - String oldReferenceProperty = this.referenceProperty; - this.referenceProperty = referenceProperty; - propertyChangeSupport.firePropertyChange(PROPERTY_REFERENCE_PROPERTY, - oldReferenceProperty, referenceProperty); - } - - @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(listener); - } - - @Override - public void removePropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(listener); - } - - /** - * Test if the {@code entityClass} is corresponding to the current reference - * in the filter. Will return false if no reference is set in the filter. - * - * @param entityClass Class reference to test - * @return true if the classReference is corresponding, false otherwise - * @see #checkReference(Class, boolean) - */ - public boolean isClassReference(Class<?> entityClass) { - - boolean result = false; - - if (hasReference()) { - try { - Class<?> referenceClass = TopiaId.getClassName(referenceId); - if (referenceClass.isAssignableFrom(entityClass)) { - result = true; - } - } catch (TopiaNotFoundException eee) { - if (log.isWarnEnabled()) { - log.warn("ReferenceId '" + referenceId + "' is not a" + - " compatible topiaId : " + eee.getMessage()); - } - } - } - return result; - } - - /** - * Use to check if {@code reference} class is supported by the current - * filter reference. The reference can be not {@code mandatory}. Exceptions - * are thrown if the check failed. If you prefer to have a boolean instead - * of exceptions, you can use {@link #isClassReference(Class)}. - * - * @param reference Class reference to check - * @param mandatory If the existence of the reference is mandatory - * @throws IllegalArgumentException for errors on check - * @see #hasReference() - * @see #isClassReference(Class) - */ - public void checkReference(Class<?> reference, boolean mandatory) - throws IllegalArgumentException { - - if (log.isTraceEnabled()) { - log.trace("referenceClass to check : " + reference.getName()); - log.trace("mandatory : " + mandatory); - log.trace("filter hasReference : " + hasReference()); - log.trace("filter isClassReference : " + isClassReference(reference)); - } - - if (mandatory && !hasReference()) { - throw new IllegalArgumentException("The filter reference" + - " of type '" + reference.getSimpleName() + "' is mandatory !"); - } - - if (hasReference() && - !isClassReference(reference)) { - throw new IllegalArgumentException("Reference filtered need to be" + - " a '" + reference.getSimpleName() + "' (referenceId = " + - referenceId + ")"); - } - - } - - /** - * Prepare a {@code query} with this filter that contains limit indexes, - * orderBy condition and referenceId if needed. The referenceProperty is - * necessary to use the referenceId of the {@code filter}. The filter will - * be applied on the main entity in the query (using the mainAlias if - * necessary). - * <p/> - * Note : the default orderBy is the topiaCreateDate ordered desc (the most - * recent in first) - * - * @param query TopiaQuery to prepare - * @see #applyOnQuery(TopiaQuery, String) - * @throws IllegalArgumentException if referenceId is defined but no - * referenceProperty was set - */ - public void applyOnQuery(TopiaQuery query) - throws IllegalArgumentException { - applyOnQuery(query, null); - } - - /** - * Prepare a {@code query} with this filter that contains limit indexes, - * orderBy condition and referenceId if needed. In some case it's necessary - * to specify explicitely the {@code propertyToFilter} in complex queries. - * The referenceProperty need to be specifie in {@code filter} to have a - * correspondance between the referenceId and it's property in the query. By - * default, the {@code propertyToFilter} is the mainAlias of the query. - * <p/> - * Note : the default orderBy is the topiaCreateDate ordered desc (the most - * recent in first) - * - * @param query TopiaQuery to prepare - * @param propertyToFilter Explicit property to filter - * @throws IllegalArgumentException if referenceId is defined but no - * referenceProperty was set - */ - public void applyOnQuery(TopiaQuery query, - String propertyToFilter) - throws IllegalArgumentException { - - if (propertyToFilter == null) { - propertyToFilter = query.getMainAlias(); - } - - if (log.isDebugEnabled()) { - log.debug("Filter added to the query : " + - "startIndex = " + startIndex + - " _ endIndex = " + endIndex + - " _ orderBy = " + orderBy + - " _ referenceId = " + referenceId); - } - - // Add limits. Only startIndex do nothing. - // startIndex + endIndex provides the limit - if (startIndex != null && endIndex != null) { - query.setLimit(startIndex, endIndex); - - // endIndex only provides the maxResults wanted - } else if (endIndex != null) { - query.setMaxResults(endIndex); - } - - // Add order to the main entity in the query, splitted by comma - if (orderBy != null) { - List<String> order = new ArrayList<String>(); - for (String elmt : orderBy.split(",")) { - String property = - TopiaQuery.getProperty(propertyToFilter, elmt.trim()); - order.add(property); - } - query.addOrder(order.toArray(new String[order.size()])); - - // Default order by creation date - } else { - query.addOrderDesc(getPropertyCreateDate(propertyToFilter)); - } - - if (hasReference()) { - if (referenceProperty == null) { - throw new IllegalArgumentException("Reference property need" + - " to be defined in filter to use referenceId = " + - referenceId); - } - query.addEquals(getPropertyId(referenceProperty), referenceId); - } - } - - protected static String getPropertyId(String alias) { - return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_ID); - } - - protected static String getPropertyCreateDate(String alias) { - return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_CREATE_DATE); - } - -} Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,8 +1,7 @@ package org.chorem.pollen.entity; -import org.chorem.pollen.PollenQueryHelper; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; +import org.chorem.pollen.PollenQueryAlias; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; /** @@ -16,26 +15,27 @@ extends FavoriteParticipantDAOAbstract<E> { @Override - public TopiaQuery createQueryFindAllByFavoriteList(EntityFilter input) { + public TopiaQuery createQueryFindAllByFavoriteList(EntityFilter filter) { - TopiaFilter filter = (TopiaFilter)input; - filter.checkReference(FavoriteList.class, true); - String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT; - String listAlias = PollenQueryHelper.ALIAS_POLL_LIST; + // ------------------------- PROPERTIES ----------------------------- // + + String participantAlias = PollenQueryAlias.POLL_PARTICIPANT; + String listAlias = PollenQueryAlias.POLL_LIST; String listParticipantProperty = TopiaQuery.getProperty(listAlias, FavoriteList.PROPERTY_FAVORITE_PARTICIPANT); - TopiaQuery query = PollenQueryHelper. - createQuery(FavoriteList.class, listAlias). + filter.setReferenceProperty(listAlias); + + // ----------------------- QUERY ------------------------------------ // + + TopiaQuery query = context.createQuery(FavoriteList.class, listAlias). setSelect(participantAlias). - addJoin(listParticipantProperty, participantAlias, false); + addJoin(listParticipantProperty, participantAlias, false). + addFilter(filter, participantAlias); - filter.setReferenceProperty(listAlias); - filter.applyOnQuery(query, participantAlias); - return query; } } Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,8 +1,7 @@ package org.chorem.pollen.entity; -import org.chorem.pollen.PollenQueryHelper; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; +import org.chorem.pollen.PollenQueryAlias; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; /** @@ -14,47 +13,49 @@ public class PollAccountDAOImpl<E extends PollAccount> extends PollAccountDAOAbstract<E> { @Override - public TopiaQuery createQueryFindAllByPoll(EntityFilter input) { + public TopiaQuery createQueryFindAllByPoll(EntityFilter filter) { - TopiaFilter filter = (TopiaFilter)input; - filter.checkReference(Poll.class, true); - String pollAlias = PollenQueryHelper.ALIAS_POLL; + // ------------------------- PROPERTIES ----------------------------- // + + String pollAlias = PollenQueryAlias.POLL; String pollAccountProperty = TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT); - String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT; + String participantAlias = PollenQueryAlias.POLL_PARTICIPANT; String participantVoteDateProperty = TopiaQuery.getProperty(participantAlias, PollAccount.PROPERTY_VOTE_DATE); + filter.setReferenceProperty(pollAlias); + + // ----------------------- QUERY ------------------------------------ // + // Will return lists in case of GROUP poll - TopiaQuery query = PollenQueryHelper.createQuery(Poll.class, pollAlias). + TopiaQuery query = context.createQuery(Poll.class, pollAlias). setSelect(participantAlias). addJoin(pollAccountProperty, participantAlias, false). - addNotNull(participantVoteDateProperty); + addNotNull(participantVoteDateProperty). + addFilter(filter, participantAlias); - filter.setReferenceProperty(pollAlias); - filter.applyOnQuery(query, participantAlias); - return query; } @Override public TopiaQuery createQueryFindAllParticipantsByPoll(Poll poll) { - String pollAlias = PollenQueryHelper.ALIAS_POLL; + String pollAlias = PollenQueryAlias.POLL; String pollAccountProperty = TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT); - String listAlias = PollenQueryHelper.ALIAS_POLL_LIST; + String listAlias = PollenQueryAlias.POLL_LIST; String listChildProperty = TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD); - String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT; + String participantAlias = PollenQueryAlias.POLL_PARTICIPANT; - TopiaQuery query = new TopiaQuery(Poll.class, pollAlias). + TopiaQuery query = context.createQuery(Poll.class, pollAlias). setSelect(participantAlias). addEquals(pollAlias, poll); Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,8 +1,7 @@ package org.chorem.pollen.entity; -import org.chorem.pollen.PollenQueryHelper; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; +import org.chorem.pollen.PollenQueryAlias; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; /** @@ -14,36 +13,36 @@ public class PollDAOImpl<E extends Poll> extends PollDAOAbstract<E> { @Override - public TopiaQuery createQueryFindAllByUser(EntityFilter input) + public TopiaQuery createQueryFindAllByUser(EntityFilter filter) throws IllegalArgumentException { - TopiaFilter filter = (TopiaFilter)input; - // Filter reference is not always necessary but only used on UserAccount filter.checkReference(UserAccount.class, false); - String pollAlias = PollenQueryHelper.ALIAS_POLL; + // ------------------------- PROPERTIES ----------------------------- // + + String pollAlias = PollenQueryAlias.POLL; String pollCreatorProperty = TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_CREATOR); String pollAccountProperty = TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT); // Property names for participant - String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT; + String participantAlias = PollenQueryAlias.POLL_PARTICIPANT; String participantUserProperty = TopiaQuery.getProperty(participantAlias, PollAccount.PROPERTY_USER_ACCOUNT); // Property names for participant list - String listAlias = PollenQueryHelper.ALIAS_POLL_LIST; + String listAlias = PollenQueryAlias.POLL_LIST; String listChildProperty = TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD); - TopiaQuery query = createQuery(pollAlias). - addDistinct(). - addLeftJoin(pollAccountProperty, listAlias, false). - addFrom(PollAccount.class, participantAlias); + // participantUser is the reference to filter on if necessary + filter.setReferenceProperty(participantUserProperty); + // ----------------------- QUERY ------------------------------------ // + StringBuilder orBuilder = new StringBuilder(participantAlias). // IN poll.pollAccount (NORMAL) append(" IN (").append(listAlias).append(')'). @@ -54,12 +53,13 @@ // = poll.creator (CREATOR) append(" = ").append(pollCreatorProperty); - query.addWhere(orBuilder.toString()); + TopiaQuery query = createQuery(pollAlias). + addDistinct(). + addLeftJoin(pollAccountProperty, listAlias, false). + addFrom(PollAccount.class, participantAlias). + addWhere(orBuilder.toString()). + addFilter(filter); - // participantUser is the reference to filter on if necessary - filter.setReferenceProperty(participantUserProperty); - filter.applyOnQuery(query); - return query; } } Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,7 +1,7 @@ package org.chorem.pollen.entity; -import org.chorem.pollen.PollenQueryHelper; +import org.chorem.pollen.PollenUtils; import org.chorem.pollen.common.ChoiceType; import org.chorem.pollen.common.PollType; import org.chorem.pollen.common.VoteCountingType; @@ -67,13 +67,13 @@ @Override public boolean isStarted() { - Date now = PollenQueryHelper.getCurrentDate(); + Date now = PollenUtils.getCurrentDate(); return getBeginDate() == null || getBeginDate().before(now); } @Override public boolean isFinished() { - Date now = PollenQueryHelper.getCurrentDate(); + Date now = PollenUtils.getCurrentDate(); return getEndDate() != null && getEndDate().before(now); } Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -8,8 +8,6 @@ import org.chorem.pollen.PollenContext; import org.chorem.pollen.PollenDAOHelper; import org.chorem.pollen.PollenException; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.entity.FavoriteList; import org.chorem.pollen.entity.FavoriteListDAO; import org.chorem.pollen.entity.FavoriteListImpl; @@ -19,6 +17,7 @@ import org.chorem.pollen.entity.UserAccount; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.framework.TopiaQuery.Op; import org.nuiton.topia.persistence.TopiaEntity; @@ -247,7 +246,7 @@ FavoriteParticipantDAO dao = PollenDAOHelper.getFavoriteParticipantDAO(transaction); - TopiaQuery query = dao.createQueryFindAllByFavoriteList((TopiaFilter)filter); + TopiaQuery query = dao.createQueryFindAllByFavoriteList(filter); if (log.isDebugEnabled()) { log.debug("Query : " + query); @@ -268,7 +267,7 @@ FavoriteParticipantDAO dao = PollenDAOHelper.getFavoriteParticipantDAO(transaction); - TopiaQuery query = dao.createQueryFindAllByFavoriteList((TopiaFilter)filter); + TopiaQuery query = dao.createQueryFindAllByFavoriteList(filter); int result = dao.countByQuery(query); return result; Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -8,9 +8,7 @@ import org.chorem.pollen.PollenContext; import org.chorem.pollen.PollenDAOHelper; import org.chorem.pollen.PollenException; -import org.chorem.pollen.PollenQueryHelper; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; +import org.chorem.pollen.PollenQueryAlias; import org.chorem.pollen.bean.UserPoll; import org.chorem.pollen.bean.UserPollImpl; import org.chorem.pollen.common.ChoiceType; @@ -18,7 +16,10 @@ import org.chorem.pollen.common.VoteCountingType; import org.chorem.pollen.entity.Choice; import org.chorem.pollen.entity.ChoiceDAO; +import org.chorem.pollen.entity.ChoiceImpl; import org.chorem.pollen.entity.Comment; +import org.chorem.pollen.entity.CommentDAO; +import org.chorem.pollen.entity.CommentImpl; import org.chorem.pollen.entity.Participant; import org.chorem.pollen.entity.ParticipantList; import org.chorem.pollen.entity.Poll; @@ -30,6 +31,7 @@ import org.chorem.pollen.entity.UserAccount; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; import java.util.ArrayList; @@ -101,6 +103,7 @@ @Override protected Poll executeGetNewPoll(Poll poll) { throw new UnsupportedOperationException("Not supported yet."); + // maybe the solution is simply removed the uid and topiaId } @Override @@ -273,16 +276,60 @@ @Override protected void executeDeletePoll(TopiaContext transaction, Poll poll) throws TopiaException { - throw new UnsupportedOperationException("Not supported yet."); + + PollDAO dao = PollenDAOHelper.getPollDAO(transaction); + + dao.delete(poll); + + transaction.commitTransaction(); } @Override - protected void executeDeleteChoice(TopiaContext transaction, Choice choice) + protected Choice executeGetNewChoice(Poll poll) { + Choice newChoice = new ChoiceImpl(); + newChoice.setChoiceType(poll.getChoiceType()); + return newChoice; + } + + @Override + protected Choice executeCreateChoice(TopiaContext transaction, + Poll poll, Choice choice) throws TopiaException { - throw new UnsupportedOperationException("Not supported yet."); + + ChoiceDAO dao = PollenDAOHelper.getChoiceDAO(transaction); + + Choice choiceCreated = dao.create( + Choice.PROPERTY_NAME, choice.getName(), + Choice.PROPERTY_DESCRIPTION, choice.getDescription(), + Choice.PROPERTY_TYPE, choice.getChoiceType() + ); + + PollDAO pollDAO = PollenDAOHelper.getPollDAO(transaction); + + Poll pollToUpdate = pollDAO.findByTopiaId(poll.getTopiaId()); + + pollToUpdate.addChoice(choiceCreated); + + pollDAO.update(pollToUpdate); + + transaction.commitTransaction(); + + return choiceCreated; } @Override + protected boolean executeDeleteChoice(TopiaContext transaction, Choice choice) + throws TopiaException { + ChoiceDAO dao = PollenDAOHelper.getChoiceDAO(transaction); + + dao.delete(choice); + + transaction.commitTransaction(); + + return true; + } + + @Override protected List<Poll> executeGetRunningPolls(TopiaContext transaction) throws TopiaException { @@ -313,7 +360,7 @@ // Filter can be apply on userAccount as reference TopiaQuery query = dao.createQueryFindAllByUser(filter); - query.addSelect(PollenQueryHelper.ALIAS_POLL_PARTICIPANT); + query.addSelect(PollenQueryAlias.POLL_PARTICIPANT); log.debug("Query : " + query); @@ -329,7 +376,7 @@ PollDAO dao = PollenDAOHelper.getPollDAO(transaction); - TopiaFilter filter = new TopiaFilter(); + EntityFilter filter = context.getNewFilter(); filter.setReference(user); TopiaQuery query = dao.createQueryFindAllByUser(filter); @@ -386,10 +433,91 @@ protected List<Comment> executeGetComments(TopiaContext transaction, EntityFilter filter) throws TopiaException { - throw new UnsupportedOperationException("Not supported yet."); + + CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction); + + String pollAlias = PollenQueryAlias.POLL; + String pollCommentProperty = + TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_COMMENT); + String commentAlias = PollenQueryAlias.COMMENT; + + filter.checkReference(Poll.class, true); + filter.setReferenceProperty(pollAlias); + + TopiaQuery query = transaction.createQuery(Poll.class, pollAlias). + setSelect(commentAlias). + addJoin(pollCommentProperty, commentAlias, false). + addFilter(filter); + + List<Comment> comments = dao.findAllByQuery(query); + + return comments; } @Override + protected int executeGetNbComments(TopiaContext transaction, + Poll poll) + throws TopiaException { + + PollDAO dao = PollenDAOHelper.getPollDAO(transaction); + + Poll pollFound = dao.findByTopiaId(poll.getTopiaId()); + + int count = pollFound.sizeComment(); + + return count; + } + + @Override + protected Comment executeCreateComment(TopiaContext transaction, + Poll poll, Comment comment) + throws TopiaException { + + CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction); + + Comment commentCreated = dao.create( + Comment.PROPERTY_AUTHOR, comment.getAuthor(), + Comment.PROPERTY_COMMENT_DATE, context.getCurrentDate(), + Comment.PROPERTY_TEXT, comment.getText() + ); + + PollDAO pollDAO = PollenDAOHelper.getPollDAO(transaction); + + Poll pollToUpdate = pollDAO.findByTopiaId(poll.getTopiaId()); + + pollToUpdate.addComment(commentCreated); + + pollDAO.update(pollToUpdate); + + transaction.commitTransaction(); + + return commentCreated; + } + + @Override + protected boolean executeDeleteComment(TopiaContext transaction, + Comment comment) + throws TopiaException { + + CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction); + + dao.delete(comment); + + transaction.commitTransaction(); + + return true; + } + + @Override + protected Comment executeGetNewComment(PollAccount account) { + Comment newComment = new CommentImpl(); + if (account != null) { + newComment.setAuthor(account.getName()); + } + return newComment; + } + + @Override protected ParticipantList executeGetNewPollList() { PollAccount list = new PollAccountImpl(); list.setList(true); Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -12,14 +12,12 @@ import org.chorem.pollen.PollenContext; import org.chorem.pollen.PollenDAOHelper; import org.chorem.pollen.PollenException; -import org.chorem.pollen.PollenQueryHelper; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.entity.UserAccount; import org.chorem.pollen.entity.UserAccountDAO; import org.chorem.pollen.entity.UserAccountImpl; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.framework.TopiaQuery.Op; import org.nuiton.topia.persistence.util.TopiaEntityBinder; @@ -261,7 +259,7 @@ UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction); - TopiaQuery query = PollenQueryHelper.createQueryFiltered(dao, filter); + TopiaQuery query = dao.createQuery().addFilter(filter); Map<String, UserAccount> results = dao.findAllMappedByQuery( query, UserAccount.PROPERTY_LOGIN, String.class); @@ -269,14 +267,12 @@ } @Override - protected int executeGetNbUsers(TopiaContext transaction, - EntityFilter filter) throws TopiaException { + protected int executeGetNbUsers(TopiaContext transaction) throws TopiaException { UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction); - TopiaQuery query = PollenQueryHelper.createQueryFiltered(dao, filter); + int result = dao.count(); - int result = dao.countByQuery(query); return result; } Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -8,9 +8,7 @@ import org.chorem.pollen.PollenContext; import org.chorem.pollen.PollenDAOHelper; import org.chorem.pollen.PollenException; -import org.chorem.pollen.PollenQueryHelper; -import org.chorem.pollen.bean.EntityFilter; -import org.chorem.pollen.bean.TopiaFilter; +import org.chorem.pollen.PollenQueryAlias; import org.chorem.pollen.entity.Choice; import org.chorem.pollen.entity.Poll; import org.chorem.pollen.entity.PollAccount; @@ -23,6 +21,7 @@ import org.chorem.pollen.entity.VoteImpl; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.util.TopiaEntityBinder; @@ -122,10 +121,10 @@ TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll); - String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT; + String participantAlias = PollenQueryAlias.POLL_PARTICIPANT; String pollCreatorProperty = - TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL, + TopiaQuery.getProperty(PollenQueryAlias.POLL, Poll.PROPERTY_CREATOR); query.addEquals(participantAlias, participant). @@ -169,14 +168,14 @@ PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction); - TopiaQuery query = dao.createQueryFindAllByPoll((TopiaFilter)filter); - String participantChoiceProperty = - TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL_PARTICIPANT, + TopiaQuery.getProperty(PollenQueryAlias.POLL_PARTICIPANT, PollAccount.PROPERTY_CHOICE_VOTE, Vote.PROPERTY_CHOICE); - query.addDistinct().addFetch(participantChoiceProperty); + TopiaQuery query = dao.createQueryFindAllByPoll(filter). + addDistinct(). + addFetch(participantChoiceProperty); List<PollAccount> results = dao.findAllByQuery(query); @@ -188,12 +187,14 @@ } @Override - protected int executeGetNbVotes(TopiaContext transaction, EntityFilter filter) + protected int executeGetNbVotes(TopiaContext transaction, Poll poll) throws TopiaException { PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction); - TopiaQuery query = dao.createQueryFindAllByPoll((TopiaFilter)filter); + EntityFilter filter = context.getNewFilter(); + filter.setReference(poll); + TopiaQuery query = dao.createQueryFindAllByPoll(filter); int result = dao.countByQuery(query); return result; @@ -215,19 +216,6 @@ dao.delete(participantToDelete); - // Next code has equivalent results -> remove the entity from the poll - // then delete it because of delete-orphan - -// PollDAO dao = PollenDAOHelper.getPollDAO(transaction); -// -// Poll pollToUpdate = dao.findByTopiaId(poll.getTopiaId()); -// -// // participant will be deleted because of composition on pollAccount -// // collection -// pollToUpdate.removePollAccount(participant); -// -// dao.update(pollToUpdate); - } else if (poll.getPollType().isRestrictedOrGroup()) { PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction); @@ -328,7 +316,7 @@ TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll); - String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT; + String participantAlias = PollenQueryAlias.POLL_PARTICIPANT; String participantNameProperty = TopiaQuery.getProperty(participantAlias, Modified: trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties =================================================================== --- trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2010-06-03 22:14:18 UTC (rev 3030) @@ -24,6 +24,7 @@ pollen.error.servicePoll.addComment= pollen.error.servicePoll.canAdminPoll= pollen.error.servicePoll.createChoice= +pollen.error.servicePoll.createComment= pollen.error.servicePoll.createPoll= pollen.error.servicePoll.createUpdateVote= pollen.error.servicePoll.delete= @@ -33,8 +34,11 @@ pollen.error.servicePoll.deleteVote= pollen.error.servicePoll.getAllPolls= pollen.error.servicePoll.getComments= +pollen.error.servicePoll.getNbComments= pollen.error.servicePoll.getNbPollsByUser= pollen.error.servicePoll.getNbTotalPolls= +pollen.error.servicePoll.getNewChoice= +pollen.error.servicePoll.getNewComment= pollen.error.servicePoll.getNewPoll= pollen.error.servicePoll.getNewPollList= pollen.error.servicePoll.getNewPollParticipant= Modified: trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties =================================================================== --- trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2010-06-03 22:14:18 UTC (rev 3030) @@ -24,6 +24,7 @@ pollen.error.servicePoll.addComment=Impossible d'ajouter un nouveau commentaire cr\u00E9\u00E9 par %1$s pour le sondage %2$s (%3$s) pollen.error.servicePoll.canAdminPoll= pollen.error.servicePoll.createChoice= +pollen.error.servicePoll.createComment= pollen.error.servicePoll.createPoll=Impossible d'enregistrer le sondage %1$s cr\u00E9\u00E9 par %2$s pollen.error.servicePoll.createUpdateVote= pollen.error.servicePoll.deleteChoice= @@ -32,8 +33,11 @@ pollen.error.servicePoll.deleteVote= pollen.error.servicePoll.getAllPolls= pollen.error.servicePoll.getComments= +pollen.error.servicePoll.getNbComments= pollen.error.servicePoll.getNbPollsByUser= pollen.error.servicePoll.getNbTotalPolls= +pollen.error.servicePoll.getNewChoice= +pollen.error.servicePoll.getNewComment= pollen.error.servicePoll.getNewPoll= pollen.error.servicePoll.getNewPollList= pollen.error.servicePoll.getNewPollParticipant= Modified: trunk/pollen-business/src/main/xmi/pollen.zargo =================================================================== (Binary files differ) Deleted: trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java =================================================================== --- trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -1,119 +0,0 @@ - -package org.chorem.pollen; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.chorem.pollen.bean.TopiaFilter; -import org.chorem.pollen.entity.UserAccount; -import org.junit.Assert; -import org.junit.Test; -import org.nuiton.topia.framework.TopiaQuery; -import org.nuiton.topia.persistence.TopiaEntity; - -/** - * - * @author fdesbois - */ -public class PollenUtilsTest { - - private static final Log log = - LogFactory.getLog(PollenUtilsTest.class); - - /** - * Test of prepareQuery method, of class Filter. - */ - @Test - public void testPrepareQueryForFilter() { - log.info("testPrepareQueryForFilter"); - - TopiaFilter filter = new TopiaFilter(); - filter.setStartIndex(1); - filter.setEndIndex(40); - filter.setOrderBy(UserAccount.PROPERTY_LOGIN); - -// TopiaQueryBuilder builder = new TopiaQueryBuilder(); -// builder.setQuery(new TopiaQuery(UserAccount.class)); - TopiaQuery query = new TopiaQuery(UserAccount.class); - filter.applyOnQuery(query); - - log.debug("Query : " + query); - - Assert.assertEquals(query.fullQuery(), - "FROM " + UserAccount.class.getName() + - " ORDER BY " + UserAccount.PROPERTY_LOGIN); - - filter.setOrderBy(null); - - query = new TopiaQuery(UserAccount.class); - filter.applyOnQuery(query); - - log.debug("Query : " + query); - - Assert.assertEquals(query.fullQuery(), - "FROM " + UserAccount.class.getName() + - " ORDER BY " + TopiaEntity.TOPIA_CREATE_DATE + " DESC"); - - } - -// @Test -// public void testCreateQueryFindElementsByCollection() throws IOException { -// -// //TopiaQueryBuilder builder = new TopiaQueryBuilder(); -// -// Filter filter = new Filter(); -// filter.setStartIndex(1); -// filter.setEndIndex(40); -// filter.setOrderBy(FavoriteParticipant.NAME); -// -// EntityQueryProperty participantPropertyProvider = -// PollenQueryHelper.getEntityQueryProperty(FavoriteParticipant.class, "P"); -// -// EntityQueryProperty listPropertyProvider = -// PollenQueryHelper.getEntityQueryProperty(FavoriteList.class, "L"); -// listPropertyProvider.setPropertyJoin(FavoriteList.FAVORITE_PARTICIPANT); -// -// log.info("test1 : orderBy FavoriteParticipant name"); -// TopiaQuery result = PollenQueryHelper.createQueryFindElementsByCollection( -// participantPropertyProvider, listPropertyProvider, filter); -// -// log.debug("Query : " + result); -// -// Assert.assertEquals(result.fullQuery(), -// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, " -// + FavoriteList.class.getName() + " L" + -// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT + -// ") ORDER BY P." + FavoriteParticipant.NAME); -// -// log.info("test2 : orderBy not set (default to topiaCreateDate desc)"); -// filter.setOrderBy(null); -// -// result = PollenQueryHelper.createQueryFindElementsByCollection( -// participantPropertyProvider, listPropertyProvider, filter); -// -// log.debug("Query : " + result); -// -// Assert.assertEquals(result.fullQuery(), -// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, " -// + FavoriteList.class.getName() + " L" + -// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT + -// ") ORDER BY P." + TopiaEntity.TOPIA_CREATE_DATE + " DESC"); -// -// log.info("test3 : orderBy name and email desc"); -// String orderBy = FavoriteParticipant.NAME + ", " + FavoriteParticipant.EMAIL + " desc"; -// filter.setOrderBy(orderBy); -// -// result = PollenQueryHelper.createQueryFindElementsByCollection( -// participantPropertyProvider, listPropertyProvider, filter); -// -// log.debug("Query : " + result); -// -// Assert.assertEquals(result.fullQuery(), -// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, " -// + FavoriteList.class.getName() + " L" + -// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT + -// ") ORDER BY P." + FavoriteParticipant.NAME + ", P." + -// FavoriteParticipant.EMAIL + " desc"); -// -// } - -} \ No newline at end of file Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java =================================================================== --- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -4,7 +4,6 @@ import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenBusinessException; import org.chorem.pollen.PollenDAOHelper; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.bean.UserPoll; import org.chorem.pollen.common.ChoiceType; import org.chorem.pollen.common.PollType; @@ -25,6 +24,7 @@ import org.junit.Test; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.EntityFilter; import java.util.ArrayList; import java.util.Collection; @@ -348,7 +348,7 @@ /** EXEC METHOD **/ - TopiaFilter filter = new TopiaFilter(); + EntityFilter filter = context.getNewFilter(); filter.setReference(user); List<UserPoll> polls = servicePoll.getPolls(filter); @@ -394,7 +394,7 @@ Poll pollFound = servicePoll.getPoll(poll.getUid(), Poll.PROPERTY_CHOICE); - TopiaFilter filter = new TopiaFilter(); + EntityFilter filter = context.getNewFilter(); filter.setReference(pollFound); List<PollAccount> accounts = getServiceVote().getVotes(filter); Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java =================================================================== --- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -4,7 +4,7 @@ import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenBusinessException; import org.chorem.pollen.PollenDAOHelper; -import org.chorem.pollen.PollenQueryHelper; +import org.chorem.pollen.PollenUtils; import org.chorem.pollen.common.ChoiceType; import org.chorem.pollen.common.VoteCountingType; import org.chorem.pollen.entity.Choice; @@ -22,13 +22,9 @@ import org.junit.Test; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaQuery; import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * Created: 27 mai 2010 @@ -148,8 +144,7 @@ // transaction.closeContext(); // } - PollAccount accountFound = loadEntity(accountSaved, - PollenQueryHelper.PROPERTY_CHOICE_VOTE); + PollAccount accountFound = loadEntity(accountSaved, PROPERTY_CHOICE_VOTE); Assert.assertNotNull(accountFound); Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate()); @@ -183,7 +178,7 @@ log.info("test 3 : update participant votes"); PollAccount participantExist = - loadEntity(participant, PollenQueryHelper.PROPERTY_CHOICE_VOTE); + loadEntity(participant, PROPERTY_CHOICE_VOTE); for (Vote vote : participantExist.getChoiceVote()) { // Update choice 1 with value 0 -> will be deleted @@ -200,8 +195,7 @@ accountSaved = serviceVote.saveVote(poll, participantExist); // Check - accountFound = loadEntity(accountSaved, - PollenQueryHelper.PROPERTY_CHOICE_VOTE); + accountFound = loadEntity(accountSaved, PROPERTY_CHOICE_VOTE); Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate()); Assert.assertEquals(2, accountFound.getChoiceVote().size()); @@ -239,7 +233,7 @@ PollAccount account = serviceVote.saveVote(pollCreated, participant); - account = loadEntity(account, PollenQueryHelper.PROPERTY_CHOICE_VOTE); + account = loadEntity(account, PROPERTY_CHOICE_VOTE); Poll poll = loadEntity(pollCreated); @@ -298,7 +292,7 @@ PollAccount account = serviceVote.saveVote(pollCreated, existingParticipant); - account = loadEntity(account, PollenQueryHelper.PROPERTY_CHOICE_VOTE); + account = loadEntity(account, PROPERTY_CHOICE_VOTE); Poll poll = loadEntity(pollCreated); Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java =================================================================== --- trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -61,6 +61,10 @@ @Ignore public abstract class AbstractServiceTest { + protected static final String PROPERTY_CHOICE_VOTE = + TopiaQuery.getProperty(PollAccount.PROPERTY_CHOICE_VOTE, + Vote.PROPERTY_CHOICE); + private static final Log log = LogFactory.getLog(AbstractServiceTest.class); protected PollenContext context; Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -9,13 +9,13 @@ import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.chorem.pollen.PollenBusinessException; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.entity.FavoriteList; import org.chorem.pollen.entity.FavoriteParticipant; import org.chorem.pollen.service.ServiceFavorite; import org.chorem.pollen.ui.data.EvenOdd; import org.chorem.pollen.ui.models.FavoriteParticipantDataSource; import org.chorem.pollen.ui.services.PollenManager; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.web.tapestry5.components.FeedBack; import org.slf4j.Logger; @@ -88,7 +88,7 @@ if (logger.isDebugEnabled()) { logger.debug("Create DATASOURCE"); } - TopiaFilter filter = new TopiaFilter(); + EntityFilter filter = manager.getNewFilter(); filter.setReference(source); participants = new FavoriteParticipantDataSource(serviceFavorite, filter); Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -2,9 +2,9 @@ import org.apache.tapestry5.grid.SortConstraint; import org.chorem.pollen.PollenException; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.entity.FavoriteParticipant; import org.chorem.pollen.service.ServiceFavorite; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.web.tapestry5.data.AbstractMappedGridDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,10 +30,10 @@ private ServiceFavorite service; - private TopiaFilter filter; + private EntityFilter filter; public FavoriteParticipantDataSource(ServiceFavorite service, - TopiaFilter filter) { + EntityFilter filter) { this.service = service; this.filter = filter; } Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -2,9 +2,9 @@ import org.apache.tapestry5.grid.SortConstraint; import org.chorem.pollen.PollenException; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.entity.UserAccount; import org.chorem.pollen.service.ServiceUser; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.web.tapestry5.data.AbstractMappedGridDataSource; import java.util.Map; @@ -21,9 +21,9 @@ private ServiceUser service; - private TopiaFilter filter; + private EntityFilter filter; - public UserAccountDataSource(ServiceUser service, TopiaFilter filter) { + public UserAccountDataSource(ServiceUser service, EntityFilter filter) { this.service = service; this.filter = filter; } @@ -40,7 +40,7 @@ @Override protected int count() throws PollenException { - return service.getNbUsers(filter); + return service.getNbUsers(); } @Override Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -31,7 +31,6 @@ import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.chorem.pollen.PollenBusinessException; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.bean.PollenEmail; import org.chorem.pollen.entity.UserAccount; import org.chorem.pollen.service.ServiceEmail; @@ -120,7 +119,7 @@ */ public UserAccountDataSource getAccounts() { if (accounts == null) { - accounts = new UserAccountDataSource(serviceUser, new TopiaFilter()); + accounts = new UserAccountDataSource(serviceUser, manager.getNewFilter()); } return accounts; } Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -39,7 +39,6 @@ import org.apache.tapestry5.ioc.annotations.Inject; import org.chorem.pollen.PollenBusinessException; import org.chorem.pollen.PollenProperty; -import org.chorem.pollen.bean.TopiaFilter; import org.chorem.pollen.bean.PollenEmail; import org.chorem.pollen.bean.PollenEmailImpl; import org.chorem.pollen.entity.Choice; @@ -61,6 +60,7 @@ import org.chorem.pollen.ui.services.PollenManager; import org.chorem.pollen.ui.services.ServiceImage; import org.chorem.pollen.ui.services.ServicePollUri; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.web.tapestry5.components.FeedBack; import org.slf4j.Logger; @@ -519,16 +519,14 @@ public int getNbVotes() throws PollenBusinessException { if (nbVotes == null) { - TopiaFilter filter = new TopiaFilter(); - filter.setReference(getPoll()); - nbVotes = serviceVote.getNbVotes(filter); + nbVotes = serviceVote.getNbVotes(getPoll()); } return nbVotes; } @Log - public TopiaFilter getVoteFilter() throws PollenBusinessException { - TopiaFilter filter = new TopiaFilter(); + public EntityFilter getVoteFilter() throws PollenBusinessException { + EntityFilter filter = manager.getNewFilter(); filter.setStartIndex(pager.getStartIndex()); filter.setEndIndex(pager.getEndIndex()); filter.setReference(getPoll()); Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java 2010-06-03 17:28:59 UTC (rev 3029) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java 2010-06-03 22:14:18 UTC (rev 3030) @@ -36,6 +36,7 @@ import org.chorem.pollen.PollenProperty; import org.chorem.pollen.service.ServiceUser; import org.chorem.pollen.ui.data.ErrorReport; +import org.nuiton.topia.framework.EntityFilter; import org.nuiton.util.ApplicationConfig; import org.slf4j.Logger; @@ -139,6 +140,10 @@ return context.createPollenUrlId(); } + public EntityFilter getNewFilter() { + return context.getNewFilter(); + } + /** * Retrieve an error message from business {@code error} exception. Will * used {@code messages} and {@code logger} services.