1048147e0Sopenharmony_ci/**
2048147e0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3048147e0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4048147e0Sopenharmony_ci * you may not use this file except in compliance with the License.
5048147e0Sopenharmony_ci * You may obtain a copy of the License at
6048147e0Sopenharmony_ci *
7048147e0Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8048147e0Sopenharmony_ci *
9048147e0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10048147e0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11048147e0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12048147e0Sopenharmony_ci * See the License for the specific language governing permissions and
13048147e0Sopenharmony_ci * limitations under the License.
14048147e0Sopenharmony_ci */
15048147e0Sopenharmony_ciimport HiLog from '../utils/HiLog';
16048147e0Sopenharmony_ci
17048147e0Sopenharmony_ciconst TAG = 'BasicDataSource'
18048147e0Sopenharmony_ci
19048147e0Sopenharmony_ciexport default class BasicDataSource implements IDataSource {
20048147e0Sopenharmony_ci    private listeners: DataChangeListener[] = []
21048147e0Sopenharmony_ci
22048147e0Sopenharmony_ci    public totalCount(): number {
23048147e0Sopenharmony_ci        return 0
24048147e0Sopenharmony_ci    }
25048147e0Sopenharmony_ci
26048147e0Sopenharmony_ci    public getData(index: number): any {
27048147e0Sopenharmony_ci        return undefined
28048147e0Sopenharmony_ci    }
29048147e0Sopenharmony_ci
30048147e0Sopenharmony_ci    registerDataChangeListener(listener: DataChangeListener): void {
31048147e0Sopenharmony_ci        if (this.listeners.indexOf(listener) < 0) {
32048147e0Sopenharmony_ci            HiLog.i(TAG, 'add listener')
33048147e0Sopenharmony_ci            this.listeners.push(listener)
34048147e0Sopenharmony_ci        }
35048147e0Sopenharmony_ci    }
36048147e0Sopenharmony_ci
37048147e0Sopenharmony_ci    unregisterDataChangeListener(listener: DataChangeListener): void {
38048147e0Sopenharmony_ci        const pos = this.listeners.indexOf(listener);
39048147e0Sopenharmony_ci        if (pos >= 0) {
40048147e0Sopenharmony_ci            HiLog.i(TAG, 'remove listener')
41048147e0Sopenharmony_ci            this.listeners.splice(pos, 1)
42048147e0Sopenharmony_ci        }
43048147e0Sopenharmony_ci    }
44048147e0Sopenharmony_ci
45048147e0Sopenharmony_ci    notifyDataReload(): void {
46048147e0Sopenharmony_ci        this.listeners.forEach(listener => {
47048147e0Sopenharmony_ci            listener.onDataReloaded()
48048147e0Sopenharmony_ci        })
49048147e0Sopenharmony_ci    }
50048147e0Sopenharmony_ci
51048147e0Sopenharmony_ci    notifyDataAdd(index: number): void {
52048147e0Sopenharmony_ci        this.listeners.forEach(listener => {
53048147e0Sopenharmony_ci            listener.onDataAdd(index)
54048147e0Sopenharmony_ci        })
55048147e0Sopenharmony_ci    }
56048147e0Sopenharmony_ci
57048147e0Sopenharmony_ci    notifyDataChange(index: number): void {
58048147e0Sopenharmony_ci        this.listeners.forEach(listener => {
59048147e0Sopenharmony_ci            listener.onDataChange(index)
60048147e0Sopenharmony_ci        })
61048147e0Sopenharmony_ci    }
62048147e0Sopenharmony_ci
63048147e0Sopenharmony_ci    notifyDataDelete(index: number): void {
64048147e0Sopenharmony_ci        this.listeners.forEach(listener => {
65048147e0Sopenharmony_ci            listener.onDataDelete(index)
66048147e0Sopenharmony_ci        })
67048147e0Sopenharmony_ci    }
68048147e0Sopenharmony_ci
69048147e0Sopenharmony_ci    notifyDataMove(from: number, to: number): void {
70048147e0Sopenharmony_ci        this.listeners.forEach(listener => {
71048147e0Sopenharmony_ci            listener.onDataMove(from, to)
72048147e0Sopenharmony_ci        })
73048147e0Sopenharmony_ci    }
74048147e0Sopenharmony_ci}