Search in sources :

Example 1 with DateWrapper

use of io.deephaven.web.client.api.DateWrapper in project deephaven-core by deephaven.

the class FilterValue method ofNumber.

@JsMethod(namespace = "dh.FilterValue")
public static FilterValue ofNumber(Object input) {
    Objects.requireNonNull(input);
    if (input instanceof DateWrapper) {
        Literal lit = new Literal();
        lit.setNanoTimeValue(((DateWrapper) input).valueOf());
        return new FilterValue(lit);
    } else if (input instanceof LongWrapper) {
        Literal lit = new Literal();
        lit.setLongValue(((LongWrapper) input).valueOf());
        return new FilterValue(lit);
    } else if (Js.typeof(input).equals("number")) {
        Literal lit = new Literal();
        lit.setDoubleValue(Js.asDouble(input));
        return new FilterValue(lit);
    } else {
        // not sure what the input is, try to toString(), then parse to Double, and use that
        Literal lit = new Literal();
        lit.setDoubleValue(Double.parseDouble(input.toString()));
        return new FilterValue(lit);
    }
}
Also used : Literal(io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.table_pb.Literal) LongWrapper(io.deephaven.web.client.api.LongWrapper) DateWrapper(io.deephaven.web.client.api.DateWrapper) JsMethod(jsinterop.annotations.JsMethod)

Example 2 with DateWrapper

use of io.deephaven.web.client.api.DateWrapper in project deephaven-core by deephaven.

the class JsDateTimeFormat method parse.

public DateWrapper parse(String text, @JsOptional JsTimeZone tz) {
    if (tz != null) {
        return DateWrapper.of(parseWithTimezoneAsLong(text, tz.unwrap(), true));
    }
    // based on DateTimeFormat.parse, start a date to accumulate values in
    Date curDate = new Date();
    @SuppressWarnings("deprecation") Date date = new Date(curDate.getYear(), curDate.getMonth(), curDate.getDate());
    // pass the date to each formatter and let it parse its own part of the string
    int endOfStart = wrappedStart.parse(text, 0, date);
    if (endOfStart == 0) {
        // failed to parse
        throw new IllegalArgumentException(text);
    }
    if (nanoCount == 0 && endOfStart < text.length()) {
        // not planning on parsing more, but extra content in the input string
        throw new IllegalArgumentException(text);
    }
    int nanosInParsedText = 0;
    if (nanoCount > 0) {
        // read expected nano chars
        int nano;
        for (nano = 0; nano < nanoCount; nano++) {
            char ch = text.charAt(nano + endOfStart);
            if (ch < '0' || ch > '9') {
                throw new IllegalArgumentException(text);
            }
            nanosInParsedText = nanosInParsedText * 10 + (ch - '0');
        }
        // for absent nano chars, add trailing zeros
        for (; nano < 9; nano++) {
            nanosInParsedText *= 10;
        }
        if (wrappedEnd != null) {
            int endOfEnd = wrappedEnd.parse(text, endOfStart + nanoCount, date);
            if (endOfEnd == 0 || (endOfStart + nanoCount + endOfEnd) < text.length()) {
                throw new IllegalArgumentException(text);
            }
        }
    }
    return new DateWrapper(date.getTime() * NANOS_PER_MILLI + nanosInParsedText);
}
Also used : DateWrapper(io.deephaven.web.client.api.DateWrapper) JsDate(elemental2.core.JsDate)

Aggregations

DateWrapper (io.deephaven.web.client.api.DateWrapper)2 JsDate (elemental2.core.JsDate)1 Literal (io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.table_pb.Literal)1 LongWrapper (io.deephaven.web.client.api.LongWrapper)1 JsMethod (jsinterop.annotations.JsMethod)1