/* * Copyright(C) 2010-2011 Alibaba Group Holding Limited All rights reserved. Licensed under the Apache License, Version * 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the * License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language governing permissions and limitations * under the License. */ package com.alibaba.doris.dataserver.migrator.task; import com.alibaba.doris.common.MigrateTypeEnum; import com.alibaba.doris.common.migrate.MigrateSubCommand; import com.alibaba.doris.dataserver.migrator.MigrationManager; import com.alibaba.doris.dataserver.migrator.action.MigrationActionData; import com.alibaba.doris.dataserver.migrator.task.dataclean.DataCleanTask; /** * MigrationTaskFactory * * @author Kun He (Raymond He), kun.hek@alibaba-inc.com * @since 1.0 2011-5-25 */ public class MigrationTaskFactory { private static MigrationTaskFactory factory = new MigrationTaskFactory(); public static MigrationTaskFactory getInstance() { return factory; } /** * 创建一个迁移任务 * * @param migrateType * @return */ public BaseMigrationTask createTask(MigrationManager migrationManager, MigrationActionData actionData) { BaseMigrationTask newMigrationTask = null; MigrateSubCommand subCommand = actionData.getSubcommand(); MigrateTypeEnum migrateType = subCommand.getMigrateType(); if (subCommand == MigrateSubCommand.TEMP_FAILOVER_START) { newMigrationTask = createTempFailoverMigrationTask(migrationManager); } else if (subCommand == MigrateSubCommand.FOREVER_FAILOVER_START) { newMigrationTask = createForeverFailoverMigrationTask(migrationManager); } else if (subCommand == MigrateSubCommand.EXPANSION_START) { newMigrationTask = createExpansionMigrationTask(migrationManager); } else if (subCommand == MigrateSubCommand.MOCK_MIGRATE_START) { newMigrationTask = createMockMigrateTask(migrationManager); } else { throw new IllegalArgumentException("Invalid migrate subcommand " + migrateType); } newMigrationTask.setMigrationActionData(actionData); newMigrationTask.setMigrateType(migrateType); return newMigrationTask; } public BaseMigrationTask createTempFailoverMigrationTask(MigrationManager migrationManager) { return new TempFailoverMigrationTask(migrationManager); } public BaseMigrationTask createForeverFailoverMigrationTask(MigrationManager migrationManager) { return new ForeverFailoverMigrationTask(migrationManager); } public BaseMigrationTask createExpansionMigrationTask(MigrationManager migrationManager) { return new ExpansionMigrationTask(migrationManager); } private BaseMigrationTask createMockMigrateTask(MigrationManager migrationManager) { return new MockMigrationTask(migrationManager); } /** * createDataCleanTask * * @param migrationManager * @param actionData * @return */ public MigrationTask createDataCleanTask(MigrationManager migrationManager, MigrationActionData actionData) { MigrateTypeEnum migrateType = actionData.getSubcommand().getMigrateType(); BaseMigrationTask dataCleanTask = new DataCleanTask(migrationManager); dataCleanTask.setMigrationActionData(actionData); dataCleanTask.setMigrateType(migrateType); return dataCleanTask; } }