    001/*
    002 * Copyright (c) 2007-2017 Xplenty, Inc. All Rights Reserved.
    003 *
    004 * Project and contact information: http://www.cascading.org/
    005 *
    006 * This file is part of the Cascading project.
    007 *
    008 * Licensed under the Apache License, Version 2.0 (the "License");
    009 * you may not use this file except in compliance with the License.
    010 * You may obtain a copy of the License at
    011 *
    012 *     http://www.apache.org/licenses/LICENSE-2.0
    013 *
    014 * Unless required by applicable law or agreed to in writing, software
    015 * distributed under the License is distributed on an "AS IS" BASIS,
    016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    017 * See the License for the specific language governing permissions and
    018 * limitations under the License.
    019 */
    020
    021package cascading.flow.planner.rule;
    022
    023/**
    024 *
    025 */
    026public enum PlanPhase
    027  {
    028    // Flow element graph rules
    029    PreBalanceAssembly( ProcessLevel.Assembly, RuleMode.Mutate, ExecAction.Rule ),
    030    BalanceAssembly( ProcessLevel.Assembly, RuleMode.Mutate, ExecAction.Rule ),
    031    PostBalanceAssembly( ProcessLevel.Assembly, RuleMode.Mutate, ExecAction.Rule ),
    032
    033    PreResolveAssembly( ProcessLevel.Assembly, RuleMode.Mutate, ExecAction.Rule ),
    034    ResolveAssembly( ProcessLevel.Assembly, RuleMode.Mutate, ExecAction.Resolve ), // force assembly resolution
    035    PostResolveAssembly( ProcessLevel.Assembly, RuleMode.Mutate, ExecAction.Rule ),
    036
    037    // Flow step sub-graph partition rules
    038    PartitionSteps( ProcessLevel.Step, RuleMode.Partition, ExecAction.Rule ),
    039    PostSteps( ProcessLevel.Step, RuleMode.Mutate, ExecAction.Rule ),
    040
    041    // Flow node sub-graph partition rules
    042    PartitionNodes( ProcessLevel.Node, RuleMode.Partition, ExecAction.Rule ),
    043    PostNodes( ProcessLevel.Node, RuleMode.Mutate, ExecAction.Rule ),
    044
    045    // Flow node pipeline sub-graph partition rules
    046    PartitionPipelines( ProcessLevel.Pipeline, RuleMode.Partition, ExecAction.Rule ),
    047    PostPipelines( ProcessLevel.Pipeline, RuleMode.Mutate, ExecAction.Rule );
    048
    049  ProcessLevel level;
    050  ExecAction action;
    051  RuleMode mode;
    052
    053  PlanPhase( ProcessLevel level, RuleMode mode, ExecAction action )
    054    {
    055    this.level = level;
    056    this.action = action;
    057    this.mode = mode;
    058    }
    059
    060  public ProcessLevel getLevel()
    061    {
    062    return level;
    063    }
    064
    065  public ExecAction getAction()
    066    {
    067    return action;
    068    }
    069
    070  public RuleMode getMode()
    071    {
    072    return mode;
    073    }
    074  }