· 6 years ago · Dec 11, 2019, 03:44 PM
1package com.phehossof.phoenixinstall;
2
3import android.content.ContentProvider;
4import android.content.ContentUris;
5import android.content.ContentValues;
6import android.content.Context;
7import android.content.UriMatcher;
8import android.database.Cursor;
9import android.database.sqlite.SQLiteDatabase;
10import android.database.sqlite.SQLiteException;
11import android.database.sqlite.SQLiteOpenHelper;
12import android.database.sqlite.SQLiteQueryBuilder;
13import android.net.Uri;
14import androidx.annotation.NonNull;
15import androidx.annotation.Nullable;
16import java.util.HashMap;
17import java.util.Objects;
18
19public class ProviderSettings extends ContentProvider {
20 static final String PROVIDER_NAME ="com.phehossof.phoenixinstall.ProviderSettings";
21 static final String URL = "content://" + PROVIDER_NAME +"/settings";
22 static final Uri CONTENT_URI = Uri.parse(URL);
23
24 static final String id = "id";
25 static final String coname = "coname";
26 static final String coaddress = "coaddress";
27 static final String cocity = "cocity";
28 static final String costate = "costate";
29 static final String cszip = "cozip";
30 static final String apiurl = "apiurl";
31 static final int uriCode = 1;
32 static final UriMatcher uriMatcher;
33 private static HashMap<String, String> values;
34
35 static {
36 uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
37 uriMatcher.addURI(PROVIDER_NAME, "settings", uriCode);
38 uriMatcher.addURI(PROVIDER_NAME, "settings/*", uriCode);
39 }
40
41 @Override
42 public boolean onCreate() {
43 Context context = getContext();
44 DatabaseHelper dbHelper = new DatabaseHelper(context);
45 db = dbHelper.getWritableDatabase();
46 return db != null;
47 }
48
49 @Nullable
50 @Override
51 public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
52 SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
53 qb.setTables(TABLE_NAME);
54 qb.setStrict(true);
55 qb.setProjectionMap(null);
56 if (uriMatcher.match(uri) == uriCode) qb.setProjectionMap(values);
57 else throw new IllegalArgumentException("Unknown URI " + uri);
58 if (sortOrder == null || Objects.equals(sortOrder, "")) sortOrder = id;
59 Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder);
60 c.setNotificationUri(Objects.requireNonNull(getContext()).getContentResolver(), uri);
61 return c;
62 }
63
64 @Nullable
65 @Override
66 public String getType(@NonNull Uri uri) {
67 if (uriMatcher.match(uri) == uriCode) return "vnd.android.cursor/settings";
68 throw new IllegalArgumentException("Unsupported URI:" + uri);
69 }
70
71 @Nullable
72 @Override
73 public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
74 long rowID = db.insert(TABLE_NAME,"", values);
75 if (rowID > 0) {
76 Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
77 Objects.requireNonNull(getContext()).getContentResolver().notifyChange(_uri, null);
78 return _uri;
79 }
80 throw new SQLiteException("Failed to add record into " + uri);
81 }
82
83 @Override
84 public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
85 int count;
86 if (uriMatcher.match(uri) == uriCode) {
87 count = db.delete(TABLE_NAME,null, null);
88 } else {
89 throw new IllegalArgumentException("Unknown URI " + uri);
90 }
91 Objects.requireNonNull(getContext()).getContentResolver().notifyChange(uri, null);
92 return count;
93 }
94
95 @Override
96 public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
97 return 0;
98 }
99
100 private SQLiteDatabase db;
101 static final String DATABASE_NAME = "Phoenix";
102 static final String TABLE_NAME = "Settings";
103 static final int DATABASE_VERSION = 1;
104 static final String CREATE_DB_TABLE = " CREATE TABLE " + TABLE_NAME
105 + " (id INTEGER PRIMARY KEY AUTOINCREMENT, "
106 + " coname TEXT NOT NULL, "
107 + " coaddress TEXT NOT NULL, "
108 + " cocity TEXT NOT NULL,"
109 + " costate TEXT NOT NULL,"
110 + " cozip TEXT NOT NULL,"
111 + " apiurl TEXT NOT NULL);";
112
113 private static class DatabaseHelper extends SQLiteOpenHelper {
114 DatabaseHelper(Context context) {
115 super(context, DATABASE_NAME, null, DATABASE_VERSION);
116 }
117
118 @Override
119 public void onCreate(SQLiteDatabase db) {
120 db.execSQL(CREATE_DB_TABLE);
121 }
122
123 @Override
124 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
125 db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
126 onCreate(db);
127 }
128 }
129}