From 85490a5f712c89a27fb8aaea10dd634af30b65bd Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 24 Aug 2012 12:06:20 +0200 Subject: add checkstyle, javadoc --- src/main/java/nu/xss/jpa/dao/GenericJpaDao.java | 194 +++++++++++++++++++----- 1 file changed, 153 insertions(+), 41 deletions(-) (limited to 'src/main/java/nu/xss/jpa/dao/GenericJpaDao.java') diff --git a/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java b/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java index 0c06505..20be33f 100644 --- a/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java +++ b/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java @@ -1,3 +1,23 @@ +/** + * This file is part of xss-jpa. + * + * Copyright 2012 Sebastian Schmelzer + * http://xss.nu/ + * + * 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. + * + * 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 library. If not, see . + * + */ package nu.xss.jpa.dao; import java.io.Serializable; @@ -25,17 +45,33 @@ import nu.xss.jpa.query.filter.Filter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * The Class GenericJpaDao. + * + * @param + * the element type + * @param + * the key type + */ public abstract class GenericJpaDao, K> implements Dao, Serializable { + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 4998055731089977476L; - protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** The logger. */ + private Logger logger = LoggerFactory.getLogger(this.getClass()); + /** The entity manager. */ @PersistenceContext - protected EntityManager entityManager; + private EntityManager entityManager; - protected Class entity; + /** The entity. */ + private Class entityClass; + /** + * Instantiates a new generic jpa dao. + */ @SuppressWarnings("unchecked") public GenericJpaDao() { ParameterizedType genericSuperclass = (ParameterizedType) getClass() @@ -44,23 +80,26 @@ public abstract class GenericJpaDao, K> implements if (type instanceof Class) { - this.entity = (Class) type; + this.entityClass = (Class) type; } else if (type instanceof ParameterizedType) { - this.entity = (Class) ((ParameterizedType)type).getRawType(); + this.entityClass = (Class) ((ParameterizedType) type).getRawType(); } } - public void save(E entity) { + @Override + public void save(final E entity) { entityManager.persist(entity); logger.info("Saved entity: {}.", entity.toString()); } - public void merge(E entity) { + @Override + public void merge(final E entity) { entityManager.merge(entity); logger.info("Updated unmanaged entity: {}.", entity.toString()); } - public void delete(E entity) { + @Override + public void delete(final E entity) { final E persistentEntity = findById(entity.getId()); if (persistentEntity != null) { entityManager.remove(persistentEntity); @@ -68,8 +107,9 @@ public abstract class GenericJpaDao, K> implements logger.info("Deleted entity: {}.", entity.toString()); } - public E findById(K id) { - return entityManager.find(entity, id); + @Override + public final E findById(final K id) { + return entityManager.find(entityClass, id); } @Override @@ -79,73 +119,114 @@ public abstract class GenericJpaDao, K> implements } @Override - public int count(Filter... filter) { + public int count(final Filter... filter) { // TODO Auto-generated method stub return 0; } @Override - public List findAll() { + public final List findAll() { return find(null, null, null); } @Override - public List findAll(Sort sort) { + public final List findAll(final Sort sort) { return find(null, sort, null); } @Override - public List findAll(Pagination pagination) { + public final List findAll(final Pagination pagination) { return find(null, null, pagination); } @Override - public List findAll(Sort sort, Pagination pagination) { + public final List findAll(final Sort sort, final Pagination pagination) { return find(null, sort, pagination); } @Override - public List findAll(Filter... filter) { + public final List findAll(final Filter... filter) { return find(null, null, null, filter); } @Override - public List findAll(Sort sort, Filter... filter) { + public final List findAll(final Sort sort, final Filter... filter) { return find(null, sort, null, filter); } @Override - public List findAll(Pagination pagination, Filter... filter) { + public final List findAll(final Pagination pagination, final Filter... filter) { return find(null, null, pagination, filter); } @Override - public List findAll(Sort sort, Pagination pagination, Filter... filter) { + public final List findAll(final Sort sort, final Pagination pagination, final Filter... filter) { return find(null, sort, pagination, filter); } - protected List find(CriteriaQuery query) { + /** + * Find. + * + * @param query + * the query + * @return the list + */ + protected final List find(final CriteriaQuery query) { return find(query, null, null); } - protected List find(CriteriaQuery query, Pagination pagination) { + /** + * Find. + * + * @param query + * the query + * @param pagination + * the pagination + * @return the list + */ + protected final List find(final CriteriaQuery query, final Pagination pagination) { return find(query, null, pagination); } - protected List find(CriteriaQuery query, Sort sort) { + /** + * Find. + * + * @param query + * the query + * @param sort + * the sort + * @return the list + */ + protected final List find(final CriteriaQuery query, final Sort sort) { return find(query, sort, null); } - protected List find(CriteriaQuery query, Sort sort, Pagination pagination, Filter... filter) { + /** + * Find. + * + * @param query + * the query + * @param sort + * the sort + * @param pagination + * the pagination + * @param filter + * the filter + * @return the list + */ + protected List find(final CriteriaQuery query, final Sort sort, final Pagination pagination, + final Filter... filter) { + Root root; + CriteriaQuery q = query; // check if we have a 'simple' query - if (query == null) { - query = createQuery(); + if (q == null) { + q = createQuery(); } - root = query.from(this.entity); - query.select(root); + root = q.from(this.entityClass); + q.select(root); if (filter != null) { Set predicates = new HashSet(); @@ -165,31 +246,45 @@ public abstract class GenericJpaDao, K> implements // TODO: Multcolum sort if (sort != null) { if (sort.isAsc()) { - query.orderBy(getCriteriaBuilder().asc(root.get(sort.getColumn()))); + q.orderBy(getCriteriaBuilder().asc(root.get(sort.getColumn()))); } else { - query.orderBy(getCriteriaBuilder().desc(root.get(sort.getColumn()))); + q.orderBy(getCriteriaBuilder().desc(root.get(sort.getColumn()))); } } // Result pagination - TypedQuery q = entityManager.createQuery(query); + TypedQuery tq = entityManager.createQuery(q); if (pagination != null) { - if ( pagination.getCount() > 0 ) { - q.setFirstResult(pagination.getCount()); + if (pagination.getCount() > 0) { + tq.setFirstResult(pagination.getCount()); } - if ( pagination.getOffset() > 0) { - q.setMaxResults(pagination.getOffset()); + if (pagination.getOffset() > 0) { + tq.setMaxResults(pagination.getOffset()); } } - return q.getResultList(); + return tq.getResultList(); } - protected E findSingle(CriteriaQuery query) { + /** + * Find single. + * + * @param query + * the query + * @return the e + */ + protected final E findSingle(final CriteriaQuery query) { return entityManager.createQuery(query).getSingleResult(); } - protected E findSingleOrNull(CriteriaQuery query) { + /** + * Find single or null. + * + * @param query + * the query + * @return the e + */ + protected final E findSingleOrNull(final CriteriaQuery query) { try { return findSingle(query); } catch (final NoResultException e) { @@ -200,7 +295,14 @@ public abstract class GenericJpaDao, K> implements } } - protected E findSingleFirstOrNull(CriteriaQuery query) { + /** + * Find single first or null. + * + * @param query + * the query + * @return the e + */ + protected final E findSingleFirstOrNull(final CriteriaQuery query) { try { return findSingle(query); } catch (final NoResultException e) { @@ -212,12 +314,22 @@ public abstract class GenericJpaDao, K> implements } - protected CriteriaBuilder getCriteriaBuilder() { + /** + * Gets the criteria builder. + * + * @return the criteria builder + */ + protected final CriteriaBuilder getCriteriaBuilder() { return entityManager.getCriteriaBuilder(); } - protected CriteriaQuery createQuery() { - CriteriaQuery c = getCriteriaBuilder().createQuery(this.entity); + /** + * Creates the query. + * + * @return the criteria query + */ + protected final CriteriaQuery createQuery() { + CriteriaQuery c = getCriteriaBuilder().createQuery(this.entityClass); return c; } -- cgit v1.2.3-55-g7522