public static DateDatum createDate(int instance) { return new DateDatum(instance); }
public static DateDatum createDate(int instance) { return new DateDatum(instance); }
public static DateDatum createDate(int year, int month, int day) { return new DateDatum(DateTimeUtil.date2j(year, month, day)); }
public static DateDatum createDate(String dateStr) { return new DateDatum(DateTimeUtil.toJulianDate(dateStr)); }
public static DateDatum createDate(String dateStr) { return new DateDatum(DateTimeUtil.toJulianDate(dateStr)); }
public static DateDatum createDate(int year, int month, int day) { return new DateDatum(DateTimeUtil.date2j(year, month, day)); }
@Override public EvalNode visitDateLiteral(Context context, Stack<Expr> stack, DateLiteral expr) throws TajoException { DateValue dateValue = expr.getDate(); int[] dates = dateToIntArray(dateValue.getYears(), dateValue.getMonths(), dateValue.getDays()); TimeMeta tm = new TimeMeta(); tm.years = dates[0]; tm.monthOfYear = dates[1]; tm.dayOfMonth = dates[2]; DateTimeUtil.j2date(DateTimeUtil.date2j(dates[0], dates[1], dates[2]), tm); return new ConstEval(new DateDatum(tm)); }
@Override public EvalNode visitDateLiteral(Context context, Stack<Expr> stack, DateLiteral expr) throws TajoException { DateValue dateValue = expr.getDate(); int[] dates = dateToIntArray(dateValue.getYears(), dateValue.getMonths(), dateValue.getDays()); TimeMeta tm = new TimeMeta(); tm.years = dates[0]; tm.monthOfYear = dates[1]; tm.dayOfMonth = dates[2]; DateTimeUtil.j2date(DateTimeUtil.date2j(dates[0], dates[1], dates[2]), tm); return new ConstEval(new DateDatum(tm)); }
@Override public Datum deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonObject jsonObject = json.getAsJsonObject(); String typeName = CommonGsonHelper.getOrDie(jsonObject, "type").getAsString(); TajoDataTypes.Type type = TajoDataTypes.Type.valueOf(typeName); switch (type) { case DATE: return new DateDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsInt()); case TIME: return new TimeDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsLong()); case TIMESTAMP: return new TimestampDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsLong()); case INTERVAL: String[] values = CommonGsonHelper.getOrDie(jsonObject, "value").getAsString().split(","); return new IntervalDatum(Integer.parseInt(values[0]), Long.parseLong(values[1])); case ANY: return new AnyDatum(deserialize(CommonGsonHelper.getOrDie(jsonObject, "actual"), typeOfT, context)); default: return context.deserialize(CommonGsonHelper.getOrDie(jsonObject, "body"), DatumFactory.getDatumClass(TajoDataTypes.Type.valueOf(typeName))); } }
public static DateDatum createDate(Datum datum) { switch (datum.type()) { case INT4: return new DateDatum(datum.asInt4()); case INT8: return new DateDatum(datum.asInt4()); case TEXT: return createDate(datum.asChars()); case DATE: return (DateDatum) datum; default: throw new TajoRuntimeException(new InvalidValueForCastException(datum.type(), Type.DATE)); } }
public static DateDatum createDate(Datum datum) { switch (datum.kind()) { case INT4: return new DateDatum(datum.asInt4()); case INT8: return new DateDatum(datum.asInt4()); case TEXT: return createDate(datum.asChars()); case DATE: return (DateDatum) datum; default: throw new TajoRuntimeException(new InvalidValueForCastException(datum.type(), Type.DATE)); } }
@Override public Datum eval(Tuple params) { if(params.isBlankOrNull(0) || params.isBlankOrNull(1)) { return NullDatum.get(); } String value = params.getText(0); String pattern = params.getText(1); TimeMeta tm = DateTimeFormat.parseDateTime(value, pattern); return new DateDatum(tm); } }
@Override public Datum eval(Tuple params) { if(params.isBlankOrNull(0) || params.isBlankOrNull(1)) { return NullDatum.get(); } String value = params.getText(0); String pattern = params.getText(1); TimeMeta tm = DateTimeFormat.parseDateTime(value, pattern); return new DateDatum(tm); } }
public static Datum convertWritable2Datum(Writable value) throws UnsupportedDataTypeException { if (value == null) { return NullDatum.get(); } DataType type = convertWritableToTajoType(value.getClass()); switch(type.getType()) { case INT1: return new Int2Datum(((ByteWritable)value).get()); case INT2: return new Int2Datum(((ShortWritable)value).get()); case INT4: return new Int4Datum(((IntWritable)value).get()); case INT8: return new Int8Datum(((LongWritable)value).get()); case FLOAT4: return new Float4Datum(((FloatWritable)value).get()); case FLOAT8: return new Float8Datum(((DoubleWritable)value).get()); case DATE: return new DateDatum(((DateWritable)value).getDays() + DateTimeConstants.UNIX_EPOCH_JDATE); case TIMESTAMP: return new TimestampDatum(DateTimeUtil.javaTimeToJulianTime( ((TimestampWritable)value).getTimestamp().getTime())); case CHAR: return new CharDatum(value.toString()); case TEXT: return new TextDatum(value.toString()); case VARBINARY: return new BlobDatum(((BytesWritable)value).getBytes()); } throw new TajoRuntimeException(new UnsupportedDataTypeException(value.getClass().getTypeName())); } }
public static Datum createFromInt4(DataType type, int val) { switch (type.getType()) { case INT4: return new Int4Datum(val); case DATE: return new DateDatum(val); default: throw new TajoRuntimeException(new UnsupportedDataTypeException(type.getType().name())); } }
public static Datum createFromInt4(DataType type, int val) { switch (type.getType()) { case INT4: return new Int4Datum(val); case DATE: return new DateDatum(val); default: throw new TajoRuntimeException(new UnsupportedDataTypeException(type.getType().name())); } }
@Test public void testDateTypeConverting() throws UnsupportedDataTypeException { Datum testDatum; TimeMeta testTM = new TimeMeta(); testTM.years = 1977; testTM.monthOfYear = 6; testTM.dayOfMonth = 28; testDatum = new DateDatum(testTM); Writable resultWritable = WritableTypeConverter.convertDatum2Writable(testDatum); assertEquals("1977-06-28", ((DateWritable)resultWritable).get().toString()); Datum resultDatum = WritableTypeConverter.convertWritable2Datum(resultWritable); assertEquals(testDatum, resultDatum); }
@Override public Datum minus(Datum datum) { switch (datum.type()) { case INT2: return DatumFactory.createInt8(val - datum.asInt2()); case INT4: return DatumFactory.createInt8(val - datum.asInt4()); case INT8: return DatumFactory.createInt8(val - datum.asInt8()); case FLOAT4: return DatumFactory.createFloat8(val - datum.asFloat4()); case FLOAT8: return DatumFactory.createFloat8(val - datum.asFloat8()); case DATE: TimeMeta tm = datum.asTimeMeta(); tm.plusDays(0 - asInt4()); return new DateDatum(tm); case NULL_TYPE: return datum; default: throw new InvalidOperationException(datum.type()); } }
@Override public Datum plus(Datum datum) { switch (datum.type()) { case INT2: return DatumFactory.createInt8(val + datum.asInt2()); case INT4: return DatumFactory.createInt8(val + datum.asInt4()); case INT8: return DatumFactory.createInt8(val + datum.asInt8()); case FLOAT4: return DatumFactory.createFloat8(val + datum.asFloat4()); case FLOAT8: return DatumFactory.createFloat8(val + datum.asFloat8()); case DATE: TimeMeta tm = datum.asTimeMeta(); tm.plusDays(asInt4()); return new DateDatum(tm); case NULL_TYPE: return datum; default: throw new InvalidOperationException(datum.type()); } }
@Override public Datum minus(Datum datum) { switch (datum.type()) { case INT2: return DatumFactory.createInt2((short) (val - datum.asInt2())); case INT4: return DatumFactory.createInt4(val - datum.asInt4()); case INT8: return DatumFactory.createInt8(val - datum.asInt8()); case FLOAT4: return DatumFactory.createFloat4(val - datum.asFloat4()); case FLOAT8: return DatumFactory.createFloat8(val - datum.asFloat8()); case DATE: TimeMeta tm = datum.asTimeMeta(); tm.plusDays(0 - asInt2()); return new DateDatum(tm); case NULL_TYPE: return datum; default: throw new InvalidOperationException(datum.type()); } }