package org.quaere.jpa;
import java.util.ArrayList;
import java.util.Iterator;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import org.quaere.QueryEngine;
import org.quaere.Queryable;
import org.quaere.expressions.Identifier;
public class QueryableEntity<T> implements Queryable<T> {
private final EntityManager entityManager;
private final Class<T> entityClass;
public QueryableEntity(EntityManager entityManager, Class<T> entityClass) {
this.entityManager = entityManager;
this.entityClass = entityClass;
}
public QueryEngine createQueryEngine() {
return new JpaQueryEngine(entityManager);
}
public Identifier getSourceIdentifier(Identifier identifier) {
return identifier;
}
public Iterator<T> iterator() {
return new ArrayList<T>().iterator();
}
public String getEntityName() {
Entity entityAnnotation = entityClass.getAnnotation(Entity.class);
if (entityAnnotation != null && isNotEmpty(entityAnnotation.name())) {
return entityAnnotation.name();
} else {
return entityClass.getSimpleName();
}
}
private boolean isNotEmpty(String s) {
return s == null ? false : !"".equals(s);
}
}