ModSQL
Class Aggregate_MinMax
java.lang.Object
|
+--ModSQL.AbstractFunction
|
+--ModSQL.AbstractAggregate
|
+--ModSQL.Aggregate_MinMax
- All Implemented Interfaces:
- Aggregate, Function
- final class Aggregate_MinMax
- extends AbstractAggregate
Implementation of SQL aggregate functions MIN() and MAX().
- Author:
- chris.studholme@utoronto.ca
|
Field Summary |
private boolean |
max
Function type: true for MAX(), false for MIN(). |
private Object |
minmax
Current minimum/maximum value. |
|
Method Summary |
Object |
evaluate(boolean aggregate)
Evaluate parameter and check for new minimum/maximum. |
static Function |
forName(String name)
Returns a new instance of this class if name is "min" or "max". |
String |
functionName()
Returns "MIN" or "MAX" depending on how this instances was initialized. |
int |
getMaxResultSize()
Return value is the same as for the parameter, or -1 if there is
no parameter. |
int |
getSQLType()
This method returns the SQL type of the parameter, or NULL if there is
no parameter. |
void |
optimize()
Prepare the function for use. |
void |
reset()
Reset the minimum/maximum object to NULL. |
| Methods inherited from class ModSQL.AbstractFunction |
addParameter, convertToSQLType, evaluate, evaluateConstantParameters, evaluateOrder, evaluateParameters, evaluateParameters, getCompatableType, getObjectSQLType, getParameter, getParameterCount, postfixParameters, toString |
| Methods inherited from class java.lang.Object |
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait |
max
private boolean max
- Function type: true for MAX(), false for MIN().
minmax
private Object minmax
- Current minimum/maximum value.
Aggregate_MinMax
public Aggregate_MinMax(boolean max)
- Constructor.
- Parameters:
max - true for MAX(), false for MIN()
forName
public static Function forName(String name)
- Returns a new instance of this class if name is "min" or "max". The
instance is initialized as needed to represent the desired function.
- Parameters:
name - name of function to find- Returns:
- instance of this class or null if name does not match
optimize
public void optimize()
throws SQLException
Prepare the function for use. MIN/MAX accepts at most one parameter
and requires a parameter if DISTINCT is requested.
- Overrides:
optimize in class AbstractFunction
- Throws:
SQLException - if the parameters are invalid
functionName
public String functionName()
- Returns "MIN" or "MAX" depending on how this instances was initialized.
- Overrides:
functionName in class AbstractFunction
- Returns:
- name of function
getSQLType
public int getSQLType()
throws SQLException
- This method returns the SQL type of the parameter, or NULL if there is
no parameter.
- Returns:
- SQL type of data to be returned
- Throws:
SQLException - if a database-access error occurs
getMaxResultSize
public int getMaxResultSize()
throws SQLException
- Return value is the same as for the parameter, or -1 if there is
no parameter.
- Returns:
- maximum size of String returned or -1 if unknown
- Throws:
SQLException - if a database-access error occurs
reset
public void reset()
throws SQLException
- Reset the minimum/maximum object to NULL.
- Overrides:
reset in class AbstractAggregate
- Throws:
SQLException - if a database error occurs
evaluate
public Object evaluate(boolean aggregate)
throws SQLException,
EndOfTable
Evaluate parameter and check for new minimum/maximum. This method
always returns the current/new minimum/maximum value, regardless of
aggregate. If aggregate is true, the parameter is not evaluated.
- Parameters:
aggregate - true to return final aggregate value- Returns:
- current minimum/maximum object
- Throws:
SQLException - if a database-access error occursEndOfTable - if thrown by a parameter