• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
16import { WorkerType } from "./WorkFactory"
17import WorkerWrapper from "./base/WorkerWrapper"
18import WorkerTask from "./base/WorkerTask"
19import { ThreadWorkerGlobalScope } from '@ohos.worker';
20import ContactsModel from '../model/ContactsModel';
21import ConversationModel from '../model/ConversationModel';
22import HiLog from '../utils/HiLog';
23
24const TAG = "DataWorkerWrapper"
25
26export default class DataWorkerWrapper extends WorkerWrapper {
27  private static sInstance: DataWorkerWrapper = undefined;
28
29  private constructor() {
30    super()
31  }
32
33  static getInstance() {
34    HiLog.i(TAG, "getInstance in.");
35    if (DataWorkerWrapper.sInstance == undefined || DataWorkerWrapper.sInstance.mWorker == undefined) {
36      HiLog.i(TAG, "make DataWorkerWrapper.");
37      DataWorkerWrapper.sInstance = new DataWorkerWrapper();
38    }
39    return DataWorkerWrapper.sInstance;
40  }
41
42  getWorkerType(): WorkerType {
43    return WorkerType.DataWorker;
44  }
45}
46
47export enum DataWorkerConstant {
48  "searchContracts",
49  "queryContact",
50  "queryContactDataByIds",
51  "countContact",
52  "queryContactDataByTelephone",
53  "queryProfile",
54  "queryMessageDetail",
55  "queryMmsPart",
56  "queryMaxGroupId",
57  "insertMessageDetail",
58  "batchInsertMmsPart",
59  "queryGroupIdBySessionId",
60  "deleteMessageBySessionIds",
61  "deleteMmsPartByGroupIds",
62  "deleteMessageByGroupIds",
63  "deleteMessageBySessionIdsAndLock",
64  "markAllAsRead",
65  "markAllToRead",
66  "updateById",
67  "updateLock",
68  "updateCollect"
69}
70
71export class DataWorkerTask extends WorkerTask {
72  private static sInstance: DataWorkerTask = undefined;
73
74  private mContactsModel: ContactsModel = new ContactsModel();
75
76  private mConversationModel: ConversationModel = new ConversationModel();
77
78  private constructor(workerPort: ThreadWorkerGlobalScope) {
79    super(workerPort);
80  }
81
82  static getInstance(workerPort: ThreadWorkerGlobalScope) {
83    HiLog.i(TAG, "getInstance in.");
84    if (DataWorkerTask.sInstance == undefined || DataWorkerTask.sInstance.workerPort == undefined) {
85      DataWorkerTask.sInstance = new DataWorkerTask(workerPort);
86    }
87    return DataWorkerTask.sInstance;
88  }
89
90  runInWorker(request: string, callBack: (v?: any) => void, param?: any) {
91    HiLog.i(TAG, `runInWorker ${request}`);
92    switch (request) {
93      case DataWorkerConstant[DataWorkerConstant.searchContracts]:
94        this.mContactsModel.searchContracts(param.actionData, (data) => {
95          HiLog.i(TAG, `searchContracts result: ${JSON.stringify(data).length}`);
96          callBack(data);
97        });
98        break;
99      case DataWorkerConstant[DataWorkerConstant.queryContact]:
100        this.mContactsModel.queryContact(param.actionData, (data) => {
101          HiLog.i(TAG, `queryContact result: ${JSON.stringify(data).length}`);
102          callBack(data);
103        });
104        break;
105      case DataWorkerConstant[DataWorkerConstant.queryContactDataByIds]:
106        this.mContactsModel.queryContactDataByIds(param.actionData, (data) => {
107          HiLog.i(TAG, `queryContactDataByIds result: ${JSON.stringify(data).length}`);
108          callBack(data);
109        });
110        break;
111      case DataWorkerConstant[DataWorkerConstant.countContact]:
112        this.mContactsModel.countContact(param.actionData, (data) => {
113          HiLog.i(TAG, `countContact result: ${JSON.stringify(data).length}`);
114          callBack(data);
115        });
116        break;
117      case DataWorkerConstant[DataWorkerConstant.queryContactDataByTelephone]:
118        this.mContactsModel.queryContactDataByTelephone(param.actionData, (data) => {
119          HiLog.i(TAG, `queryContactDataByTelephone result: ${JSON.stringify(data).length}`);
120          callBack(data);
121        });
122        break;
123      case DataWorkerConstant[DataWorkerConstant.queryProfile]:
124        this.mContactsModel.queryProfile(param.actionData, (data) => {
125          HiLog.i(TAG, `queryProfile result: ${JSON.stringify(data).length}`);
126          callBack(data);
127        });
128        break;
129      case DataWorkerConstant[DataWorkerConstant.queryMessageDetail]:
130        this.mConversationModel.queryMessageDetail(param.actionData, (data) => {
131          HiLog.i(TAG, `queryMessageDetail result: ${JSON.stringify(data).length}`);
132          callBack(data);
133        });
134        break;
135      case DataWorkerConstant[DataWorkerConstant.queryMmsPart]:
136        this.mConversationModel.queryMmsPart(param.actionData, (data) => {
137          HiLog.i(TAG, `queryMmsPart result: ${JSON.stringify(data).length}`);
138          callBack(data);
139        });
140        break;
141      case DataWorkerConstant[DataWorkerConstant.queryMaxGroupId]:
142        this.mConversationModel.queryMaxGroupId(param.actionData, (data) => {
143          HiLog.i(TAG, `queryMaxGroupId result: ${JSON.stringify(data).length}`);
144          callBack(data);
145        });
146        break;
147      case DataWorkerConstant[DataWorkerConstant.insertMessageDetail]:
148        this.mConversationModel.insertMessageDetail(param.actionData, (data) => {
149          HiLog.i(TAG, `insertMessageDetail result: ${JSON.stringify(data).length}`);
150          callBack(data);
151        });
152        break;
153      case DataWorkerConstant[DataWorkerConstant.batchInsertMmsPart]:
154        this.mConversationModel.batchInsertMmsPart(param.actionData, (data) => {
155          HiLog.i(TAG, `batchInsertMmsPart result: ${JSON.stringify(data).length}`);
156          callBack(data);
157        });
158        break;
159      case DataWorkerConstant[DataWorkerConstant.queryGroupIdBySessionId]:
160        this.mConversationModel.queryGroupIdBySessionId(param.actionData, (data) => {
161          HiLog.i(TAG, `queryGroupIdBySessionId result: ${JSON.stringify(data).length}`);
162          callBack(data);
163        });
164        break;
165      case DataWorkerConstant[DataWorkerConstant.deleteMessageBySessionIds]:
166//        this.mConversationModel.deleteMessageBySessionIds(param.actionData, (data) => {
167//          HiLog.i(TAG, `deleteMessageBySessionIds result: ${JSON.stringify(data).length}`);
168//          callBack(data);
169//        });
170        break;
171      case DataWorkerConstant[DataWorkerConstant.deleteMmsPartByGroupIds]:
172//        this.mConversationModel.deleteMmsPartByGroupIds(param.actionData, (data) => {
173//          HiLog.i(TAG, `deleteMmsPartByGroupIds result: ${JSON.stringify(data).length}`);
174//          callBack(data);
175//        });
176        break;
177      case DataWorkerConstant[DataWorkerConstant.deleteMessageByGroupIds]:
178//        this.mConversationModel.deleteMessageByGroupIds(param.actionData, (data) => {
179//          HiLog.i(TAG, `deleteMessageByGroupIds result: ${JSON.stringify(data).length}`);
180//          callBack(data);
181//        });
182        break;
183      case DataWorkerConstant[DataWorkerConstant.deleteMessageBySessionIdsAndLock]:
184//        this.mConversationModel.deleteMessageBySessionIdsAndLock(param.actionData, (data) => {
185//          HiLog.i(TAG, `deleteMessageBySessionIdsAndLock result: ${JSON.stringify(data).length}`);
186//          callBack(data);
187//        });
188        break;
189      case DataWorkerConstant[DataWorkerConstant.markAllAsRead]:
190//        this.mConversationModel.markAllAsRead(param.actionData, (data) => {
191//          HiLog.i(TAG, `markAllAsRead result: ${JSON.stringify(data).length}`);
192//          callBack(data);
193//        });
194        break;
195      case DataWorkerConstant[DataWorkerConstant.markAllToRead]:
196//        this.mConversationModel.markAllToRead(param.actionData, (data) => {
197//          HiLog.i(TAG, `markAllToRead result: ${JSON.stringify(data).length}`);
198//          callBack(data);
199//        });
200        break;
201      case DataWorkerConstant[DataWorkerConstant.updateById]:
202        this.mConversationModel.updateById(param.actionData, (data) => {
203          HiLog.i(TAG, `updateById result: ${JSON.stringify(data).length}`);
204          callBack(data);
205        });
206        break;
207      case DataWorkerConstant[DataWorkerConstant.updateLock]:
208        this.mConversationModel.updateLock(param.actionData, (data) => {
209          HiLog.i(TAG, `updateLock result: ${JSON.stringify(data).length}`);
210          callBack(data);
211        });
212        break;
213      case DataWorkerConstant[DataWorkerConstant.updateCollect]:
214        this.mConversationModel.updateCollect(param.actionData, (data) => {
215          HiLog.i(TAG, `updateCollect result: ${JSON.stringify(data).length}`);
216          callBack(data);
217        });
218        break;
219      default:
220        HiLog.w(TAG, `${request} not allow!!!`)
221        break;
222    }
223  }
224}