package com.w11k.lsql.query; import com.w11k.lsql.LSql; import com.w11k.lsql.PojoMapper; import com.w11k.lsql.converter.Converter; import java.sql.PreparedStatement; import java.util.List; import java.util.Map; public class PojoQuery<T> extends AbstractQuery<T> { private final PojoMapper<T> pojoMapper; private final Class<T> pojoClass; public PojoQuery(LSql lSql, PreparedStatement preparedStatement, Class<T> pojoClass) { super(lSql, preparedStatement); this.pojoMapper = PojoMapper.getFor(pojoClass); this.pojoClass = pojoClass; } @SuppressWarnings("unchecked") @Override public List<T> toTree() { return (List<T>) new QueryToTreeConverter(this, new PojoEntityCreator<T>(this.pojoClass)).getTree(); } @Override protected T createEntity() { return this.pojoMapper.newInstance(); } @Override protected void checkConformity(Map<String, Converter> converters) { this.pojoMapper.checkConformity(converters); } @Override protected void setValue(T entity, String name, Object value) { this.pojoMapper.setValue(entity, name, value); } }