导航菜单

页面标题

页面副标题

Petal Maps v4.7.0.310001 - IdsProvider.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;
        }
    }
}