/*
* Copyright 2013 cruxframework.org.
*
* 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 org.cruxframework.crux.core.client.db.indexeddb;
import org.cruxframework.crux.core.client.collection.FastList;
import org.cruxframework.crux.core.client.db.indexeddb.IDBTransaction.IDBTransactionMode;
import org.cruxframework.crux.core.client.db.indexeddb.events.IDBAbortEvent;
import org.cruxframework.crux.core.client.db.indexeddb.events.IDBVersionChangeEvent;
import org.cruxframework.crux.core.client.utils.JsUtils;
import com.google.gwt.core.client.JsArrayString;
/**
*
* @author Thiago da Rosa de Bustamante
*
*/
public class IDBDatabase extends IDBClass
{
protected IDBDatabase() {}
public final native String getName() /*-{
return this.name;
}-*/;
public final native int getVersion() /*-{
return this.version;
}-*/;
public final String[] getObjectStoreNames()
{
return JsUtils.toArray(getObjectStoreNamesNative());
}
public final FastList<String> listObjectStoreNames()
{
return JsUtils.toFastList(getObjectStoreNamesNative());
}
private native JsArrayString getObjectStoreNamesNative() /*-{
return this.objectStoreNames;
}-*/;
public final native void close() /*-{
this.close();
}-*/;
public final IDBTransaction getTransaction(String... storeNames)
{
return getTransaction(storeNames, IDBTransactionMode.readonly);
}
public final IDBTransaction getTransaction(String[] storeNames, IDBTransactionMode mode)
{
return getTransactionNative(JsUtils.toJsArray(storeNames), mode.toString());
}
private native IDBTransaction getTransactionNative(JsArrayString storeNames, String mode) /*-{
return this.transaction(storeNames, mode);
}-*/;
public final native IDBObjectStore createObjectStore(String name) /*-{
return this.createObjectStore(name);
}-*/;
public final native IDBObjectStore createObjectStore(String name, IDBObjectStoreParameters params) /*-{
return this.createObjectStore(name, params);
}-*/;
public final native void deleteObjectStore(String name) /*-{
this.deleteObjectStore(name);
}-*/;
public final native void onAbort(IDBAbortEvent.Handler handler) /*-{
this.onabort = function(evt) {
handler.@org.cruxframework.crux.core.client.db.indexeddb.events.IDBAbortEvent.Handler::onAbort(Lorg/cruxframework/crux/core/client/db/indexeddb/events/IDBAbortEvent;)(evt);
};
}-*/;
public final native void onVersionChange(IDBVersionChangeEvent.Handler handler) /*-{
this.onversionchange = function(evt) {
handler.@org.cruxframework.crux.core.client.db.indexeddb.events.IDBVersionChangeEvent.Handler::onVersionChange(Lorg/cruxframework/crux/core/client/db/indexeddb/events/IDBVersionChangeEvent;)(evt);
};
}-*/;
}