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 fileio from '@ohos.fileio' 17import { LogUtil } from './LogUtil' 18import FolderUtil from './FolderUtil' 19import NoteUtil from './NoteUtil' 20import SysDefData from '../model/databaseModel/SysDefData' 21import FolderData from '../model/databaseModel/FolderData' 22import NoteData from '../model/databaseModel/NoteData' 23import { 24 TableSql, 25 TableName, 26 FolderTableColumn, 27 NoteTableColumn, 28 SysDefFolderUuid 29} from '../model/databaseModel/EnumData' 30import relationalStore from '@ohos.data.relationalStore' 31import util from '@ohos.util'; 32 33const TAG = "RdbStoreUtil" 34 35const FileMaxSize: number = 20 * 1024 * 1024 36 37/** 38 * db instance 39 */ 40 41export default { 42 /** 43 * create db and table 44 */ 45 createRdbStore(context) { 46 try { 47 relationalStore.getRdbStore(context, SysDefData.dbInfo.db_name) 48 .then(async (store) => { 49 // add sys-def folder and note to AppStorage 50 let folderDataArray = [] 51 let sysDefFolderArray = [SysDefData.sys_def_allNotes, SysDefData.sys_def_unClassified, 52 SysDefData.sys_def_myFavorites, SysDefData.sys_def_recentDeletes, 53 SysDefData.sys_def_personal, SysDefData.sys_def_life, SysDefData.sys_def_work] 54 sysDefFolderArray.forEach((sysDefFolder) => { 55 let folderData = new FolderData(sysDefFolder.id, sysDefFolder.name, sysDefFolder.uuid, sysDefFolder.color, 56 sysDefFolder.folder_type, sysDefFolder.is_deleted, sysDefFolder.created_time, 57 sysDefFolder.modified_time) 58 folderDataArray.push(folderData) 59 }) 60 LogUtil.info(TAG, "folderDataArray[sysdef] : " + folderDataArray.length) 61 62 let noteDataArray = [] 63 let sysDefNoteArray = [SysDefData.sys_def_note1, SysDefData.sys_def_note2, 64 SysDefData.sys_def_note3, SysDefData.sys_def_note4] 65 sysDefNoteArray.forEach((sysDefNote) => { 66 let noteData = new NoteData(sysDefNote.id, sysDefNote.title, sysDefNote.uuid, sysDefNote.folder_uuid, sysDefNote.content_text, 67 sysDefNote.content_img, sysDefNote.note_type, sysDefNote.is_top, sysDefNote.is_favorite, 68 sysDefNote.is_deleted, sysDefNote.created_time, sysDefNote.modified_time, sysDefNote.deleted_time, sysDefNote.slider_value) 69 noteDataArray.push(noteData) 70 }) 71 LogUtil.info(TAG, "noteDataArray[sysdef] : " + noteDataArray.length) 72 73 AppStorage.SetOrCreate('AllFolderArray', folderDataArray) 74 AppStorage.SetOrCreate('AllNoteArray', noteDataArray) 75 LogUtil.info(TAG, "AppStorage[sysdef] set AllFolderArray and AllNoteArray success") 76 77 // save continue data 78 let isContinue = AppStorage.Get<boolean>('IsContinue'); 79 LogUtil.info(TAG, "createRdbStore, isContinue is " + isContinue) 80 if (isContinue) { 81 let continueNote: string = AppStorage.Get('ContinueNote') 82 let continueSection = AppStorage.Get('ContinueSection') 83 let noteObj = JSON.parse(continueNote) 84 let noteData = new NoteData(noteObj.uuid, noteObj.title, noteObj.uuid, noteObj.folder_uuid, 85 noteObj.content_text, noteObj.content_img, noteObj.note_type, noteObj.is_top, noteObj.is_favorite, 86 noteObj.is_deleted, noteObj.created_time, noteObj.modified_time, noteObj.deleted_time, noteObj.slider_value) 87 88 // save img to FileDir 89 LogUtil.info(TAG, "createRdbStore, save img to FileDir") 90 let imgNameArray = this.getImgNameFromHtml(noteData) 91 imgNameArray.forEach((imgName: string) => { 92 this.writeToFileDir(imgName) 93 }) 94 95 // if not exit this note 96 let exist = false 97 let folderUuid = "" 98 for (let note of noteDataArray) { 99 if (noteData.created_time == note.created_time) { 100 exist = true 101 folderUuid = note.folder_uuid 102 break 103 } 104 } 105 LogUtil.info(TAG, "createRdbStore, exist : " + exist) 106 if (!exist) { 107 // 迁移过来的笔记在本地不存在,则保存在未分类文件夹 108 noteData.folder_uuid = SysDefFolderUuid.UnClassified 109 noteDataArray.push(noteData) 110 AppStorage.SetOrCreate('AllNoteArray', noteDataArray) 111 this.insert(TableName.NoteTable, noteData.toNoteObject(), null) 112 AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, SysDefFolderUuid.UnClassified)) 113 } else { 114 // 迁移过来的笔记在本地存在,则进行修改 115 for (let i = 0; i < noteDataArray.length; i++) { 116 if (noteData.created_time == noteDataArray[i].created_time) { 117 noteDataArray[i] = noteData 118 LogUtil.info(TAG, "createRdbStore, update noteData in noteDataArray success") 119 break 120 } 121 } 122 let predicates_note = this.getRdbPredicates(TableName.NoteTable) 123 predicates_note.equalTo(NoteTableColumn.CreatedTime, noteData.created_time) 124 this.update(noteData.toNoteObject(), predicates_note, null) 125 AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, folderUuid)) 126 } 127 AppStorage.SetOrCreate('Note', noteData) 128 AppStorage.SetOrCreate<string>('ContinueNote', JSON.stringify(noteData.toNoteObject())) 129 AppStorage.SetOrCreate('Section', continueSection) 130 AppStorage.SetOrCreate<NoteData>('NewNote', noteData) 131 } else { 132 LogUtil.info(TAG, "createRdbStore, IsContinue false") 133 AppStorage.SetOrCreate('Folder', AppStorage.Get('AllFolderArray')[0]) 134 let note = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), SysDefFolderUuid.AllNotes) 135 AppStorage.SetOrCreate('Note', note) 136 if (note) { 137 AppStorage.SetOrCreate<string>('ContinueNote', JSON.stringify(note.toNoteObject())) 138 } 139 AppStorage.SetOrCreate('Section', 3) 140 } 141 AppStorage.SetOrCreate('DBQueryFinished', 1) 142 LogUtil.info(TAG, "createRdbStore, set DBQueryFinished 1") 143 LogUtil.info(TAG, "createRdbStore, store is " + store) 144 globalThis.rdbStore = store 145 // create table 146 await globalThis.rdbStore.executeSql(TableSql.FolderTableSQL, null) 147 await globalThis.rdbStore.executeSql(TableSql.NoteTableSQL, null) 148 await globalThis.rdbStore.executeSql(TableSql.AttachmentTableSQL, null) 149 await globalThis.rdbStore.executeSql(TableSql.FormTableSQL, null) 150 LogUtil.info(TAG, "create table success") 151 // insert system defined folder 152 await globalThis.rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_allNotes) 153 await globalThis.rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_unClassified) 154 await globalThis.rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_myFavorites) 155 await globalThis.rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_recentDeletes) 156 await globalThis.rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_personal) 157 await globalThis.rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_life) 158 await globalThis.rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_work) 159 LogUtil.info(TAG, "insert system defined folder success") 160 // insert system defined note and attachment 161 await globalThis.rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note1) 162 await globalThis.rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note2) 163 await globalThis.rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note3) 164 await globalThis.rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note4) 165 LogUtil.info(TAG, "insert system defined note and attachment success") 166 }) 167 } catch (err) { 168 LogUtil.warn(TAG, "createRdbStore, error : " + err) 169 } 170 }, 171 172 /** 173 * query folders and notes from the database, then save them to the AppStorage. 174 */ 175 initAppStorage(context) { 176 let folderDataArray = [] 177 let noteDataArray = [] 178 try { 179 relationalStore.getRdbStore(context, SysDefData.dbInfo.db_name) 180 .then(async (store) => { 181 LogUtil.info(TAG, "initAppStorage, store is " + store) 182 globalThis.rdbStore = store 183 // query folder 184 let columns_folder = [] 185 let predicates_folder = new relationalStore.RdbPredicates(TableName.FolderTable) 186 let resultSet_folder = await globalThis.rdbStore.query(predicates_folder, columns_folder) 187 while (resultSet_folder.goToNextRow()) { 188 let id = resultSet_folder.getLong(resultSet_folder.getColumnIndex(FolderTableColumn.Id)) 189 let name = resultSet_folder.getString(resultSet_folder.getColumnIndex(FolderTableColumn.Name)) 190 let uuid = resultSet_folder.getString(resultSet_folder.getColumnIndex(FolderTableColumn.Uuid)) 191 let color = resultSet_folder.getString(resultSet_folder.getColumnIndex(FolderTableColumn.Color)) 192 let folder_type = resultSet_folder.getLong(resultSet_folder.getColumnIndex(FolderTableColumn.FolderType)) 193 let is_deleted = resultSet_folder.getLong(resultSet_folder.getColumnIndex(FolderTableColumn.IsDeleted)) 194 let created_time = resultSet_folder.getLong(resultSet_folder.getColumnIndex(FolderTableColumn.CreatedTime)) 195 let modified_time = resultSet_folder.getLong(resultSet_folder.getColumnIndex(FolderTableColumn.ModifiedTime)) 196 let folderData = new FolderData(id, name, uuid, color, folder_type, is_deleted, created_time, modified_time) 197 folderDataArray.push(folderData) 198 } 199 resultSet_folder.close(); 200 LogUtil.info(TAG, "folderDataArray[query] : " + folderDataArray.length) 201 // query note 202 let columns_note = [] 203 let predicates_note = new relationalStore.RdbPredicates(TableName.NoteTable) 204 let resultSet_note = await globalThis.rdbStore.query(predicates_note, columns_note) 205 while (resultSet_note.goToNextRow()) { 206 let id = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.Id)) 207 let title = resultSet_note.getString(resultSet_note.getColumnIndex(NoteTableColumn.Title)) 208 let uuid = resultSet_note.getString(resultSet_note.getColumnIndex(NoteTableColumn.Uuid)) 209 let folder_uuid = resultSet_note.getString(resultSet_note.getColumnIndex(NoteTableColumn.FolderUuid)) 210 // 暂时规避备忘录二次打开白屏问题,后续数据库解决 211 let content_text = ''; 212 let content_img = ''; 213 try { 214 content_text = resultSet_note.getString(resultSet_note.getColumnIndex(NoteTableColumn.ContentText)) 215 content_img = resultSet_note.getString(resultSet_note.getColumnIndex(NoteTableColumn.ContentImg)) 216 } catch (err) { 217 LogUtil.error(TAG, "initAppStorage, content_img = error : " + err) 218 } 219 let noteType = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.NoteType)) 220 let is_top = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.IsTop)) 221 let is_favorite = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.IsFavorite)) 222 let is_deleted = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.IsDeleted)) 223 let created_time = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.CreatedTime)) 224 let modified_time = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.ModifiedTime)) 225 let deleted_time = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.DeletedTime)) 226 let slider_value = resultSet_note.getLong(resultSet_note.getColumnIndex(NoteTableColumn.SliderValue)) 227 let noteData = new NoteData(id, title, uuid, folder_uuid, content_text, content_img, noteType, is_top, is_favorite, is_deleted, created_time, modified_time, deleted_time, slider_value) 228 noteDataArray.push(noteData) 229 } 230 resultSet_note.close(); 231 LogUtil.info(TAG, "noteDataArray[query] : " + noteDataArray.length) 232 if (folderDataArray === null || folderDataArray === undefined || folderDataArray.length === 0) { 233 LogUtil.info(TAG, "folderDataArray is null") 234 let sysDefFolderArray = [SysDefData.sys_def_allNotes, SysDefData.sys_def_unClassified, 235 SysDefData.sys_def_myFavorites, SysDefData.sys_def_recentDeletes, 236 SysDefData.sys_def_personal, SysDefData.sys_def_life, SysDefData.sys_def_work] 237 sysDefFolderArray.forEach((sysDefFolder) => { 238 let folderData = new FolderData(sysDefFolder.id, sysDefFolder.name, sysDefFolder.uuid, sysDefFolder.color, 239 sysDefFolder.folder_type, sysDefFolder.is_deleted, sysDefFolder.created_time, 240 sysDefFolder.modified_time) 241 folderDataArray.push(folderData) 242 }) 243 LogUtil.info(TAG, "folderDataArray[query] : " + folderDataArray.length) 244 } 245 AppStorage.SetOrCreate('AllFolderArray', folderDataArray) 246 AppStorage.SetOrCreate('AllNoteArray', noteDataArray) 247 LogUtil.info(TAG, "AppStorage[query] set AllFolderArray and AllNoteArray success") 248 249 // save continue data 250 let isContinue = AppStorage.Get<boolean>('IsContinue'); 251 LogUtil.info(TAG, "initAppStorage, isContinue is " + isContinue) 252 if (isContinue) { 253 let continueNote: string = AppStorage.Get('ContinueNote') 254 let continueSection = AppStorage.Get('ContinueSection') 255 256 let noteObj = JSON.parse(continueNote) 257 let noteData = new NoteData(noteObj.uuid, noteObj.title, noteObj.uuid, noteObj.folder_uuid, 258 noteObj.content_text, noteObj.content_img, noteObj.note_type, noteObj.is_top, noteObj.is_favorite, 259 noteObj.is_deleted, noteObj.created_time, noteObj.modified_time, noteObj.deleted_time, noteObj.slider_value) 260 261 // save img to FileDir 262 LogUtil.info(TAG, "initAppStorage, save img to FileDir") 263 let imgNameArray = this.getImgNameFromHtml(noteData) 264 imgNameArray.forEach((imgName: string) => { 265 this.writeToFileDir(imgName) 266 }) 267 268 // if not exit this note 269 let exist = false 270 let folderUuid = "" 271 for (let note of noteDataArray) { 272 if (noteData.created_time == note.created_time) { 273 exist = true 274 folderUuid = note.folder_uuid 275 break 276 } 277 } 278 LogUtil.info(TAG, "initAppStorage, exist : " + exist) 279 if (!exist) { 280 // 迁移过来的笔记在本地不存在,则保存在未分类文件夹 281 noteData.folder_uuid = SysDefFolderUuid.UnClassified 282 noteDataArray.push(noteData) 283 AppStorage.SetOrCreate('AllNoteArray', noteDataArray) 284 this.insert(TableName.NoteTable, noteData.toNoteObject(), null) 285 AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, SysDefFolderUuid.UnClassified)) 286 } else { 287 // 迁移过来的笔记在本地存在,则进行修改 288 for (let i = 0; i < noteDataArray.length; i++) { 289 if (noteData.created_time == noteDataArray[i].created_time) { 290 noteDataArray[i] = noteData 291 LogUtil.info(TAG, "initAppStorage, update noteData in noteDataArray success") 292 break 293 } 294 } 295 let predicates_note = this.getRdbPredicates(TableName.NoteTable) 296 predicates_note.equalTo(NoteTableColumn.CreatedTime, noteData.created_time) 297 this.update(noteData.toNoteObject(), predicates_note, null) 298 AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, folderUuid)) 299 } 300 AppStorage.SetOrCreate('Note', noteData) 301 AppStorage.SetOrCreate<string>('ContinueNote', JSON.stringify(noteData.toNoteObject())) 302 AppStorage.SetOrCreate('Section', continueSection) 303 AppStorage.SetOrCreate<NoteData>('NewNote', noteData) 304 } else { 305 LogUtil.info(TAG, "initAppStorage, IsContinue false") 306 AppStorage.SetOrCreate('Folder', AppStorage.Get('AllFolderArray')[0]) 307 let note = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), SysDefFolderUuid.AllNotes) 308 AppStorage.SetOrCreate('Note', note) 309 if (note) { 310 AppStorage.SetOrCreate<string>('ContinueNote', JSON.stringify(note.toNoteObject())) 311 } 312 AppStorage.SetOrCreate('Section', 3) 313 } 314 AppStorage.SetOrCreate('DBQueryFinished', 1) 315 LogUtil.info(TAG, "initAppStorage, set DBQueryFinished 1") 316 }) 317 } catch (err) { 318 LogUtil.error(TAG, "initAppStorage, error : " + err) 319 } 320 }, 321 322 getImgNameFromHtml(noteData: NoteData): any { 323 let newModuleName = "file://" + globalThis.noteContext.filesDir 324 let imgNameArray = [] 325 if (noteData.content_text == undefined || noteData.content_text == null || noteData.content_text == "") { 326 LogUtil.info(TAG, "noteData.content_text is null or undefined") 327 return imgNameArray 328 } 329 let base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/ 330 let html 331 if (base64regex.test(noteData.content_text)) { 332 let base64 = new util.Base64Helper 333 html = base64.decodeSync(noteData.content_text).toString() 334 } else { 335 html = noteData.content_text 336 } 337 if (html == undefined || html == null || html == "") { 338 return imgNameArray 339 } 340 let imgReg = /<img[^>]+>/g 341 let srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i 342 let imgArray = html.match(imgReg) 343 if (imgArray != null) { 344 let hasFirstImg: boolean = false 345 for (let i = 0; i < imgArray.length; i++) { 346 let src = imgArray[i].match(srcReg) 347 if (src != null && src.length > 1) { 348 LogUtil.info(TAG, "getImgNameFromHtml, src[1] : " + src[1]) 349 let lastIndex = src[1].lastIndexOf('/') 350 if (lastIndex != -1) { 351 let oldModuleName = src[1].substring(0, lastIndex) 352 let imgName = src[1].substring(lastIndex + 1) 353 noteData.content_text = noteData.content_text.replace(oldModuleName, newModuleName) 354 if (!hasFirstImg) { 355 noteData.content_img = newModuleName + "/" + imgName 356 hasFirstImg = true 357 } 358 imgNameArray.push(imgName) 359 } 360 } 361 } 362 } 363 return imgNameArray 364 }, 365 366 writeToFileDir(fileName: string) { 367 LogUtil.info(TAG, "writeToFileDir fileName : " + fileName) 368 369 let desPath = globalThis.noteContext.filesDir + "/" + fileName 370 LogUtil.info(TAG, "desPath : " + desPath) 371 try { 372 fileio.accessSync(desPath) 373 LogUtil.info(TAG, "desPath has existed, return") 374 return 375 } catch (err) { 376 LogUtil.warn(TAG, "desPath has not existed, need to write") 377 } 378 let srcPath 379 let size 380 try { 381 srcPath = globalThis.noteContext.distributedFilesDir + "/" + fileName 382 LogUtil.info(TAG, "srcPath : " + srcPath) 383 size = fileio.statSync(srcPath).size 384 LogUtil.info(TAG, "srcPath size : " + size) 385 if (size > FileMaxSize) { 386 LogUtil.warn(TAG, "srcPath size more then FileMaxSize, return") 387 return 388 } 389 } 390 catch (err) { 391 LogUtil.warn(TAG, "desPath has not existed, need to write two") 392 return 393 } 394 395 396 let srcFd 397 try { 398 srcFd = fileio.openSync(srcPath, 0o0) 399 LogUtil.info(TAG, "open srcPath success : " + srcFd) 400 } catch (err) { 401 LogUtil.warn(TAG, "open srcPath failed : " + err) 402 return 403 } 404 405 let desFd 406 try { 407 desFd = fileio.openSync(desPath, 0o2 | 0o100, 0o400 | 0o200 | 0o040 | 0o020) 408 LogUtil.info(TAG, "open desPath success : " + srcFd) 409 } catch (err) { 410 LogUtil.warn(TAG, "open desPath failed : " + err) 411 return 412 } 413 414 let buf = new ArrayBuffer(size) 415 try { 416 let readNum = fileio.readSync(srcFd, buf) 417 LogUtil.info(TAG, "readNum : " + readNum) 418 let writeNum = fileio.writeSync(desFd, buf) 419 LogUtil.info(TAG, "writeNum : " + writeNum) 420 } catch (err) { 421 LogUtil.warn(TAG, "read or write error : " + err) 422 } 423 }, 424 425 /** 426 * insert 427 * @param tableName 428 * @param valueBucket 429 * @param callback 430 */ 431 insert(tableName, valueBucket, callback) { 432 globalThis.rdbStore.insert(tableName, valueBucket).then((rowId) => { 433 LogUtil.info(TAG, "insert success, rowId is " + rowId) 434 if (callback != null) { 435 callback(rowId) 436 } 437 }).catch((err) => { 438 LogUtil.warn(TAG, "insert error : " + err) 439 }) 440 }, 441 442 /** 443 * delete 444 * @param predicates 445 * @param callback 446 */ 447 delete(predicates, callback) { 448 globalThis.rdbStore.delete(predicates).then((affectedRowCount) => { 449 LogUtil.info(TAG, "delete success, affectedRowCount is " + affectedRowCount) 450 if (callback != null) { 451 callback(affectedRowCount) 452 } 453 }).catch((err) => { 454 LogUtil.warn(TAG, "delete error : " + err) 455 }) 456 }, 457 458 /** 459 * update 460 * @param valueBucket 461 * @param predicates 462 * @param callback 463 */ 464 update(valueBucket, predicates, callback) { 465 if (!globalThis.rdbStore) { 466 return; 467 } 468 globalThis.rdbStore.update(valueBucket, predicates).then((affectedRowCount) => { 469 LogUtil.info(TAG, "update success, affectedRowCount is " + affectedRowCount) 470 if (callback != null) { 471 callback(affectedRowCount) 472 } 473 }).catch((err) => { 474 LogUtil.warn(TAG, "update error : " + err) 475 }) 476 }, 477 478 /** 479 * query 480 * @param columns 481 * @param predicates 482 * @param callback 483 */ 484 query(columns, predicates, callback) { 485 globalThis.rdbStore.query(predicates, columns).then((resultSet) => { 486 LogUtil.info(TAG, "query success, row count : " + resultSet.rowCount) 487 if (callback != null) { 488 callback(resultSet) 489 } 490 }).catch((err) => { 491 LogUtil.warn(TAG, "query error : " + err) 492 }) 493 }, 494 495 /** 496 * get RdbPredicates by table name 497 * @param tableName 498 */ 499 getRdbPredicates(tableName) { 500 return new relationalStore.RdbPredicates(tableName) 501 }, 502 503 updataNoteImage(noteData: NoteData): string { 504 let content_img = "" 505 let imgNameArray = this.getImgNameFromHtml(noteData) 506 if (imgNameArray.length == 0) { 507 return content_img 508 } 509 if (imgNameArray[0] == 'shuxue.png' || imgNameArray[0] == 'cake.png') { 510 content_img = "/res/" + imgNameArray[0] 511 } else { 512 content_img = noteData.content_img 513 } 514 LogUtil.info(TAG, "updataNoteImage, content_img : " + content_img) 515 return content_img 516 } 517}