/* * Copyright 2011 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. */ /** * Author: smithimage (http://github.com/smithimage) * Date: 7/26/11 * Time: 1:06 PM */ package com.gwtmobile.persistence.migration.client; import com.google.gwt.core.client.JavaScriptObject; public class Migrator { public interface Migration { JavaScriptObject getMigration(); } public interface MigrationCallback { void onSuccess(); } private JavaScriptObject persistence; public Migrator() { persistence = getPersistence(); } public void init(MigrationCallback callback) { init(persistence, callback); } private native JavaScriptObject getPersistence()/*-{ return $wnd.persistence; }-*/; private native void init(JavaScriptObject persistence, MigrationCallback callback)/*-{ persistence.migrations .init(function() { callback.@com.gwtmobile.persistence.migration.client.Migrator.MigrationCallback::onSuccess()(); }); }-*/; public void defineMigration(int version, Migration migration) { defineMigration(persistence, version, migration.getMigration()); } public void migrate() { migrate(persistence); } public void migrate(MigrationCallback callback) { migrate(persistence, callback); } public void migrate(int version, MigrationCallback callback) { migrate(persistence, version, callback); } private native void defineMigration(JavaScriptObject persistence, int version, JavaScriptObject migration)/*-{ persistence.defineMigration(version, migration); }-*/; private native void migrate(JavaScriptObject persistence)/*-{ persistence.migrate(); }-*/; private native void migrate(JavaScriptObject persistence, MigrationCallback callback)/*-{ persistence .migrate(function() { callback.@com.gwtmobile.persistence.migration.client.Migrator.MigrationCallback::onSuccess()(); }); }-*/; private native void migrate(JavaScriptObject persistence, int version, MigrationCallback callback)/*-{ persistence .migrate( version, function() { callback.@com.gwtmobile.persistence.migration.client.Migrator.MigrationCallback::onSuccess()(); }); }-*/; }