public abstract class BaseCaseStatement<ThisType extends BaseCaseStatement<ThisType>> extends Expression implements Verifiable<ThisType>
"CASE ... END"
clausesEMPTY
ALL_SYMBOL, NULL_VALUE, QUESTION_MARK
Modifier | Constructor and Description |
---|---|
protected |
BaseCaseStatement(SqlObject operand) |
Modifier and Type | Method and Description |
---|---|
ThisType |
addCustomWhen(Object test,
Object result)
Adds a "WHEN" clause to the "CASE" statement.
|
ThisType |
addElse(Object result)
Adds an "ELSE" clause to the "CASE" statement.
|
ThisType |
addElseNull()
Adds an "ELSE NULL" clause to the "CASE" statement.
|
protected void |
appendCustomIfNotNull(AppendableExt app,
SqlObject obj)
Appends the given custom clause to the given AppendableExt, handling
null and enclosing parens. |
protected void |
appendNestedClauses(AppendableExt app,
SqlObjectList<? extends com.healthmarketscience.sqlbuilder.NestableClause> nestedClauses)
Appends the given nested clauses to the given AppendableExt, handling
empty nested clauses and enclosing parens.
|
void |
appendTo(AppendableExt app)
Appends this object to the given AppendableExt.
|
protected static boolean |
areEmpty(SqlObjectList<? extends com.healthmarketscience.sqlbuilder.NestableClause> nestedClauses)
Determines if any of the given clauses are non-empty.
|
protected void |
closeParen(AppendableExt app)
Appends a close parenthesis to the given AppendableExt if disableParens is
true , otherwise does nothing. |
protected void |
collectSchemaObjects(ValidationContext vContext)
Used during Query.validate() calls to collect the dbschema objects
referenced in a query.
|
protected ThisType |
getThisType() |
boolean |
hasParens()
Returns
true iff the output of this instance would include
surrounding parentheses, false otherwise. |
protected static boolean |
hasParens(SqlObjectList<? extends com.healthmarketscience.sqlbuilder.NestableClause> nestedClauses)
Determines if any of the given clauses are non-empty.
|
boolean |
isDisableParens()
Returns whether or not wrapping parentheses are disabled for this clause
(for clauses which utilize wrapping parentheses).
|
boolean |
isEmpty()
Returns
true iff the output of this instance would be an
empty expression, false otherwise. |
protected void |
openParen(AppendableExt app)
Appends an open parenthesis to the given AppendableExt if disableParens is
true , otherwise does nothing. |
ThisType |
validate()
Runs validation on this verifiable object.
|
void |
validate(ValidationContext vContext)
Runs validation on this verifiable object using a previously collected
ValidationContext.
|
setDisableParens
collectSchemaObjects, doValidate, toString
toString, toString
protected BaseCaseStatement(SqlObject operand)
public boolean isEmpty()
true
iff the output of this instance would be an
empty expression, false
otherwise.
Default implementation returns false
.
public ThisType addCustomWhen(Object test, Object result)
All Object
-> SqlObject
conversions handled by
Converter.toColumnSqlObject(Object)
.
test
- the custom condition to test for this "WHEN" clauseresult
- the result to output if this "WHEN" clause is selectedpublic ThisType addElse(Object result)
Object
-> SqlObject
conversions handled by
Converter.toColumnSqlObject(Object)
.
result
- the result to output if no other "WHEN" clause is selectedpublic ThisType addElseNull()
public final ThisType validate() throws ValidationException
Verifiable
validate
in interface Verifiable<ThisType extends BaseCaseStatement<ThisType>>
ValidationException
public void validate(ValidationContext vContext) throws ValidationException
Verifiable
In general, this method will only be called internally, not by users.
validate
in interface Verifiable<ThisType extends BaseCaseStatement<ThisType>>
vContext
- handle to the current, filled-in validation contextValidationException
protected void collectSchemaObjects(ValidationContext vContext)
SqlObject
collectSchemaObjects
in class SqlObject
vContext
- handle to the current validation contextpublic void appendTo(AppendableExt app) throws IOException
Appendee
appendTo
in interface Appendee
appendTo
in class AppendeeObject
app
- the AppendableExt to which this class should append itselfIOException
- if the append failsprotected final ThisType getThisType()
public boolean isDisableParens()
false
.public boolean hasParens()
true
iff the output of this instance would include
surrounding parentheses, false
otherwise.
Default implementation returns !isEmpty() && !isDisableParens()
.
protected static boolean areEmpty(SqlObjectList<? extends com.healthmarketscience.sqlbuilder.NestableClause> nestedClauses)
false
if at least one clause is non-empty, true
otherwiseprotected static boolean hasParens(SqlObjectList<? extends com.healthmarketscience.sqlbuilder.NestableClause> nestedClauses)
false
if at least one clause is non-empty, true
otherwiseprotected void openParen(AppendableExt app) throws IOException
true
, otherwise does nothing.IOException
protected void closeParen(AppendableExt app) throws IOException
true
, otherwise does nothing.IOException
protected void appendCustomIfNotNull(AppendableExt app, SqlObject obj) throws IOException
null
and enclosing parens.IOException
protected void appendNestedClauses(AppendableExt app, SqlObjectList<? extends com.healthmarketscience.sqlbuilder.NestableClause> nestedClauses) throws IOException
IOException
Copyright © 2006–2021 OpenHMS. All rights reserved.