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}