From: <gca...@us...> - 2010-06-07 07:11:44
|
Revision: 2623 http://openutils.svn.sourceforge.net/openutils/?rev=2623&view=rev Author: gcatania Date: 2010-06-07 07:11:35 +0000 (Mon, 07 Jun 2010) Log Message: ----------- proposed fix to BSHD-2 (wip) Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java trunk/openutils-bshd5/src/test/resources/spring-tests.xml Added Paths: ----------- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/test/resources/log4j.xml Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2010-06-03 15:14:36 UTC (rev 2622) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2010-06-07 07:11:35 UTC (rev 2623) @@ -25,7 +25,7 @@ package it.openutils.dao.hibernate; -import it.openutils.hibernate.example.EnhancedExample; +import it.openutils.hibernate.example.ExampleTree; import it.openutils.hibernate.example.FilterMetadata; import java.io.Serializable; @@ -36,6 +36,7 @@ import java.util.Map; import org.aopalliance.aop.AspectException; +import org.apache.commons.collections.CollectionUtils; import org.hibernate.Criteria; import org.hibernate.Hibernate; import org.hibernate.HibernateException; @@ -714,7 +715,8 @@ @SuppressWarnings("unchecked") public List<T> doInHibernate(Session ses) throws HibernateException { - Criteria crit = ses.createCriteria(filter.getClass()); + // Criteria crit = ses.createCriteria(filter.getClass()); + Criteria crit = new ExampleTree(filter).create(ses); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); crit.setMaxResults(maxResults); crit.setFirstResult(maxResults * page); @@ -729,15 +731,15 @@ } } } - EnhancedExample.create(crit, filter, metadata); - if (additionalCriteria != null) + // EnhancedExample.create(crit, filter, metadata); + if (CollectionUtils.isNotEmpty(additionalCriteria)) { for (Criterion criterion : additionalCriteria) { crit.add(criterion); } } - if (properties != null) + if (CollectionUtils.isNotEmpty(properties)) { ProjectionList projectionList = Projections.projectionList(); Added: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java (rev 0) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2010-06-07 07:11:35 UTC (rev 2623) @@ -0,0 +1,103 @@ +package it.openutils.hibernate.example; + +import org.hibernate.Criteria; +import org.hibernate.EntityMode; +import org.hibernate.Hibernate; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Example; +import org.hibernate.metadata.ClassMetadata; +import org.hibernate.type.AssociationType; +import org.hibernate.type.Type; + + +/** + * facility to create subcriteria and examples for associations of an input entity + * @author gcatania + */ +public class ExampleTree +{ + + // TODO: allow specification of parameters to pass along to created examples, internally save association paths, + // fail fast on null entity; check for parent entities (currently the parameter is unused) to avoid infinite loops + // on parent/child references + + private final Object entity; + + /** + * builds an instance of {@code ExampleTree} associated with the input entity + * @param entity the example entity + */ + public ExampleTree(Object entity) + { + this.entity = entity; + } + + /** + * creates a criteria with the input session, adds to it an example for the input entity, and creates subcriteria + * and related examples for non-null property values of type {@link AssociationType} on the entity this example tree + * was initialized with + * @param ses the session + * @return a criteria for this example tree + */ + public Criteria create(Session ses) + { + return appendTo(ses.createCriteria(Hibernate.getClass(entity)), ses); + } + + /** + * appends examples and subcriteria, created for the entity this example tree was initialized with, to the input + * criteria, and then returns it + * @param crit the criteria to append to + * @param ses the session + * @return the input criteria with the added subcriteria and examples + */ + public Criteria appendTo(Criteria crit, Session ses) + { + new ExampleTreeWalker(ses).createSubExamples(crit, entity, null); + return crit; + } + + private static class ExampleTreeWalker + { + + private final SessionFactory sessionFactory; + + private EntityMode entityMode; + + public ExampleTreeWalker(Session session) + { + sessionFactory = session.getSessionFactory(); + entityMode = session.getEntityMode(); + } + + public void createSubExamples(Criteria crit, Object entity, Object parentEntity) + { + crit.add(Example.create(entity)); + ClassMetadata classMetadata = sessionFactory.getClassMetadata(Hibernate.getClass(entity)); + Type[] types = classMetadata.getPropertyTypes(); + String[] names = classMetadata.getPropertyNames(); + for (int i = 0; i < types.length; i++) + { + Type propertyType = types[i]; + if (!propertyType.isAssociationType()) + { + // handled by Example.create() + continue; + } + String propertyName = names[i]; + Object propertyValue = classMetadata.getPropertyValue(entity, propertyName, entityMode); + if (propertyValue == null) + { + // skip null values (TODO: allow specifications of which values to exclude, also see + // EnhancedExample.containsSomething() + continue; + } + + Criteria subCriteria = crit.createCriteria(propertyName); + createSubExamples(subCriteria, propertyValue, entity); + } + } + } + +} Property changes on: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2010-06-03 15:14:36 UTC (rev 2622) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2010-06-07 07:11:35 UTC (rev 2623) @@ -29,12 +29,16 @@ import it.openutils.hibernate.test.model.Address; import it.openutils.hibernate.test.model.FullName; import it.openutils.hibernate.test.model.Person; +import it.openutils.hibernate.test.model.Wish; +import java.util.Collections; import java.util.List; +import org.hibernate.Hibernate; +import org.hibernate.criterion.Example; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; +import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; import org.testng.Assert; import org.testng.annotations.Test; @@ -43,7 +47,7 @@ * @author gcatania */ @ContextConfiguration(locations = "/spring-tests.xml") -public class HibernateDAOTest extends AbstractTestNGSpringContextTests +public class HibernateDAOTest extends AbstractTransactionalTestNGSpringContextTests { @Autowired @@ -74,23 +78,55 @@ Assert.assertEquals(person, savedPerson); } - /** - * fails because of BSHD-5 - */ - @Test(enabled = false) + @Test public void testFindFilteredFirst() { personDAO.save(fifteenYearsOld()); List<Person> found = personDAO.findFiltered(new Person(new FullName(null, "Jones"), null, null, null)); + Assert.assertTrue(found.size() > 0, "No persons found."); + } + + @Test + public void testExampleBasic() + { + personDAO.save(fifteenYearsOld()); + Person outsideFilter = fifteenYearsOld(); + outsideFilter.getName().setFamilyName("Mahoney"); + personDAO.save(outsideFilter); + Person filter = new Person(new FullName(null, "Jones"), null, null, null); + List<Person> foundByExample = personDAO.find(Collections.singletonList(Example.create(filter))); + Assert.assertNotNull(foundByExample); + Assert.assertEquals(foundByExample.size(), 1); + Assert.assertEquals(foundByExample.get(0).getName().getFamilyName(), "Jones"); + + List<Person> found = personDAO.findFiltered(filter); Assert.assertNotNull(found); - if (found.size() == 0) - { - Assert.fail("No persons found"); - } - for (Person p : found) - { - System.out.println(p.toString()); - } + Assert.assertEquals(found.size(), 1); + Assert.assertEquals(found.get(0).getName().getFamilyName(), "Jones"); } + @Test + public void testExampleAssociations() + { + Person fifteenYearsOld = fifteenYearsOld(); + fifteenYearsOld.setWish(new Wish(fifteenYearsOld, "because he's young")); + personDAO.save(fifteenYearsOld); + Person another = fifteenYearsOld(); + another.setWish(new Wish(another, "because he's a nerd")); + personDAO.save(another); + + Person filter = new Person(); + filter.setWish(new Wish(null, "because he's young")); + List<Person> foundByExample = personDAO.find(Collections.singletonList(Example.create(filter))); + Hibernate.initialize(foundByExample); + Assert.assertNotNull(foundByExample); + Assert.assertEquals(foundByExample.size(), 2); + + List<Person> found = personDAO.findFiltered(filter); + Hibernate.initialize(found); + Assert.assertNotNull(found); + Assert.assertEquals(found.size(), 1); + Assert.assertEquals(found.get(0).getWish().getReason(), "because he's young"); + } + } Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java 2010-06-03 15:14:36 UTC (rev 2622) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java 2010-06-07 07:11:35 UTC (rev 2623) @@ -60,7 +60,7 @@ @ManyToOne(cascade = CascadeType.ALL) private Address fiscalAddress; - @OneToOne + @OneToOne(cascade = CascadeType.ALL) private Wish wish; public Person() Added: trunk/openutils-bshd5/src/test/resources/log4j.xml =================================================================== --- trunk/openutils-bshd5/src/test/resources/log4j.xml (rev 0) +++ trunk/openutils-bshd5/src/test/resources/log4j.xml 2010-06-07 07:11:35 UTC (rev 2623) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> + <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> + <layout class="org.apache.log4j.PatternLayout"> + <param name="ConversionPattern" value="%p - %C{1}.%M(%L) | %m%n" /> + </layout> + </appender> + <logger name="org.apache"> + <level value="WARN" /> + </logger> + <logger name="org.springframework"> + <level value="INFO" /> + </logger> + <root> + <level value="INFO" /> + <appender-ref ref="CONSOLE" /> + </root> +</log4j:configuration> \ No newline at end of file Property changes on: trunk/openutils-bshd5/src/test/resources/log4j.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/openutils-bshd5/src/test/resources/spring-tests.xml =================================================================== --- trunk/openutils-bshd5/src/test/resources/spring-tests.xml 2010-06-03 15:14:36 UTC (rev 2622) +++ trunk/openutils-bshd5/src/test/resources/spring-tests.xml 2010-06-07 07:11:35 UTC (rev 2623) @@ -28,4 +28,7 @@ </props> </property> </bean> + <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> + <property name="sessionFactory" ref="sessionFactory" /> + </bean> </beans> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2010-06-09 17:14:28
|
Revision: 2637 http://openutils.svn.sourceforge.net/openutils/?rev=2637&view=rev Author: gcatania Date: 2010-06-09 17:14:21 +0000 (Wed, 09 Jun 2010) Log Message: ----------- BSHD-5 wip filterMetadata support Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java Added Paths: ----------- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2010-06-08 16:08:16 UTC (rev 2636) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2010-06-09 17:14:21 UTC (rev 2637) @@ -27,8 +27,10 @@ import it.openutils.hibernate.example.ExampleTree; import it.openutils.hibernate.example.FilterMetadata; +import it.openutils.hibernate.example.FilterMetadataSupport; import java.io.Serializable; +import java.sql.SQLException; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -447,6 +449,10 @@ public List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, List< ? extends Criterion> criteria, Order... orders) { + if (metadata == null || metadata.isEmpty()) + { + return getHibernateTemplate().execute(new ExampleTreeCallback(orders, criteria, maxResults, page, filter)); + } return getHibernateTemplate().execute( new HibernateCallbackForExecution(filter, page, maxResults, metadata, orders, criteria, Collections .<String> emptyList())); @@ -674,6 +680,60 @@ } /** + * @author gcatania + */ + private final class ExampleTreeCallback implements HibernateCallback<List<T>> + { + + private final Order[] orders; + + private final List< ? extends Criterion> criteria; + + private final int page; + + private final int maxResults; + + private final T filter; + + private ExampleTreeCallback( + Order[] orders, + List< ? extends Criterion> criteria, + int maxResults, + int page, + T filter) + { + this.orders = orders; + this.criteria = criteria; + this.page = page; + this.maxResults = maxResults; + this.filter = filter; + } + + @SuppressWarnings("unchecked") + public List<T> doInHibernate(Session session) throws HibernateException, SQLException + { + Criteria crit = new ExampleTree(filter).create(session); + crit.setMaxResults(maxResults); + crit.setFirstResult(maxResults * page); + if (criteria != null) + { + for (Criterion c : criteria) + { + crit.add(c); + } + } + if (orders != null) + { + for (Order o : orders) + { + crit.addOrder(o); + } + } + return crit.list(); + } + } + + /** * @author carone * @version $Id$ */ @@ -716,7 +776,7 @@ public List<T> doInHibernate(Session ses) throws HibernateException { // Criteria crit = ses.createCriteria(filter.getClass()); - Criteria crit = new ExampleTree(filter).create(ses); + Criteria crit = new FilterMetadataSupport(filter, metadata).create(ses); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); crit.setMaxResults(maxResults); crit.setFirstResult(maxResults * page); @@ -731,7 +791,6 @@ } } } - // EnhancedExample.create(crit, filter, metadata); if (!CollectionUtils.isEmpty(additionalCriteria)) { for (Criterion criterion : additionalCriteria) Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2010-06-08 16:08:16 UTC (rev 2636) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2010-06-09 17:14:21 UTC (rev 2637) @@ -55,8 +55,6 @@ public class ExampleTree { - // TODO figure out how to handle filter metadata - private final Object entity; private Character escapeCharacter; @@ -254,13 +252,11 @@ Object propertyValue = classMetadata.getPropertyValue(entity, propertyName, entityMode); if (propertyType.isCollectionType()) { - propertyValue = getCollectionValue(propertyValue); + propertyValue = getValueFromCollection(propertyValue); } if (propertyValue == null) { // skip null values - // TODO: allow specifications of which values to exclude, also see - // EnhancedExample.containsSomething() continue; } @@ -358,7 +354,8 @@ return false; } - private Object getCollectionValue(Object collectionValue) + // see http://opensource2.atlassian.com/projects/hibernate/browse/HHH-879 + private Object getValueFromCollection(Object collectionValue) { if (collectionValue != null) { Added: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java (rev 0) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2010-06-09 17:14:21 UTC (rev 2637) @@ -0,0 +1,279 @@ +/** + * + * openutils base Spring-Hibernate DAO for java 5.0 (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) null-2010, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package it.openutils.hibernate.example; + +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang.StringUtils; +import org.hibernate.Criteria; +import org.hibernate.EntityMode; +import org.hibernate.Hibernate; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Example; +import org.hibernate.metadata.ClassMetadata; +import org.hibernate.type.Type; + + +/** + * legacy support for filter metadata. + * @author gcatania + */ +public class FilterMetadataSupport +{ + + private final Object entity; + + private Map<String, ? extends FilterMetadata> filterMetadata; + + /** + * builds an instance of {@code ExampleTree} associated with the input entity + * @param entity the example entity + */ + public FilterMetadataSupport(Object entity, Map<String, ? extends FilterMetadata> filterMetadata) + { + if (entity == null) + { + throw new NullPointerException("Null entity."); + } + this.entity = entity; + this.filterMetadata = filterMetadata; + } + + /** + * creates a criteria with the input session, adds to it an example for the input entity, and creates subcriteria + * and related examples for non-null property values on the filter entity that correspond to associations + * @param ses the session + * @return a criteria for this example tree + */ + public Criteria create(Session ses) + { + return appendTo(ses.createCriteria(Hibernate.getClass(entity)), ses); + } + + /** + * appends examples and subcriteria, created for the entity this example tree was initialized with, to the input + * criteria, and then returns it + * @param crit the criteria to append to + * @param ses the session + * @return the input criteria with the added subcriteria and examples + */ + public Criteria appendTo(Criteria crit, Session ses) + { + return new ExampleTreeWalker(ses).walk(crit, entity); + } + + private class ExampleTreeWalker + { + + private final SessionFactory sessionFactory; + + private EntityMode entityMode; + + public ExampleTreeWalker(Session session) + { + sessionFactory = session.getSessionFactory(); + entityMode = session.getEntityMode(); + } + + public Criteria walk(Criteria rootCriteria, Object rootEntity) + { + createSubExamples(rootCriteria, rootEntity, new String[0]); + return rootCriteria; + } + + private void createSubExamples(Criteria crit, Object entity, String[] walkedProperties) + { + String path = getPath(walkedProperties); + Map<String, FilterMetadata> currFilterMetadata = getFilterMetadata(path); + crit.add(example(entity, currFilterMetadata.keySet())); + ClassMetadata classMetadata = sessionFactory.getClassMetadata(Hibernate.getClass(entity)); + Type[] types = classMetadata.getPropertyTypes(); + String[] names = classMetadata.getPropertyNames(); + for (int i = 0; i < types.length; i++) + { + String propertyName = names[i]; + if (alreadyWalked(walkedProperties, propertyName)) + { + continue; + } + Object propertyValue = classMetadata.getPropertyValue(entity, propertyName, entityMode); + FilterMetadata fm = currFilterMetadata.get(propertyName); + if (fm != null) + { + fm.createFilter(crit, propertyName, propertyValue); + continue; + } + + Type propertyType = types[i]; + if (!propertyType.isAssociationType()) + { + // handled by Example.create() or by filterMetadata + continue; + } + + if (propertyType.isCollectionType()) + { + propertyValue = getValueFromCollection(propertyValue); + } + if (propertyValue == null) + { + // skip null values + continue; + } + + Criteria subCrit = crit.createCriteria(propertyName); + String[] subProperties = append(walkedProperties, propertyName); + createSubExamples(subCrit, propertyValue, subProperties); + } + } + + private Map<String, FilterMetadata> getFilterMetadata(String path) + { + Map<String, FilterMetadata> result = new HashMap<String, FilterMetadata>(); + for (String key : filterMetadata.keySet()) + { + if (key.equals(path)) + { + continue; + } + if (!key.startsWith(path)) + { + continue; + } + String leftover = key.substring(path.length() + 1); + // skip subproperties + if (leftover.contains(".")) + { + continue; + } + result.put(leftover, filterMetadata.get(key)); + } + return result; + } + + private String getPath(String[] walkedProperties) + { + return walkedProperties.length > 0 ? StringUtils.join(walkedProperties, '.') : StringUtils.EMPTY; + } + + private Example example(Object entity, Set<String> propertiesToExclude) + { + Example ex = Example.create(entity); + for (String propertyName : propertiesToExclude) + { + // skip properties handled by filterMetadata + ex.excludeProperty(propertyName); + } + return ex; + } + + /** + * check the property with the input name was already walked in the input path + * @param path the current path + * @param propertyName the property name about to be walked + * @return true if the property with the input name was already walked in the input path + */ + private boolean alreadyWalked(String[] walkedProperties, String propertyName) + { + if (walkedProperties.length <= 2) + { + return false; + } + String parent = walkedProperties[walkedProperties.length - 1]; + boolean lastWasChild = false; + for (int i = walkedProperties.length - 2; i > 0; i--) + { + String currPropertyName = walkedProperties[i]; + if (currPropertyName.equals(propertyName)) + { + lastWasChild = true; + continue; + } + if (lastWasChild) + { + if (currPropertyName.equals(parent)) + { + return true; + } + else + { + lastWasChild = false; + } + } + } + return false; + } + + private Object getValueFromCollection(Object collectionValue) + { + if (collectionValue != null) + { + if (collectionValue instanceof Collection< ? >) + { + Collection< ? > coll = (Collection< ? >) collectionValue; + int size = coll.size(); + if (size == 1) + { + return coll.iterator().next(); + } + if (size > 1) + { + throw new IllegalArgumentException("More than one element in filter collection is unsupported."); + } + } + Class< ? extends Object> clazz = collectionValue.getClass(); + if (clazz.isArray()) + { + int length = Array.getLength(collectionValue); + if (length == 1) + { + return Array.get(collectionValue, 0); + } + if (length > 1) + { + throw new IllegalArgumentException("More than one element in filter array is unsupported."); + } + } + // TODO other cases? + } + return null; + } + + private String[] append(String[] propertyNames, String propertyName) + { + String[] result = Arrays.copyOf(propertyNames, propertyNames.length + 1); + result[propertyNames.length] = propertyName; + return result; + } + } + +} Property changes on: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2010-06-08 16:08:16 UTC (rev 2636) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2010-06-09 17:14:21 UTC (rev 2637) @@ -50,6 +50,11 @@ public class HibernateDAOTest extends AbstractTransactionalTestNGSpringContextTests { + /* + * TODO tests to perform: 1) find filtered with collection with zero, one or more elements 2) find filtered with + * additional criteria 3) filter metadata support + */ + @Autowired private PersonDAO personDAO; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2011-12-02 14:44:27
|
Revision: 3726 http://openutils.svn.sourceforge.net/openutils/?rev=3726&view=rev Author: gcatania Date: 2011-12-02 14:44:21 +0000 (Fri, 02 Dec 2011) Log Message: ----------- BSHD-11 adding fix, unit tests Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2011-12-02 14:40:25 UTC (rev 3725) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2011-12-02 14:44:21 UTC (rev 3726) @@ -47,6 +47,8 @@ import org.hibernate.criterion.Example; import org.hibernate.criterion.Example.PropertySelector; import org.hibernate.criterion.MatchMode; +import org.hibernate.criterion.Restrictions; +import org.hibernate.engine.SessionImplementor; import org.hibernate.metadata.ClassMetadata; import org.hibernate.type.Type; @@ -282,6 +284,9 @@ crit.add(c); } ClassMetadata classMetadata = sessionFactory.getClassMetadata(Hibernate.getClass(entity)); + + addIdentifierRestriction(crit, entity, classMetadata); // BSHD-11 + Type[] types = classMetadata.getPropertyTypes(); String[] names = classMetadata.getPropertyNames(); for (int i = 0; i < types.length; i++) @@ -315,6 +320,25 @@ } } + /* + * BSHD-11 + */ + private void addIdentifierRestriction(Criteria crit, Object entity, ClassMetadata classMetadata) + { + String identifierName = classMetadata.getIdentifierPropertyName(); + if (identifierName != null) + { + // TODO is this cast really necessary? Will it fail in future hibernate versions? + SessionImplementor si = (SessionImplementor) sessionFactory.getCurrentSession(); + + Object idValue = classMetadata.getIdentifier(entity, si); + if (idValue != null) // TODO should we use property selectors instead? + { + crit.add(Restrictions.idEq(idValue)); + } + } + } + private String getAssociationPath(String[] walkedProperties) { return walkedProperties.length > 0 ? StringUtils.join(walkedProperties, '.') : StringUtils.EMPTY; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2011-12-02 14:40:25 UTC (rev 3725) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2011-12-02 14:44:21 UTC (rev 3726) @@ -313,6 +313,73 @@ Assert.assertEquals(shouldBeBob.getName(), bob.getName()); } + /** + * @see BSHD-11 + */ + @Test + public void testFindFilteredById() + { + Person alice = alice(); + Long alicesId = personDAO.save(alice); + personDAO.save(bob()); + Person filter = new Person(); + filter.setId(alicesId); + List<Person> found = personDAO.findFiltered(filter); + + Assert.assertEquals(found.size(), 1, "Invalid number of persons found."); + Assert.assertEquals(found.get(0), alice); + } + + /** + * @see BSHD-11 + */ + @Test + public void testFindFilteredByNonDefaultId() + { + CarMaker toyota = toyota(); + carMakerDAO.save(toyota); + carMakerDAO.save(fiat()); + + CarMaker filter = new CarMaker(); + filter.setCode("TYT"); + List<CarMaker> found = carMakerDAO.findFiltered(filter); + + Assert.assertEquals(found.size(), 1, "Wrong number of car makers found"); + CarMaker foundCarMaker = found.get(0); + Assert.assertEquals(foundCarMaker.getName(), "Toyota"); + } + + /** + * @see BSHD-11 + */ + @Test + public void testFindFilteredByChildId() + { + Owner bob = bob(); + CarMaker toyota = toyota(); + CarModel prius = prius(toyota); + + Car bobsPrius = new Car(); + bobsPrius.setModel(prius); + bobsPrius.setRegistrationDate(new GregorianCalendar(2010, Calendar.OCTOBER, 28)); + bobsPrius.setMarketValue(new CurrencyAmount(1700, "USD")); + bobsPrius.setOwner(bob); + bob.setCars(Collections.singleton(bobsPrius)); + personDAO.save(bob); + personDAO.save(alice()); + personDAO.save(chuck()); + personDAO.save(priusDesigner(prius)); + + Car carFilter = new Car(); + carFilter.setId(bobsPrius.getId()); + Owner filter = new Owner(); + filter.setCars(Collections.singleton(carFilter)); + List<Person> found = personDAO.findFiltered(filter); + Assert.assertEquals(found.size(), 1); + Person shouldBeBob = found.get(0); + Assert.assertEquals(shouldBeBob.getName(), bob.getName()); + } + // @Test // public void testExampleAssociations() // { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2012-03-19 08:59:04
|
Revision: 3822 http://openutils.svn.sourceforge.net/openutils/?rev=3822&view=rev Author: gcatania Date: 2012-03-19 08:58:53 +0000 (Mon, 19 Mar 2012) Log Message: ----------- BSHD-12 added mechanism to optionally infer reference class from parameterized types, plus unit tests Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java Added Paths: ----------- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java Removed Paths: ------------- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-03-19 08:46:05 UTC (rev 3821) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-03-19 08:58:53 UTC (rev 3822) @@ -76,10 +76,27 @@ private boolean aopenabled; /** - * Instantiates a new DAO instance + * Instantiates a new DAO instance, will try to infer reference class from parameterized types from the class + * hierarchy */ public HibernateDAOImpl() { + // tries to iterate on class or subclasses until a parameterized type is found, otherwise leaves the superclass + // to be specified by the implementor calling setReferenceClass() + java.lang.reflect.Type genericSuperclass = getClass().getGenericSuperclass(); + while (genericSuperclass != null && !(genericSuperclass instanceof java.lang.reflect.ParameterizedType)) + { + genericSuperclass = ((Class< ? >) genericSuperclass).getGenericSuperclass(); + } + if (genericSuperclass != null) + { + java.lang.reflect.Type[] typeArguments = ((java.lang.reflect.ParameterizedType) genericSuperclass) + .getActualTypeArguments(); + // type arguments is guaranteed to be non-empty since the class is a ParameterizedType + @SuppressWarnings("unchecked") + Class<T> referenceClass = (Class<T>) typeArguments[0]; + setReferenceClass(referenceClass); + } } /** Added: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java (rev 0) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java 2012-03-19 08:58:53 UTC (rev 3822) @@ -0,0 +1,173 @@ +/** + * + * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package it.openutils.hibernate.test; + +import it.openutils.dao.hibernate.HibernateDAOImpl; +import it.openutils.hibernate.test.model.Car; +import it.openutils.hibernate.test.model.Designer; +import it.openutils.hibernate.test.model.Employee; +import it.openutils.hibernate.test.model.Person; + +import org.testng.Assert; +import org.testng.annotations.Test; + + +/** + * @author gcatania + * @version $Id$ + */ +public class HibernateDAOHierarchyTest +{ + + /** + * make the reference class available for testing + */ + private static interface ReferenceClassAvailable + { + + Class< ? > getReferenceClass(); + } + + private static class TestDaoImplParameterizedSimple extends HibernateDAOImpl<Car, Long> + implements + ReferenceClassAvailable + { + + @Override + public Class<Car> getReferenceClass() + { + return super.getReferenceClass(); + } + } + + private static class TestDaoImplParameterizedInheriting extends TestDaoImplParameterizedSimple + { + } + + private static class TestDaoImplParameterizedOverwriting extends HibernateDAOImpl<Person, Long> + implements + ReferenceClassAvailable + { + + private TestDaoImplParameterizedOverwriting() + { + super(); + // cheat with raw types to make the method invocation compile + setReferenceClass((Class) Employee.class); + } + + @Override + public Class<Person> getReferenceClass() + { + return super.getReferenceClass(); + } + } + + @SuppressWarnings("rawtypes") + private static class TestDaoImplRawSimple extends HibernateDAOImpl implements ReferenceClassAvailable + { + + protected TestDaoImplRawSimple() + { + super(); + } + + @SuppressWarnings("unchecked") + protected TestDaoImplRawSimple(Class< ? > referenceClass) + { + super(referenceClass); + } + + @Override + public Class< ? > getReferenceClass() + { + return super.getReferenceClass(); + } + } + + private static class TestDaoImplRawInheriting extends TestDaoImplRawSimple + { + + private TestDaoImplRawInheriting() + { + super(Designer.class); + } + } + + /** + * tests a dao implementation in which the reference class has been inferred from the parameterized types of the + * class itself + */ + @Test + public void testInstantiateParameterizedSimple() + { + assertReferenceClassEquals(new TestDaoImplParameterizedSimple(), Car.class); + } + + /** + * tests a dao implementation in which the reference class has been inferred from the parameterized types of a + * superclass + */ + @Test + public void testInstantiateParameterizedInheriting() + { + assertReferenceClassEquals(new TestDaoImplParameterizedInheriting(), Car.class); + } + + /** + * tests a dao implementation in which the reference class has been inferred from the parameterized types of the + * class itself but overwritten by the implementor by calling setReferenceClass() afterwards + */ + @Test + public void testInstantiateParameterizedOverwriting() + { + assertReferenceClassEquals(new TestDaoImplParameterizedOverwriting(), Employee.class); + } + + /** + * tests the anomalous situation in which reference class has not been set (in production code this dao won't work) + */ + @Test + public void testInstantiateRawSimple() + { + assertReferenceClassEquals(new TestDaoImplRawSimple(), null); + } + + /** + * tests a non-parameterized dao implementation in which the reference class has been set by hand + */ + @Test + public void testInstantiateRawInheriting() + { + assertReferenceClassEquals(new TestDaoImplRawInheriting(), Designer.class); + } + + private static void assertReferenceClassEquals(ReferenceClassAvailable dao, Class< ? > expectedReferenceClass) + { + Assert.assertEquals(dao.getReferenceClass(), expectedReferenceClass); + } + +} Property changes on: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Copied: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java (from rev 3816, trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java) =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java (rev 0) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2012-03-19 08:58:53 UTC (rev 3822) @@ -0,0 +1,446 @@ +/** + * + * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package it.openutils.hibernate.test; + +import it.openutils.hibernate.test.dao.CarDAO; +import it.openutils.hibernate.test.dao.CarMakerDAO; +import it.openutils.hibernate.test.dao.PersonDAO; +import it.openutils.hibernate.test.dao.StickerDAO; +import it.openutils.hibernate.test.model.Address; +import it.openutils.hibernate.test.model.Car; +import it.openutils.hibernate.test.model.CarMaker; +import it.openutils.hibernate.test.model.CarModel; +import it.openutils.hibernate.test.model.CurrencyAmount; +import it.openutils.hibernate.test.model.Designer; +import it.openutils.hibernate.test.model.FullName; +import it.openutils.hibernate.test.model.Owner; +import it.openutils.hibernate.test.model.Person; +import it.openutils.hibernate.test.model.Sticker; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.GregorianCalendar; +import java.util.List; + +import org.hibernate.criterion.Example; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; +import org.testng.Assert; +import org.testng.annotations.Test; + + +/** + * @author gcatania + */ +@ContextConfiguration(locations = "/spring-tests.xml") +public class HibernateDAOPersistenceTest extends AbstractTransactionalTestNGSpringContextTests +{ + + /* + * TODO tests to perform: 1) find filtered with collection with zero, one or more elements 2) find filtered with + * additional criteria 3) filter metadata support 4) find filtered with id 5) find filtered with backref + */ + + @Autowired + private PersonDAO personDAO; + + @Autowired + private CarMakerDAO carMakerDAO; + + @Autowired + private CarDAO carDAO; + + @Autowired + private StickerDAO stickerDAO; + + private static Person alice() + { + FullName fullName = new FullName("Alice", "McBeal"); + Calendar birthDate = new GregorianCalendar(1970, Calendar.MARCH, 7); + Address address = new Address("Long road", 15, "Smalltown", "MI", 14352); + Person p = new Person(); + p.setName(fullName); + p.setBirthDate(birthDate); + p.setFiscalAddress(address); + p.setCurrentAddress(address); + return p; + } + + private static Owner bob() + { + FullName fullName = new FullName("Bob", "Kelso"); + Calendar birthDate = new GregorianCalendar(1950, Calendar.MARCH, 7); + Address address = new Address("Sacred Heart Lane", 3, "Smalltown", "CA", 11243); + Owner o = new Owner(); + o.setName(fullName); + o.setBirthDate(birthDate); + o.setFiscalAddress(address); + o.setCurrentAddress(address); + return o; + } + + private static Owner chuck() + { + FullName fullName = new FullName("Chuck", "Palahniuk"); + Calendar birthDate = new GregorianCalendar(1962, Calendar.FEBRUARY, 21); + Address address = new Address("Awesome Street", 2, "Pasco", "WA", 13121); + Owner p = new Owner(); + p.setName(fullName); + p.setBirthDate(birthDate); + p.setFiscalAddress(address); + p.setCurrentAddress(address); + return p; + } + + private static CarMaker toyota() + { + CarMaker toyota = new CarMaker(); + toyota.setCode("TYT"); + toyota.setName("Toyota"); + toyota.setCapitalization(new CurrencyAmount(12000, "YEN")); + return toyota; + } + + private static CarMaker fiat() + { + CarMaker fiat = new CarMaker(); + fiat.setCode("FIA"); + fiat.setName("Fabbrica Italiana Automobili Torino"); + fiat.setCapitalization(new CurrencyAmount(80000, "EUR")); + return fiat; + } + + private static CarModel prius(CarMaker toyota) + { + CarModel prius = new CarModel(); + prius.setName("Prius"); + prius.setMake(toyota); + prius.setYear(Integer.valueOf(2008)); + + List<CarModel> toyotaModels = toyota.getModels(); + if (toyotaModels == null) + { + toyotaModels = new ArrayList<CarModel>(); + } + toyotaModels.add(prius); + toyota.setModels(toyotaModels); + return prius; + } + + private static Designer priusDesigner(CarModel prius) + { + FullName fullName = new FullName("Ken", "Shiro"); + Calendar birthDate = new GregorianCalendar(1981, Calendar.OCTOBER, 16); + Address address = new Address("Khan avenue", 6, "Nagato", "TK", 99867); + Designer p = new Designer(); + p.setName(fullName); + p.setBirthDate(birthDate); + p.setFiscalAddress(address); + p.setCurrentAddress(address); + p.setDepartment("design"); + p.setEmployer(prius.getMake()); + p.setDesignedModels(Collections.singleton(prius)); + p.setGrossAnnualSalary(new CurrencyAmount(60000, "YEN")); + p.setHipsterFactor(97); + return p; + } + + private static Car bobsPrius(Owner bob, CarModel prius) + { + Car bobsPrius = new Car(); + bobsPrius.setModel(prius); + bobsPrius.setRegistrationDate(new GregorianCalendar(2010, Calendar.OCTOBER, 28)); + bobsPrius.setMarketValue(new CurrencyAmount(1700, "USD")); + bobsPrius.setOwner(bob); + bob.setCars(Collections.singleton(bobsPrius)); + return bobsPrius; + } + + private static Car chucksPrius(Owner chuck, CarModel prius) + { + Car chucksPrius = new Car(); + chucksPrius.setModel(prius); + chucksPrius.setRegistrationDate(new GregorianCalendar(2011, Calendar.DECEMBER, 13)); + chucksPrius.setMarketValue(new CurrencyAmount(5400, "USD")); + chucksPrius.setOwner(chuck); + chuck.setCars(Collections.singleton(chucksPrius)); + return chucksPrius; + } + + /** + * basic save/evict/get test. + */ + @Test + public void testSaveAndRetrieveBasic() + { + Person person = alice(); + Long savedId = personDAO.save(person); + Assert.assertNotNull(savedId); + Long personId = person.getId(); + Assert.assertEquals(savedId, personId); + personDAO.evict(person); + Person savedPerson = personDAO.get(personId); + Assert.assertEquals(person, savedPerson); + } + + @Test + public void testSaveAndRetrieveWithCascade() + { + CarMaker toyota = toyota(); + CarModel prius = prius(toyota); + + carMakerDAO.save(toyota); + + Designer designer = priusDesigner(prius); + + personDAO.save(designer); + // FIXME evicting breaks the test, there must be something wrong in the hibernate mapping configuration + // personDAO.evict(designer); + + // cannot use load() with entity inheritance, see https://forum.hibernate.org/viewtopic.php?p=2418875 + // Person reloadedDesigner = personDAO.load(designer.getId()); + + Person filter = new Person(); + filter.setBirthDate(designer.getBirthDate()); + Person reloadedDesigner = personDAO.findFilteredFirst(filter); + Assert.assertNotNull(reloadedDesigner); + Assert.assertEquals(reloadedDesigner.getClass(), Designer.class); + Designer rd = (Designer) reloadedDesigner; + Assert.assertEquals(rd.getEmployer(), toyota); + Assert.assertEquals(prius.getMake(), toyota); + Assert.assertEquals(rd.getHipsterFactor(), 97); + Assert.assertEquals(rd.getDesignedModels().iterator().next().getYear(), Integer.valueOf(2008)); + } + + @Test + public void testBasicFind() + { + Person alice = alice(); + personDAO.save(alice); + + Person filter = new Person(); + filter.setName(new FullName(null, "McBeal")); + List<Person> found = personDAO.findFiltered(filter); + + Assert.assertEquals(found.size(), 1, "No persons found."); + Assert.assertEquals(found.get(0), alice); + } + + @Test + public void testFindFiltered() + { + personDAO.save(alice()); + personDAO.save(bob()); + personDAO.save(chuck()); + Person filter = new Person(); + filter.setName(new FullName(null, "Kelso")); + List<Person> found = personDAO.findFiltered(filter); + + Assert.assertEquals(found.size(), 1, "Invalid number of persons found."); + Person actualBob = bob(); + Person expectedBob = found.get(0); + Assert.assertEquals(expectedBob.getName(), actualBob.getName()); + Assert.assertEquals(expectedBob.getCurrentAddress().getStreet(), actualBob.getCurrentAddress().getStreet()); + Assert.assertEquals(expectedBob.getBirthDate(), actualBob.getBirthDate()); + } + + @Test + public void testFindFilteredInheritance() + { + personDAO.save(alice()); + personDAO.save(bob()); + personDAO.save(chuck()); + Person filter = new Person(); + filter.setName(new FullName(null, "Kelso")); + List<Person> found = personDAO.findFiltered(filter); + + Assert.assertEquals(found.size(), 1, "Invalid number of persons found."); + Person expectedBob = found.get(0); + Assert.assertEquals(expectedBob.getClass(), Owner.class, "Inheritanche check failed"); + } + + @Test + public void testExampleBasic() + { + personDAO.save(alice()); + Person outsideFilter = alice(); + outsideFilter.getName().setFamilyName("Mahoney"); + personDAO.save(outsideFilter); + Person filter = new Person(); + filter.setName(new FullName(null, "McBeal")); + List<Person> foundByExample = personDAO.find(Collections.singletonList(Example.create(filter))); + Assert.assertNotNull(foundByExample); + Assert.assertEquals(foundByExample.size(), 1); + Assert.assertEquals(foundByExample.get(0).getName().getFamilyName(), "McBeal"); + + List<Person> found = personDAO.findFiltered(filter); + Assert.assertNotNull(found); + Assert.assertEquals(found.size(), 1); + Assert.assertEquals(found.get(0).getName().getFamilyName(), "McBeal"); + } + + @Test + public void testFindFilteredChild() + { + CarMaker toyota = toyota(); + CarModel prius = prius(toyota); + + Owner bob = bob(); + bobsPrius(bob, prius); + personDAO.save(bob); + + Owner chuck = chuck(); + chucksPrius(chuck, prius); + personDAO.save(chuck); + + personDAO.save(priusDesigner(prius)); + + Car carFilter = new Car(); + carFilter.setMarketValue(new CurrencyAmount(1700, "USD")); + Owner filter = new Owner(); + filter.setCars(Collections.singleton(carFilter)); + List<Person> found = personDAO.findFiltered(filter); + Assert.assertEquals(found.size(), 1); + Person shouldBeBob = found.get(0); + Assert.assertEquals(shouldBeBob.getName(), bob.getName()); + } + + /** + * @see BSHD-11 + */ + @Test + public void testFindFilteredById() + { + Person alice = alice(); + Long alicesId = personDAO.save(alice); + personDAO.save(bob()); + Person filter = new Person(); + filter.setId(alicesId); + List<Person> found = personDAO.findFiltered(filter); + + Assert.assertEquals(found.size(), 1, "Invalid number of persons found."); + Assert.assertEquals(found.get(0), alice); + } + + /** + * @see BSHD-11 + */ + @Test + public void testFindFilteredByNonDefaultId() + { + CarMaker toyota = toyota(); + carMakerDAO.save(toyota); + carMakerDAO.save(fiat()); + + CarMaker filter = new CarMaker(); + filter.setCode("TYT"); + List<CarMaker> found = carMakerDAO.findFiltered(filter); + + Assert.assertEquals(found.size(), 1, "Wrong number of car makers found"); + CarMaker foundCarMaker = found.get(0); + Assert.assertEquals(foundCarMaker.getName(), "Toyota"); + } + + /** + * @see BSHD-11 + */ + @Test + public void testFindFilteredByChildId() + { + Owner bob = bob(); + CarMaker toyota = toyota(); + CarModel prius = prius(toyota); + + Car bobsPrius = bobsPrius(bob, prius); + personDAO.save(bob); + personDAO.save(alice()); + personDAO.save(chuck()); + personDAO.save(priusDesigner(prius)); + + Car carFilter = new Car(); + carFilter.setId(bobsPrius.getId()); + Owner filter = new Owner(); + filter.setCars(Collections.singleton(carFilter)); + List<Person> found = personDAO.findFiltered(filter); + Assert.assertEquals(found.size(), 1); + Person shouldBeBob = found.get(0); + Assert.assertEquals(shouldBeBob.getName(), bob.getName()); + } + + @Test + public void testFindFilteredChildEntity() + { + Sticker st1 = new Sticker(); + st1.setName("Warning! Baby on board!"); + st1.setHeight(20d); + st1.setWidth(10d); + Sticker st2 = new Sticker(); + st2.setName("Object in the mirror are losing"); + st2.setHeight(5d); + st2.setWidth(10d); + Sticker st3 = new Sticker(); + st3.setName("(tribal tattoo sticker)"); + st3.setHeight(35d); + st3.setWidth(18d); + + Car chucksPrius = chucksPrius(chuck(), prius(toyota())); + chucksPrius.setStickers(Arrays.asList(st1, st2, st3)); + carDAO.save(chucksPrius); + carDAO.evict(chucksPrius); + Sticker filter = new Sticker(); + filter.setWidth(10d); + List<Sticker> found = stickerDAO.findFiltered(filter); + Assert.assertEquals(found.size(), 2); + } + + // @Test + // public void testExampleAssociations() + // { + // Person fifteenYearsOld = fifteenYearsOld(); + // fifteenYearsOld.setWish(new Wish(fifteenYearsOld, "because he's young")); + // personDAO.save(fifteenYearsOld); + // Person another = fifteenYearsOld(); + // another.setWish(new Wish(another, "because he's a nerd")); + // personDAO.save(another); + // + // Person filter = new Person(); + // filter.setWish(new Wish(null, "because he's young")); + // List<Person> foundByExample = personDAO.find(Collections.singletonList(Example.create(filter))); + // Hibernate.initialize(foundByExample); + // Assert.assertNotNull(foundByExample); + // Assert.assertEquals(foundByExample.size(), 2); + // + // List<Person> found = personDAO.findFiltered(filter); + // Hibernate.initialize(found); + // Assert.assertNotNull(found); + // Assert.assertEquals(found.size(), 1); + // Assert.assertEquals(found.get(0).getWish().getReason(), "because he's young"); + // } + +} Property changes on: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Deleted: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2012-03-19 08:46:05 UTC (rev 3821) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOTest.java 2012-03-19 08:58:53 UTC (rev 3822) @@ -1,446 +0,0 @@ -/** - * - * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) - * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it - * - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * You may obtain a copy of the License at - * - * http://www.gnu.org/licenses/lgpl-2.1.html - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package it.openutils.hibernate.test; - -import it.openutils.hibernate.test.dao.CarDAO; -import it.openutils.hibernate.test.dao.CarMakerDAO; -import it.openutils.hibernate.test.dao.PersonDAO; -import it.openutils.hibernate.test.dao.StickerDAO; -import it.openutils.hibernate.test.model.Address; -import it.openutils.hibernate.test.model.Car; -import it.openutils.hibernate.test.model.CarMaker; -import it.openutils.hibernate.test.model.CarModel; -import it.openutils.hibernate.test.model.CurrencyAmount; -import it.openutils.hibernate.test.model.Designer; -import it.openutils.hibernate.test.model.FullName; -import it.openutils.hibernate.test.model.Owner; -import it.openutils.hibernate.test.model.Person; -import it.openutils.hibernate.test.model.Sticker; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collections; -import java.util.GregorianCalendar; -import java.util.List; - -import org.hibernate.criterion.Example; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; -import org.testng.Assert; -import org.testng.annotations.Test; - - -/** - * @author gcatania - */ -@ContextConfiguration(locations = "/spring-tests.xml") -public class HibernateDAOTest extends AbstractTransactionalTestNGSpringContextTests -{ - - /* - * TODO tests to perform: 1) find filtered with collection with zero, one or more elements 2) find filtered with - * additional criteria 3) filter metadata support 4) find filtered with id 5) find filtered with backref - */ - - @Autowired - private PersonDAO personDAO; - - @Autowired - private CarMakerDAO carMakerDAO; - - @Autowired - private CarDAO carDAO; - - @Autowired - private StickerDAO stickerDAO; - - private static Person alice() - { - FullName fullName = new FullName("Alice", "McBeal"); - Calendar birthDate = new GregorianCalendar(1970, Calendar.MARCH, 7); - Address address = new Address("Long road", 15, "Smalltown", "MI", 14352); - Person p = new Person(); - p.setName(fullName); - p.setBirthDate(birthDate); - p.setFiscalAddress(address); - p.setCurrentAddress(address); - return p; - } - - private static Owner bob() - { - FullName fullName = new FullName("Bob", "Kelso"); - Calendar birthDate = new GregorianCalendar(1950, Calendar.MARCH, 7); - Address address = new Address("Sacred Heart Lane", 3, "Smalltown", "CA", 11243); - Owner o = new Owner(); - o.setName(fullName); - o.setBirthDate(birthDate); - o.setFiscalAddress(address); - o.setCurrentAddress(address); - return o; - } - - private static Owner chuck() - { - FullName fullName = new FullName("Chuck", "Palahniuk"); - Calendar birthDate = new GregorianCalendar(1962, Calendar.FEBRUARY, 21); - Address address = new Address("Awesome Street", 2, "Pasco", "WA", 13121); - Owner p = new Owner(); - p.setName(fullName); - p.setBirthDate(birthDate); - p.setFiscalAddress(address); - p.setCurrentAddress(address); - return p; - } - - private static CarMaker toyota() - { - CarMaker toyota = new CarMaker(); - toyota.setCode("TYT"); - toyota.setName("Toyota"); - toyota.setCapitalization(new CurrencyAmount(12000, "YEN")); - return toyota; - } - - private static CarMaker fiat() - { - CarMaker fiat = new CarMaker(); - fiat.setCode("FIA"); - fiat.setName("Fabbrica Italiana Automobili Torino"); - fiat.setCapitalization(new CurrencyAmount(80000, "EUR")); - return fiat; - } - - private static CarModel prius(CarMaker toyota) - { - CarModel prius = new CarModel(); - prius.setName("Prius"); - prius.setMake(toyota); - prius.setYear(Integer.valueOf(2008)); - - List<CarModel> toyotaModels = toyota.getModels(); - if (toyotaModels == null) - { - toyotaModels = new ArrayList<CarModel>(); - } - toyotaModels.add(prius); - toyota.setModels(toyotaModels); - return prius; - } - - private static Designer priusDesigner(CarModel prius) - { - FullName fullName = new FullName("Ken", "Shiro"); - Calendar birthDate = new GregorianCalendar(1981, Calendar.OCTOBER, 16); - Address address = new Address("Khan avenue", 6, "Nagato", "TK", 99867); - Designer p = new Designer(); - p.setName(fullName); - p.setBirthDate(birthDate); - p.setFiscalAddress(address); - p.setCurrentAddress(address); - p.setDepartment("design"); - p.setEmployer(prius.getMake()); - p.setDesignedModels(Collections.singleton(prius)); - p.setGrossAnnualSalary(new CurrencyAmount(60000, "YEN")); - p.setHipsterFactor(97); - return p; - } - - private static Car bobsPrius(Owner bob, CarModel prius) - { - Car bobsPrius = new Car(); - bobsPrius.setModel(prius); - bobsPrius.setRegistrationDate(new GregorianCalendar(2010, Calendar.OCTOBER, 28)); - bobsPrius.setMarketValue(new CurrencyAmount(1700, "USD")); - bobsPrius.setOwner(bob); - bob.setCars(Collections.singleton(bobsPrius)); - return bobsPrius; - } - - private static Car chucksPrius(Owner chuck, CarModel prius) - { - Car chucksPrius = new Car(); - chucksPrius.setModel(prius); - chucksPrius.setRegistrationDate(new GregorianCalendar(2011, Calendar.DECEMBER, 13)); - chucksPrius.setMarketValue(new CurrencyAmount(5400, "USD")); - chucksPrius.setOwner(chuck); - chuck.setCars(Collections.singleton(chucksPrius)); - return chucksPrius; - } - - /** - * basic save/evict/get test. - */ - @Test - public void testSaveAndRetrieveBasic() - { - Person person = alice(); - Long savedId = personDAO.save(person); - Assert.assertNotNull(savedId); - Long personId = person.getId(); - Assert.assertEquals(savedId, personId); - personDAO.evict(person); - Person savedPerson = personDAO.get(personId); - Assert.assertEquals(person, savedPerson); - } - - @Test - public void testSaveAndRetrieveWithCascade() - { - CarMaker toyota = toyota(); - CarModel prius = prius(toyota); - - carMakerDAO.save(toyota); - - Designer designer = priusDesigner(prius); - - personDAO.save(designer); - // FIXME evicting breaks the test, there must be something wrong in the hibernate mapping configuration - // personDAO.evict(designer); - - // cannot use load() with entity inheritance, see https://forum.hibernate.org/viewtopic.php?p=2418875 - // Person reloadedDesigner = personDAO.load(designer.getId()); - - Person filter = new Person(); - filter.setBirthDate(designer.getBirthDate()); - Person reloadedDesigner = personDAO.findFilteredFirst(filter); - Assert.assertNotNull(reloadedDesigner); - Assert.assertEquals(reloadedDesigner.getClass(), Designer.class); - Designer rd = (Designer) reloadedDesigner; - Assert.assertEquals(rd.getEmployer(), toyota); - Assert.assertEquals(prius.getMake(), toyota); - Assert.assertEquals(rd.getHipsterFactor(), 97); - Assert.assertEquals(rd.getDesignedModels().iterator().next().getYear(), Integer.valueOf(2008)); - } - - @Test - public void testBasicFind() - { - Person alice = alice(); - personDAO.save(alice); - - Person filter = new Person(); - filter.setName(new FullName(null, "McBeal")); - List<Person> found = personDAO.findFiltered(filter); - - Assert.assertEquals(found.size(), 1, "No persons found."); - Assert.assertEquals(found.get(0), alice); - } - - @Test - public void testFindFiltered() - { - personDAO.save(alice()); - personDAO.save(bob()); - personDAO.save(chuck()); - Person filter = new Person(); - filter.setName(new FullName(null, "Kelso")); - List<Person> found = personDAO.findFiltered(filter); - - Assert.assertEquals(found.size(), 1, "Invalid number of persons found."); - Person actualBob = bob(); - Person expectedBob = found.get(0); - Assert.assertEquals(expectedBob.getName(), actualBob.getName()); - Assert.assertEquals(expectedBob.getCurrentAddress().getStreet(), actualBob.getCurrentAddress().getStreet()); - Assert.assertEquals(expectedBob.getBirthDate(), actualBob.getBirthDate()); - } - - @Test - public void testFindFilteredInheritance() - { - personDAO.save(alice()); - personDAO.save(bob()); - personDAO.save(chuck()); - Person filter = new Person(); - filter.setName(new FullName(null, "Kelso")); - List<Person> found = personDAO.findFiltered(filter); - - Assert.assertEquals(found.size(), 1, "Invalid number of persons found."); - Person expectedBob = found.get(0); - Assert.assertEquals(expectedBob.getClass(), Owner.class, "Inheritanche check failed"); - } - - @Test - public void testExampleBasic() - { - personDAO.save(alice()); - Person outsideFilter = alice(); - outsideFilter.getName().setFamilyName("Mahoney"); - personDAO.save(outsideFilter); - Person filter = new Person(); - filter.setName(new FullName(null, "McBeal")); - List<Person> foundByExample = personDAO.find(Collections.singletonList(Example.create(filter))); - Assert.assertNotNull(foundByExample); - Assert.assertEquals(foundByExample.size(), 1); - Assert.assertEquals(foundByExample.get(0).getName().getFamilyName(), "McBeal"); - - List<Person> found = personDAO.findFiltered(filter); - Assert.assertNotNull(found); - Assert.assertEquals(found.size(), 1); - Assert.assertEquals(found.get(0).getName().getFamilyName(), "McBeal"); - } - - @Test - public void testFindFilteredChild() - { - CarMaker toyota = toyota(); - CarModel prius = prius(toyota); - - Owner bob = bob(); - bobsPrius(bob, prius); - personDAO.save(bob); - - Owner chuck = chuck(); - chucksPrius(chuck, prius); - personDAO.save(chuck); - - personDAO.save(priusDesigner(prius)); - - Car carFilter = new Car(); - carFilter.setMarketValue(new CurrencyAmount(1700, "USD")); - Owner filter = new Owner(); - filter.setCars(Collections.singleton(carFilter)); - List<Person> found = personDAO.findFiltered(filter); - Assert.assertEquals(found.size(), 1); - Person shouldBeBob = found.get(0); - Assert.assertEquals(shouldBeBob.getName(), bob.getName()); - } - - /** - * @see BSHD-11 - */ - @Test - public void testFindFilteredById() - { - Person alice = alice(); - Long alicesId = personDAO.save(alice); - personDAO.save(bob()); - Person filter = new Person(); - filter.setId(alicesId); - List<Person> found = personDAO.findFiltered(filter); - - Assert.assertEquals(found.size(), 1, "Invalid number of persons found."); - Assert.assertEquals(found.get(0), alice); - } - - /** - * @see BSHD-11 - */ - @Test - public void testFindFilteredByNonDefaultId() - { - CarMaker toyota = toyota(); - carMakerDAO.save(toyota); - carMakerDAO.save(fiat()); - - CarMaker filter = new CarMaker(); - filter.setCode("TYT"); - List<CarMaker> found = carMakerDAO.findFiltered(filter); - - Assert.assertEquals(found.size(), 1, "Wrong number of car makers found"); - CarMaker foundCarMaker = found.get(0); - Assert.assertEquals(foundCarMaker.getName(), "Toyota"); - } - - /** - * @see BSHD-11 - */ - @Test - public void testFindFilteredByChildId() - { - Owner bob = bob(); - CarMaker toyota = toyota(); - CarModel prius = prius(toyota); - - Car bobsPrius = bobsPrius(bob, prius); - personDAO.save(bob); - personDAO.save(alice()); - personDAO.save(chuck()); - personDAO.save(priusDesigner(prius)); - - Car carFilter = new Car(); - carFilter.setId(bobsPrius.getId()); - Owner filter = new Owner(); - filter.setCars(Collections.singleton(carFilter)); - List<Person> found = personDAO.findFiltered(filter); - Assert.assertEquals(found.size(), 1); - Person shouldBeBob = found.get(0); - Assert.assertEquals(shouldBeBob.getName(), bob.getName()); - } - - @Test - public void testFindFilteredChildEntity() - { - Sticker st1 = new Sticker(); - st1.setName("Warning! Baby on board!"); - st1.setHeight(20d); - st1.setWidth(10d); - Sticker st2 = new Sticker(); - st2.setName("Object in the mirror are losing"); - st2.setHeight(5d); - st2.setWidth(10d); - Sticker st3 = new Sticker(); - st3.setName("(tribal tattoo sticker)"); - st3.setHeight(35d); - st3.setWidth(18d); - - Car chucksPrius = chucksPrius(chuck(), prius(toyota())); - chucksPrius.setStickers(Arrays.asList(st1, st2, st3)); - carDAO.save(chucksPrius); - carDAO.evict(chucksPrius); - Sticker filter = new Sticker(); - filter.setWidth(10d); - List<Sticker> found = stickerDAO.findFiltered(filter); - Assert.assertEquals(found.size(), 2); - } - - // @Test - // public void testExampleAssociations() - // { - // Person fifteenYearsOld = fifteenYearsOld(); - // fifteenYearsOld.setWish(new Wish(fifteenYearsOld, "because he's young")); - // personDAO.save(fifteenYearsOld); - // Person another = fifteenYearsOld(); - // another.setWish(new Wish(another, "because he's a nerd")); - // personDAO.save(another); - // - // Person filter = new Person(); - // filter.setWish(new Wish(null, "because he's young")); - // List<Person> foundByExample = personDAO.find(Collections.singletonList(Example.create(filter))); - // Hibernate.initialize(foundByExample); - // Assert.assertNotNull(foundByExample); - // Assert.assertEquals(foundByExample.size(), 2); - // - // List<Person> found = personDAO.findFiltered(filter); - // Hibernate.initialize(found); - // Assert.assertNotNull(found); - // Assert.assertEquals(found.size(), 1); - // Assert.assertEquals(found.get(0).getWish().getReason(), "because he's young"); - // } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2012-05-20 13:12:33
|
Revision: 4037 http://openutils.svn.sourceforge.net/openutils/?rev=4037&view=rev Author: gcatania Date: 2012-05-20 13:12:26 +0000 (Sun, 20 May 2012) Log Message: ----------- BSHD-2 code cleanup, added find properties support Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java 2012-05-15 19:48:16 UTC (rev 4036) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java 2012-05-20 13:12:26 UTC (rev 4037) @@ -164,13 +164,43 @@ List<T> findFiltered(ExampleTree exampleTree, int maxResults, int page, Order... orders); /** + * Retrieve a set of properties from the entities returned by + * {@link #findFiltered(Object, Order[], Map, int, int, List)} + * @param filter an instance of this DAO's entity class to be used as filter + * @param maxResults the maximum number of results to be fetched + * @param page the zero-based page number to use when displaying paginated results (the first entity returned is the + * one at position <code>maxResults * page</code> in the complete list of results), or <code>0</code> for no + * pagination + * @param properties the names of the properties to return + * @param orders the orders to apply with respect to entity class properties + * @return a list of distinct entity instances (never null) + */ + List<Object[]> findFilteredProperties(T filter, int maxResults, int page, List<String> properties, Order... orders); + + /** + * Retrieve a set of properties from the entities returned by + * {@link #findFiltered(Object, Order[], Map, int, int, List)} + * @param exampleTree the example tree criterion to match + * @param maxResults the maximum number of results to be fetched + * @param page the zero-based page number to use when displaying paginated results (the first entity returned is the + * one at position <code>maxResults * page</code> in the complete list of results), or <code>0</code> for no + * pagination + * @param properties the names of the properties to return + * @param orders the orders to apply with respect to entity class properties + * @return a list of distinct entity instances (never null) + */ + List<Object[]> findFilteredProperties(ExampleTree exampleTree, int maxResults, int page, List<String> properties, + Order... orders); + + /** * Retrieve the entities handled by this DAO whose property values match, via <code>equals()</code> or via a * specified <code>FilterMetadata</code> object, <code>filter</code>'s non-null property values. * @param filter an instance of this DAO's entity class to be used as filter * @param metadata a map that matches names of entity class properties to <code>FilterMetadata</code> modifiers, * that will be used for comparing values of the corresponding property * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata); @@ -186,7 +216,8 @@ * one at position <code>maxResults * page</code> in the complete list of results), or <code>0</code> for no * pagination * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page); @@ -204,7 +235,8 @@ * pagination * @param orders the orders to apply with respect to entity class properties * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, @@ -224,33 +256,14 @@ * @param criteria a list of additional Hibernate criteria * @param orders the orders to apply with respect to entity class properties * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, List< ? extends Criterion> criteria, Order... orders); /** - * Retrieve a set of properties from the entities returned by - * {@link #findFiltered(Object, Order[], Map, int, int, List)} - * @param filter an instance of this DAO's entity class to be used as filter - * @param metadata a map that matches names of entity class properties to <code>FilterMetadata</code> modifiers, - * that will be used for comparing values of the corresponding property - * @param maxResults the maximum number of results to be fetched - * @param page the zero-based page number to use when displaying paginated results (the first entity returned is the - * one at position <code>maxResults * page</code> in the complete list of results), or <code>0</code> for no - * pagination - * @param criteria a list of additional Hibernate criteria - * @param properties the names of the properties to return - * @param orders the orders to apply with respect to entity class properties - * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated - */ - @Deprecated - List< ? > findFilteredProperties(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, - int page, List< ? extends Criterion> criteria, List<String> properties, Order... orders); - - /** * Retrieve the first entity instance that matches the input <code>filter</code>, if existing. * @param filter an instance of this DAO's entity class to be used as filter * @return the first matching instance of the entity class managed by this DAO, or <code>null</code> if none found @@ -403,7 +416,8 @@ * one at position <code>maxResults * page</code> in the complete list of results), or <code>0</code> for no * pagination * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated List<T> findFiltered(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, int maxResults, @@ -423,7 +437,8 @@ * pagination * @param criteria a list of additional Hibernate criteria * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated List<T> findFiltered(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, int maxResults, @@ -443,10 +458,11 @@ * @param criteria a list of additional Hibernate criteria * @param properties the names of the properties to return * @return a list of distinct entity instances (never null) - * @deprecated use of {@link FilterMetadata} has been deprecated + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated - List< ? > findFilteredProperties(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, + List<Object[]> findFilteredProperties(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, List< ? extends Criterion> criteria, List<String> properties); } Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-05-15 19:48:16 UTC (rev 4036) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-05-20 13:12:26 UTC (rev 4037) @@ -31,7 +31,6 @@ import java.io.Serializable; import java.sql.SQLException; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -43,7 +42,6 @@ import org.hibernate.Criteria; import org.hibernate.Hibernate; import org.hibernate.HibernateException; -import org.hibernate.ObjectNotFoundException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.CriteriaSpecification; @@ -128,26 +126,8 @@ /** * {@inheritDoc} */ - public List<T> find(List< ? extends Criterion> criteria, Order... orders) + public List<T> find(final List< ? extends Criterion> criteria, final Order... orders) { - final List< ? extends Criterion> actualCriteria; - if (criteria != null) - { - actualCriteria = criteria; - } - else - { - actualCriteria = Collections.<Criterion> emptyList(); - } - final List<Order> actualOrders; - if (orders != null) - { - actualOrders = Arrays.asList(orders); - } - else - { - actualOrders = Collections.<Order> emptyList(); - } return getHibernateTemplate().execute(new HibernateCallback<List<T>>() { @@ -155,13 +135,19 @@ public List<T> doInHibernate(final Session ses) throws HibernateException { Criteria crit = ses.createCriteria(getReferenceClass()); - for (Criterion c : actualCriteria) + if (criteria != null) { - crit.add(c); + for (Criterion c : criteria) + { + crit.add(c); + } } - for (Order o : actualOrders) + if (orders != null) { - crit.addOrder(o); + for (Order o : orders) + { + crit.addOrder(o); + } } return crit.list(); } @@ -251,7 +237,8 @@ } /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} */ @Deprecated public List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata) @@ -266,7 +253,8 @@ } /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} */ @Deprecated public List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page) @@ -337,19 +325,12 @@ */ public T loadIfAvailable(K key) { - try + T result = getHibernateTemplate().get(getReferenceClass(), key); + if (result != null) { - T result = getHibernateTemplate().get(getReferenceClass(), key); - if (result != null) - { - Hibernate.initialize(result); - return result; - } + Hibernate.initialize(result); + return result; } - catch (ObjectNotFoundException e) - { - // thrown by HibernateTemplate#get() if the object does not exist - } return null; } @@ -449,12 +430,32 @@ */ public List<T> findFiltered(ExampleTree exampleTree, int maxResults, int page, Order... orders) { - return getHibernateTemplate().execute(new ExampleTreeCallback(exampleTree, orders, maxResults, page)); + return getHibernateTemplate().execute(new ExampleTreeCallback<T>(exampleTree, maxResults, page, orders)); } /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} + * {@inheritDoc} */ + public List<Object[]> findFilteredProperties(T filter, int maxResults, int page, List<String> properties, + Order... orders) + { + return getThis().findFilteredProperties(new ExampleTree(filter), maxResults, page, properties, orders); + } + + /** + * {@inheritDoc} + */ + public List<Object[]> findFilteredProperties(ExampleTree exampleTree, int maxResults, int page, + List<String> properties, Order... orders) + { + return getHibernateTemplate().execute( + new ExampleTreePropertiesCallback(exampleTree, maxResults, page, properties, orders)); + } + + /** + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} + */ @Deprecated public List<T> findFiltered(T filter, Order[] customOrder, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page) @@ -469,7 +470,8 @@ } /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} */ @Deprecated public List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, @@ -479,47 +481,20 @@ } /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} */ @Deprecated public List<T> findFiltered(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, List< ? extends Criterion> criteria, Order... orders) { - HibernateCallback<List<T>> callback; - if (MapUtils.isNotEmpty(metadata)) - { - // backwards compatibility - callback = new HibernateCallbackForExecution( - filter, - page, - maxResults, - metadata, - orders, - criteria, - Collections.<String> emptyList()); - } - else - { - ExampleTree exampleTree = new ExampleTree(filter); - appendToRoot(exampleTree, criteria); - callback = new ExampleTreeCallback(exampleTree, orders, maxResults, page); - } - return getHibernateTemplate().execute(callback); - } - - /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} - */ - @Deprecated - public List< ? > findFilteredProperties(T filter, Map<String, ? extends FilterMetadata> metadata, int maxResults, - int page, List< ? extends Criterion> criteria, List<String> properties, Order... orders) - { return getHibernateTemplate().execute( - new HibernateCallbackForExecution(filter, page, maxResults, metadata, orders, criteria, properties)); + new LegacySupportCallback<T>(filter, maxResults, page, metadata, criteria, orders)); } /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} */ @Deprecated public List<T> findFiltered(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, @@ -529,14 +504,16 @@ } /** - * @deprecated use of {@link FilterMetadata} has been deprecated {@inheritDoc} + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} */ @Deprecated - public List< ? > findFilteredProperties(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, - int maxResults, int page, List< ? extends Criterion> criteria, List<String> properties) + public List<Object[]> findFilteredProperties(T filter, Order[] orders, + Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, List< ? extends Criterion> criteria, + List<String> properties) { return getHibernateTemplate().execute( - new HibernateCallbackForExecution(filter, page, maxResults, metadata, orders, criteria, properties)); + new LegacySupportPropertiesCallback(filter, maxResults, page, metadata, criteria, properties, orders)); } /** @@ -578,12 +555,13 @@ * @param maxResults max number of results * @return Query */ - protected List< ? > findByNamedQuery(final String name, final Serializable[] params, final Integer maxResults) + protected List<Object> findByNamedQuery(final String name, final Serializable[] params, final Integer maxResults) { - return getHibernateTemplate().execute(new HibernateCallback<List< ? >>() + return getHibernateTemplate().execute(new HibernateCallback<List<Object>>() { - public List< ? > doInHibernate(final Session ses) throws HibernateException + @SuppressWarnings("unchecked") + public List<Object> doInHibernate(final Session ses) throws HibernateException { Query q = ses.getNamedQuery(name); if (maxResults != null) @@ -609,12 +587,13 @@ * @param maxResults max number of results * @return Query */ - protected List< ? > findByNamedQuery(final String name, final Map<String, ? > params, final Integer maxResults) + protected List<Object> findByNamedQuery(final String name, final Map<String, ? > params, final Integer maxResults) { - return getHibernateTemplate().execute(new HibernateCallback<List< ? >>() + return getHibernateTemplate().execute(new HibernateCallback<List<Object>>() { - public List< ? > doInHibernate(final Session ses) throws HibernateException + @SuppressWarnings("unchecked") + public List<Object> doInHibernate(final Session ses) throws HibernateException { Query q = ses.getNamedQuery(name); if (maxResults != null) @@ -643,7 +622,7 @@ * @deprecated use the better named <code>findByNamedQuery</code> method */ @Deprecated - protected List< ? > getNamedQuery(String name, Serializable[] params, int maxResults) + protected List<Object> getNamedQuery(String name, Serializable[] params, int maxResults) { return findByNamedQuery(name, params, maxResults > 0 ? maxResults : Integer.MAX_VALUE); } @@ -657,7 +636,7 @@ * @deprecated use the better named <code>findByNamedQuery</code> method */ @Deprecated - protected List< ? > getNamedQuery(String name, Map<String, ? > params, int maxResults) + protected List<Object> getNamedQuery(String name, Map<String, ? > params, int maxResults) { return findByNamedQuery(name, params, maxResults > 0 ? maxResults : Integer.MAX_VALUE); } @@ -682,7 +661,10 @@ * Returns the default set of FilterMetadata that will be applied to any query. The default implementation doesn't * set any default filter, subclasses may override this. * @return map of property name - filter metadata + * @deprecated {@link FilterMetadata} has been deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ + @Deprecated protected Map<String, ? extends FilterMetadata> getDefaultFilterMetadata() { return Collections.emptyMap(); @@ -748,121 +730,80 @@ /** * @author gcatania */ - private final class ExampleTreeCallback implements HibernateCallback<List<T>> + @SuppressWarnings("deprecation") + private class LegacySupportCallback<R> extends ExampleTreeCallback<R> { - private final Order[] orders; + private final T rootEntity; - private final int page; + private final Map<String, ? extends FilterMetadata> filterMetadata; - private final int maxResults; + private final List< ? extends Criterion> additionalCriteria; - private final ExampleTree exampleTree; - - private ExampleTreeCallback(ExampleTree exampleTree, Order[] orders, int maxResults, int page) + private LegacySupportCallback( + T rootEntity, + int maxResults, + int page, + Map<String, ? extends FilterMetadata> metadata, + List< ? extends Criterion> additionalCriteria, + Order... orders) { - this.exampleTree = exampleTree; - this.orders = orders; - this.page = page; - this.maxResults = maxResults; + super(new ExampleTree(rootEntity), maxResults, page, orders); + this.rootEntity = rootEntity; + this.filterMetadata = metadata; + this.additionalCriteria = additionalCriteria; } - @SuppressWarnings("unchecked") - public List<T> doInHibernate(Session session) throws HibernateException, SQLException + @Override + protected Criteria createCriteria(Session session) { - Criteria crit = exampleTree.create(session); - - // backwards compatibility - Map<String, ? extends FilterMetadata> filterMetadata = getDefaultFilterMetadata(); + Criteria crit = super.createCriteria(session); if (MapUtils.isNotEmpty(filterMetadata)) { - new FilterMetadataSupport(exampleTree.getRootEntity(), filterMetadata).appendTo(crit, session); + new FilterMetadataSupport(rootEntity, filterMetadata).appendTo(crit, session); } - - crit.setMaxResults(maxResults); - crit.setFirstResult(maxResults * page); - if (orders != null) + if (additionalCriteria != null) { - for (Order o : orders) + for (Criterion c : additionalCriteria) { - crit.addOrder(o); + crit.add(c); } } - return crit.list(); + return crit; } + } /** - * @deprecated callback implementation that uses EnhancedExample, deprecated in favor of ExampleTreeCallback - * @author carone - * @version $Id$ + * @author gcatania */ - @Deprecated - private final class HibernateCallbackForExecution implements HibernateCallback<List<T>> + @SuppressWarnings("deprecation") + private final class LegacySupportPropertiesCallback extends LegacySupportCallback<Object[]> { - private T filter; + private final List<String> properties; - private int page; - - private int maxResults; - - private Map<String, ? extends FilterMetadata> metadata; - - private List<String> properties; - - private Order[] orderProperties; - - private List< ? extends Criterion> additionalCriteria; - - private HibernateCallbackForExecution( - T filter, + private LegacySupportPropertiesCallback( + T rootEntity, + int maxResults, int page, - int maxResults, Map<String, ? extends FilterMetadata> metadata, - Order[] orderProperties, List< ? extends Criterion> additionalCriteria, - List<String> properties) + List<String> properties, + Order... orders) { - this.filter = filter; - this.page = page; - this.maxResults = maxResults; - this.metadata = metadata; - this.orderProperties = orderProperties; - this.additionalCriteria = additionalCriteria; + super(rootEntity, maxResults, page, metadata, additionalCriteria, orders); this.properties = properties; + } - @SuppressWarnings("unchecked") - public List<T> doInHibernate(Session ses) throws HibernateException + @Override + protected Criteria createCriteria(Session session) { - // Criteria crit = ses.createCriteria(filter.getClass()); - Criteria crit = new FilterMetadataSupport(filter, metadata).create(ses); - crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); - crit.setMaxResults(maxResults); - crit.setFirstResult(maxResults * page); - - if (orderProperties != null) - { - for (Order order : orderProperties) - { - if (order != null) - { - crit.addOrder(order); - } - } - } - if (!CollectionUtils.isEmpty(additionalCriteria)) - { - for (Criterion criterion : additionalCriteria) - { - crit.add(criterion); - } - } + Criteria crit = super.createCriteria(session); if (!CollectionUtils.isEmpty(properties)) { ProjectionList projectionList = Projections.projectionList(); - for (String property : properties) { projectionList.add(Property.forName(property)); @@ -870,8 +811,93 @@ crit.setProjection(projectionList); } - return crit.list(); + return crit; } } +} -} \ No newline at end of file + +/** + * @author gcatania + * @param R the result class + */ +class ExampleTreeCallback<R> implements HibernateCallback<List<R>> +{ + + private final Order[] orders; + + private final int maxResults; + + private final int page; + + private final ExampleTree exampleTree; + + protected ExampleTreeCallback(ExampleTree exampleTree, int maxResults, int page, Order... orders) + { + this.exampleTree = exampleTree; + this.maxResults = maxResults; + this.page = page; + this.orders = orders; + } + + /** + * internal method that creates the query criteria. Subclasses may override but should call {@code super()} + * @param session the hibernate session + * @return the hibernate criteria + */ + protected Criteria createCriteria(Session session) + { + Criteria crit = exampleTree.create(session); + + crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); + crit.setMaxResults(maxResults); + crit.setFirstResult(maxResults * page); + if (orders != null) + { + for (Order o : orders) + { + crit.addOrder(o); + } + } + + return crit; + } + + @SuppressWarnings("unchecked") + public List<R> doInHibernate(Session session) throws HibernateException, SQLException + { + return createCriteria(session).list(); + } +} + + +class ExampleTreePropertiesCallback extends ExampleTreeCallback<Object[]> +{ + + private final List<String> properties; + + protected ExampleTreePropertiesCallback(ExampleTree exampleTree, int maxResults, int page, + + List<String> properties, Order... orders) + { + super(exampleTree, maxResults, page, orders); + this.properties = properties; + } + + @Override + protected Criteria createCriteria(Session session) + { + Criteria crit = super.createCriteria(session); + if (!CollectionUtils.isEmpty(properties)) + { + ProjectionList projectionList = Projections.projectionList(); + for (String property : properties) + { + projectionList.add(Property.forName(property)); + } + + crit.setProjection(projectionList); + } + return crit; + } +} Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2012-05-15 19:48:16 UTC (rev 4036) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2012-05-20 13:12:26 UTC (rev 4037) @@ -74,9 +74,9 @@ private boolean isIgnoreCaseEnabled; - private Map<String, Set<String>> excludedProperties = new HashMap<String, Set<String>>(); + private final Map<String, Set<String>> excludedProperties = new HashMap<String, Set<String>>(); - private Map<String, List<Criterion>> additionalConditions = new HashMap<String, List<Criterion>>(); + private final Map<String, List<Criterion>> additionalConditions = new HashMap<String, List<Criterion>>(); /** * builds an instance of {@code ExampleTree} associated with the input entity @@ -246,14 +246,6 @@ return this; } - /** - * @return the rootEntity - */ - public Object getRootEntity() - { - return rootEntity; - } - private class ExampleTreeWalker implements Serializable { @@ -261,7 +253,7 @@ private final SessionFactory sessionFactory; - private EntityMode entityMode; + private final EntityMode entityMode; public ExampleTreeWalker(Session session) { Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java 2012-05-15 19:48:16 UTC (rev 4036) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java 2012-05-20 13:12:26 UTC (rev 4037) @@ -25,9 +25,8 @@ package it.openutils.hibernate.example; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.hibernate.Criteria; +import org.hibernate.criterion.Criterion; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; @@ -36,9 +35,12 @@ /** * FilterMetadata can be used to alter how properties are handled. + * @deprecated in favor of {@link ExampleTree#add(String, Criterion)} and + * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} * @author Fabrizio Giustina * @version $Id: $ */ +@Deprecated public interface FilterMetadata { @@ -48,7 +50,7 @@ FilterMetadata LIKE = new FilterMetadata() { - private Logger log = LoggerFactory.getLogger(FilterMetadata.class); + private final Logger log = LoggerFactory.getLogger(FilterMetadata.class); /** * {@inheritDoc} @@ -70,7 +72,7 @@ FilterMetadata EQUAL = new FilterMetadata() { - private Log log = LogFactory.getLog(FilterMetadata.class); + private final Logger log = LoggerFactory.getLogger(FilterMetadata.class); /** * {@inheritDoc} Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2012-05-15 19:48:16 UTC (rev 4036) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2012-05-20 13:12:26 UTC (rev 4037) @@ -45,15 +45,16 @@ /** - * legacy support for filter metadata. + * legacy support for {@link FilterMetadata}. * @author gcatania */ +@SuppressWarnings("deprecation") public class FilterMetadataSupport { private final Object entity; - private Map<String, ? extends FilterMetadata> filterMetadata; + private final Map<String, ? extends FilterMetadata> filterMetadata; /** * builds an instance of {@code ExampleTree} associated with the input entity @@ -97,7 +98,7 @@ private final SessionFactory sessionFactory; - private EntityMode entityMode; + private final EntityMode entityMode; public ExampleTreeWalker(Session session) { Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2012-05-15 19:48:16 UTC (rev 4036) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2012-05-20 13:12:26 UTC (rev 4037) @@ -48,6 +48,7 @@ import java.util.List; import org.hibernate.criterion.Example; +import org.hibernate.criterion.Order; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; @@ -419,6 +420,35 @@ Assert.assertEquals(found.size(), 2); } + @Test + public void testFindFilteredProperties() + { + personDAO.save(alice()); + personDAO.save(bob()); + personDAO.save(chuck()); + + Address addressFilter = new Address(); + addressFilter.setCity("Smalltown"); + Person filter = new Person(); + filter.setCurrentAddress(addressFilter); + + List<Object[]> foundProperties = personDAO.findFilteredProperties( + filter, + Integer.MAX_VALUE, + 0, + Arrays.asList("name", "birthDate"), + Order.desc("name.givenName")); + + Assert.assertEquals(foundProperties.size(), 2); + + Object[] bobsProperties = foundProperties.get(0); + Assert.assertEquals(bobsProperties[0], bob().getName()); + Assert.assertEquals(bobsProperties[1], bob().getBirthDate()); + Object[] alicesProperties = foundProperties.get(1); + Assert.assertEquals(alicesProperties[0], alice().getName()); + Assert.assertEquals(alicesProperties[1], alice().getBirthDate()); + + } // @Test // public void testExampleAssociations() // { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2012-05-20 14:13:13
|
Revision: 4038 http://openutils.svn.sourceforge.net/openutils/?rev=4038&view=rev Author: gcatania Date: 2012-05-20 14:13:06 +0000 (Sun, 20 May 2012) Log Message: ----------- BSHD-2 fix property methods Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java 2012-05-20 13:12:26 UTC (rev 4037) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java 2012-05-20 14:13:06 UTC (rev 4038) @@ -175,7 +175,7 @@ * @param orders the orders to apply with respect to entity class properties * @return a list of distinct entity instances (never null) */ - List<Object[]> findFilteredProperties(T filter, int maxResults, int page, List<String> properties, Order... orders); + List<Object> findFilteredProperties(T filter, int maxResults, int page, List<String> properties, Order... orders); /** * Retrieve a set of properties from the entities returned by @@ -189,7 +189,7 @@ * @param orders the orders to apply with respect to entity class properties * @return a list of distinct entity instances (never null) */ - List<Object[]> findFilteredProperties(ExampleTree exampleTree, int maxResults, int page, List<String> properties, + List<Object> findFilteredProperties(ExampleTree exampleTree, int maxResults, int page, List<String> properties, Order... orders); /** @@ -462,7 +462,7 @@ * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} */ @Deprecated - List<Object[]> findFilteredProperties(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, + List<Object> findFilteredProperties(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, List< ? extends Criterion> criteria, List<String> properties); } Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-05-20 13:12:26 UTC (rev 4037) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-05-20 14:13:06 UTC (rev 4038) @@ -436,7 +436,7 @@ /** * {@inheritDoc} */ - public List<Object[]> findFilteredProperties(T filter, int maxResults, int page, List<String> properties, + public List<Object> findFilteredProperties(T filter, int maxResults, int page, List<String> properties, Order... orders) { return getThis().findFilteredProperties(new ExampleTree(filter), maxResults, page, properties, orders); @@ -445,7 +445,7 @@ /** * {@inheritDoc} */ - public List<Object[]> findFilteredProperties(ExampleTree exampleTree, int maxResults, int page, + public List<Object> findFilteredProperties(ExampleTree exampleTree, int maxResults, int page, List<String> properties, Order... orders) { return getHibernateTemplate().execute( @@ -508,7 +508,7 @@ * {@link ExampleTree#overridePropertyFilter(String, String, Criterion)} {@inheritDoc} */ @Deprecated - public List<Object[]> findFilteredProperties(T filter, Order[] orders, + public List<Object> findFilteredProperties(T filter, Order[] orders, Map<String, ? extends FilterMetadata> metadata, int maxResults, int page, List< ? extends Criterion> criteria, List<String> properties) { @@ -778,7 +778,7 @@ * @author gcatania */ @SuppressWarnings("deprecation") - private final class LegacySupportPropertiesCallback extends LegacySupportCallback<Object[]> + private final class LegacySupportPropertiesCallback extends LegacySupportCallback<Object> { private final List<String> properties; @@ -871,7 +871,7 @@ } -class ExampleTreePropertiesCallback extends ExampleTreeCallback<Object[]> +class ExampleTreePropertiesCallback extends ExampleTreeCallback<Object> { private final List<String> properties; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2012-05-20 13:12:26 UTC (rev 4037) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2012-05-20 14:13:06 UTC (rev 4038) @@ -402,7 +402,7 @@ st1.setHeight(20d); st1.setWidth(10d); Sticker st2 = new Sticker(); - st2.setName("Object in the mirror are losing"); + st2.setName("Objects in the mirror are losing"); st2.setHeight(5d); st2.setWidth(10d); Sticker st3 = new Sticker(); @@ -423,8 +423,10 @@ @Test public void testFindFilteredProperties() { - personDAO.save(alice()); - personDAO.save(bob()); + Person alice = alice(); + Person bob = bob(); + personDAO.save(alice); + personDAO.save(bob); personDAO.save(chuck()); Address addressFilter = new Address(); @@ -432,21 +434,32 @@ Person filter = new Person(); filter.setCurrentAddress(addressFilter); - List<Object[]> foundProperties = personDAO.findFilteredProperties( + List<Object> foundProperties = personDAO.findFilteredProperties( filter, Integer.MAX_VALUE, 0, + Collections.singletonList("fiscalAddress")); + + Assert.assertEquals(foundProperties.size(), 2); + + Assert.assertEquals(foundProperties.get(0), alice.getFiscalAddress()); + Assert.assertEquals(foundProperties.get(1), bob.getFiscalAddress()); + + foundProperties = personDAO.findFilteredProperties( + filter, + Integer.MAX_VALUE, + 0, Arrays.asList("name", "birthDate"), Order.desc("name.givenName")); Assert.assertEquals(foundProperties.size(), 2); - Object[] bobsProperties = foundProperties.get(0); - Assert.assertEquals(bobsProperties[0], bob().getName()); - Assert.assertEquals(bobsProperties[1], bob().getBirthDate()); - Object[] alicesProperties = foundProperties.get(1); - Assert.assertEquals(alicesProperties[0], alice().getName()); - Assert.assertEquals(alicesProperties[1], alice().getBirthDate()); + Object[] bobsProperties = (Object[]) foundProperties.get(0); + Assert.assertEquals(bobsProperties[0], bob.getName()); + Assert.assertEquals(bobsProperties[1], bob.getBirthDate()); + Object[] alicesProperties = (Object[]) foundProperties.get(1); + Assert.assertEquals(alicesProperties[0], alice.getName()); + Assert.assertEquals(alicesProperties[1], alice.getBirthDate()); } // @Test This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2012-06-22 15:52:01
|
Revision: 4070 http://openutils.svn.sourceforge.net/openutils/?rev=4070&view=rev Author: gcatania Date: 2012-06-22 15:51:52 +0000 (Fri, 22 Jun 2012) Log Message: ----------- BSHD-15 fix example support for backref properties, added unit test Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2012-06-22 11:17:21 UTC (rev 4069) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2012-06-22 15:51:52 UTC (rev 4070) @@ -50,6 +50,7 @@ import org.hibernate.criterion.Restrictions; import org.hibernate.engine.SessionImplementor; import org.hibernate.metadata.ClassMetadata; +import org.hibernate.property.BackrefPropertyAccessor; import org.hibernate.type.Type; @@ -68,8 +69,6 @@ private PropertySelector selector; - private DefaultPropertySelector defaultSelector = DefaultPropertySelector.NOT_NULL; - private MatchMode matchMode; private boolean isIgnoreCaseEnabled; @@ -132,8 +131,11 @@ */ public ExampleTree setPropertySelector(PropertySelector selector) { - this.selector = selector; - defaultSelector = null; + if (selector == null) + { + throw new NullPointerException("Null selector specified"); + } + this.selector = new ExcludeBackrefPropertySelector(selector); // BSHD-15 return this; } @@ -143,7 +145,7 @@ */ public ExampleTree excludeZeroes() { - return setDefaultSelector(DefaultPropertySelector.NOT_NULL_OR_ZERO); + return setPropertySelector(ExampleTreePropertySelectorSupport.NOT_NULL_OR_ZERO); } /** @@ -152,7 +154,7 @@ */ public ExampleTree excludeNone() { - return setDefaultSelector(DefaultPropertySelector.ALL); + return setPropertySelector(ExampleTreePropertySelectorSupport.ALL); } /** @@ -235,17 +237,6 @@ return add(associationPath, override); } - private static enum DefaultPropertySelector { - NOT_NULL, NOT_NULL_OR_ZERO, ALL; - } - - private ExampleTree setDefaultSelector(DefaultPropertySelector defaultSelector) - { - this.defaultSelector = defaultSelector; - selector = null; - return this; - } - private class ExampleTreeWalker implements Serializable { @@ -351,24 +342,7 @@ { ex.ignoreCase(); } - if (selector != null) - { - ex.setPropertySelector(selector); - } - else - { - switch (defaultSelector) - { - case NOT_NULL_OR_ZERO : - ex.excludeZeroes(); - break; - case ALL : - ex.excludeNone(); - break; - default : - break; - } - } + ex.setPropertySelector(selector != null ? selector : new ExcludeBackrefPropertySelector()); // BSHD-15 Set<String> excludedPropertiesForPath = excludedProperties.get(associationPath); if (excludedPropertiesForPath != null) { @@ -472,3 +446,97 @@ } } + + +/** + * support for BSHD-15 + * @author gcatania + * @version $Id$ + */ +class ExcludeBackrefPropertySelector implements PropertySelector +{ + + private static final long serialVersionUID = -2803322309158823550L; + + private final PropertySelector selector; + + public ExcludeBackrefPropertySelector(PropertySelector selector) + { + this.selector = selector; + } + + public ExcludeBackrefPropertySelector() + { + selector = ExampleTreePropertySelectorSupport.NOT_NULL; + } + + public boolean include(Object propertyValue, String propertyName, Type type) + { + if (BackrefPropertyAccessor.UNKNOWN.equals(propertyValue)) + { + return false; + } + return selector.include(propertyValue, propertyName, type); + } + +} + + +/** + * workaround to {@link Example} not exposing internal property selectors + * @author gcatania + * @version $Id$ + */ +@SuppressWarnings({"serial", "static-method"}) +class ExampleTreePropertySelectorSupport +{ + + static final PropertySelector NOT_NULL = new NotNullPropertySelector(); + + static final PropertySelector ALL = new AllPropertySelector(); + + static final PropertySelector NOT_NULL_OR_ZERO = new NotNullOrZeroPropertySelector(); + + static final class AllPropertySelector implements PropertySelector + { + + public boolean include(Object object, String propertyName, Type type) + { + return true; + } + + private Object readResolve() + { + return ALL; + } + } + + static final class NotNullPropertySelector implements PropertySelector + { + + public boolean include(Object object, String propertyName, Type type) + { + return object != null; + } + + private Object readResolve() + { + return NOT_NULL; + } + } + + static final class NotNullOrZeroPropertySelector implements PropertySelector + { + + public boolean include(Object object, String propertyName, Type type) + { + return object != null && (!(object instanceof Number) || ((Number) object).longValue() != 0); + } + + private Object readResolve() + { + return NOT_NULL_OR_ZERO; + } + } + +} \ No newline at end of file Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2012-06-22 11:17:21 UTC (rev 4069) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2012-06-22 15:51:52 UTC (rev 4070) @@ -65,7 +65,7 @@ /* * TODO tests to perform: 1) find filtered with collection with zero, one or more elements 2) find filtered with - * additional criteria 3) filter metadata support 4) find filtered with id 5) find filtered with backref + * additional criteria 3) filter metadata support */ @Autowired @@ -221,7 +221,7 @@ Designer designer = priusDesigner(prius); personDAO.save(designer); - // FIXME evicting breaks the test, there must be something wrong in the hibernate mapping configuration + // evicting breaks equals() on persistent bags // personDAO.evict(designer); // cannot use load() with entity inheritance, see https://forum.hibernate.org/viewtopic.php?p=2418875 @@ -462,6 +462,44 @@ Assert.assertEquals(alicesProperties[1], alice.getBirthDate()); } + + /** + * BSHD-15 check backref property accessors + */ + @Test + public void testOneToMany() + { + Sticker st1 = new Sticker(); + st1.setName("Warning! Baby on board!"); + st1.setHeight(20d); + st1.setWidth(10d); + Sticker st2 = new Sticker(); + st2.setName("Objects in the mirror are losing"); + st2.setHeight(5d); + st2.setWidth(10d); + + Car chucksPrius = chucksPrius(chuck(), prius(toyota())); + chucksPrius.setStickers(Collections.singletonList(st1)); + Long savedId = carDAO.save(chucksPrius); + chucksPrius = carDAO.load(savedId); + // evicting breaks equals() on persistent bags + // carDAO.evict(chucksPrius); + + Car filter = chucksPrius.clone(); + // filter.setOwner(null); + // filter.setModel(null); + filter.setStickers(null); + // filter.setRegistrationDate(null); + // filter.setMarketValue(null); + // filter.setId(null); + + Car found = carDAO.findFilteredFirst(filter); + Assert.assertEquals(found, chucksPrius); + + // found = carDAO.findFilteredFirst(chucksPrius); + // Assert.assertEquals(found, chucksPrius); + } + // @Test // public void testExampleAssociations() // { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2012-06-29 16:03:15
|
Revision: 4077 http://openutils.svn.sourceforge.net/openutils/?rev=4077&view=rev Author: gcatania Date: 2012-06-29 16:03:05 +0000 (Fri, 29 Jun 2012) Log Message: ----------- BSHD-2 adding tests for filter metadata, refactoring Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java Added Paths: ----------- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-06-29 15:10:22 UTC (rev 4076) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2012-06-29 16:03:05 UTC (rev 4077) @@ -38,7 +38,6 @@ import org.aopalliance.aop.AspectException; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.hibernate.Criteria; import org.hibernate.Hibernate; @@ -166,7 +165,7 @@ */ public List<T> find(String query, Object paramValue, Type paramType) { - return getThis().find(query, new Object[]{paramValue }, new Type[]{paramType }); + return getThis().find(query, new Object[]{paramValue}, new Type[]{paramType}); } /** @@ -723,7 +722,7 @@ * @author gcatania */ @SuppressWarnings("deprecation") - private class LegacySupportCallback<R> extends ExampleTreeCallback<R> + private class LegacySupportCallback<R> extends BaseCallback<R> { private final T rootEntity; @@ -740,7 +739,7 @@ List< ? extends Criterion> additionalCriteria, Order... orders) { - super(new ExampleTree(rootEntity), maxResults, page, orders); + super(maxResults, page, orders); this.rootEntity = rootEntity; this.filterMetadata = metadata; this.additionalCriteria = additionalCriteria; @@ -749,11 +748,7 @@ @Override protected Criteria createCriteria(Session session) { - Criteria crit = super.createCriteria(session); - if (MapUtils.isNotEmpty(filterMetadata)) - { - new FilterMetadataSupport(rootEntity, filterMetadata).appendTo(crit, session); - } + Criteria crit = new FilterMetadataSupport(rootEntity, filterMetadata).create(session); if (additionalCriteria != null) { for (Criterion c : additionalCriteria) @@ -793,8 +788,12 @@ protected Criteria createCriteria(Session session) { Criteria crit = super.createCriteria(session); - if (!CollectionUtils.isEmpty(properties)) + if (CollectionUtils.isEmpty(properties)) { + crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); + } + else + { ProjectionList projectionList = Projections.projectionList(); for (String property : properties) { @@ -813,7 +812,7 @@ * @author gcatania * @param R the result class */ -class ExampleTreeCallback<R> implements HibernateCallback<List<R>> +abstract class BaseCallback<R> implements HibernateCallback<List<R>> { private final Order[] orders; @@ -822,26 +821,23 @@ private final int page; - private final ExampleTree exampleTree; - - protected ExampleTreeCallback(ExampleTree exampleTree, int maxResults, int page, Order... orders) + protected BaseCallback(int maxResults, int page, Order... orders) { - this.exampleTree = exampleTree; this.maxResults = maxResults; this.page = page; this.orders = orders; } /** - * internal method that creates the query criteria. Subclasses may override but should call {@code super()} + * internal method that creates the query criteria. * @param session the hibernate session * @return the hibernate criteria */ - protected Criteria createCriteria(Session session) + protected abstract Criteria createCriteria(Session session); + + public final List<R> doInHibernate(Session session) throws HibernateException, SQLException { - Criteria crit = exampleTree.create(session); - - crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); + Criteria crit = createCriteria(session); crit.setMaxResults(maxResults); crit.setFirstResult(maxResults * page); if (orders != null) @@ -851,13 +847,35 @@ crit.addOrder(o); } } + return crit.list(); + } +} - return crit; + +/** + * @author gcatania + * @param R the result class + */ +class ExampleTreeCallback<R> extends BaseCallback<R> +{ + + private final ExampleTree exampleTree; + + protected ExampleTreeCallback(ExampleTree exampleTree, int maxResults, int page, Order... orders) + { + super(maxResults, page, orders); + this.exampleTree = exampleTree; } - public List<R> doInHibernate(Session session) throws HibernateException, SQLException + /** + * internal method that creates the query criteria. Subclasses may override. + * @param session the hibernate session + * @return the hibernate criteria + */ + @Override + protected Criteria createCriteria(Session session) { - return createCriteria(session).list(); + return exampleTree.create(session); } } @@ -867,9 +885,12 @@ private final List<String> properties; - protected ExampleTreePropertiesCallback(ExampleTree exampleTree, int maxResults, int page, - - List<String> properties, Order... orders) + protected ExampleTreePropertiesCallback( + ExampleTree exampleTree, + int maxResults, + int page, + List<String> properties, + Order... orders) { super(exampleTree, maxResults, page, orders); this.properties = properties; @@ -879,8 +900,12 @@ protected Criteria createCriteria(Session session) { Criteria crit = super.createCriteria(session); - if (!CollectionUtils.isEmpty(properties)) + if (CollectionUtils.isEmpty(properties)) { + crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); + } + else + { ProjectionList projectionList = Projections.projectionList(); for (String property : properties) { Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2012-06-29 15:10:22 UTC (rev 4076) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2012-06-29 16:03:05 UTC (rev 4077) @@ -172,10 +172,12 @@ { continue; } - String leftover = key.substring(path.length() + 1); - // skip subproperties + // need to take into account leading dot for subproperties + int trimLength = path.isEmpty() ? 0 : path.length() + 1; + String leftover = key.substring(trimLength); if (leftover.contains(".")) { + // skip subproperties continue; } result.put(leftover, filterMetadata.get(key)); Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java 2012-06-29 15:10:22 UTC (rev 4076) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java 2012-06-29 16:03:05 UTC (rev 4077) @@ -105,6 +105,11 @@ return prius; } + public static CarModel prius() + { + return prius(toyota()); + } + public static Designer priusDesigner(CarModel prius) { FullName fullName = new FullName("Ken", "Shiro"); @@ -134,6 +139,11 @@ return bobsPrius; } + public static Car bobsPrius() + { + return bobsPrius(bob(), prius()); + } + public static Car chucksPrius(Owner chuck, CarModel prius) { Car chucksPrius = new Car(); Added: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java (rev 0) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java 2012-06-29 16:03:05 UTC (rev 4077) @@ -0,0 +1,155 @@ +/** + * + * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package it.openutils.hibernate.test; + +import static it.openutils.hibernate.test.EntityBuilder.bobsPrius; +import static it.openutils.hibernate.test.EntityBuilder.chuck; +import static it.openutils.hibernate.test.EntityBuilder.chucksPrius; +import static it.openutils.hibernate.test.EntityBuilder.prius; +import static it.openutils.hibernate.test.EntityBuilder.toyota; +import it.openutils.hibernate.example.FilterMetadata; +import it.openutils.hibernate.test.dao.CarDAO; +import it.openutils.hibernate.test.dao.CarMakerDAO; +import it.openutils.hibernate.test.dao.PersonDAO; +import it.openutils.hibernate.test.dao.StickerDAO; +import it.openutils.hibernate.test.model.Car; +import it.openutils.hibernate.test.model.Sticker; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; +import org.testng.Assert; +import org.testng.annotations.Test; + + +/** + * @author gcatania + */ +@SuppressWarnings("deprecation") +@ContextConfiguration(locations = "/spring-tests.xml") +public class HibernateDAOFilterMetadataTest extends AbstractTransactionalTestNGSpringContextTests +{ + + @Autowired + private PersonDAO personDAO; + + @Autowired + private CarMakerDAO carMakerDAO; + + @Autowired + private CarDAO carDAO; + + @Autowired + private StickerDAO stickerDAO; + + @Test + public void testFindFilterMetadataBasic() + { + Sticker st1 = new Sticker(); + st1.setName("Warning! Baby on board!"); + st1.setHeight(20d); + st1.setWidth(10d); + Sticker st2 = new Sticker(); + st2.setName("Objects in the mirror are losing"); + st2.setHeight(5d); + st2.setWidth(10d); + Sticker st3 = new Sticker(); + st3.setName("(tribal tattoo sticker)"); + st3.setHeight(35d); + st3.setWidth(18d); + + Car chucksPrius = chucksPrius(chuck(), prius(toyota())); + chucksPrius.setStickers(Arrays.asList(st1, st2, st3)); + carDAO.save(chucksPrius); + carDAO.evict(chucksPrius); + + FilterMetadata fm = new FilterMetadata() + { + + public void createFilter(Criteria criteria, String propertyName, Object propertyValue) + { + criteria.add(Restrictions.gt(propertyName, 18d)); + criteria.add(Restrictions.lt(propertyName, 22d)); + } + }; + List<Sticker> found = stickerDAO.findFiltered(new Sticker(), Collections.singletonMap("height", fm)); + Assert.assertEquals(found.size(), 1); + Assert.assertEquals(found.get(0), st1); + } + + @Test + public void testFindFilterMetadataOnChildProperty() + { + Sticker st1 = new Sticker(); + st1.setName("Warning! Baby on board!"); + st1.setHeight(20d); + st1.setWidth(10d); + Sticker st2 = new Sticker(); + st2.setName("Objects in the mirror are losing"); + st2.setHeight(5d); + st2.setWidth(10d); + Sticker st3 = new Sticker(); + st3.setName("(tribal tattoo sticker)"); + st3.setHeight(35d); + st3.setWidth(18d); + + Car chucksPrius = chucksPrius(chuck(), prius(toyota())); + chucksPrius.setStickers(Arrays.asList(st1, st2, st3)); + + Car bobsPrius = bobsPrius(); + bobsPrius.setStickers(Arrays.asList(st2.clone())); + + carDAO.save(chucksPrius); + carDAO.evict(chucksPrius); + carDAO.save(bobsPrius); + carDAO.evict(bobsPrius); + + FilterMetadata fm = new FilterMetadata() + { + + public void createFilter(Criteria criteria, String propertyName, Object propertyValue) + { + criteria.add(Restrictions.gt(propertyName, 18d)); + criteria.add(Restrictions.lt(propertyName, 22d)); + } + }; + Car filter = new Car(); + filter.setStickers(Collections.singletonList(new Sticker())); + List<Car> found = carDAO.findFiltered(filter, Collections.singletonMap("stickers.height", fm)); + Assert.assertEquals(found.size(), 1); + Car actual = found.get(0); + Assert.assertEquals(actual.getStickers().size(), 3); + // full fledged equality fails because of Object.equals() on PersistentBag + Assert.assertEquals(actual.getOwner().getName(), chucksPrius.getOwner().getName()); + } + +} Property changes on: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2012-06-29 16:06:06
|
Revision: 4078 http://openutils.svn.sourceforge.net/openutils/?rev=4078&view=rev Author: gcatania Date: 2012-06-29 16:05:56 +0000 (Fri, 29 Jun 2012) Log Message: ----------- licenses Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java 2012-06-29 16:03:05 UTC (rev 4077) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java 2012-06-29 16:05:56 UTC (rev 4078) @@ -1,6 +1,28 @@ /** - * Copyright (c) Energeya LLC. All rights reserved. http://www.energeya.com + * + * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + package it.openutils.hibernate.example; import java.lang.reflect.Array; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java 2012-06-29 16:03:05 UTC (rev 4077) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java 2012-06-29 16:05:56 UTC (rev 4078) @@ -1,6 +1,28 @@ /** - * Copyright (c) Energeya LLC. All rights reserved. http://www.energeya.com + * + * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + package it.openutils.hibernate.selectors; import java.io.Serializable; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java 2012-06-29 16:03:05 UTC (rev 4077) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java 2012-06-29 16:05:56 UTC (rev 4078) @@ -1,6 +1,28 @@ /** - * Copyright (c) Energeya LLC. All rights reserved. http://www.energeya.com + * + * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + package it.openutils.hibernate.test; import it.openutils.hibernate.test.model.Address; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gca...@us...> - 2013-03-14 14:25:47
|
Revision: 4203 http://openutils.svn.sourceforge.net/openutils/?rev=4203&view=rev Author: gcatania Date: 2013-03-14 14:25:36 +0000 (Thu, 14 Mar 2013) Log Message: ----------- BSHD-20 add flag to change identifier restriction behavior, tests Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java Added Paths: ----------- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2013-03-12 09:13:58 UTC (rev 4202) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2013-03-14 14:25:36 UTC (rev 4203) @@ -45,6 +45,7 @@ import org.hibernate.criterion.Example.PropertySelector; import org.hibernate.criterion.MatchMode; import org.hibernate.metadata.ClassMetadata; +import org.hibernate.proxy.HibernateProxy; import org.hibernate.type.Type; @@ -67,6 +68,8 @@ private boolean isIgnoreCaseEnabled; + private boolean jointPropertyAndIdentifierFiltering; + private final Map<String, Set<String>> excludedProperties = new HashMap<String, Set<String>>(); private final Map<String, List<Criterion>> additionalConditions = new HashMap<String, List<Criterion>>(); @@ -182,6 +185,18 @@ } /** + * The default behaviour of this class ignores properties set on a filter entity with a non-null identifier. + * Invoking this method reverses the default behaviour by enabling property filtering regardless of identifier + * presence. + * @return this, for method concatenation + */ + public ExampleTree enableJointPropertyAndIdentifierFiltering() + { + jointPropertyAndIdentifierFiltering = true; + return this; + } + + /** * add an additional criterion for properties of the subentity at the given path * @param associationPath the association path with respect to the filter entity * @param criterion the criterion to add @@ -257,9 +272,12 @@ entity, classMetadata, sessionFactory.getCurrentSession()); // BSHD-11 - if (isIdSet) + if (isIdSet && (HibernateProxy.class.isInstance(entity) || !jointPropertyAndIdentifierFiltering)) { - // BSHD-20 if the identifier is set on a property, do not impose further conditions + // BSHD-20 only impose the identifier conditions in the following cases: + // 1) if the current entity is an hibernate proxy (because we assume the identifier restriction is + // enough and the entity is already aligned + // 2) if the corresponding flag has not been explicitly activated return; } Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2013-03-12 09:13:58 UTC (rev 4202) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2013-03-14 14:25:36 UTC (rev 4203) @@ -38,6 +38,7 @@ import org.hibernate.SessionFactory; import org.hibernate.criterion.Example; import org.hibernate.metadata.ClassMetadata; +import org.hibernate.proxy.HibernateProxy; import org.hibernate.type.Type; @@ -109,16 +110,7 @@ private void createSubExamples(Criteria crit, Object entity, String[] walkedProperties) { ClassMetadata classMetadata = ExampleTreeUtils.getClassMetadata(entity, sessionFactory); - boolean isIdSet = ExampleTreeUtils.addIdentifierRestriction( - crit, - entity, - classMetadata, - sessionFactory.getCurrentSession()); // BSHD-11 - if (isIdSet) - { - // BSHD-20 if the identifier is set on a property, do not impose further conditions - return; - } + ExampleTreeUtils.addIdentifierRestriction(crit, entity, classMetadata, sessionFactory.getCurrentSession()); // BSHD-11 String path = ExampleTreeUtils.getPath(walkedProperties); Map<String, FilterMetadata> currFilterMetadata = getFilterMetadata(path); @@ -192,6 +184,14 @@ private Example example(Object entity, Set<String> propertiesToExclude) { + if (HibernateProxy.class.isInstance(entity)) + { + // BSHD-19 javassist hibernate proxies do not seem to work with examples (property values are not + // returned) + HibernateProxy proxy = (HibernateProxy) entity; + entity = proxy.getHibernateLazyInitializer().getImplementation(); + } + Example ex = Example.create(entity); ex.setPropertySelector(new ExcludeBackrefPropertySelector(ExampleTreePropertySelectorSupport.NOT_NULL)); // BSHD-15 for (String propertyName : propertiesToExclude) Added: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java (rev 0) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java 2013-03-14 14:25:36 UTC (rev 4203) @@ -0,0 +1,142 @@ +/** + * + * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) + * + * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl-2.1.html + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package it.openutils.hibernate.test; + +import it.openutils.hibernate.example.ExampleTree; +import it.openutils.hibernate.test.dao.FooDAO; +import it.openutils.hibernate.test.model.Bar; +import it.openutils.hibernate.test.model.Foo; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + + +/** + * @author gcatania + */ +@ContextConfiguration(locations = "/spring-tests.xml") +public class HibernateDAOFindIdentifierTest extends AbstractTransactionalTestNGSpringContextTests +{ + + @Autowired + private FooDAO fooDAO; + + @BeforeClass + protected final void preloadData() + { + executeSqlScript("/preload-data.sql", false); + } + + @AfterClass + protected final void cleanupData() + { + super.deleteFromTables("foo", "bar"); + } + + private List<Foo> searchFoos(Long barId, String barStr, Long fooId, String fooStr) + { + Bar barFilter = new Bar(); + barFilter.setId(barId); + barFilter.setS(barStr); + Foo fooFilter = new Foo(); + fooFilter.setId(fooId); + fooFilter.setBar(barFilter); + fooFilter.setS(fooStr); + return fooDAO.findFiltered(fooFilter); + } + + private Foo findFoo(Long barId, String barStr, Long fooId, String fooStr) + { + List<Foo> found = searchFoos(barId, barStr, fooId, fooStr); + Assert.assertEquals(found.size(), 1); + return found.get(0); + } + + private void dontFindFoo(Long barId, String barStr, Long fooId, String fooStr) + { + List<Foo> found = searchFoos(barId, barStr, fooId, fooStr); + Assert.assertEquals(found.size(), 0); + } + + @Test + public void testFindWithParentId() + { + Foo foundFoo = findFoo(1L, null, null, "fooX_X"); + Assert.assertEquals(foundFoo.getId().longValue(), 3L); + } + + @Test + public void testFindWithParentProperty() + { + Foo foundFoo = findFoo(null, "bar1", null, "fooX_X"); + Assert.assertEquals(foundFoo.getId().longValue(), 3L); + } + + @Test + public void testDontFindWithParentId() + { + dontFindFoo(1L, null, null, "foo2_1"); + } + + @Test + public void testDontFindWithParentProperty() + { + dontFindFoo(null, "bar1", null, "foo2_1"); + } + + @Test + public void testFindWithBothParentIdAndPropertyKeepingInMindTheMagicFlagIsDisabled() + { + List<Foo> foundFoos = searchFoos(2L, "bar1", null, null); + Assert.assertEquals(foundFoos.size(), 3); + for (Foo foo : foundFoos) + { + Assert.assertEquals(foo.getBar().getId().longValue(), 2L); + } + } + + @Test + public void testDontFindWithBothParentIdAndPropertyKeepingInMindTheMagicFlagIsEnabled() + { + Bar barFilter = new Bar(); + barFilter.setId(2L); + barFilter.setS("bar1"); + Foo fooFilter = new Foo(); + fooFilter.setBar(barFilter); + ExampleTree et = new ExampleTree(fooFilter); + et.enableJointPropertyAndIdentifierFiltering(); + List<Foo> foundFoos = fooDAO.findFiltered(et); + Assert.assertEquals(foundFoos.size(), 0); + } + +} Property changes on: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java 2013-03-12 09:13:58 UTC (rev 4202) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java 2013-03-14 14:25:36 UTC (rev 4203) @@ -36,6 +36,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; import org.testng.Assert; +import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -59,6 +60,12 @@ executeSqlScript("/preload-data.sql", false); } + @AfterClass + protected final void cleanupData() + { + super.deleteFromTables("foo", "bar"); + } + private List<Foo> findFoo(String s, Bar bar) { Foo filter = new Foo(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fg...@us...> - 2013-11-15 15:18:39
|
Revision: 4453 http://openutils.svn.sourceforge.net/openutils/?rev=4453&view=rev Author: fgiust Date: 2013-11-15 15:18:35 +0000 (Fri, 15 Nov 2013) Log Message: ----------- license header Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResult.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultImpl.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultUtils.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/BarDAO.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarDAO.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarMakerDAO.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/FooDAO.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/PersonDAO.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/StickerDAO.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Address.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Bar.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Car.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarMaker.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarModel.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CurrencyAmount.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Designer.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Employee.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Foo.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/FullName.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Owner.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Sticker.java trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Title.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAO.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.dao.hibernate; import it.openutils.hibernate.example.ExampleTree; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.dao.hibernate; import it.openutils.hibernate.example.ExampleTree; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.example; import it.openutils.hibernate.selectors.ExcludeBackrefPropertySelector; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.example; import java.lang.reflect.Array; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadata.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.example; import org.hibernate.Criteria; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.example; import it.openutils.hibernate.selectors.ExcludeBackrefPropertySelector; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResult.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResult.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResult.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.paging; import java.io.Serializable; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultImpl.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultImpl.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.paging; import java.util.Collection; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultUtils.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultUtils.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/paging/PaginatedResultUtils.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.paging; import java.util.Collection; Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/selectors/ExcludeBackrefPropertySelector.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.selectors; import java.io.Serializable; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/EntityBuilder.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test; import it.openutils.hibernate.test.model.Address; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFilterMetadataTest.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test; import static it.openutils.hibernate.test.EntityBuilder.bobsPrius; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOFindIdentifierTest.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test; import it.openutils.hibernate.example.ExampleTree; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOHierarchyTest.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test; import it.openutils.dao.hibernate.HibernateDAOImpl; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOLazyLoadTest.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test; import it.openutils.hibernate.test.dao.BarDAO; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/HibernateDAOPersistenceTest.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test; import static it.openutils.hibernate.test.EntityBuilder.alice; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/BarDAO.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/BarDAO.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/BarDAO.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.dao; import it.openutils.dao.hibernate.HibernateDAO; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarDAO.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarDAO.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarDAO.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.dao; import it.openutils.dao.hibernate.HibernateDAO; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarMakerDAO.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarMakerDAO.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/CarMakerDAO.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.dao; import it.openutils.dao.hibernate.HibernateDAO; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/FooDAO.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/FooDAO.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/FooDAO.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.dao; import it.openutils.dao.hibernate.HibernateDAO; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/PersonDAO.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/PersonDAO.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/PersonDAO.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.dao; import it.openutils.dao.hibernate.HibernateDAO; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/StickerDAO.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/StickerDAO.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/dao/StickerDAO.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.dao; import it.openutils.dao.hibernate.HibernateDAO; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Address.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Address.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Address.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import javax.persistence.Column; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Bar.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Bar.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Bar.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import javax.persistence.Entity; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Car.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Car.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Car.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import java.util.ArrayList; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarMaker.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarMaker.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarMaker.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import java.util.ArrayList; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarModel.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarModel.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CarModel.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import javax.persistence.CascadeType; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CurrencyAmount.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CurrencyAmount.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/CurrencyAmount.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import javax.persistence.Embeddable; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Designer.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Designer.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Designer.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import java.util.HashSet; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Employee.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Employee.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Employee.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import java.util.Calendar; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Foo.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Foo.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Foo.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import javax.persistence.Column; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/FullName.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/FullName.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/FullName.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import javax.persistence.Column; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Owner.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Owner.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Owner.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import java.util.HashSet; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Person.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import java.util.Calendar; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Sticker.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Sticker.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Sticker.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; import javax.persistence.Column; Modified: trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Title.java =================================================================== --- trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Title.java 2013-11-14 10:41:35 UTC (rev 4452) +++ trunk/openutils-bshd5/src/test/java/it/openutils/hibernate/test/model/Title.java 2013-11-15 15:18:35 UTC (rev 4453) @@ -2,7 +2,7 @@ * * openutils base Spring-Hibernate DAO (http://www.openmindlab.com/lab/products/bshd5.html) * - * Copyright(C) 2005-2012, Openmind S.r.l. http://www.openmindonline.it + * Copyright(C) 2005-2013, Openmind S.r.l. http://www.openmindonline.it * * * This library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - package it.openutils.hibernate.test.model; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |