O
- Type being producedpublic abstract class SQLGroupMapper<O> extends AbstractContexed implements ResultMapper<O>
GroupingSQLValue
![]() |
![]() |
![]() |
![]() |
Modifier and Type | Field and Description |
---|---|
protected boolean |
qualify |
protected boolean |
use_alias |
conn
Constructor and Description |
---|
SQLGroupMapper(AppContext c)
Make a TableMapper
|
Modifier and Type | Method and Description |
---|---|
void |
addAverage(SQLExpression<? extends java.lang.Number> field,
java.lang.String name)
Add a column average to the table output
|
<T> SQLValue<T> |
addClause(SQLValue<T> orig,
java.lang.String name)
Add a column to the table output
|
<T> void |
addCount(GroupingSQLValue<T> expr,
java.lang.String name)
Add a column counting distinct values.
|
void |
addCount(java.lang.String name) |
void |
addKey(GroupingSQLValue<?> exp,
java.lang.String name)
add a field both as a clause and as an group by key
Note the
SQLValue can implement GroupingSQLValue to customise behaviours. |
protected boolean |
addKeyList(java.lang.StringBuilder sb)
add group by clauses corresponding to key list
|
void |
addMaxDate(SQLExpression<? extends java.util.Date> field,
java.lang.String name)
Add a column max date to the table output
|
void |
addMaxNumber(SQLExpression<? extends java.lang.Number> field,
java.lang.String name)
Add a column max to the table output
|
void |
addMinDate(SQLExpression<? extends java.util.Date> field,
java.lang.String name)
Add a column min date to table output
|
void |
addMinNumber(SQLExpression<? extends java.lang.Number> field,
java.lang.String name)
Add a column min to the table output
|
void |
addSQLAverage(SQLExpression<? extends java.lang.Number> field,
java.lang.String name)
Add a column AVG to the table output
The average is applied in SQL so cannot be combined/merged with other groups or
other queries.
|
<T> void |
addSQLCount(SQLValue<T> expr,
java.lang.String name)
Add a column counting distinct values.
|
void |
addSum(SQLExpression<? extends java.lang.Number> field,
java.lang.String name)
Add a column sum to the table output
|
java.lang.String |
getModify()
provide an override GROUP/ORDER by clause
null to use default order from filters
|
java.util.List<PatternArgument> |
getModifyParameters(java.util.List<PatternArgument> list)
Add parameters for the GROUP/ORDER clause to a list.
|
SQLFilter |
getRequiredFilter()
Get an additional Filter required to make the target string
work properly.
|
java.lang.String |
getTarget()
get the target clause of the SQL query.
|
protected java.lang.Object |
getTargetObject(int index,
java.sql.ResultSet rs) |
java.util.List<PatternArgument> |
getTargetParameters(java.util.List<PatternArgument> list)
Add parameters for the target clause to a list.
|
boolean |
setQualify(boolean qualify)
Request that field names should be qualified with the table
name where appropriate.
|
void |
setUseAlias(boolean val) |
getContext, getLogger, resetLogger
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
makeDefault, makeObject
public SQLGroupMapper(AppContext c)
c
- AppContext
public boolean setQualify(boolean qualify)
ResultMapper
setQualify
in interface ResultMapper<O>
public void setUseAlias(boolean val)
protected java.lang.Object getTargetObject(int index, java.sql.ResultSet rs) throws DataException, java.sql.SQLException
DataException
java.sql.SQLException
public void addKey(GroupingSQLValue<?> exp, java.lang.String name) throws InvalidKeyException
SQLValue
can implement GroupingSQLValue
to customise behaviours. Literal constants
are not legal in group-by clauses so GroupingSQLValue
must be implemented when the SQL representation is a constant.exp
- name
- InvalidKeyException
public <T> SQLValue<T> addClause(SQLValue<T> orig, java.lang.String name)
T
- java type producedorig
- Expression to evaluatename
- name of resultant columnpublic final void addSum(SQLExpression<? extends java.lang.Number> field, java.lang.String name)
field
- field to sumname
- name for result columnpublic final void addAverage(SQLExpression<? extends java.lang.Number> field, java.lang.String name)
field
- field to averagename
- name for result columnpublic final void addSQLAverage(SQLExpression<? extends java.lang.Number> field, java.lang.String name)
addAverage(SQLExpression, String)
unless this is the case.field
- field to sumname
- name for result columnpublic final void addMinNumber(SQLExpression<? extends java.lang.Number> field, java.lang.String name)
field
- field to minname
- name for result columnpublic final void addMinDate(SQLExpression<? extends java.util.Date> field, java.lang.String name)
field
- field to minname
- name for result columnpublic final void addMaxNumber(SQLExpression<? extends java.lang.Number> field, java.lang.String name)
field
- field to maxname
- name for result columnpublic final void addMaxDate(SQLExpression<? extends java.util.Date> field, java.lang.String name)
field
- field to maxname
- name for result columnpublic final void addCount(java.lang.String name)
public final <T> void addSQLCount(SQLValue<T> expr, java.lang.String name)
expr
- name
- public final <T> void addCount(GroupingSQLValue<T> expr, java.lang.String name) throws InvalidKeyException
T
- expr
- name
- InvalidKeyException
public java.lang.String getTarget()
ResultMapper
getTarget
in interface ResultMapper<O>
public java.util.List<PatternArgument> getTargetParameters(java.util.List<PatternArgument> list)
ResultMapper
getTargetParameters
in interface ResultMapper<O>
list
- to modifypublic java.util.List<PatternArgument> getModifyParameters(java.util.List<PatternArgument> list)
ResultMapper
getModifyParameters
in interface ResultMapper<O>
list
- to modifyprotected boolean addKeyList(java.lang.StringBuilder sb)
CannotGroupException
public final java.lang.String getModify()
ResultMapper
getModify
in interface ResultMapper<O>
public SQLFilter getRequiredFilter()
ResultMapper
getRequiredFilter
in interface ResultMapper<O>