1/** 2 * @file Describe the file 3 * Copyright (c) 2023 Huawei Device Co., Ltd. 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17import { Log } from '@ohos/common/src/main/ets/utils/Log'; 18import { CalendarAlertsColumns } from '@ohos/datastructure/src/main/ets/calendaralerts/CalendarAlertsColumns'; 19import { CalendarsColumns } from '@ohos/datastructure/src/main/ets/calendars/CalendarsColumns'; 20import { InstancesColumns } from '@ohos/datastructure/src/main/ets/instances/InstancesColumns'; 21import { EventColumns } from '@ohos/datastructure/src/main/ets/events/EventColumns'; 22import { RemindersColumns } from '@ohos/datastructure/src/main/ets/reminders/RemindersColumns'; 23import { AlertsProcessor } from './alerts/AlertsProcessor'; 24import { CalendarsProcessor } from './calendars/CalendarsProcessor'; 25import { DatabaseProcessor } from './DatabaseProcessor'; 26import { DefaultProcessor } from './DefaultProcessor'; 27import { InstancesProcessor } from './instances/InstancesProcessor'; 28import { EventsProcessor } from './events/EventsProcessor'; 29import { AlertsObserver } from './alerts/AlertsObserver'; 30import { RemindersProcessor } from './reminders/RemindersProcessor'; 31 32const TAG: string = "DatabaseProcessorFactory"; 33 34/** 35 * the Factory of database Processors 36 * 37 * @since 2022-06-21 38 */ 39class DatabaseProcessorFactory { 40 getDatabaseProcessor(tableName: string): DatabaseProcessor { 41 let processor: DatabaseProcessor; 42 let calendarsColumnsTABLE_NAME = CalendarsColumns.TABLE_NAME; 43 let eventColumnsTABLE_NAME = EventColumns.TABLE_NAME; 44 let instancesColumnsTABLE_NAME = InstancesColumns.TABLE_NAME; 45 let remindersColumnsTABLE_NAME = RemindersColumns.TABLE_NAME; 46 let calendarAlertsColumnsTABLE_NAME = CalendarAlertsColumns.TABLE_NAME; 47 Log.info(TAG, `calendarsColumnsTABLE_NAME: ${calendarsColumnsTABLE_NAME}`); 48 Log.info(TAG, `tableName: ${tableName}`); 49 switch (tableName) { 50 case calendarsColumnsTABLE_NAME: 51 processor = new CalendarsProcessor(); 52 break; 53 case eventColumnsTABLE_NAME: 54 processor = new EventsProcessor(); 55 break; 56 case instancesColumnsTABLE_NAME: 57 processor = new InstancesProcessor(); 58 break; 59 case remindersColumnsTABLE_NAME: 60 processor = new RemindersProcessor(); 61 break; 62 case calendarAlertsColumnsTABLE_NAME: 63 processor = new AlertsProcessor(); 64 break; 65 default: 66 processor = new DefaultProcessor(); 67 break; 68 } 69 if (processor instanceof DefaultProcessor) { 70 processor.addObserver(AlertsObserver.getInstance()); 71 } 72 return processor; 73 } 74} 75 76export default new DatabaseProcessorFactory();