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    
021    package cascading.tap.partition;
022    
023    import java.util.Map;
024    import java.util.Properties;
025    
026    import cascading.property.Props;
027    
028    /**
029     * Class PartitionTapProps is a fluent helper class to set properties which control the behaviour of the
030     * {@link BasePartitionTap}.
031     */
032    public class PartitionTapProps extends Props
033      {
034      public static final String FAIL_ON_CLOSE = "cascading.tap.partition.failonclose";
035    
036      private boolean failOnClose = false;
037    
038      /**
039       * Method setFailOnClose(boolean b) controls if the PartitionTap is ignoring all Excpetions, when a TupleEntryCollector
040       * is closed or if it should rethrow the Exception.
041       *
042       * @param properties  a Map<Object, Object>
043       * @param failOnClose boolean controlling the close behaviour
044       */
045      public static void setFailOnClose( Map<Object, Object> properties, boolean failOnClose )
046        {
047        properties.put( FAIL_ON_CLOSE, Boolean.toString( failOnClose ) );
048        }
049    
050      /**
051       * Creates a new PartitionTapProps instance.
052       *
053       * @return PartitionTapProps instance
054       */
055      public static PartitionTapProps partitionTapProps()
056        {
057        return new PartitionTapProps();
058        }
059    
060      /**
061       * Constructs a new PartitionTapProps instance.
062       */
063      public PartitionTapProps()
064        {
065        }
066    
067      public boolean isFailOnClose()
068        {
069        return failOnClose;
070        }
071    
072      /**
073       * Method setFailOnClose controls if the PartitionTap is ignoring all Exceptions, when a TupleEntryCollector
074       * is closed or if it should rethrow the Exception.
075       *
076       * @param failOnClose boolean controlling the close behaviour
077       */
078      public PartitionTapProps setFailOnClose( boolean failOnClose )
079        {
080        this.failOnClose = failOnClose;
081        return this;
082        }
083    
084      @Override
085      protected void addPropertiesTo( Properties properties )
086        {
087        setFailOnClose( properties, failOnClose );
088        }
089      }