DVHMA/plugins/DVHMA-Storage/src/android/DVHMAStorage.java

148 lines
5.1 KiB
Java

/* Copyright 2015 SAP SE
*
* 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 de.zertapps.dvhma.plugins.storage;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaArgs;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CordovaWebView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DVHMAStorage extends CordovaPlugin {
private DVHMAStorageDbHelper mDbHelper;
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
mDbHelper = new DVHMAStorageDbHelper(webView.getContext());
}
@Override
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("create".equals(action)) {
create(args, callbackContext);
return true;
} else if ("delete".equals(action)) {
delete(args, callbackContext);
return true;
} else if ("get".equals(action)) {
get(args, callbackContext);
return true;
} else if ("edit".equals(action)) {
edit(args, callbackContext);
return true;
} else {
callbackContext.error("Unknown action!");
return false;
}
}
private void get(CordovaArgs args, CallbackContext callbackContext) {
JSONArray result = queryDatabase();
callbackContext.success(result);
}
private void edit(CordovaArgs args, CallbackContext callbackContext) {
int index;
String newTitle;
String newContent;
try {
index = args.getInt(0);
newTitle = args.getJSONObject(1).getString("title");
newContent = args.getJSONObject(1).getString("content");
} catch (JSONException e) {
e.printStackTrace();
return;
}
SQLiteDatabase db = mDbHelper.getWritableDatabase();
Cursor c = db.rawQuery("SELECT * FROM " + DVHMAStorageDbHelper.TABLE_NAME + ";", null);
c.moveToPosition(index);
db.execSQL("UPDATE " + DVHMAStorageDbHelper.TABLE_NAME + " SET title='" + newTitle + "',content='" + newContent + "' WHERE id=" + c.getInt(c.getColumnIndex("id")) + ";");
db.close();
JSONArray result = queryDatabase();
callbackContext.success(result);
}
private JSONArray queryDatabase() {
SQLiteDatabase db = mDbHelper.getWritableDatabase();
JSONArray array = new JSONArray();
Cursor c = db.rawQuery("SELECT * FROM " + DVHMAStorageDbHelper.TABLE_NAME + ";", null);
while (c.moveToNext()) {
String title = c.getString(c.getColumnIndex("title"));
String content = c.getString(c.getColumnIndex("content"));
try {
JSONObject obj = new JSONObject();
obj.put("title", title);
obj.put("content", content);
array.put(obj);
} catch (JSONException e) {
e.printStackTrace();
}
}
c.close();
db.close();
return array;
}
private void delete(CordovaArgs args, CallbackContext callbackContext) {
int index;
try {
index = args.getInt(0);
} catch (JSONException e) {
e.printStackTrace();
return;
}
SQLiteDatabase db = mDbHelper.getWritableDatabase();
Cursor c = db.rawQuery("SELECT * FROM " + DVHMAStorageDbHelper.TABLE_NAME + ";", null);
c.moveToPosition(index);
db.execSQL("DELETE FROM " + DVHMAStorageDbHelper.TABLE_NAME + " WHERE id=" + c.getInt(c.getColumnIndex("id")));
c.close();
db.close();
JSONArray result = queryDatabase();
callbackContext.success(result);
}
private void create(CordovaArgs args, CallbackContext callbackContext) {
String newTitle;
String newContent;
try {
newTitle = args.getJSONObject(0).getString("title");
newContent = args.getJSONObject(0).getString("content");
} catch (JSONException e) {
e.printStackTrace();
return;
}
SQLiteDatabase db = mDbHelper.getWritableDatabase();
db.execSQL("INSERT INTO " + DVHMAStorageDbHelper.TABLE_NAME + " (title,content) VALUES('" + newTitle + "','" + newContent + "');");
db.close();
JSONArray result = queryDatabase();
callbackContext.success(result);
}
}