    001    /*
    002     * Copyright (c) 2007-2014 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.local;
    022
    023    import java.io.IOException;
    024    import java.io.OutputStream;
    025    import java.util.Properties;
    026
    027    import cascading.flow.FlowProcess;
    028    import cascading.scheme.Scheme;
    029    import cascading.tap.SinkMode;
    030    import cascading.tap.SinkTap;
    031    import cascading.tuple.TupleEntryCollector;
    032    import cascading.tuple.TupleEntrySchemeCollector;
    033
    034    /** Class StdErrTap provides a local mode tap for writing data to the {@code stderr} stream. */
    035    public class StdErrTap extends SinkTap<Properties, OutputStream>
    036      {
    037      public StdErrTap( Scheme<Properties, ?, OutputStream, ?, ?> scheme )
    038        {
    039        super( scheme, SinkMode.UPDATE );
    040        }
    041
    042      @Override
    043      public String getIdentifier()
    044        {
    045        return "stdErr";
    046        }
    047
    048      @Override
    049      public TupleEntryCollector openForWrite( FlowProcess<Properties> flowProcess, OutputStream output ) throws IOException
    050        {
    051        return new TupleEntrySchemeCollector<Properties, OutputStream>( flowProcess, getScheme(), System.err );
    052        }
    053
    054      @Override
    055      public boolean createResource( Properties conf ) throws IOException
    056        {
    057        return true;
    058        }
    059
    060      @Override
    061      public boolean deleteResource( Properties conf ) throws IOException
    062        {
    063        return false;
    064        }
    065
    066      @Override
    067      public boolean resourceExists( Properties conf ) throws IOException
    068        {
    069        return true;
    070        }
    071
    072      @Override
    073      public long getModifiedTime( Properties conf ) throws IOException
    074        {
    075        return 0;
    076        }
    077      }