blob: 61960487c30f653ae57829b95703b84a0bdf5284 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.iotdb.db.schemaengine.schemaregion.write.req;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegionPlan;
import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanType;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.ActivateTemplateInClusterPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.AutoCreateDeviceMNodePlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.ChangeAliasPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.ChangeTagOffsetPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.CreateAlignedTimeSeriesPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.CreateTimeSeriesPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.DeactivateTemplatePlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.DeleteTimeSeriesPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.PreDeactivateTemplatePlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.PreDeleteTimeSeriesPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.RollbackPreDeactivateTemplatePlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.RollbackPreDeleteTimeSeriesPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.view.AlterLogicalViewPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.view.CreateLogicalViewPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.view.DeleteLogicalViewPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.view.PreDeleteLogicalViewPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.impl.view.RollbackPreDeleteLogicalViewPlanImpl;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IAlterLogicalViewPlan;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.ICreateLogicalViewPlan;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IDeleteLogicalViewPlan;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IPreDeleteLogicalViewPlan;
import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IRollbackPreDeleteLogicalViewPlan;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import java.util.List;
import java.util.Map;
public class SchemaRegionWritePlanFactory {
private SchemaRegionWritePlanFactory() {}
public static ISchemaRegionPlan getEmptyPlan(SchemaRegionPlanType planType) {
switch (planType) {
case CREATE_TIMESERIES:
return new CreateTimeSeriesPlanImpl();
case DELETE_TIMESERIES:
return new DeleteTimeSeriesPlanImpl();
case CHANGE_TAG_OFFSET:
return new ChangeTagOffsetPlanImpl();
case CHANGE_ALIAS:
return new ChangeAliasPlanImpl();
case AUTO_CREATE_DEVICE_MNODE:
return new AutoCreateDeviceMNodePlanImpl();
case CREATE_ALIGNED_TIMESERIES:
return new CreateAlignedTimeSeriesPlanImpl();
case ACTIVATE_TEMPLATE_IN_CLUSTER:
return new ActivateTemplateInClusterPlanImpl();
case PRE_DELETE_TIMESERIES_IN_CLUSTER:
return new PreDeleteTimeSeriesPlanImpl();
case ROLLBACK_PRE_DELETE_TIMESERIES:
return new RollbackPreDeleteTimeSeriesPlanImpl();
case PRE_DEACTIVATE_TEMPLATE:
return new PreDeactivateTemplatePlanImpl();
case ROLLBACK_PRE_DEACTIVATE_TEMPLATE:
return new RollbackPreDeactivateTemplatePlanImpl();
case DEACTIVATE_TEMPLATE:
return new DeactivateTemplatePlanImpl();
case CREATE_LOGICAL_VIEW:
return new CreateLogicalViewPlanImpl();
case PRE_DELETE_LOGICAL_VIEW:
return new PreDeleteLogicalViewPlanImpl();
case ROLLBACK_PRE_DELETE_LOGICAL_VIEW:
return new RollbackPreDeleteLogicalViewPlanImpl();
case DELETE_LOGICAL_VIEW:
return new DeleteLogicalViewPlanImpl();
case ALTER_LOGICAL_VIEW:
return new AlterLogicalViewPlanImpl();
default:
throw new UnsupportedOperationException(
String.format(
"SchemaRegionPlan of type %s doesn't support creating empty plan.",
planType.name()));
}
}
public static IChangeAliasPlan getChangeAliasPlan(PartialPath path, String alias) {
return new ChangeAliasPlanImpl(path, alias);
}
public static IChangeTagOffsetPlan getChangeTagOffsetPlan(PartialPath fullPath, long tagOffset) {
return new ChangeTagOffsetPlanImpl(fullPath, tagOffset);
}
public static IAutoCreateDeviceMNodePlan getAutoCreateDeviceMNodePlan(PartialPath path) {
return new AutoCreateDeviceMNodePlanImpl(path);
}
public static ICreateTimeSeriesPlan getCreateTimeSeriesPlan(
PartialPath path,
TSDataType dataType,
TSEncoding encoding,
CompressionType compressor,
Map<String, String> props,
Map<String, String> tags,
Map<String, String> attributes,
String alias) {
return new CreateTimeSeriesPlanImpl(
path, dataType, encoding, compressor, props, tags, attributes, alias);
}
public static ICreateAlignedTimeSeriesPlan getCreateAlignedTimeSeriesPlan(
PartialPath prefixPath,
List<String> measurements,
List<TSDataType> dataTypes,
List<TSEncoding> encodings,
List<CompressionType> compressors,
List<String> aliasList,
List<Map<String, String>> tagsList,
List<Map<String, String>> attributesList) {
return new CreateAlignedTimeSeriesPlanImpl(
prefixPath,
measurements,
dataTypes,
encodings,
compressors,
aliasList,
tagsList,
attributesList);
}
public static IDeleteTimeSeriesPlan getDeleteTimeSeriesPlan(List<PartialPath> pathList) {
return new DeleteTimeSeriesPlanImpl(pathList);
}
public static IPreDeleteTimeSeriesPlan getPreDeleteTimeSeriesPlan(PartialPath path) {
return new PreDeleteTimeSeriesPlanImpl(path);
}
public static IRollbackPreDeleteTimeSeriesPlan getRollbackPreDeleteTimeSeriesPlan(
PartialPath path) {
return new RollbackPreDeleteTimeSeriesPlanImpl(path);
}
public static IActivateTemplateInClusterPlan getActivateTemplateInClusterPlan(
PartialPath activatePath, int templateSetLevel, int templateId) {
return new ActivateTemplateInClusterPlanImpl(activatePath, templateSetLevel, templateId);
}
public static IPreDeactivateTemplatePlan getPreDeactivateTemplatePlan(
Map<PartialPath, List<Integer>> templateSetInfo) {
return new PreDeactivateTemplatePlanImpl(templateSetInfo);
}
public static IRollbackPreDeactivateTemplatePlan getRollbackPreDeactivateTemplatePlan(
Map<PartialPath, List<Integer>> templateSetInfo) {
return new RollbackPreDeactivateTemplatePlanImpl(templateSetInfo);
}
public static IDeactivateTemplatePlan getDeactivateTemplatePlan(
Map<PartialPath, List<Integer>> templateSetInfo) {
return new DeactivateTemplatePlanImpl(templateSetInfo);
}
public static ICreateLogicalViewPlan getCreateLogicalViewPlan(
PartialPath targetPath, ViewExpression sourceExpression) {
return new CreateLogicalViewPlanImpl(targetPath, sourceExpression);
}
public static IPreDeleteLogicalViewPlan getPreDeleteLogicalViewPlan(PartialPath path) {
return new PreDeleteLogicalViewPlanImpl(path);
}
public static IRollbackPreDeleteLogicalViewPlan getRollbackPreDeleteLogicalViewPlan(
PartialPath path) {
return new RollbackPreDeleteLogicalViewPlanImpl(path);
}
public static IDeleteLogicalViewPlan getDeleteLogicalViewPlan(PartialPath path) {
return new DeleteLogicalViewPlanImpl(path);
}
public static IAlterLogicalViewPlan getAlterLogicalViewPlan(
PartialPath targetPath, ViewExpression sourceExpression) {
return new AlterLogicalViewPlanImpl(targetPath, sourceExpression);
}
}