100aff185Sopenharmony_ci/*
200aff185Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
300aff185Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
400aff185Sopenharmony_ci * you may not use this file except in compliance with the License.
500aff185Sopenharmony_ci * You may obtain a copy of the License at
600aff185Sopenharmony_ci *
700aff185Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
800aff185Sopenharmony_ci *
900aff185Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1000aff185Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1100aff185Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1200aff185Sopenharmony_ci * See the License for the specific language governing permissions and
1300aff185Sopenharmony_ci * limitations under the License.
1400aff185Sopenharmony_ci */
1500aff185Sopenharmony_ci
1600aff185Sopenharmony_ciimport { TimelineDataSource } from './TimelineDataSource';
1700aff185Sopenharmony_ciimport { BroadCast, Constants, Log } from '@ohos/common';
1800aff185Sopenharmony_ciimport { Constants as TimeLineConstants } from './Constants';
1900aff185Sopenharmony_ci
2000aff185Sopenharmony_ciconst TAG: string = 'timeline_TimelineDataSourceManager';
2100aff185Sopenharmony_ci
2200aff185Sopenharmony_ciexport class TimelineDataSourceManager {
2300aff185Sopenharmony_ci  private broadCast: BroadCast;
2400aff185Sopenharmony_ci  private dataSource: TimelineDataSource;
2500aff185Sopenharmony_ci
2600aff185Sopenharmony_ci  private constructor() {
2700aff185Sopenharmony_ci    Log.info(TAG, 'constructor');
2800aff185Sopenharmony_ci    this.broadCast = new BroadCast();
2900aff185Sopenharmony_ci    this.dataSource = new TimelineDataSource(Constants.DEFAULT_SLIDING_WIN_SIZE, this.broadCast);
3000aff185Sopenharmony_ci    this.dataSource.registerTimelineObserver();
3100aff185Sopenharmony_ci  }
3200aff185Sopenharmony_ci
3300aff185Sopenharmony_ci  public static getInstance(): TimelineDataSourceManager {
3400aff185Sopenharmony_ci    if (AppStorage.Get(TimeLineConstants.APP_KEY_GROUP_DATA_SOURCE_MANAGER) == null) {
3500aff185Sopenharmony_ci      AppStorage.setOrCreate(TimeLineConstants.APP_KEY_GROUP_DATA_SOURCE_MANAGER, new TimelineDataSourceManager());
3600aff185Sopenharmony_ci    }
3700aff185Sopenharmony_ci    return AppStorage.Get(TimeLineConstants.APP_KEY_GROUP_DATA_SOURCE_MANAGER);
3800aff185Sopenharmony_ci  }
3900aff185Sopenharmony_ci
4000aff185Sopenharmony_ci  public getBroadCast(): BroadCast {
4100aff185Sopenharmony_ci    return this.broadCast;
4200aff185Sopenharmony_ci  }
4300aff185Sopenharmony_ci
4400aff185Sopenharmony_ci  public getDataSource(): TimelineDataSource {
4500aff185Sopenharmony_ci    return this.dataSource;
4600aff185Sopenharmony_ci  }
4700aff185Sopenharmony_ci}