private static Date toDate(final String str) { try { return new SimpleDateFormat(dateFormatString).parse(str); } catch (final ParseException e) { final Date date = ConvertToDateTransformer.getInternalInstance().transformValue(str); if (date == null) { logger.error("Could not parse date: " + str, e); throw new IllegalArgumentException(e); } else { return date; } } }
public static ConvertToDateTransformer getInternalInstance() { if (internalInstance == null) { // because we are not synchronized, cannot assign to internalInstance directly, // to prevent usage of uninitialized instance. final ConvertToDateTransformer newInst = new ConvertToDateTransformer(); newInst.init(); internalInstance = newInst; } return internalInstance; }
public Date transformValue(final Object value) { Date d = null; if (value != null) { if (value instanceof Date) { d = (Date) value; } else if (value instanceof Calendar) { d = ((Calendar) value).getTime(); } else if (value instanceof String) { d = convertFromString((String) value); } else if (value instanceof Number) { d = convertFromNumber((Number) value, true); } } return d; }
@Override public Date[] transform(final InputRow inputRow) { final Date[] result = new Date[input.length]; for (int i = 0; i < input.length; i++) { final Object value = inputRow.getValue(input[i]); Date d = transformValue(value); if (d == null) { d = nullReplacement; } result[i] = d; } return result; }
protected Date convertFromNumber(final Number value) { return convertFromNumber(value, true); }
public ConvertToDateTransformer() { dateMasks = getDefaultDateMasks(); }
return convertFromNumber(longValue, false); } catch (final NumberFormatException e) {
@Initialize public void init() { if (dateMasks == null) { dateMasks = getDefaultDateMasks(); } final DateTimeZone zone = DateTimeZone.forID(timeZone); _numberBasedDateTimeFormatterLong = DateTimeFormat.forPattern("yyyyMMdd").withZone(zone); _numberBasedDateTimeFormatterShort = DateTimeFormat.forPattern("yyMMdd").withZone(zone); _dateTimeFormatters = new DateTimeFormatter[dateMasks.length]; for (int i = 0; i < dateMasks.length; i++) { final String dateMask = dateMasks[i]; _dateTimeFormatters[i] = DateTimeFormat.forPattern(dateMask).withZone(zone); } }
protected static Number convertToDaysSinceEpoch(final String str) { if (str == null) { return null; } final LocalDate epoch = new LocalDate(1970, 1, 1); final Date date = ConvertToDateTransformer.getInternalInstance().transformValue(str); if (date == null) { logger.warn("Could not parse date string: '{}', returning null metric value.", str); return null; } return Days.daysBetween(epoch, new LocalDate(date)).getDays(); }
private static Comparable<?> getComparableValue(final Row row, final int columnIndex, final boolean isNumber, final boolean isDate) { final String value = (String) row.getValue(columnIndex); if (isNumber) { final Number result = ConvertToNumberTransformer.transformValue(value); if (result instanceof Comparable) { return (Comparable<?>) result; } return NumberComparator.getComparable(result); } if (isDate) { return ConvertToDateTransformer.getInternalInstance().transformValue(value); } return value.toLowerCase(); } }
rowNanos = ts.getNanos(); } else if (lastModified instanceof String) { final Date date = ConvertToDateTransformer.getInternalInstance().transformValue(lastModified); if (date == null) { rowMillis = -1L;
private Object toOperand(final Object value) { final Class<?> dataType = inputColumn.getDataType(); if (ReflectionUtils.isBoolean(dataType)) { return ConvertToBooleanTransformer.transformValue(value, ConvertToBooleanTransformer.DEFAULT_TRUE_TOKENS, ConvertToBooleanTransformer.DEFAULT_FALSE_TOKENS); } else if (ReflectionUtils.isDate(dataType)) { return ConvertToDateTransformer.getInternalInstance().transformValue(value); } else if (ReflectionUtils.isNumber(dataType)) { return ConvertToNumberTransformer.transformValue(value); } else if (ReflectionUtils.isString(dataType)) { return ConvertToStringTransformer.transformValue(value); } else { return value; } }
newTimestamp = ConvertToDateTransformer.getInternalInstance().transformValue(dateInput); if (newTimestamp == null) { throw new IllegalArgumentException("Could not convert input '" + dateInput + "' to date.");
private Object toOperand(final Object value) { if (value == null) { return null; } final Class<?> dataType = inputColumn.getDataType(); if (ReflectionUtils.isBoolean(dataType)) { return ConvertToBooleanTransformer.transformValue(value, ConvertToBooleanTransformer.DEFAULT_TRUE_TOKENS, ConvertToBooleanTransformer.DEFAULT_FALSE_TOKENS); } else if (ReflectionUtils.isDate(dataType)) { return ConvertToDateTransformer.getInternalInstance().transformValue(value); } else if (ReflectionUtils.isNumber(dataType)) { return ConvertToNumberTransformer.transformValue(value); } else if (ReflectionUtils.isString(dataType)) { if (operator == Operator.IN && value instanceof String) { return csvStringToArray((String) value); } else { return ConvertToStringTransformer.transformValue(value); } } else { return value; } }