@Override public boolean isTimeBased() { return _delegate.isTimeBased(); }
@Override public ColumnType getExpectedColumnType(ColumnType type) { if (type.isTimeBased()) { return type; } return ColumnType.TIMESTAMP; }
@Override public boolean isTimeBased() { return _delegate.isTimeBased(); }
@Override public ColumnType getExpectedColumnType(ColumnType type) { if (type.isTimeBased()) { return type; } return ColumnType.TIMESTAMP; }
private static boolean isTimeBased(ColumnType columnType, Object operand) { if (columnType == null) { return TimeComparator.isTimeBased(operand); } return columnType.isTimeBased(); }
private static boolean isTimeBased(ColumnType columnType, Object operand) { if (columnType == null) { return TimeComparator.isTimeBased(operand); } return columnType.isTimeBased(); }
if (columnType.isTimeBased()) { if (columnType == ColumnType.DATE) { value = DATE_PATTERN.matcher(value).replaceFirst("$1");
if (columnType.isTimeBased()) { if (columnType == ColumnType.DATE) { value = DATE_PATTERN.matcher(value).replaceFirst("$1");
if (columnType.isTimeBased()) { if (columnType == ColumnType.DATE) { format = DateUtils.createDateFormat("yyyy-MM-dd");
return NumberComparator.toNumber(value); if (columnType.isTimeBased()) { final SimpleDateFormat dateFormat; if (columnType == ColumnType.DATE) {
return NumberComparator.toNumber(value); if (columnType.isTimeBased()) { final SimpleDateFormat dateFormat; if (columnType == ColumnType.DATE) {
if (columnType.isTimeBased()) { if (columnType == ColumnType.DATE) { format = DateUtils.createDateFormat("yyyy-MM-dd");
} else if (expectedColumnType.isBoolean()) { result = BooleanComparator.toBoolean(token); } else if (expectedColumnType.isTimeBased()) { result = FormatHelper.parseSqlTime(expectedColumnType, token); } else {
if (type != null && type.isTimeBased() && value instanceof String) { value = FormatHelper.parseSqlTime(type, (String) value);
} else if (expectedColumnType.isBoolean()) { result = BooleanComparator.toBoolean(token); } else if (expectedColumnType.isTimeBased()) { result = FormatHelper.parseSqlTime(expectedColumnType, token); } else {
private Object convert(final String value, final ColumnType type) { if (value == null) { return null; } if (type == null) { return value; } final Object result; if (type.isNumber()) { result = NumberComparator.toNumber(value); } else if (type.isBoolean()) { result = BooleanComparator.toBoolean(value); } else if (type.isTimeBased()) { result = TimeComparator.toDate(value); } else { result = value; } if (result == null) { throw new IllegalStateException("Failed to convert value '" + value + "' to type: " + type); } return result; }
@Override public String rewriteFilterItem(FilterItem item) { final SelectItem selectItem = item.getSelectItem(); final Object itemOperand = item.getOperand(); final OperatorType operator = item.getOperator(); if (null != selectItem && itemOperand != null) { ColumnType columnType = selectItem.getExpectedColumnType(); if (columnType != null) { if (columnType.isTimeBased()) { // special logic for DB2 based time operands. StringBuilder sb = new StringBuilder(); sb.append(selectItem.getSameQueryAlias(true)); final Object operand = FilterItem.appendOperator(sb, itemOperand, operator); if (operand instanceof SelectItem) { final String selectItemString = ((SelectItem) operand).getSameQueryAlias(true); sb.append(selectItemString); } else { Date date = TimeComparator.toDate(itemOperand); if (date == null) { throw new IllegalStateException("Could not convert " + itemOperand + " to date"); } final String sqlValue = FormatHelper.formatSqlTime(columnType, date, true, "('", "')"); sb.append(sqlValue); } return sb.toString(); } } } return super.rewriteFilterItem(item); }
private Object convert(final String value, final ColumnType type) { if (value == null) { return null; } if (type == null) { return value; } final Object result; if (type.isNumber()) { result = NumberComparator.toNumber(value); } else if (type.isBoolean()) { result = BooleanComparator.toBoolean(value); } else if (type.isTimeBased()) { result = TimeComparator.toDate(value); } else { result = value; } if (result == null) { throw new IllegalStateException("Failed to convert value '" + value + "' to type: " + type); } return result; }
@Override public String rewriteFilterItem(FilterItem item) { final SelectItem selectItem = item.getSelectItem(); final Object itemOperand = item.getOperand(); final OperatorType operator = item.getOperator(); if (null != selectItem && itemOperand != null) { ColumnType columnType = selectItem.getExpectedColumnType(); if (columnType != null) { if (columnType.isTimeBased()) { // special logic for DB2 based time operands. StringBuilder sb = new StringBuilder(); sb.append(selectItem.getSameQueryAlias(true)); final Object operand = FilterItem.appendOperator(sb, itemOperand, operator); if (operand instanceof SelectItem) { final String selectItemString = ((SelectItem) operand).getSameQueryAlias(true); sb.append(selectItemString); } else { Date date = TimeComparator.toDate(itemOperand); if (date == null) { throw new IllegalStateException("Could not convert " + itemOperand + " to date"); } final String sqlValue = FormatHelper.formatSqlTime(columnType, date, true, "('", "')"); sb.append(sqlValue); } return sb.toString(); } } } return super.rewriteFilterItem(item); }
@Override public Query optimizeQuery(final Query q, final ValidationCategory category) { assert category == ValidationCategory.VALID; if (_lastModifiedThresholdMillis != -1L) { final Column column = lastModifiedColumn.getPhysicalColumn(); if (column.getType().isTimeBased()) { q.where(column, OperatorType.GREATER_THAN, createQueryOperand()); } else { q.where(column, OperatorType.GREATER_THAN, _lastModifiedThresholdMillis); } } return q; }