正在查看: Petal Maps v4.7.0.310001 应用的 IdsProvider.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Petal Maps v4.7.0.310001 应用的 IdsProvider.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.huawei.ids.pdk.db.local;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.text.TextUtils;
import android.util.ArrayMap;
import com.huawei.ids.pdk.db.local.Contract;
import com.huawei.ids.pdk.util.EnvironmentUtil;
import com.huawei.ids.pdk.util.IdsLog;
import java.util.Map;
public class IdsProvider extends ContentProvider {
private static final int DATABASE_VERSION = 3;
private static final int IDS_FREQUENCY_CONTROL = 1;
private static final int IDS_RES_PACKAGE = 2;
private static final int IDS_SINGLE_RES = 3;
private static final String TAG = "IdsProvider";
private SQLiteOpenHelper mSqLiteOpenHelper;
private UriMatcher mUriMatcher;
public static class DatabaseHelper extends SQLiteOpenHelper {
private static final String HIAI_DATABASE_NAME = "ids_database.db";
private final Map<String, String> triggerMap;
private void addSqlTrigger(SQLiteDatabase sQLiteDatabase) {
for (Map.Entry<String, String> entry : this.triggerMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
IdsLog.d(IdsProvider.TAG, "addSqlTrigger:" + key);
sQLiteDatabase.execSQL(value);
}
}
private void addTimeTtlTriggerToMap(String str, String str2, long j) {
String str3 = Contract.PRE_TIME_TTL_TRIGGER_NAME + str;
this.triggerMap.put(str3, Contract.PRE_SQL_CREATE_TRIGGER + str3 + " AFTER INSERT ON " + str + " WHEN (SELECT count(*) FROM (SELECT " + str2 + " FROM " + str + " WHERE " + str2 + "<(strftime('%s',(datetime('now','localtime')))-" + j + ")*1000))>0 BEGIN DELETE FROM " + str + " WHERE " + str2 + "<(strftime('%s',(datetime('now','localtime')))-" + j + ")*1000; END;");
}
private void addTriggerToMap() {
addTimeTtlTriggerToMap(Contract.FrequencyControlData.TABLE_NAME, Contract.FrequencyControlData.LAST_TIME, Contract.FrequencyControlData.TTL_TIME);
}
private void createDataBaseTable(SQLiteDatabase sQLiteDatabase) {
createTable(sQLiteDatabase);
addTriggerToMap();
addSqlTrigger(sQLiteDatabase);
}
private void createTable(SQLiteDatabase sQLiteDatabase) {
sQLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS t_ids_single_res_data (origin_id TEXT(64) NOT NULL, res_id TEXT(64) NOT NULL,res_value TEXT,res_path TEXT(128),encrypt_mode INTEGER(8),data_version TEXT(64) NOT NULL,PRIMARY KEY (origin_id ,res_id))");
sQLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS t_ids_resPackage_data (resId TEXT(64) NOT NULL,domain TEXT(64) NOT NULL,district TEXT(64) ,deviceType TEXT(64) ,productName TEXT(64) ,romVersion TEXT(64) ,osVersion TEXT(64) ,version TEXT(64) NOT NULL,supportSubRes TEXT(64) ,subResName TEXT(64),subResVersion TEXT(32),cloudJsonInfo TEXT,lastQueryTime INTEGER,resPackagePath TEXT(128),PRIMARY KEY (resId))");
sQLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS t_ids_frequency_control_data (dataTag TEXT NOT NULL, dataKeys TEXT,hashedValue TEXT,lastTime INTEGER,queryFrequency INTEGER,maxFrequency INTEGER,PRIMARY KEY (dataTag,dataKeys))");
}
private void dropTable(SQLiteDatabase sQLiteDatabase) {
sQLiteDatabase.execSQL("DROP TABLE IF EXISTS t_ids_frequency_control_data");
}
@Override
public void onCreate(SQLiteDatabase sQLiteDatabase) {
createDataBaseTable(sQLiteDatabase);
}
@Override
public void onUpgrade(SQLiteDatabase sQLiteDatabase, int i, int i2) {
IdsLog.i(IdsProvider.TAG, "Upgrading database from version " + i + " to " + i2);
if (i < 3) {
dropTable(sQLiteDatabase);
onCreate(sQLiteDatabase);
}
}
private DatabaseHelper(Context context) {
super(context, HIAI_DATABASE_NAME, (SQLiteDatabase.CursorFactory) null, 3);
this.triggerMap = new ArrayMap();
}
@Override
public void onDowngrade(SQLiteDatabase sQLiteDatabase, int i, int i2) {
}
}
private void initUriMatcher() {
IdsLog.d(TAG, "init uri match");
UriMatcher uriMatcher = new UriMatcher(-1);
this.mUriMatcher = uriMatcher;
uriMatcher.addURI(Contract.getAuthority(), Contract.FrequencyControlData.TABLE_NAME, 1);
this.mUriMatcher.addURI(Contract.getAuthority(), Contract.ResPackageData.TABLE_NAME, 2);
this.mUriMatcher.addURI(Contract.getAuthority(), Contract.SingleResData.TABLE_NAME, 3);
}
private String uriMatcher(Uri uri) {
if (uri == null) {
return "";
}
int match = this.mUriMatcher.match(uri);
if (match == 1) {
return Contract.FrequencyControlData.TABLE_NAME;
}
if (match == 2) {
return Contract.ResPackageData.TABLE_NAME;
}
if (match == 3) {
return Contract.SingleResData.TABLE_NAME;
}
IdsLog.e(TAG, "Unknown URI " + uri);
return "";
}
@Override
public int delete(Uri uri, String str, String[] strArr) {
String uriMatcher = uriMatcher(uri);
if (TextUtils.isEmpty(uriMatcher)) {
IdsLog.i(TAG, "delete uri not matcher");
return -1;
}
IdsLog.i(TAG, "delete tableName " + uriMatcher);
try {
SQLiteDatabase writableDatabase = this.mSqLiteOpenHelper.getWritableDatabase();
if (writableDatabase == null) {
IdsLog.w(TAG, "getWritableDatabase is null");
return -1;
}
int delete = writableDatabase.delete(uriMatcher, str, strArr);
if (delete > 0) {
notifyImpl(uri);
}
return delete;
} catch (SQLException unused) {
IdsLog.e(TAG, "delete SqlException");
return -1;
}
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
SQLiteDatabase writableDatabase;
String uriMatcher = uriMatcher(uri);
if (TextUtils.isEmpty(uriMatcher)) {
IdsLog.i(TAG, "insert uri not matcher");
return null;
}
IdsLog.i(TAG, "insert tableName " + uriMatcher);
try {
writableDatabase = this.mSqLiteOpenHelper.getWritableDatabase();
} catch (SQLException unused) {
IdsLog.e(TAG, "insert SqlException");
}
if (writableDatabase == null) {
IdsLog.w(TAG, "getWritableDatabase is null");
return null;
}
long insert = writableDatabase.insert(uriMatcher, null, contentValues);
if (insert > -1) {
notifyImpl(uri);
return ContentUris.withAppendedId(uri, insert);
}
return null;
}
public void notifyImpl(Uri uri) {
IdsLog.i(TAG, "notify uri!");
getContext().getContentResolver().notifyChange(uri, null);
}
@Override
public boolean onCreate() {
IdsLog.i(TAG, "onCreate");
EnvironmentUtil.setProviderContext(getContext());
this.mSqLiteOpenHelper = new DatabaseHelper(getContext());
initUriMatcher();
return true;
}
@Override
public android.database.Cursor query(android.net.Uri r13, java.lang.String[] r14, java.lang.String r15, java.lang.String[] r16, java.lang.String r17) {
throw new UnsupportedOperationException("Method not decompiled: com.huawei.ids.pdk.db.local.IdsProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String):android.database.Cursor");
}
@Override
public int update(Uri uri, ContentValues contentValues, String str, String[] strArr) {
String uriMatcher = uriMatcher(uri);
if (TextUtils.isEmpty(uriMatcher)) {
IdsLog.i(TAG, "update uri not matcher");
return -1;
}
IdsLog.i(TAG, "update tableName " + uriMatcher);
try {
SQLiteDatabase writableDatabase = this.mSqLiteOpenHelper.getWritableDatabase();
if (writableDatabase == null) {
IdsLog.w(TAG, "getWritableDatabase is null");
return -1;
}
int update = writableDatabase.update(uriMatcher, contentValues, str, strArr);
if (update > 0) {
notifyImpl(uri);
}
return update;
} catch (SQLException unused) {
IdsLog.e(TAG, "update SqlException");
return -1;
}
}
}