• 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 #ifndef COLLABORATION_EDIT_RD_UTILS_H
17 #define COLLABORATION_EDIT_RD_UTILS_H
18 
19 #include <map>
20 
21 #include <string>
22 #include "grd_error.h"
23 #include "grd_type_export.h"
24 #include "napi_errno.h"
25 
26 namespace OHOS::CollaborationEdit {
27 static std::map<int32_t, int32_t> g_errMap = {
28     {GRD_OK, Status::SUCCESS},
29     {GRD_ARRAY_INDEX_NOT_FOUND, Status::INDEX_OUT_OF_RANGE}
30 };
31 class RdUtils {
32 public:
33     // 1. Database open/close library interface encapsulation
34     static int RdDbOpen(const char *dbFile, const char *configStr, uint32_t flags, GRD_DB **db);
35     static int RdDbClose(GRD_DB *db, uint32_t flags);
36     static int RdSetLocalId(GRD_DB *db, const char *equipId);
37     static int RdGetLocalId(GRD_DB *db, char **equipId);
38     static int RdApplyUpdate(GRD_DB *db, char **applyInfo);
39     static int RdWriteUpdate(
40         GRD_DB *db, const char *equipId, const uint8_t *data, uint32_t size, const std::string &watermark);
41     static int RdGetRelativePos(GRD_DB *db, const char *tableName, const char *nodeSize, uint32_t pos, char **relPos);
42     static int RdGetAbsolutePos(
43         GRD_DB *db, const char *tableName, const char *relPos, const char *nodeSize, uint32_t *pos);
44     // 2. Node operation inter
45     static int RdInsertElements(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, uint32_t index, GRD_DocNodeInfoT *nodeInfo,
46         GRD_ElementIdT **outElementId);
47     static int RdDeleteElements(GRD_DB *db, const char *tableName, const GRD_ElementIdT *elementId, uint32_t index,
48         uint32_t length);
49     static int RdGetElements(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, uint32_t index, uint32_t length,
50         char **respXml);
51     static int RdFragmentToString(GRD_DB *db, const char *fragmentName, const GRD_ElementIdT *elementId,
52         char **replyJson);
53     // 3. XmlElement attribute operation interface encapsulation
54     static int RdElementSetAttribute(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, const char *attributeName,
55         const char *attributeValue, uint32_t flags);
56     static int RdElementRemoveAttribute(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, const char *attributeName);
57     static int RdElementGetAttributes(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, char **allAttributes);
58     // 4. Text operation interface encapsulation
59     static int RdTextInsert(GRD_DB *db, GRD_XmlOpPositionT *opPos, uint32_t index, const char *content,
60         const char *formatStr);
61     static int RdTextDelete(GRD_DB *db, GRD_XmlOpPositionT *opPos, uint32_t index, uint32_t length);
62     static int RdTextFormat(GRD_DB *db, GRD_XmlOpPositionT *opPos, uint32_t index, uint32_t length,
63         const char *formatStr);
64     static int RdTextGetLength(GRD_DB *db, GRD_XmlOpPositionT *opPos, uint32_t *length);
65     static int RdTextReadInStrMode(GRD_DB *db, GRD_XmlOpPositionT *opPos, char **value);
66     static int RdTextReadInDeltaMode(GRD_DB *db, GRD_XmlOpPositionT *opPos, const char *snapshot,
67         const char *snapshotPerv, char **delta);
68     // 5. Undo/Redo operation interface encapsulation
69     static int RdDocUndoManager(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, GRD_UndoParamT *param);
70     static int RdDocCloseUndoManager(GRD_DB *db, GRD_XmlOpPositionT *elementAddr);
71     static int RdDocUndo(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, char **modify);
72     static int RdDocRedo(GRD_DB *db, GRD_XmlOpPositionT *elementAddr, char **modify);
73     static int RdDocStopCapturing(GRD_DB *db, GRD_XmlOpPositionT *elementAddr);
74     // 6. Sync operation interface encapsulation
75     static int RdSync(GRD_DB *db, GRD_SyncConfig *config);
76     static int RdRegistryThreadPool(GRD_DB *db, GRD_ThreadPoolT *threadPool);
77     // Last. Memory free and others
78     static void RdFreeElementId(GRD_ElementIdT *outElementId);
79     static int RdFreeValue(char *value);
80     static int RdSetCloudDb(GRD_DB *db, GRD_ICloudDBT *iCloud);
81 
82     static int32_t TransferToNapiErrNo(int32_t originNo);
83 };
84 
85 } // namepace OHOS::CollaborationEdit
86 
87 #endif // COLLABORATION_EDIT_RD_UTILS_H
88