com.gwtmobile.persistence.client.Persistence.java Source code

Java tutorial

Introduction

Here is the source code for com.gwtmobile.persistence.client.Persistence.java

Source

/*
 * Copyright 2010 Zhihua (Dennis) Jiang
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.gwtmobile.persistence.client;

import java.util.Date;
import java.util.Map;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;

public class Persistence {

    private static Boolean _autoAdd = true;

    static {
        initializeConsole();
    }

    private static native void initializeConsole() /*-{
                                                   if (!$wnd.console) $wnd.console = {};
                                                   $wnd.console.log = $wnd.console.log || function(){};
                                                   $wnd.console.warn = $wnd.console.warn || function(){};
                                                   $wnd.console.error = $wnd.console.error || function(){};
                                                   $wnd.console.info = $wnd.console.info || function(){};
                                                   }-*/;

    public static Boolean getAutoAdd() {
        return _autoAdd;
    }

    public static void setAutoAdd(Boolean autoAdd) {
        _autoAdd = autoAdd;
    }

    public static native void connect(String dbname, String description, int size) /*-{
                                                                                   $wnd.persistence.store.websql.config($wnd.persistence, dbname, description, size);
                                                                                   }-*/;

    public static JavaScriptObject define(String entityName, Map<String, String> fields) {
        JavaScriptObject assoArray = Map2AssociativeArray(fields);
        return define(entityName, assoArray);
    };

    public static native void transaction(TransactionCallback callback) /*-{
                                                                        $wnd.persistence.transaction(
                                                                        function(transaction) {
                                                                        callback.@com.gwtmobile.persistence.client.TransactionCallback::onSuccess(Lcom/gwtmobile/persistence/client/Transaction;)(transaction);
                                                                        }
                                                                        );
                                                                        }-*/;

    public static native void schemaSync(TransactionCallback callback) /*-{
                                                                       $wnd.persistence.schemaSync(
                                                                       function(transaction) {
                                                                       callback.@com.gwtmobile.persistence.client.TransactionCallback::onSuccess(Lcom/gwtmobile/persistence/client/Transaction;)(transaction);
                                                                       }
                                                                       );
                                                                       }-*/;

    public static native void schemaSync(Callback callback) /*-{
                                                            $wnd.persistence.schemaSync(
                                                            function(transaction) {
                                                            callback.@com.gwtmobile.persistence.client.Callback::onSuccess()();
                                                            }
                                                            );
                                                            }-*/;

    public static native void schemaSync() /*-{
                                           $wnd.persistence.schemaSync();
                                           }-*/;

    public static void add(Persistable persistable) {
        add(((PersistableInternal) persistable).getNativeObject());
    }

    private static native void add(JavaScriptObject obj) /*-{
                                                         $wnd.persistence.add(obj);
                                                         }-*/;

    public static void remove(Persistable persistable) {
        remove(((PersistableInternal) persistable).getNativeObject());
    }

    private static native void remove(JavaScriptObject obj) /*-{
                                                            $wnd.persistence.remove(obj);
                                                            }-*/;

    public static native void flush(Transaction transaction, Callback callback) /*-{
                                                                                $wnd.persistence.flush(transaction,
                                                                                function() {
                                                                                callback.@com.gwtmobile.persistence.client.Callback::onSuccess()();
                                                                                }
                                                                                );
                                                                                }-*/;

    public static native void flush(Callback callback) /*-{
                                                       $wnd.persistence.flush(null,
                                                       function() {
                                                       callback.@com.gwtmobile.persistence.client.Callback::onSuccess()();
                                                       }
                                                       );
                                                       }-*/;

    public static native void flush() /*-{
                                      $wnd.persistence.flush();
                                      }-*/;

    public static native void reset(Transaction transaction) /*-{
                                                             $wnd.persistence.reset(transaction);
                                                             }-*/;

    public static native void reset() /*-{
                                      $wnd.persistence.transaction(function (transaction) {
                                      $wnd.persistence.reset(transaction);
                                      });
                                      }-*/;

    public static native void reset(Callback callback) /*-{
                                                       $wnd.persistence.reset(
                                                       function() {
                                                       callback.@com.gwtmobile.persistence.client.Callback::onSuccess()();
                                                       }
                                                       );
                                                       }-*/;

    @SuppressWarnings("unchecked")
    public static void dumpToJson(Transaction transaction, Entity<?>[] entities, ScalarCallback<String> callback) {
        JsArray<JavaScriptObject> entitiesArray = null;
        if (entities != null) {
            entitiesArray = (JsArray<JavaScriptObject>) JavaScriptObject.createArray();
            for (int i = 0; i < entities.length; i++) {
                EntityInternal<?> entity = (EntityInternal<?>) entities[i];
                entitiesArray.set(i, entity.getNativeObject());
            }
        }
        dumpToJsonNative(transaction, entitiesArray, callback);
    }

    public static void dumpToJson(Entity<?>[] entities, ScalarCallback<String> callback) {
        dumpToJson(null, entities, callback);
    }

    private static native void dumpToJsonNative(Transaction transaction, JsArray<JavaScriptObject> entities,
            ScalarCallback<String> callback) /*-{
                                             $wnd.persistence.dumpToJson(transaction, entities,
                                             function(result) {
                                             @com.gwtmobile.persistence.client.Persistence::processStringCallback(Ljava/lang/String;Lcom/gwtmobile/persistence/client/ScalarCallback;)(result, callback);
                                             }
                                             );
                                             }-*/;

    @SuppressWarnings("unused")
    private static void processStringCallback(String result, ScalarCallback<String> callback) {
        callback.onSuccess(result);
    }

    public static native void loadFromJson(Transaction transaction, String jsonDump, Callback callback) /*-{
                                                                                                        $wnd.persistence.loadFromJson(transaction, jsonDump,
                                                                                                        function() {
                                                                                                        callback.@com.gwtmobile.persistence.client.Callback::onSuccess()();
                                                                                                        }
                                                                                                        );
                                                                                                        }-*/;

    private static JavaScriptObject Map2AssociativeArray(Map<String, String> fields) {
        JavaScriptObject assoArray = JavaScriptObject.createObject();
        for (Map.Entry<String, String> field : fields.entrySet()) {
            setAssoArray(assoArray, field.getKey(), field.getValue());
        }
        return assoArray;
    }

    private static native void setAssoArray(JavaScriptObject assoArray, String key, String value) /*-{
                                                                                                  assoArray[key] = value;      
                                                                                                  }-*/;

    public static native JavaScriptObject define(String entityName, JavaScriptObject fields) /*-{
                                                                                             return $wnd.persistence.define(entityName, fields);
                                                                                             }-*/;

    public static Filter newPropertyFilter(String property, String operator, char value) {
        return newPropertyFilter(property, operator, new String(new char[] { value }));
    }

    public static native Filter newPropertyFilter(String property, String operator, String value) /*-{
                                                                                                  return new $wnd.persistence.PropertyFilter(property, operator, value);
                                                                                                  }-*/;

    public static native Filter newPropertyFilter(String property, String operator, boolean value) /*-{
                                                                                                   return new $wnd.persistence.PropertyFilter(property, operator, value);
                                                                                                   }-*/;

    public static native Filter newPropertyFilter(String property, String operator, int value) /*-{
                                                                                               return new $wnd.persistence.PropertyFilter(property, operator, value);
                                                                                               }-*/;

    public static native Filter newPropertyFilter(String property, String operator, double value) /*-{
                                                                                                  return new $wnd.persistence.PropertyFilter(property, operator, value);
                                                                                                  }-*/;

    public static Filter newPropertyFilter(String property, String operator, Date value) {
        return newPropertyFilter(property, operator, (double) value.getTime());
    }

    public static native Filter newAndFilter(Filter filter1, Filter filter2) /*-{
                                                                             return new $wnd.persistence.AndFilter(filter1, filter2);
                                                                             }-*/;

    public static native Filter newOrFilter(Filter filter1, Filter filter2) /*-{
                                                                            return new $wnd.persistence.OrFilter(filter1, filter2);
                                                                            }-*/;

}