Java tutorial
/* * Copyright (C) 2015-2016 Willi Ye <williye97@gmail.com> * * This file is part of Kernel Adiutor. * * Kernel Adiutor is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Kernel Adiutor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Kernel Adiutor. If not, see <http://www.gnu.org/licenses/>. * */ package com.grarak.kerneladiutor.database; import com.grarak.kerneladiutor.utils.Utils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; /** * Created by willi on 15.04.15. */ public abstract class Provider { /** * JSON Objects */ private JSONObject mDatabaseMain; private JSONArray mDatabaseItems; /** * JSON file location */ private final String mPath; private int mVersion; /** * JSON Database is used to store large amount of datasets * * @param path location of the JSON file * @param version If version doesn't match with the dataset, remove all saved datas */ public Provider(String path, int version) { mPath = path; mVersion = version; try { String json = Utils.readFile(path, false); if (json != null) { mDatabaseMain = new JSONObject(json); if (mDatabaseMain.getInt("version") == version) { mDatabaseItems = mDatabaseMain.getJSONArray("database"); } } } catch (JSONException ignored) { } if (mDatabaseItems == null) { mDatabaseItems = new JSONArray(); } try { mDatabaseMain = new JSONObject(); mDatabaseMain.put("version", version); } catch (JSONException e) { e.printStackTrace(); } } /** * Insert a dataset * * @param items the dataset will put into the JSONArray */ protected void putItem(JSONObject items) { mDatabaseItems.put(items); } /** * Read all sets * * @return all sets in a list */ protected List<DBJsonItem> getAllItems() { List<DBJsonItem> items = new ArrayList<>(); try { for (int i = 0; i < length(); i++) { items.add(getItem(mDatabaseItems.getJSONObject(i))); } } catch (JSONException e) { e.printStackTrace(); } return items; } public abstract DBJsonItem getItem(JSONObject item); public void delete(int position) { JSONArray jsonArray = new JSONArray(); try { for (int i = 0; i < length(); i++) { if (i != position) { jsonArray.put(mDatabaseItems.getJSONObject(i)); } } mDatabaseItems = jsonArray; } catch (JSONException e) { e.printStackTrace(); } } public int length() { return mDatabaseItems.length(); } public int getVersion() { return mVersion; } /** * Write the dataset as JSON file */ public void commit() { try { mDatabaseMain.put("database", mDatabaseItems); Utils.writeFile(mPath, mDatabaseMain.toString(), false, false); } catch (JSONException e) { e.printStackTrace(); } } public static class DBJsonItem { protected JSONObject item; protected DBJsonItem() { item = new JSONObject(); } public JSONObject getItem() { return item; } public int getInt(String name) { try { return getItem().getInt(name); } catch (JSONException ignored) { return 0; } } public String getString(String name) { try { return getItem().getString(name); } catch (JSONException ignored) { return null; } } } }