001/*
002 * Copyright (c) 2007-2015 Concurrent, 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;
022
023import cascading.CascadingException;
024
025/** FlowException instances are thrown on errors when executing a Flow. */
026public class FlowException extends CascadingException
027  {
028  /** Field flowName */
029  String flowName;
030
031  private static String createMessage( String flowName, String message )
032    {
033    if( flowName == null )
034      return message;
035
036    return "[" + flowName + "] " + message;
037    }
038
039  /** Constructor FlowException creates a new FlowException instance. */
040  public FlowException()
041    {
042    }
043
044  /**
045   * Constructor FlowException creates a new FlowException instance.
046   *
047   * @param message of type String
048   */
049  public FlowException( String message )
050    {
051    super( message );
052    }
053
054  /**
055   * Constructor FlowException creates a new FlowException instance.
056   *
057   * @param message   of type String
058   * @param throwable of type Throwable
059   */
060  public FlowException( String message, Throwable throwable )
061    {
062    super( message, throwable );
063    }
064
065  /**
066   * Constructor FlowException creates a new FlowException instance.
067   *
068   * @param flowName  of type String
069   * @param message   of type String
070   * @param throwable of type Throwable
071   */
072  public FlowException( String flowName, String message, Throwable throwable )
073    {
074    super( createMessage( flowName, message ), throwable );
075    this.flowName = flowName;
076    }
077
078  /**
079   * Constructor FlowException creates a new FlowException instance.
080   *
081   * @param flowName of type String
082   * @param message  of type String
083   */
084  public FlowException( String flowName, String message )
085    {
086    super( createMessage( flowName, message ) );
087    this.flowName = flowName;
088    }
089
090  /**
091   * Constructor FlowException creates a new FlowException instance.
092   *
093   * @param throwable of type Throwable
094   */
095  public FlowException( Throwable throwable )
096    {
097    super( throwable );
098    }
099
100  /**
101   * Method getFlowName returns the name of the parent {@link Flow} instance.
102   *
103   * @return the flowName (type String) of this FlowException object.
104   */
105  public String getFlowName()
106    {
107    return flowName;
108    }
109
110  void setFlowName( String flowName )
111    {
112    this.flowName = flowName;
113    }
114  }