package org.raidenjpa.spec.criteria;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.persistence.criteria.Selection;
import javax.persistence.criteria.Subquery;
import javax.persistence.metamodel.EntityType;
public class RaidenCriteriaQuery<T> implements CriteriaQuery<T> {
private Set<Root<?>> roots = new LinkedHashSet<>();
public RaidenCriteriaQuery(Class<T> resultClass) {
// TODO Auto-generated constructor stub
}
public <X> Root<X> from(Class<X> entityClass) {
Root<X> root = new RaidenRoot<X>(entityClass);
root.alias(""+roots.size());
roots.add(root);
return root;
}
public <X> Root<X> from(EntityType<X> entity) {
// TODO Auto-generated method stub
return null;
}
public <U> Subquery<U> subquery(Class<U> type) {
// TODO Auto-generated method stub
return null;
}
public Set<Root<?>> getRoots() {
return roots;
}
public Selection<T> getSelection() {
// TODO Auto-generated method stub
return null;
}
public Predicate getRestriction() {
// TODO Auto-generated method stub
return null;
}
public List<Expression<?>> getGroupList() {
// TODO Auto-generated method stub
return null;
}
public Predicate getGroupRestriction() {
// TODO Auto-generated method stub
return null;
}
public boolean isDistinct() {
// TODO Auto-generated method stub
return false;
}
public Class<T> getResultType() {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> select(Selection<? extends T> selection) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> multiselect(Selection<?>... selections) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> multiselect(List<Selection<?>> selectionList) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> where(Expression<Boolean> restriction) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> where(Predicate... restrictions) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> groupBy(Expression<?>... grouping) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> groupBy(List<Expression<?>> grouping) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> having(Expression<Boolean> restriction) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> having(Predicate... restrictions) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> orderBy(Order... o) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> orderBy(List<Order> o) {
// TODO Auto-generated method stub
return null;
}
public CriteriaQuery<T> distinct(boolean distinct) {
// TODO Auto-generated method stub
return null;
}
public List<Order> getOrderList() {
// TODO Auto-generated method stub
return null;
}
public Set<ParameterExpression<?>> getParameters() {
// TODO Auto-generated method stub
return null;
}
public String toJpql() {
StringBuilder sb = new StringBuilder();
sb.append("FROM ");
Iterator<Root<?>> it = roots.iterator();
while(it.hasNext()){
RaidenRoot<?> raidenRoot = (RaidenRoot<?>) it.next();
sb.append(raidenRoot.getClassName()).append(" ").append(raidenRoot.getAlias());
if(it.hasNext()){
sb.append(", ");
}
}
return sb.toString();
}
}