    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.hadoop.io;
    022
    023    import java.io.IOException;
    024
    025    import org.apache.hadoop.conf.Configuration;
    026    import org.apache.hadoop.fs.FSDataOutputStream;
    027    import org.apache.hadoop.fs.FileStatus;
    028    import org.apache.hadoop.fs.FileSystem;
    029    import org.apache.hadoop.fs.Path;
    030    import org.apache.hadoop.fs.permission.FsPermission;
    031    import org.apache.hadoop.util.Progressable;
    032
    033    /** Class StreamedFileSystem is a base class for {@link FileSystem} implementations that manage remote resources. */
    034    public abstract class StreamedFileSystem extends FileSystem
    035      {
    036      @Override
    037      public FSDataOutputStream create( Path path, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress ) throws IOException
    038        {
    039        throw new UnsupportedOperationException( "not supported" );
    040        }
    041
    042      @Override
    043      public boolean rename( Path path, Path path1 ) throws IOException
    044        {
    045        throw new UnsupportedOperationException( "not supported" );
    046        }
    047
    048      @Deprecated
    049      @Override
    050      public boolean delete( Path path ) throws IOException
    051        {
    052        throw new UnsupportedOperationException( "not supported" );
    053        }
    054
    055      @Override
    056      public boolean delete( Path path, boolean b ) throws IOException
    057        {
    058        throw new UnsupportedOperationException( "not supported" );
    059        }
    060
    061      @Override
    062      public Path getWorkingDirectory()
    063        {
    064        return new Path( "/" ).makeQualified( this );
    065        }
    066
    067      @Override
    068      public void setWorkingDirectory( Path f )
    069        {
    070        }
    071
    072      @Override
    073      public boolean mkdirs( Path path, FsPermission fsPermission ) throws IOException
    074        {
    075        throw new UnsupportedOperationException( "not supported" );
    076        }
    077
    078      @Override
    079      public FileStatus[] listStatus( Path path ) throws IOException
    080        {
    081        return new FileStatus[]{getFileStatus( path )};
    082        }
    083
    084      public FSDataOutputStream append( Path f, int bufferSize, Progressable progress ) throws IOException
    085        {
    086        throw new UnsupportedOperationException( "not supported" );
    087        }
    088
    089      public static String getMD5SumFor( Configuration conf, Path path )
    090        {
    091        return getMD5SumFor( conf, path.toString() );
    092        }
    093
    094      public static String getMD5SumFor( Configuration conf, String path )
    095        {
    096        return conf.get( path + ".md5" );
    097        }
    098
    099      public static void setMD5SumFor( Configuration conf, Path path, String md5Hex )
    100        {
    101        setMD5SumFor( conf, path.toString(), md5Hex );
    102        }
    103
    104      public static void setMD5SumFor( Configuration conf, String path, String md5Hex )
    105        {
    106        if( md5Hex == null || md5Hex.length() == 0 )
    107          return;
    108
    109        conf.set( path + ".md5", md5Hex );
    110        }
    111      }