• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 "convertor_error_code.h"
17 
18 #include <algorithm>
19 
20 #include "rdb_errno.h"
21 #include "relational_store_error_code.h"
22 
23 namespace OHOS::RdbNdk {
24 
25 static constexpr NdkErrorCode ERROR_CODE_MAP[] = {
26     { OHOS::NativeRdb::E_OK, RDB_OK },
27     { OHOS::NativeRdb::E_ERROR, RDB_E_ERROR },
28     { OHOS::NativeRdb::E_INVALID_ARGS, RDB_E_INVALID_ARGS },
29     { OHOS::NativeRdb::E_CANNOT_UPDATE_READONLY, RDB_E_CANNOT_UPDATE_READONLY },
30     { OHOS::NativeRdb::E_REMOVE_FILE, RDB_E_REMOVE_FILE },
31     { OHOS::NativeRdb::E_EMPTY_TABLE_NAME, RDB_E_EMPTY_TABLE_NAME },
32     { OHOS::NativeRdb::E_EMPTY_VALUES_BUCKET, RDB_E_EMPTY_VALUES_BUCKET },
33     { OHOS::NativeRdb::E_NOT_SELECT, RDB_E_EXECUTE_IN_STEP_QUERY },
34     { OHOS::NativeRdb::E_COLUMN_OUT_RANGE, RDB_E_INVALID_COLUMN_INDEX },
35     { OHOS::NativeRdb::E_INVALID_COLUMN_TYPE, RDB_E_INVALID_COLUMN_TYPE },
36     { OHOS::NativeRdb::E_EMPTY_FILE_NAME, RDB_E_EMPTY_FILE_NAME },
37     { OHOS::NativeRdb::E_INVALID_FILE_PATH, RDB_E_INVALID_FILE_PATH },
38     { OHOS::NativeRdb::E_TRANSACTION_IN_EXECUTE, RDB_E_TRANSACTION_IN_EXECUTE },
39     { OHOS::NativeRdb::E_ROW_OUT_RANGE, RDB_E_STEP_RESULT_IS_AFTER_LAST },
40     { OHOS::NativeRdb::E_EXECUTE_WRITE_IN_READ_CONNECTION, RDB_E_EXECUTE_WRITE_IN_READ_CONNECTION },
41     { OHOS::NativeRdb::E_BEGIN_TRANSACTION_IN_READ_CONNECTION, RDB_E_BEGIN_TRANSACTION_IN_READ_CONNECTION },
42     { OHOS::NativeRdb::E_NO_TRANSACTION_IN_SESSION, RDB_E_NO_TRANSACTION_IN_SESSION },
43     { OHOS::NativeRdb::E_MORE_STEP_QUERY_IN_ONE_SESSION, RDB_E_MORE_STEP_QUERY_IN_ONE_SESSION },
44     { OHOS::NativeRdb::E_NO_ROW_IN_QUERY, RDB_E_NO_ROW_IN_QUERY },
45     { OHOS::NativeRdb::E_INVALID_BIND_ARGS_COUNT, RDB_E_INVALID_BIND_ARGS_COUNT },
46     { OHOS::NativeRdb::E_INVALID_OBJECT_TYPE, RDB_E_INVALID_OBJECT_TYPE },
47     { OHOS::NativeRdb::E_INVALID_CONFLICT_FLAG, RDB_E_INVALID_CONFLICT_FLAG },
48     { OHOS::NativeRdb::E_HAVING_CLAUSE_NOT_IN_GROUP_BY, RDB_E_HAVING_CLAUSE_NOT_IN_GROUP_BY },
49     { OHOS::NativeRdb::E_NOT_SUPPORTED_BY_STEP_RESULT_SET, RDB_E_NOT_SUPPORTED },
50     { OHOS::NativeRdb::E_STEP_RESULT_SET_CROSS_THREADS, RDB_E_STEP_RESULT_SET_CROSS_THREADS },
51     { OHOS::NativeRdb::E_NO_MORE_ROWS, RDB_E_STEP_RESULT_IS_AFTER_LAST },
52     { OHOS::NativeRdb::E_STEP_RESULT_QUERY_EXCEEDED, RDB_E_STEP_RESULT_QUERY_EXCEEDED },
53     { OHOS::NativeRdb::E_STATEMENT_NOT_PREPARED, RDB_E_STATEMENT_NOT_PREPARED },
54     { OHOS::NativeRdb::E_EXECUTE_RESULT_INCORRECT, RDB_E_EXECUTE_RESULT_INCORRECT },
55     { OHOS::NativeRdb::E_ALREADY_CLOSED, RDB_E_STEP_RESULT_CLOSED },
56     { OHOS::NativeRdb::E_RELATIVE_PATH, RDB_E_RELATIVE_PATH },
57     { OHOS::NativeRdb::E_EMPTY_NEW_ENCRYPT_KEY, RDB_E_EMPTY_NEW_ENCRYPT_KEY },
58     { OHOS::NativeRdb::E_CHANGE_UNENCRYPTED_TO_ENCRYPTED, RDB_E_CHANGE_UNENCRYPTED_TO_ENCRYPTED },
59     { OHOS::NativeRdb::E_DATABASE_BUSY, RDB_E_CON_OVER_LIMIT },
60     { OHOS::NativeRdb::E_STORE_CLOSED, RDB_E_STEP_RESULT_CLOSED },
61     { OHOS::NativeRdb::E_NOT_SUPPORTED_ATTACH_IN_WAL_MODE, RDB_E_NOT_SUPPORTED_ATTACH_IN_WAL_MODE },
62     { OHOS::NativeRdb::E_CREATE_FOLDER_FAIL, RDB_E_CREATE_FOLDER_FAIL },
63     { OHOS::NativeRdb::E_SQLITE_SQL_BUILDER_NORMALIZE_FAIL, RDB_E_SQLITE_SQL_BUILDER_NORMALIZE_FAIL },
64     { OHOS::NativeRdb::E_STORE_SESSION_NOT_GIVE_CONNECTION_TEMPORARILY,
65         RDB_E_STORE_SESSION_NOT_GIVE_CONNECTION_TEMPORARILY },
66     { OHOS::NativeRdb::E_STORE_SESSION_NO_CURRENT_TRANSACTION, RDB_E_STORE_SESSION_NO_CURRENT_TRANSACTION },
67     { OHOS::NativeRdb::E_INVALID_PARCEL, RDB_E_INVALID_PARCEL },
68     { OHOS::NativeRdb::E_QUERY_IN_EXECUTE, RDB_E_QUERY_IN_EXECUTE },
69     { OHOS::NativeRdb::E_SET_PERSIST_WAL, RDB_E_SET_PERSIST_WAL },
70     { OHOS::NativeRdb::E_DB_NOT_EXIST, RDB_E_DB_NOT_EXIST },
71     { OHOS::NativeRdb::E_ARGS_READ_CON_OVERLOAD, RDB_E_ARGS_READ_CON_OVERLOAD },
72     { OHOS::NativeRdb::E_WAL_SIZE_OVER_LIMIT, RDB_E_WAL_SIZE_OVER_LIMIT },
73     { OHOS::NativeRdb::E_CON_OVER_LIMIT, RDB_E_CON_OVER_LIMIT },
74     { OHOS::NativeRdb::E_INVALID_SECRET_KEY, RDB_E_INVALID_SECRET_KEY },
75     { OHOS::NativeRdb::E_NOT_SUPPORT, RDB_E_NOT_SUPPORTED },
76 };
77 
78 static constexpr NdkErrorCode INTERFACE_CODE_MAP[] = {
79     { OHOS::NativeRdb::E_OK, RDB_OK },
80     { OHOS::NativeRdb::E_ERROR, RDB_E_ERROR },
81     { OHOS::NativeRdb::E_INVALID_ARGS, RDB_E_INVALID_ARGS },
82     { OHOS::NativeRdb::E_INVALID_OBJECT_TYPE, RDB_E_INVALID_ARGS },
83     { OHOS::NativeRdb::E_ALREADY_CLOSED, RDB_E_ALREADY_CLOSED},
84     { OHOS::NativeRdb::E_DATABASE_BUSY, RDB_E_DATABASE_BUSY },
85     { OHOS::NativeRdb::E_WAL_SIZE_OVER_LIMIT, RDB_E_WAL_SIZE_OVER_LIMIT },
86     { OHOS::NativeRdb::E_SQLITE_FULL, RDB_E_SQLITE_FULL },
87     { OHOS::NativeRdb::E_SQLITE_CORRUPT, RDB_E_SQLITE_CORRUPT },
88     { OHOS::NativeRdb::E_SQLITE_PERM, RDB_E_SQLITE_PERM },
89     { OHOS::NativeRdb::E_SQLITE_BUSY, RDB_E_SQLITE_BUSY },
90     { OHOS::NativeRdb::E_SQLITE_LOCKED, RDB_E_SQLITE_LOCKED },
91     { OHOS::NativeRdb::E_SQLITE_NOMEM, RDB_E_SQLITE_NOMEM },
92     { OHOS::NativeRdb::E_SQLITE_READONLY, RDB_E_SQLITE_READONLY },
93     { OHOS::NativeRdb::E_SQLITE_IOERR, RDB_E_SQLITE_IOERR },
94     { OHOS::NativeRdb::E_SQLITE_CANTOPEN, RDB_E_SQLITE_CANT_OPEN },
95     { OHOS::NativeRdb::E_SQLITE_TOOBIG, RDB_E_SQLITE_TOO_BIG },
96     { OHOS::NativeRdb::E_SQLITE_CONSTRAINT, RDB_E_SQLITE_CONSTRAINT },
97     { OHOS::NativeRdb::E_SQLITE_MISMATCH, RDB_E_SQLITE_MISMATCH },
98     { OHOS::NativeRdb::E_SQLITE_IOERR_FULL, RDB_E_SQLITE_IOERR },
99 };
100 
ConvertCode(const NdkErrorCode * codeMap,int count,int innerCode)101 int ConvertorErrorCode::ConvertCode(const NdkErrorCode *codeMap, int count, int innerCode)
102 {
103     auto errorCode = NdkErrorCode{ innerCode, -1 };
104     auto iter = std::lower_bound(codeMap, codeMap + count, errorCode,
105         [](const NdkErrorCode &errorCode1, const NdkErrorCode &errorCode2) {
106             return errorCode1.nativeCode < errorCode2.nativeCode;
107         });
108     if (iter < codeMap + count && iter->nativeCode == innerCode) {
109         return iter->ndkCode;
110     }
111     return RDB_E_ERROR;
112 }
NativeToNdk(int nativeErrCode)113 int ConvertorErrorCode::NativeToNdk(int nativeErrCode)
114 {
115     int count = static_cast<int>(sizeof(ERROR_CODE_MAP) / sizeof(ERROR_CODE_MAP[0]));
116     return ConvertCode(ERROR_CODE_MAP, count, nativeErrCode);
117 }
118 
GetInterfaceCode(int nativeErrCode)119 int ConvertorErrorCode::GetInterfaceCode(int nativeErrCode)
120 {
121     int count = static_cast<int>(sizeof(INTERFACE_CODE_MAP) / sizeof(INTERFACE_CODE_MAP[0]));
122     return ConvertCode(INTERFACE_CODE_MAP, count, nativeErrCode);
123 }
124 }