    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.operation;
    022
    023/**
    024 * Interface PlannerLevel is the base interface for {@link DebugLevel} and {@link AssertionLevel} enum types.
    025 * <p/>
    026 * It should be noted that all enum implementations of this interface must declare a NONE or equivalent instance. This
    027 * special case type tells the  {@link cascading.flow.planner.FlowPlanner} to remove all {@link PlannedOperation} instances from
    028 * the final {@link cascading.flow.Flow}.
    029 *
    030 * @see DebugLevel
    031 * @see AssertionLevel
    032 */
    033public interface PlannerLevel
    034  {
    035  /**
    036   * Returns true if this enum instance represents a value that instructs the {@link cascading.flow.planner.FlowPlanner} to
    037   * remove all instances from the plan.
    038   *
    039   * @return true if this represents "NONE"
    040   */
    041  boolean isNoneLevel();
    042
    043  /**
    044   * Returns true if the given {@link PlannerLevel} is less strict than this instance.
    045   *
    046   * @param plannerLevel of type PlannerLevel
    047   * @return true if argument is less strict
    048   */
    049  boolean isStricterThan( PlannerLevel plannerLevel );
    050  }