Hullaballoonatic
09/22/2018, 8:37 PMHullaballoonatic
09/22/2018, 8:37 PMclass WhereClause(
var conditional: String = emptyString,
var table: DatabaseTable = DatabaseTable.NONE,
var postgreFunction: String = emptyString,
var comparison: String = emptyString,
var fieldName: String = emptyString,
var tableName: String = table.tableName
) {
override fun toString(): String {
val whereClause = StringBuilder(SPACE)
if (conditional.isNotEmpty)
whereClause.append(conditional).append(SPACE)
if (postgreFunction.isNotEmpty && postgreFunction !== ANY)
whereClause.append(postgreFunction).append(OPEN_FUNCTION)
if (tableName.isNotEmpty)
whereClause.append(tableName).append(TABLE_FIELD_SEPARATOR)
whereClause.append(fieldName)
if (postgreFunction.isNotEmpty && postgreFunction !== ANY)
whereClause.append(CLOSE_FUNCTION)
whereClause.append(SPACE).append(comparison)
if (comparison !== IS_NULL && comparison !== IS_NOT_NULL) {
whereClause.append(SPACE)
if (postgreFunction === ANY)
whereClause.append(postgreFunction).append(OPEN_FUNCTION)
whereClause.append(PARAMETER_PLACEHOLDER)
if (postgreFunction === ANY)
whereClause.append(CLOSE_FUNCTION)
}
return whereClause.toString()
}
fun validate(initialClause: Boolean): Boolean =
when {
!initialClause && conditional.isEmpty -> false
fieldName.isBlank -> false
comparison.isEmpty -> false
else -> true
}
companion object {
operator fun invoke(init: WhereClause.() -> Unit) = WhereClause().apply(init)
}
}
Hullaballoonatic
09/22/2018, 8:40 PMgcx11
09/22/2018, 8:42 PMShawn
09/22/2018, 8:42 PMHullaballoonatic
09/22/2018, 8:43 PMShawn
09/22/2018, 8:43 PMShawn
09/22/2018, 8:43 PMShawn
09/22/2018, 8:44 PMHullaballoonatic
09/22/2018, 8:44 PM