
com.jfirer.jsql.model.QueryModel Maven / Gradle / Ivy
package com.jfirer.jsql.model;
import com.jfirer.jsql.annotation.TableDef;
import com.jfirer.jsql.metadata.Page;
import com.jfirer.jsql.metadata.TableEntityInfo;
import com.jfirer.jsql.transfer.resultset.impl.BeanTransfer;
import java.util.LinkedList;
import java.util.List;
public class QueryModel extends Model
{
private List selectProperties;
private List orderByProperties;
private volatile BeanTransfer beanTransfer;
private Page page;
class OrderByEntry
{
final String orderPropertyName;
final boolean desc;
OrderByEntry(String orderPropertyName, boolean desc)
{
this.orderPropertyName = orderPropertyName;
this.desc = desc;
}
}
public QueryModel select(String propertyName)
{
if ( selectProperties == null )
{
selectProperties = new LinkedList();
}
selectProperties.add(propertyName);
return this;
}
public QueryModel orderBy(String orderPropertyName, boolean desc)
{
if ( orderByProperties == null )
{
orderByProperties = new LinkedList();
}
orderByProperties.add(new OrderByEntry(orderPropertyName, desc));
return this;
}
@Override
public BeanTransfer getBeanTransfer()
{
if ( selectProperties == null )
{
selectProperties = new LinkedList();
for (TableEntityInfo.ColumnInfo columnInfo : TableEntityInfo.parse(entityClass).getPropertyNameKeyMap().values())
{
selectProperties.add(columnInfo.getPropertyName());
}
}
if ( beanTransfer == null )
{
synchronized (this)
{
if ( beanTransfer == null )
{
beanTransfer = new BeanTransfer();
beanTransfer.initialize(entityClass);
beanTransfer.preSetColumnTransfer(selectProperties, TableEntityInfo.parse(entityClass));
}
}
}
return beanTransfer;
}
@Override
public String _getSql()
{
StringBuilder cache = new StringBuilder();
cache.append("select ");
if ( selectProperties == null )
{
selectProperties = new LinkedList();
for (TableEntityInfo.ColumnInfo columnInfo : TableEntityInfo.parse(entityClass).getPropertyNameKeyMap().values())
{
selectProperties.add(columnInfo.getPropertyName());
}
}
TableEntityInfo tableEntityInfo = TableEntityInfo.parse(entityClass);
for (String each : selectProperties)
{
String columnName = tableEntityInfo.getPropertyNameKeyMap().get(each).getColumnName();
cache.append(columnName).append(',');
}
cache.setLength(cache.length()-1);
cache.append(' ');
cache.append("from ");
String tableName = entityClass.getAnnotation(TableDef.class).name();
cache.append(tableName);
setWhereColumns(cache);
if ( orderByProperties != null )
{
cache.append(" order by ");
for (OrderByEntry each : orderByProperties)
{
String columnName = tableEntityInfo.getPropertyNameKeyMap().get(each.orderPropertyName).getColumnName();
cache.append(columnName).append(each.desc ? " desc" : " asc");
cache.append(',');
}
cache.setLength(cache.length()-1);
}
return cache.toString();
}
@Override
public List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy