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 Calls from '../contract/Calls';
17
18export default class CallLogBuilder {
19  readonly id: number = -1;
20  readonly phoneNumber: string;
21  displayName: string;
22  callDirection: number;
23  voicemailUri: string;
24  simId: number;
25  simType: number;
26  isHD: boolean;
27  isRead: boolean;
28  ringDuration: number;
29  talkDuration: number;
30  formattedNumber: string;
31  quickSearchKey: string;
32  numberType: number;
33  numberTypeName: string;
34  beginTime: number;
35  endTime: number;
36  answerState: number;
37  createTime: number;
38  numberLocation: string;
39  photoId: number;
40  photoUri: string;
41  countryIsoCode: number;
42  constructor(id: number, phoneNumber: string) {
43    this.id = id;
44    this.phoneNumber = phoneNumber;
45  }
46
47  static fromResultSet(resultSet: any): CallLogBuilder{
48    let callLogBuilder = new CallLogBuilder(resultSet.getLong(resultSet.getColumnIndex(Calls.ID)),
49    resultSet.getString(resultSet.getColumnIndex(Calls.PHONE_NUMBER)));
50    callLogBuilder.setDisplayName(resultSet.getString(resultSet.getColumnIndex(Calls.DISPLAY_NAME)));
51    callLogBuilder.setCallDirection(resultSet.getLong(resultSet.getColumnIndex(Calls.CALL_DIRECTION)));
52    callLogBuilder.setDisplayName(resultSet.getString(resultSet.getColumnIndex(Calls.DISPLAY_NAME)));
53    callLogBuilder.setVoicemailUri(resultSet.getString(resultSet.getColumnIndex(Calls.VOICEMAIL_URI)));
54    callLogBuilder.setSimId(resultSet.getLong(resultSet.getColumnIndex(Calls.SIM_ID)));
55    callLogBuilder.setSimType(resultSet.getLong(resultSet.getColumnIndex(Calls.SIM_TYPE)));
56    callLogBuilder.setIsHD(resultSet.getLong(resultSet.getColumnIndex(Calls.IS_HD)) > 0 ? true : false);
57    callLogBuilder.setIsRead(resultSet.getLong(resultSet.getColumnIndex(Calls.IS_READ)) > 0 ? true : false);
58    callLogBuilder.setRingDuration(resultSet.getLong(resultSet.getColumnIndex(Calls.RING_DURATION)));
59    callLogBuilder.setTalkDuration(resultSet.getLong(resultSet.getColumnIndex(Calls.TALK_DURATION)));
60    callLogBuilder.setFormattedNumber(resultSet.getString(resultSet.getColumnIndex(Calls.FORMAT_NUMBER)));
61    callLogBuilder.setQuickSearchKey(resultSet.getString(resultSet.getColumnIndex(Calls.QUICK_SEARCH_KEY)));
62    callLogBuilder.setNumberType(resultSet.getLong(resultSet.getColumnIndex(Calls.NUMBER_TYPE)));
63    callLogBuilder.setNumberTypeName(resultSet.getString(resultSet.getColumnIndex(Calls.NUMBER_TYPE_NAME)));
64    callLogBuilder.setBeginTime(resultSet.getLong(resultSet.getColumnIndex(Calls.BEGIN_TIME)));
65    callLogBuilder.setEndTime(resultSet.getLong(resultSet.getColumnIndex(Calls.END_TIME)));
66    callLogBuilder.setAnswerState(resultSet.getLong(resultSet.getColumnIndex(Calls.ANSWER_STATE)));
67    callLogBuilder.setCreateTime(resultSet.getLong(resultSet.getColumnIndex(Calls.CREATE_TIME)));
68    callLogBuilder.setNumberLocation(resultSet.getString(resultSet.getColumnIndex(Calls.NUMBER_LOCATION)));
69    callLogBuilder.setPhotoUri(resultSet.getString(resultSet.getColumnIndex(Calls.PHOTO_URI)));
70    callLogBuilder.setPhotoId(resultSet.getLong(resultSet.getColumnIndex(Calls.PHOTO_ID)));
71    callLogBuilder.setCountryIsoCode(resultSet.getLong(resultSet.getColumnIndex(Calls.COUNTRY_ISO_CODE)));
72    return callLogBuilder;
73  }
74
75  setDisplayName(displayName: string) {
76    this.displayName = displayName;
77    return this;
78  }
79
80  setCallDirection(callDirection: number) {
81    this.callDirection = callDirection;
82    return this;
83  }
84
85  setVoicemailUri(voicemailUri: string) {
86    this.voicemailUri = voicemailUri;
87    return this;
88  }
89
90  setSimId(simId: number) {
91    this.simId = simId;
92    return this;
93  }
94
95  setSimType(simType: number) {
96    this.simType = simType;
97    return this;
98  }
99
100  setIsHD(isHD: boolean) {
101    this.isHD = isHD;
102    return this;
103  }
104
105  setIsRead(isRead: boolean) {
106    this.isRead = isRead;
107    return this;
108  }
109
110  setRingDuration(ringDuration: number) {
111    this.ringDuration = ringDuration;
112    return this;
113  }
114
115  setTalkDuration(talkDuration: number) {
116    this.talkDuration = talkDuration;
117    return this;
118  }
119
120  setFormattedNumber(formattedNumber: string) {
121    this.formattedNumber = formattedNumber;
122    return this;
123  }
124
125  setQuickSearchKey(quickSearchKey: string) {
126    this.quickSearchKey = quickSearchKey;
127    return this;
128  }
129
130  setNumberType(numberType: number) {
131    this.numberType = numberType;
132    return this;
133  }
134
135  setNumberTypeName(numberTypeName: string) {
136    this.numberTypeName = numberTypeName;
137    return this;
138  }
139
140  setBeginTime(beginTime: number) {
141    this.beginTime = beginTime;
142    return this;
143  }
144
145  setEndTime(endTime: number) {
146    this.endTime = endTime;
147    return this;
148  }
149
150  setAnswerState(answerState: number) {
151    this.answerState = answerState;
152    return this;
153  }
154
155  setCreateTime(createTime: number) {
156    this.createTime = createTime;
157    return this;
158  }
159
160  setNumberLocation(numberLocation: string) {
161    this.numberLocation = numberLocation;
162    return this;
163  }
164
165  setPhotoId(photoId: number) {
166    this.photoId = photoId;
167    return this;
168  }
169
170  setPhotoUri(photoUri: string) {
171    this.photoUri = photoUri;
172    return this;
173  }
174
175  setCountryIsoCode(countryIsoCode: number) {
176    this.countryIsoCode = countryIsoCode;
177    return this;
178  }
179}