1 2/* 3 * Copyright (c) 2025 Huawei Device Co., Ltd. 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17import { ValueType } from "@ohos.data.ValuesBucket" 18 19export default namespace dataSharePredicates{ 20 21class Cleaner { 22 static callback(cleaner: Cleaner): void { 23 console.println("enter Cleaner.callback"); 24 cleaner.clean() 25 } 26 27 constructor(targetPtr: long) { 28 this.targetPtr = targetPtr 29 } 30 31 native clean(): void 32 33 private targetPtr: long = 0 34} 35 36class FinalizationAgent<T extends Object> { 37 constructor(obj: T, ptr: long) { 38 this.register(obj, ptr); 39 } 40 41 register(obj: T, ptr: long): void { 42 this.unregisterToken = {}; 43 this.cleaner = new Cleaner(ptr); 44 finalizer.register(obj, this.cleaner!, this.unregisterToken); 45 } 46 47 unregister(): void { 48 finalizer.unregister(this.unregisterToken); 49 } 50 51 private cleaner: Cleaner | null = null; 52 private unregisterToken: object; 53} 54 55let finalizer = new FinalizationRegistry<Cleaner>(Cleaner.callback) 56 57export class DataSharePredicates{ 58 static { loadLibrary("datasharepredicates_ani") } 59 private nativePtr:long = 0; 60 private fzAgent: FinalizationAgent<DataSharePredicates>; 61 62 constructor() { 63 console.log("enter constructor") 64 if (this.nativePtr == 0) { 65 console.log("start create") 66 this.nativePtr = DataSharePredicates.create(); 67 console.log("stop create") 68 } 69 this.fzAgent = new FinalizationAgent<DataSharePredicates>(this, this.nativePtr); 70 } 71 72 unregisterCleaner(): void { 73 this.fzAgent.unregister(); 74 } 75 76 getNativePtr():long { 77 return this.nativePtr; 78 } 79 native static create(): long; 80 native equalTo(field: string, value: ValueType):DataSharePredicates; 81 native notEqualTo(field: string, value: ValueType):DataSharePredicates; 82 native orderByDesc(field: string):DataSharePredicates; 83 native orderByAsc(field: string):DataSharePredicates; 84 native and():DataSharePredicates; 85 native limit(total: number, offset: number):DataSharePredicates; 86 native lessThan(field: string, value: ValueType): DataSharePredicates; 87 native like(field: string, value: string): DataSharePredicates; 88 native endWrap(): DataSharePredicates; 89 native greaterThanOrEqualTo(field: string, value: ValueType): DataSharePredicates; 90 native contains(field: string, value: string): DataSharePredicates; 91 native or(): DataSharePredicates; 92 native beginWrap(): DataSharePredicates; 93 native greaterThan(field: string, value: ValueType): DataSharePredicates; 94 native groupBy(fields:Array<string>): DataSharePredicates; 95 native in(field: string, value: Array<ValueType>): DataSharePredicates; 96 native notIn(field: string, value: Array<ValueType>): DataSharePredicates; 97} 98} 99