/* * Copyright (C) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import disData from '@ohos.data.distributedKVStore'; import backgroundTaskManager from '@ohos.backgroundTaskManager'; import dataRdb from '@ohos.data.rdb'; import ApiResult from '../common/apiResult'; import distributedObject from '@ohos.data.distributedDataObject'; import deviceinfo from '@ohos.deviceInfo' import UIAbility from '@ohos.app.ability.UIAbility'; import common from "@ohos.app.ability.common" const TEST_BUNDLE_NAME = 'com.acts.distributekvdisjs'; let logTag = "[[RpcServer_TestApi: ]]"; let kvManager = null; let kvStore = null; let rdbStore = undefined; let g_object = undefined; let context; export default class TestApi{ constructor(){} add(a,b) { console.log(logTag+"_methodName is add"); return Number(a)+Number(b); } sub(a,b) { console.log(logTag+"_methodName is sub"); return Number(a)-Number(b); } async createKvManager(){ console.info(logTag + "_methodName is createKvManager"); try { let context = globalThis.extensionContext; console.info(logTag + "context=" + context); const config = { context: context, bundleName: TEST_BUNDLE_NAME, } kvManager = disData.createKVManager(config); console.log(logTag + "createKvManager22 success, kvManager=" + kvManager); } catch (error) { console.error(logTag + "createKvManager22 error.code=" + error.code + "error.message=" + error.message); } console.info(logTag + "createKvManager22 end"); } async getKvStore(storeId,SecurityLevel,encrypt){ console.info(logTag + "_methodName is getKvStore, storeId=" + storeId + " SecurityLevel=" + SecurityLevel + " encrypt="+ encrypt); console.info(logTag + "kvManager=" + kvManager); if(!kvManager) { console.info(logTag + "createKvManager22 begin"); console.info(logTag + "_methodName is createKvManager22"); try { let context = globalThis.extensionContext; console.info(logTag + "context=" + context); const config = { context: context, bundleName: TEST_BUNDLE_NAME, } kvManager = disData.createKVManager(config); console.log(logTag + "createKvManager22 success, kvManager=" + kvManager); } catch (error) { console.error(logTag + "createKvManager22 error.code=" + error.code + "error.message=" + error.message); } console.info(logTag + "createKvManager22 end"); } let flag_41 = 1; let localOSVersion = ""; let OSVersion41 = "OpenHarmony-4.1"; let osReleaseTypeInfo = deviceinfo.osReleaseType; console.info(logTag + 'the value of the deviceinfo osReleaseType is :' + osReleaseTypeInfo); let osFullNameInfo = deviceinfo.osFullName; console.info(logTag + 'the value of the deviceinfo osFullName is :' + osFullNameInfo); localOSVersion = osFullNameInfo.substring(0, 15); console.info(logTag + "localOSVersion is: " + localOSVersion); var optionsInfo = { createIfMissing : true, encrypt : false, backup : false, autoSync: false, kvStoreType : disData.KVStoreType.SINGLE_VERSION, schema : '', securityLevel : disData.SecurityLevel.S1, } if(encrypt == "true"){ optionsInfo.encrypt = true; }else{ optionsInfo.encrypt = false; } if(SecurityLevel == "NO_LEVEL"){ optionsInfo.securityLevel=disData.SecurityLevel.NO_LEVEL; }else if(SecurityLevel == "S0"){ optionsInfo.securityLevel=disData.SecurityLevel.S0; }else if(SecurityLevel == "S1"){ optionsInfo.securityLevel=disData.SecurityLevel.S1; }else if(SecurityLevel == "S2"){ optionsInfo.securityLevel=disData.SecurityLevel.S2; }else if(SecurityLevel == "S3"){ optionsInfo.securityLevel=disData.SecurityLevel.S3; }else if(SecurityLevel == "S4"){ optionsInfo.securityLevel=disData.SecurityLevel.S4; }else { optionsInfo.securityLevel=disData.SecurityLevel.S1; } let name = new disData.FieldNode('name'); name.type = disData.ValueType.INTEGER; name.nullable = false; name.default = '0'; let schema = new disData.Schema(); schema.root.appendChild(name); schema.indexes = ['$.name']; schema.mode = 1; let TEST_SCHEMA_STORE_ID_PREF = "SchemaStoreId_"; let schemaIdPref = storeId.substring(0, 14); console.info(logTag + "schemaIdPref=" + schemaIdPref); if (schemaIdPref == TEST_SCHEMA_STORE_ID_PREF) { optionsInfo.schema = schema; } console.info(logTag + "optionsInfo.schema=" + optionsInfo.schema); await kvManager.getKVStore(storeId,optionsInfo).then((store) =>{ kvStore = store; console.info(logTag + " getKVStore success, securityLevel is: " + optionsInfo.securityLevel); return String(true); }).catch((error) => { console.error(logTag + "getKVStore fail, error.code=" + error.code + "error.message=" + error.message); return String(error); }); } async closeKvStore(storeId){ try{ await kvManager.closeKVStore(TEST_BUNDLE_NAME, storeId).then(async () => { await kvManager.deleteKVStore(TEST_BUNDLE_NAME, storeId).then(() => { console.info(logTag + " Server deleteKVStore success, storeId=" + storeId); return String(true); }) }).catch((error) => { console.error(logTag + "Server deleteKVStore fail, error.code=" + error.code + "error.message=" + error.message); return String(error); }); } catch (err) { console.error('catch closeKvStore err:' + `, error code is ${err.code}, message is ${err.message}`); return String(err); } } async kvPut(key,value,valueType){ let putValue = undefined; console.info(logTag + " putValue : " + putValue + " value is: " + value + " valueType is: " + valueType); if(valueType == "String"){ putValue = value; }else if(valueType == "Number"){ putValue = Number(value); }else if(valueType == "Number_Min"){ putValue = Number.MIN_VALUE; }else if(valueType == "Uint8Array"){ putValue = value.split(','); }else if(valueType == "Boolean"){ if(value == "false"){ putValue = false; }else{ putValue = Boolean(value); } } console.info(logTag + " putValue : " + putValue + " value is: " + value); await kvStore.put(key,putValue).then(() => { console.info(logTag + " Server put data success ,key is : " + key + " value is: " + putValue); return String(true); }).catch((error) => { console.error(logTag + " Server put fail, error.code=" + error.code + "error.message=" + error.message); return String(error); }); } async kvGet(key,callback){ console.info(logTag + " kvGet start"); let errInfo = undefined; let result = undefined; kvStore.get(key, function (err, data){ errInfo = err; result = data; }) if(err != null){ console.info(logTag + " kvGet get data error: " + err); callback(err); }else{ console.info(logTag + " kvGet get data success"); callback(data); } } async kvDelete(key){ await kvStore.delete(key).then(() => { console.info(logTag + "Delete data success"); return String(true); }).catch((err) => { console.info(logTag + "Delete data error,errorInfo: " + err); return String(err); }); } kvSync(deviceid,mode){ let syncMode = undefined; if(mode == "PUSH"){ syncMode = disData.SyncMode.PUSH_ONLY; }else if(mode == "PUSH_PULL"){ syncMode = disData.SyncMode.PUSH_PULL; } kvStore.Sync([deviceid],syncMode); return JSON.stringify(syncMode); } async getRdbStore(rdbStoreName){ var storeConfig = { name: rdbStoreName, } await dataRdb.getRdbStore(storeConfig,1).then((store) => { console.info(logTag + " get rdbStore success"); rdbStore = store; return String(true); }).catch((err) => { console.info(logTag + " get rdbStore error, err: " + err.code + err.message); return String(err); }); } async createObject(objectname, age, isVis){ try{ console.info(logTag + "************* createObject begin ************* "); let g_context = globalThis.extensionContext; console.info(logTag + "context 2= " + g_context); if (g_context == undefined || g_context == null) { console.info(logTag + "error: g_context = undefined"); return false; } g_object = undefined; let rename = objectname; let reage = Number(age); let reisVis = Boolean(isVis); console.info(logTag + "objectname=" + objectname + " age=" + age + " isVis=" + isVis); console.info(logTag + "rename=" + rename + " reage=" + reage + " reisVis=" + reisVis); g_object = distributedObject.create(g_context, {name: rename, age: reage, isVis: reisVis}); if (g_object == undefined || g_object == null) { console.info(logTag + "error: g_object = undefined"); return false; } console.info(logTag + "createObject success"); console.info(logTag + g_object.name + " " + g_object.age + " " + g_object.isVis); }catch (err) { console.info(logTag + "createObject error, err: "+ err.code + err.message); } } async setSessionId(sessionId){ try{ console.info(logTag + "************* setSessionId begin ************* "); console.info(logTag +"g_object=" + g_object); if (g_object == undefined || g_object == null) { console.info(logTag + "error: g_object = undefined"); return false; } g_object.setSessionId(sessionId).then(() => { console.info(logTag + "remote join session success. sessionId=" + sessionId); }).catch((error) => { console.info(logTag + "remote join session error: " + error.code + error.message); return false; }); }catch (err) { console.info(logTag + "setSessionId error, err: "+ err.code + err.message); } } async objectPut(key,value){ console.info(logTag + "objectPut key=" + key + " value=" + value ); if(key == "name"){ g_object.name = value; console.info(logTag + "objectPut success. name=" + g_object.name); }else if(key == "age"){ g_object.age = Number(value); console.info(logTag + "objectPut success. age=" + g_object.age); }else if(key == "isVis"){ if(value == "false"){ g_object.isVis = false; }else{ g_object.isVis = Boolean(value); } console.info(logTag + "objectPut success. isVis=" + g_object.isVis); } } }