1/* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include "rdb_opkey_helper.h" 17 18#include "opkey_data.h" 19#include "rdb_errno.h" 20#include "rdb_opkey_callback.h" 21#include "rdb_store_config.h" 22#include "vector" 23 24namespace OHOS { 25namespace Telephony { 26const int VERSION = 1; 27RdbOpKeyHelper::RdbOpKeyHelper() 28{ 29} 30 31int RdbOpKeyHelper::Init() 32{ 33 int errCode = NativeRdb::E_OK; 34 NativeRdb::RdbStoreConfig config(dbPath_); 35 config.SetJournalMode(NativeRdb::JournalMode::MODE_TRUNCATE); 36 std::string opKeyTableStr; 37 CreateOpKeyInfoTableStr(opKeyTableStr); 38 std::string opKeyIndexStr; 39 CreateOpKeyInfoIndexStr(opKeyIndexStr); 40 std::vector<std::string> createTableVec; 41 createTableVec.push_back(opKeyTableStr); 42 createTableVec.push_back(opKeyIndexStr); 43 RdbOpKeyCallback callback(createTableVec); 44 CreateRdbStore(config, VERSION, callback, errCode); 45 return errCode; 46} 47 48void RdbOpKeyHelper::UpdateDbPath(const std::string &path) 49{ 50 dbPath_ = path + DB_NAME; 51} 52 53void RdbOpKeyHelper::CreateOpKeyInfoTableStr(std::string &createTableStr) 54{ 55 createTableStr.append("CREATE TABLE IF NOT EXISTS ").append(TABLE_OPKEY_INFO).append("("); 56 createTableStr.append(OpKeyData::ID).append(" INTEGER PRIMARY KEY AUTOINCREMENT, "); 57 createTableStr.append(OpKeyData::MCCMNC).append(" TEXT NOT NULL , "); 58 createTableStr.append(OpKeyData::GID1).append(" TEXT , "); 59 createTableStr.append(OpKeyData::GID2).append(" TEXT , "); 60 createTableStr.append(OpKeyData::IMSI).append(" TEXT , "); 61 createTableStr.append(OpKeyData::SPN).append(" TEXT , "); 62 createTableStr.append(OpKeyData::ICCID).append(" TEXT , "); 63 createTableStr.append(OpKeyData::OPERATOR_NAME).append(" TEXT , "); 64 createTableStr.append(OpKeyData::OPERATOR_KEY).append(" TEXT DEFAULT '-1', "); 65 createTableStr.append(OpKeyData::OPERATOR_KEY_EXT).append(" TEXT DEFAULT '', "); 66 createTableStr.append(OpKeyData::RULE_ID).append(" INTEGER DEFAULT 0, "); 67 createTableStr.append("UNIQUE (").append(OpKeyData::MCCMNC).append(", "); 68 createTableStr.append(OpKeyData::GID1).append(", "); 69 createTableStr.append(OpKeyData::GID2).append(", "); 70 createTableStr.append(OpKeyData::IMSI).append(", "); 71 createTableStr.append(OpKeyData::SPN).append(", "); 72 createTableStr.append(OpKeyData::ICCID).append("))"); 73} 74 75void RdbOpKeyHelper::CreateOpKeyInfoIndexStr(std::string &createIndexStr) 76{ 77 createIndexStr.append("CREATE INDEX IF NOT EXISTS [").append(MCCMNC_INDEX).append("]"); 78 createIndexStr.append("ON [").append(TABLE_OPKEY_INFO).append("]"); 79 createIndexStr.append("([").append(OpKeyData::MCCMNC).append("])"); 80} 81 82int RdbOpKeyHelper::CommitTransactionAction() 83{ 84 int result = Commit(); 85 if (result != NativeRdb::E_OK) { 86 RollBack(); 87 } 88 return result; 89} 90 91int64_t RdbOpKeyHelper::InitOpKeyDatabase() 92{ 93 return RdbOpKeyCallback::InitData(*store_, TABLE_OPKEY_INFO); 94} 95} // namespace Telephony 96} // namespace OHOS 97