[hibernate-issues] [Hibernate-JIRA] Moved: (HHH-7284) ExcludeFalse Capability Query by Example Example

Sanne Grinovero (JIRA) noreply at atlassian.com
Mon Apr 30 06:45:48 EDT 2012


     [ https://hibernate.onjira.com/browse/HHH-7284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sanne Grinovero moved HSEARCH-1113 to HHH-7284:
-----------------------------------------------

          Component/s:     (was: engine)
                       query-criteria
    Affects Version/s:     (was: 4.1.0.Final)
             Workflow: Expanded Workflow  (was: Expanded Workflow with pull request)
                  Key: HHH-7284  (was: HSEARCH-1113)
              Project: Hibernate ORM  (was: Hibernate Search)

> ExcludeFalse Capability Query by Example Example
> ------------------------------------------------
>
>                 Key: HHH-7284
>                 URL: https://hibernate.onjira.com/browse/HHH-7284
>             Project: Hibernate ORM
>          Issue Type: Improvement
>          Components: query-criteria
>         Environment: all
>            Reporter: Uday Kari
>            Priority: Minor
>              Labels: search
>
> In web form development, checkboxes are mapped to booleans properties.  When using a form to conduct Query By Example, the results should exclude un-checked or false properties. I have already fixed this for my application, here is the code...you are welcome to use it.  
> /*
>  * Hibernate, Relational Persistence for Idiomatic Java
>  *
>  * Copyright (c) 2010, Red Hat Inc. or third-party contributors as
>  * indicated by the @author tags or express copyright attribution
>  * statements applied by the authors.  All third-party contributions are
>  * distributed under license by Red Hat Inc.
>  *
>  * This copyrighted material is made available to anyone wishing to use, modify,
>  * copy, or redistribute it subject to the terms and conditions of the GNU
>  * Lesser General Public License, as published by the Free Software Foundation.
>  *
>  * This program is distributed in the hope that it will be useful,
>  * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
>  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
>  * for more details.
>  *
>  * You should have received a copy of the GNU Lesser General Public License
>  * along with this distribution; if not, write to:
>  * Free Software Foundation, Inc.
>  * 51 Franklin Street, Fifth Floor
>  * Boston, MA  02110-1301  USA
>  */
> package org.hibernate.criterion;
> import java.io.Serializable;
> import java.util.ArrayList;
> import java.util.HashSet;
> import java.util.List;
> import java.util.Set;
> import org.hibernate.Criteria;
> import org.hibernate.EntityMode;
> import org.hibernate.HibernateException;
> import org.hibernate.engine.TypedValue;
> import org.hibernate.persister.entity.EntityPersister;
> import org.hibernate.type.CompositeType;
> import org.hibernate.type.Type;
> import org.hibernate.util.StringHelper;
> /**
>  * Support for query by example.
>  * <pre>
>  * List results = session.createCriteria(Parent.class)
>  *     .add( Example.create(parent).ignoreCase() )
>  *     .createCriteria("child")
>  *         .add( Example.create( parent.getChild() ) )
>  *     .list();
>  * </pre>
>  * "Examples" may be mixed and matched with "Expressions" in the same <tt>Criteria</tt>.
>  * @see org.hibernate.Criteria
>  * @author Gavin King
>  */
> public class Example implements Criterion {
> 	private final Object entity;
> 	private final Set excludedProperties = new HashSet();
> 	private PropertySelector selector;
> 	private boolean isLikeEnabled;
> 	private Character escapeCharacter;
> 	private boolean isIgnoreCaseEnabled;
> 	private MatchMode matchMode;
> 	/**
> 	 * A strategy for choosing property values for inclusion in the query
> 	 * criteria
> 	 */
> 	public static interface PropertySelector extends Serializable {
> 		public boolean include(Object propertyValue, String propertyName, Type type);
> 	}
> 	private static final PropertySelector NOT_NULL = new NotNullPropertySelector();
> 	private static final PropertySelector ALL = new AllPropertySelector();
> 	private static final PropertySelector NOT_NULL_OR_ZERO = new NotNullOrZeroPropertySelector();
> 	
> 	////////////////////////////////////////////////////////////
> 	//  Uday Edits 
> 	//
> 	private static final PropertySelector NOT_FALSE = new NotFalsePropertySelector();
> 	
> 	 static final class NotFalsePropertySelector implements PropertySelector 
> 	  {
> 	    public boolean include(Object object, String propertyName, Type type) 
> 	    {
> 	      if (object == null)
> 	      {
> 	        return false;
> 	      }
> 	      else if (object instanceof Boolean)
> 	      {
> 	        return ((Boolean) object).booleanValue();
> 	      }
> 	      else
> 	      {
> 	        return true;
> 	      }
> 	    }
> 	  }
> 	 /**
> 	   * Exclude false-valued properties
> 	   */
> 	  public Example excludeFalse() {
> 	    setPropertySelector(NOT_FALSE);
> 	    return this;
> 	  }
> 	 //
> 	 //  End 
> 	 /////////////////////////////////////////
> 	  
>  
> [...]

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list