Package com.redspr.redquerybuilder.js.client

Source Code of com.redspr.redquerybuilder.js.client.JsList

package com.redspr.redquerybuilder.js.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayMixed;
import com.google.gwt.core.client.JsDate;

public final class JsList extends JavaScriptObject {

    private static final JsList INSTANCE = (JsList) JavaScriptObject.createObject();

    public static JsList get() {
        return INSTANCE;
    }

    protected JsList() {
    }

    public native boolean isNull(JavaScriptObject array, int i) /*-{
        return array[i] == null;
    }-*/;

    public native boolean isDate(JavaScriptObject array, int i) /*-{
        return Boolean(array[i].getMonth);
    }-*/;

    public Date getDate(JavaScriptObject array, int i) {
        JsDate jsDate = getJsDate(array, i);

        return new Date((long) jsDate.getTime());
    }

    private native JsDate getJsDate(JavaScriptObject array, int i) /*-{
        return array[i];
    }-*/;

    public native boolean isString(JavaScriptObject array, int i) /*-{
        return (typeof array[i] == 'string' || array[i] instanceof String);
    }-*/;

    public native boolean isNumber(JavaScriptObject array, int i) /*-{
        return (typeof array[i] == 'number' || array[i] instanceof Number);
    }-*/;

    public native String debugString(JavaScriptObject array, int i) /*-{
        return 'typeof=' + typeof array[i] + ' toString="' + array[i] + '"';
    }-*/;

    public JsArrayMixed toJso(List<Object> args) {
        JsArrayMixed result = (JsArrayMixed) JavaScriptObject.createArray();
        for (Object o : args) {
            if (o == null) {
                result.push((JavaScriptObject) null);
            } else if (o instanceof String) {
                result.push((String) o);
            } else if (o instanceof Date) {
                result.push(JsDate.create(((Date) o).getTime()));
            } else if (o instanceof Double) {
                result.push(((Double) o).doubleValue());
            } else {
                throw new IllegalArgumentException("Don't know how to handle "
                        + o);
            }
        }
        return result;
    }

    private Object get(JsArrayMixed args, int i) {
        if (isNull(args, i)) {
            return i;
        } else if (isDate(args, i)) {
            return getDate(args, i);
        } else if (isString(args, i)) {
            return args.getString(i);
        } else if (isNumber(args, i)) {
            return args.getNumber(i);
        }

        throw new RuntimeException("Unable to handle value " + debugString(args, i));
    }

    public List<Object> toList(JsArrayMixed args) {
        List<Object> result = new ArrayList<Object>();
        if (args != null) {
            for (int i = 0; i < args.length(); i++) {
                result.add(get(args, i));
            }
        }
        return result;
    }
}
TOP

Related Classes of com.redspr.redquerybuilder.js.client.JsList

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.