Package mungbean.rhino

Source Code of mungbean.rhino.RhinoQuery

package mungbean.rhino;

import java.util.HashMap;
import java.util.Map;

import mungbean.query.Query;

import org.mozilla.javascript.NativeObject;
import org.mozilla.javascript.ScriptableObject;

import mungbean.rhino.MapWrapper;
import mungbean.rhino.ScriptableObjectWrapper;

public class RhinoQuery extends Query {

    public RhinoQuery(ScriptableObject query, ScriptableObject options) {
        super(toMap(query), getProperty(options, "first", 0), getProperty(options, "items", 1000));
        if (options != null && NativeObject.hasProperty(options, "order")) {
            ScriptableObject order = (ScriptableObject) NativeObject.getProperty(options, "order");
            for (Object id : NativeObject.getPropertyIds(order)) {
                String key = String.valueOf(id);
                Number num = (Number) NativeObject.getProperty(order, key);
                if (num.intValue() > 0) {
                    this.field(key).orderAscending();
                } else {
                    this.field(key).orderDescending();
                }
            }
        }
    }

    static Map<String, Object> toMap(ScriptableObject query) {
        if (query == null) {
            query = new MapWrapper(new HashMap<String, Object>());
        }
        return new ScriptableObjectWrapper(query);
    }

    @SuppressWarnings("unchecked")
    static <T> T getProperty(ScriptableObject source, String key, T defaultValue) {
        if (source != null && NativeObject.hasProperty(source, key)) {
            return (T) NativeObject.getProperty(source, "order");
        }
        return defaultValue;
    }
}
TOP

Related Classes of mungbean.rhino.RhinoQuery

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.