/* * 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.action; import java.util.List; import com.alibaba.doris.common.migrate.MigrateSubCommand; import com.alibaba.doris.common.route.MigrationRoutePair; import com.alibaba.doris.dataserver.action.ActionType; import com.alibaba.doris.dataserver.action.data.SupportBodyActionData; import com.alibaba.doris.dataserver.migrator.MigrateActionType; import com.alibaba.fastjson.JSON; /** * MigrationActionData. 自由格式的ActionData, 例如给迁移指令使用 * * @author Kun He (Raymond He), kun.hek@alibaba-inc.com * @since 1.0 2011-5-26 */ public class MigrationActionData extends SupportBodyActionData { private static final String MIGRATE_ERROR = "MIGRATE_ERROR"; private ActionType actionType; private MigrateSubCommand subcommand; private short flag; private long timestamp; private String migrationRouteString; private List<MigrationRoutePair> migrationRoutePairs; private String returnMessage; private int hashkey; // convert migrationRouteString to hashKey to // avoid computing repeatly. public MigrationActionData() { actionType = MigrateActionType.MIGRATE; } /** * @see com.alibaba.doris.dataserver.action.data.ActionData#getActionType() */ public ActionType getActionType() { return actionType; } public MigrateSubCommand getSubcommand() { return subcommand; } public void setSubcommand(String subcommand) { this.subcommand = MigrateSubCommand.enumValueOf(subcommand); } public String getMigrationRouteString() { return migrationRouteString; } public void setActionType(ActionType actionType) { this.actionType = actionType; } public short getFlag() { return flag; } public void setFlag(short flag) { this.flag = flag; } public long getTimestamp() { return timestamp; } public void setTimestamp(long timestamp) { this.timestamp = timestamp; } public String getMigrationRoute() { return migrationRouteString; } public void setMigrationRouteString(String migrationRouteString) { this.migrationRouteString = migrationRouteString; if (migrationRouteString != null && migrationRouteString.trim().length() > 0) { migrationRoutePairs = JSON.parseArray(migrationRouteString, MigrationRoutePair.class); } hashkey = this.migrationRouteString.hashCode(); } public List<MigrationRoutePair> getMigrationRoutePairs() { return migrationRoutePairs; } public void setMigrationRoutePairs(List<MigrationRoutePair> migrationRoutePairs) { this.migrationRoutePairs = migrationRoutePairs; if (migrationRouteString == null) { migrationRouteString = JSON.toJSONString(migrationRoutePairs); } } public boolean isNeedReadBody() { return true; } public void setReturnMessage(String returnMessage) { this.returnMessage = returnMessage; } public void setErrorMessage(String errorMessage) { this.returnMessage = new StringBuilder(32).append(MIGRATE_ERROR).append(" ").append(errorMessage).toString(); } public String getReturnMessage() { return returnMessage; } public boolean isStartCommand() { return subcommand != null && (subcommand == MigrateSubCommand.EXPANSION_START || subcommand == MigrateSubCommand.FOREVER_FAILOVER_START || subcommand == MigrateSubCommand.TEMP_FAILOVER_START); } public boolean isAllFinishedCommand() { return subcommand != null && (subcommand == MigrateSubCommand.TEMP_FAILOVER_ALL_FINISHED || subcommand == MigrateSubCommand.EXPANSION_ALL_FINISHED || subcommand == MigrateSubCommand.FOREVER_FAILOVER_ALL_FINISHED); } public boolean isCancelCommand() { return subcommand != null && (subcommand == MigrateSubCommand.EXPANSION_CANCEL || subcommand == MigrateSubCommand.FOREVER_FAILOVER_CANCEL || subcommand == MigrateSubCommand.TEMP_FAILOVER_CANCEL); } public boolean isDataCleanCommand() { return subcommand != null && subcommand == MigrateSubCommand.DATACLEAN; } public boolean isQueryStatus() { return subcommand != null && subcommand == MigrateSubCommand.QUERY_STATUS; } @Override public String toString() { return "[MigrationCommand:" + subcommand + "," + migrationRouteString + "," + timestamp + "]"; } public int getHashKey() { return this.hashkey; } }