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 Contact from '../entity/Contact'; 17import RawContactDelta from './RawContactDelta'; 18import { RawContacts } from '../contract/RawContacts'; 19import DAOperation from './DAOperation'; 20 21export default class ContactDelta { 22 readonly rawContactDeltas: RawContactDelta[]; 23 constructor() { 24 this.rawContactDeltas = []; 25 } 26 27 static fromContact(contact: Contact) { 28 let contactDelta = new ContactDelta(); 29 for (let rawContact of contact.rowContacts) { 30 let rawContactDelta = RawContactDelta.fromRawContact(rawContact); 31 contactDelta.rawContactDeltas.push(rawContactDelta); 32 } 33 return contactDelta; 34 } 35 36 buildDiff() { 37 let diff = []; 38 for (let i = 0; i < this.rawContactDeltas.length; i++) { 39 let rawContactDelta = this.rawContactDeltas[i]; 40 rawContactDelta.buildDiff(diff); 41 } 42 return diff; 43 } 44 45 private findRawContactId() { 46 for (let i = 0; i < this.rawContactDeltas.length; i++) { 47 let rawContactId = this.rawContactDeltas[i].values.getValue(RawContacts.ID); 48 if (rawContactId != undefined && rawContactId >= 0) { 49 return rawContactId; 50 } 51 } 52 return -1; 53 } 54}