CustomerDaoBase.java
// license-header java merge-point
//
// Attention: Generated code! Do not modify by hand! hibernate4=true hibernateVersion=4.3.6.Final
// Generated by hibernate/SpringHibernateDaoBase.vsl in andromda-spring-cartridge on 08/18/2014 15:29:43-0400. Do not modify by hand!.
//
package org.andromda.samples.carrental.customers;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.annotation.Resource;
import org.andromda.samples.carrental.PrincipalStore;
import org.andromda.samples.carrental.PropertySearch;
import org.andromda.samples.carrental.Search;
import org.andromda.spring.PaginationResult;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Transformer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
/**
* <p>
* Base Spring DAO Class: is able to create, update, remove, load, and find
* objects of type <code>Customer</code>.
* </p>
*
* @see Customer
*/
@Repository
public abstract class CustomerDaoBase
implements CustomerDao
{
/**
* For backwards compatibility with HibernateDao method
* @deprecated Use LogFactory.getLog on each subclass, for the correct class name
* Apache commons logging logger used by all subclasses
*/
@Deprecated
protected Log logger = LogFactory.getLog(CustomerDaoBase.class);
@Resource
private SessionFactory sessionFactory;
/**
* @param sessionFactoryIn
*/
public void setSessionFactory(SessionFactory sessionFactoryIn) {
this.sessionFactory = sessionFactoryIn;
}
/**
* @return SessionFactory
*/
protected SessionFactory getSessionFactory() {
return this.sessionFactory;
}
/**
* @return currentSession
*/
protected Session getSession() {
return this.sessionFactory.getCurrentSession();
}
/**
* For backwards compatibility with HibernateDao method
* @deprecated Use this.sessionFactory.getCurrentSession() instead
* @param ignore boolean - always create new session if needed
* @return currentSession
*/
@Deprecated
protected Session getSession(boolean ignore) {
return this.getSession();
}
/**
* {@inheritDoc}
*/
@Override
public Object get(final int transform, final Long id)
{
if (id == null)
{
throw new IllegalArgumentException(
"Customer.get - 'id' can not be null");
}
final Object entity = this.sessionFactory.getCurrentSession().get(CustomerImpl.class, id);
return transformEntity(transform, (Customer)entity);
}
/**
* {@inheritDoc}
*/
@Override
public Customer get(Long id)
{
return (Customer)this.get(TRANSFORM_NONE, id);
}
/**
* {@inheritDoc}
*/
@Override
public Object load(final int transform, final Long id)
{
if (id == null)
{
throw new IllegalArgumentException(
"Customer.load - 'id' can not be null");
}
final Object entity = this.sessionFactory.getCurrentSession().get(CustomerImpl.class, id);
return transformEntity(transform, (Customer)entity);
}
/**
* {@inheritDoc}
*/
@Override
public Customer load(Long id)
{
return (Customer)this.load(TRANSFORM_NONE, id);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> loadAll()
{
return (Collection<Customer>) this.loadAll(CustomerDao.TRANSFORM_NONE);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> loadAll(final int transform)
{
return this.loadAll(transform, -1, -1);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> loadAll(final int pageNumber, final int pageSize)
{
return this.loadAll(CustomerDao.TRANSFORM_NONE, pageNumber, pageSize);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize)
{
final Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(CustomerImpl.class);
if (pageNumber > 0 && pageSize > 0)
{
criteria.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
criteria.setMaxResults(pageSize);
}
final Collection<?> results = criteria.list();
this.transformEntities(transform, results);
return results;
}
/**
* firstResult = (pageNumber - 1) * pageSize
* @param pageNumber
* @param pageSize
* @return firstResult
*/
protected int calculateFirstResult(int pageNumber, int pageSize)
{
int firstResult = 0;
if (pageNumber > 0)
{
firstResult = (pageNumber - 1) * pageSize;
}
return firstResult;
}
/**
* prePersist event - This method is called before creating the entity
*/
protected void _prePersist(final Customer customer)
{
}
/**
* postPersist event - This method is called after creating the entity
*/
protected void _postPersist(final Customer customer)
{
}
/**
* preUpdate event - This method is called before updating the entity
*/
protected void _preUpdate(final Customer customer)
{
}
/**
* postUpdate event - This method is called after updating the entity
*/
protected void _postUpdate(final Customer customer)
{
}
/**
* preRemove event - This method is called before deleting the entity
*/
protected void _preRemove(final Customer customer)
{
}
/**
* postRemove event - This method is called after deleting the entity
*/
protected void _postRemove(final Customer customer)
{
}
/**
* {@inheritDoc}
*/
@Override
public Customer create(Customer customer)
{
return (Customer)this.create(CustomerDao.TRANSFORM_NONE, customer);
}
/**
* {@inheritDoc}
*/
@Override
public Object create(final int transform, final Customer customer)
{
if (customer == null)
{
throw new IllegalArgumentException(
"Customer.create - 'customer' can not be null");
}
//prePersist event
_prePersist(customer);
this.sessionFactory.getCurrentSession().save(customer);
//postPersist event
_postPersist(customer);
return this.transformEntity(transform, customer);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> create(final Collection<Customer> entities)
{
return (Collection<Customer>) create(CustomerDao.TRANSFORM_NONE, entities);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> create(final int transform, final Collection<Customer> entities)
{
if (entities == null)
{
throw new IllegalArgumentException(
"Customer.create - 'entities' can not be null");
}
Collection<Object> transformed = new ArrayList<Object>();
for (Customer entity : entities)
{
transformed.add(create(transform, entity));
}
return transformed;
}
/**
* {@inheritDoc}
*/
@Override
public Customer create(
String name,
String customerNo,
String password)
{
return (Customer)this.create(CustomerDao.TRANSFORM_NONE, name, customerNo, password);
}
/**
* {@inheritDoc}
*/
@Override
public Object create(
final int transform,
String name,
String customerNo,
String password)
{
Customer entity = new CustomerImpl();
entity.setName(name);
entity.setCustomerNo(customerNo);
entity.setPassword(password);
return this.create(transform, entity);
}
/**
* {@inheritDoc}
*/
@Override
public void update(Customer customer)
{
if (customer == null)
{
throw new IllegalArgumentException(
"Customer.update - 'customer' can not be null");
}
//preUpdate event
_preUpdate(customer);
this.sessionFactory.getCurrentSession().update(customer);
//postUpdate event
_postUpdate(customer);
}
/**
* {@inheritDoc}
*/
@Override
public void update(final Collection<Customer> entities)
{
if (entities == null)
{
throw new IllegalArgumentException(
"Customer.update - 'entities' can not be null");
}
for (Customer entity : entities)
{
update(entity);
}
}
/**
* {@inheritDoc}
*/
@Override
public void remove(Customer customer)
{
if (customer == null)
{
throw new IllegalArgumentException(
"Customer.remove - 'customer' can not be null");
}
//preRemove event
_preRemove(customer);
this.sessionFactory.getCurrentSession().delete(customer);
//postRemove event
_postRemove(customer);
}
/**
* {@inheritDoc}
*/
@Override
public void remove(Long id)
{
if (id == null)
{
throw new IllegalArgumentException(
"Customer.remove - 'id' can not be null");
}
Customer entity = this.get(id);
if (entity != null)
{
this.remove(entity);
}
}
/**
* {@inheritDoc}
*/
@Override
public void remove(Collection<Customer> entities)
{
if (entities == null)
{
throw new IllegalArgumentException(
"Customer.remove - 'entities' can not be null");
}
for (Customer entity : entities)
{
//preRemove event
_preRemove(entity);
this.sessionFactory.getCurrentSession().delete(entity);
//postRemove event
_postRemove(entity);
}
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findAll()
throws CustomerException
{
return (Collection<Customer>)this.findAll(CustomerDao.TRANSFORM_NONE);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> findAll(final int transform)
throws CustomerException
{
return this.findAll(transform, -1, -1);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findAll(final String queryString)
throws CustomerException
{
return (Collection<Customer>)this.findAll(CustomerDao.TRANSFORM_NONE, queryString);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findAll(final int pageNumber, final int pageSize)
throws CustomerException
{
return (Collection<Customer>) this.findAll(CustomerDao.TRANSFORM_NONE, pageNumber, pageSize);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findAll(final String queryString, final int pageNumber, final int pageSize)
throws CustomerException
{
return (Collection<Customer>) this.findAll(CustomerDao.TRANSFORM_NONE, queryString, pageNumber, pageSize);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> findAll(final int transform, final String queryString)
throws CustomerException
{
return this.findAll(transform, queryString, -1, -1);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> findAll(final int transform, final int pageNumber, final int pageSize)
throws CustomerException
{
return this.findAll(transform, "from CustomerImpl as customer", pageNumber, pageSize);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings("unchecked")
public Collection<?> findAll(final int transform, final String queryString, int pageNumber, int pageSize)
throws CustomerException
{
Query queryObject = this.sessionFactory.getCurrentSession().createQuery(queryString);
if (pageNumber > 0 && pageSize > 0)
{
queryObject.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
queryObject.setMaxResults(pageSize);
}
List results = queryObject.list();
transformEntities(transform, results);
return results;
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findByCustomerNo(String customerNo)
throws CustomerException
{
return (Collection<Customer>)this.findByCustomerNo(CustomerDao.TRANSFORM_NONE, customerNo);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> findByCustomerNo(final int transform, final String customerNo)
throws CustomerException
{
return this.findByCustomerNo(transform, -1, -1, customerNo);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findByCustomerNo(final String queryString, final String customerNo)
throws CustomerException
{
return (Collection<Customer>)this.findByCustomerNo(CustomerDao.TRANSFORM_NONE, queryString, customerNo);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findByCustomerNo(final int pageNumber, final int pageSize, final String customerNo)
throws CustomerException
{
return (Collection<Customer>) this.findByCustomerNo(CustomerDao.TRANSFORM_NONE, pageNumber, pageSize, customerNo);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({"unchecked"})
public Collection<Customer> findByCustomerNo(final String queryString, final int pageNumber, final int pageSize, final String customerNo)
throws CustomerException
{
return (Collection<Customer>) this.findByCustomerNo(CustomerDao.TRANSFORM_NONE, queryString, pageNumber, pageSize, customerNo);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> findByCustomerNo(final int transform, final String queryString, final String customerNo)
throws CustomerException
{
return this.findByCustomerNo(transform, queryString, -1, -1, customerNo);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> findByCustomerNo(final int transform, final int pageNumber, final int pageSize, final String customerNo)
throws CustomerException
{
return this.findByCustomerNo(transform, "SELECT DISTINCT OBJECT(customer) FROM Customer as customer WHERE customer.customerNo = ?1", pageNumber, pageSize, customerNo);
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings("unchecked")
public Collection<?> findByCustomerNo(final int transform, final String queryString, int pageNumber, int pageSize, final String customerNo)
throws CustomerException
{
Query queryObject = this.sessionFactory.getCurrentSession().createQuery(queryString);
queryObject.setParameter("customerNo", customerNo);
if (pageNumber > 0 && pageSize > 0)
{
queryObject.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
queryObject.setMaxResults(pageSize);
}
List results = queryObject.list();
transformEntities(transform, results);
return results;
}
/**
* Allows transformation of entities into value objects
* (or something else for that matter), when the <code>transform</code>
* flag is set to one of the constants defined in <code>CustomerDao</code>, please note
* that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
* will be returned.
*
* If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
*
* @param transform one of the constants declared in {@link CustomerDao}
* @param entity an entity that was found
* @return the transformed entity (i.e. new value object, etc)
* @see CustomerDao#transformEntity(int, Customer)
*/
@Override
public Object transformEntity(final int transform, final Customer entity)
{
Object target = null;
if (entity != null)
{
switch (transform)
{
case CustomerDao.TRANSFORM_NONE : // fall-through
default:
target = entity;
}
}
return target;
}
/**
* {@inheritDoc}
*/
@Override
public void transformEntities(final int transform, final Collection<?> entities)
{
switch (transform)
{
case CustomerDao.TRANSFORM_NONE : // fall-through
default:
// do nothing;
}
}
/**
* @see CustomerDao#toEntities(Collection)
*/
@Override
public void toEntities(final Collection<?> results)
{
if (results != null)
{
CollectionUtils.transform(results, this.ENTITYTRANSFORMER);
}
}
/**
* This anonymous transformer is designed to transform report query results
* (which result in an array of entities) to {@link Customer}
* using the Jakarta Commons-Collections Transformation API.
*/
private Transformer ENTITYTRANSFORMER =
new Transformer()
{
@Override
public Object transform(Object input)
{
Object result = null;
if (input instanceof Object[])
{
final Object[] rows = (Object[])input;
result = toEntity(rows);
}
else if (input instanceof Customer)
{
result = input;
}
return result;
}
};
/**
* @param row
* @return Customer
*/
protected Customer toEntity(Object[] row)
{
Customer target = null;
if (row != null)
{
final int numberOfObjects = row.length;
for (int ctr = 0; ctr < numberOfObjects; ctr++)
{
final Object object = row[ctr];
if (object instanceof Customer)
{
target = (Customer)object;
break;
}
}
}
return target;
}
/**
* Gets the current <code>principal</code> if one has been set,
* otherwise returns <code>null</code>.
*
* @return the current principal
*/
protected Principal getPrincipal()
{
return PrincipalStore.get();
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings({ "unchecked" })
public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search)
{
search.setPageNumber(pageNumber);
search.setPageSize(pageSize);
final PropertySearch propertySearch = new PropertySearch(
this.sessionFactory.getCurrentSession(), CustomerImpl.class, search);
final List results = propertySearch.executeAsList();
this.transformEntities(transform, results);
return new PaginationResult(results.toArray(new Object[results.size()]), propertySearch.getTotalCount());
}
/**
* {@inheritDoc}
*/
@Override
public PaginationResult search(final int pageNumber, final int pageSize, final Search search)
{
return this.search(CustomerDao.TRANSFORM_NONE, pageNumber, pageSize, search);
}
/**
* {@inheritDoc}
*/
@Override
public Collection<?> search(final int transform, final Search search)
{
final PropertySearch propertySearch = new PropertySearch(
this.sessionFactory.getCurrentSession(), CustomerImpl.class, search);
final Collection<?> results = propertySearch.executeAsList();
this.transformEntities(transform, results);
return results;
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings("unchecked")
public Collection<Customer> search(final Search search)
{
return (Collection<Customer>) this.search(CustomerDao.TRANSFORM_NONE, search);
}
/**
* Executes and returns the given Hibernate queryObject as a {@link PaginationResult} instance.
* @param queryObject
* @param transform
* @param pageNumber
* @param pageSize
* @return PaginationResult
*/
@SuppressWarnings({ "unchecked" })
protected PaginationResult getPaginationResult(
final Query queryObject,
final int transform, int pageNumber, int pageSize)
{
final ScrollableResults scrollableResults = queryObject.scroll();
scrollableResults.last();
int totalCount = scrollableResults.getRowNumber();
totalCount = totalCount >= 0 ? totalCount + 1 : 0;
if (pageNumber > 0 && pageSize > 0)
{
queryObject.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
queryObject.setMaxResults(pageSize);
}
// Unchecked transformation because Set object is reused, cannot be strongly typed.
@SuppressWarnings("rawtypes")
Collection results = new ArrayList(queryObject.list());
transformEntities(transform, results);
return new PaginationResult(results.toArray(new Object[results.size()]), totalCount);
}
/**
* Create or Update the <code>customer</code> instance in the persistent store.
* @param customer
*/
@Override
public Customer createOrUpdate(Customer customer)
{
if(customer.getId() == null)
{
return (Customer)this.create(TRANSFORM_NONE,customer);
}
else
{
this.update(customer);
return customer;
}
}
// spring-hibernate-dao-base merge-point
}