
com.parship.roperty.persistence.jpa.RopertyValueDAO Maven / Gradle / Ivy
package com.parship.roperty.persistence.jpa;
import org.apache.commons.lang3.Validate;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import java.util.Collections;
import java.util.List;
public class RopertyValueDAO {
private QueryBuilderDelegate queryBuilderDelegate;
Long getNumberOfValues(RopertyKey ropertyKey) {
Validate.notNull(queryBuilderDelegate, "Query builder delegate must not be null");
EntityManager entityManager = queryBuilderDelegate.createEntityManager();
Validate.notNull(entityManager, "Entity manager must not be null");
TypedQuery typedQuery = queryBuilderDelegate.count(ropertyKey);
if (typedQuery == null) {
entityManager.close();
throw new RopertyPersistenceException(String.format("Typed query for counting of key '%s' must not be null", ropertyKey.getId()));
}
Long result = typedQuery.getSingleResult();
if (result == null) {
throw new RopertyPersistenceException("Single result of query must not be null");
}
entityManager.close();
return result;
}
List loadRopertyValues(RopertyKey ropertyKey) {
Validate.notNull(queryBuilderDelegate, "Query builder delegate must not be null");
EntityManager entityManager = queryBuilderDelegate.createEntityManager();
Validate.notNull(entityManager, "Entity manager must not be null");
EqualsCriterion equalsCriterion = new EqualsCriterion()
.withAttributeName("key")
.withComparison(ropertyKey);
TypedQuery typedQuery = queryBuilderDelegate.equality(equalsCriterion);
if (typedQuery == null) {
entityManager.close();
throw new RopertyPersistenceException(String.format("Typed query for equality of key '%s' must not be null", ropertyKey.getId()));
}
List ropertyValues = typedQuery.getResultList();
entityManager.close();
Validate.notNull(ropertyValues, "Result list of Roperty values for key '%s' was null", ropertyKey.getId());
return Collections.unmodifiableList(ropertyValues);
}
RopertyValue loadRopertyValue(RopertyKey ropertyKey, String pattern, String changeSet) {
Validate.notNull(queryBuilderDelegate, "Query builder delegate must not be null");
EntityManager entityManager = queryBuilderDelegate.createEntityManager();
Validate.notNull(entityManager, "Entity manager must not be null");
EqualsCriterion keyCriterion = new EqualsCriterion()
.withAttributeName("key")
.withComparison(ropertyKey);
EqualsCriterion patternCriterion = new EqualsCriterion()
.withAttributeName("pattern")
.withComparison(pattern);
EqualsCriterion changeSetCriterion = new EqualsCriterion()
.withAttributeName("changeSet")
.withComparison(changeSet);
TypedQuery typedQuery = queryBuilderDelegate.equality(
keyCriterion,
patternCriterion,
changeSetCriterion);
if (typedQuery == null) {
entityManager.close();
throw new RopertyPersistenceException(String.format("Typed query for equality of key '%s' must not be null", ropertyKey.getId()));
}
List ropertyValues = typedQuery.getResultList();
int numValues = ropertyValues.size();
RopertyValue ropertyValue;
if (numValues == 0) {
ropertyValue = null;
} else if (numValues == 1) {
ropertyValue = ropertyValues.get(0);
} else {
throw new RopertyPersistenceException(String.format("More than one database entry found for key '%s' and pattern '%s'", ropertyKey, pattern));
}
entityManager.close();
return ropertyValue;
}
public void setQueryBuilderDelegate(QueryBuilderDelegate queryBuilderDelegate) {
Validate.notNull(queryBuilderDelegate, "Query builder delegate must not be null");
this.queryBuilderDelegate = queryBuilderDelegate;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy