|
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();
- ...
[truncated message content] |
|
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 crea...
[truncated message content] |
|
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/jav...
[truncated message content] |