com.yahoo.glimmer.indexing.CompressionCodecHelper.java Source code

Java tutorial

Introduction

Here is the source code for com.yahoo.glimmer.indexing.CompressionCodecHelper.java

Source

package com.yahoo.glimmer.indexing;

/*
 * Copyright (c) 2012 Yahoo! Inc. All rights reserved.
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is 
 *  distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and limitations under the License.
 *  See accompanying LICENSE file.
 */

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionCodecFactory;

public class CompressionCodecHelper {
    private static CompressionCodecFactory compressionCodecFactory;

    private synchronized static void initialiseCompressionCodecFactory(Configuration conf) {
        if (compressionCodecFactory == null) {
            compressionCodecFactory = new CompressionCodecFactory(conf);
        }
    }

    public static CompressionCodec getCompressionCodec(Configuration conf, Path path) {
        if (compressionCodecFactory == null) {
            initialiseCompressionCodecFactory(conf);
        }
        return compressionCodecFactory.getCodec(path);
    }

    public static InputStream wrapStream(Configuration conf, Path path, InputStream inputStream)
            throws IOException {
        CompressionCodec codec = getCompressionCodec(conf, path);
        if (codec != null) {
            return codec.createInputStream(inputStream);
        }
        return inputStream;
    }

    public static OutputStream wrapStream(Configuration conf, Path path, OutputStream outputStream)
            throws IOException {
        CompressionCodec codec = getCompressionCodec(conf, path);
        if (codec != null) {
            return codec.createOutputStream(outputStream);
        }
        return outputStream;
    }

    public static InputStream openInputStream(Configuration conf, Path path) throws IOException {
        FileSystem fs = FileSystem.get(conf);
        InputStream inputStream = fs.open(path);
        return wrapStream(conf, path, inputStream);
    }

    public static OutputStream openOutputStream(Configuration conf, Path path, boolean overwrite)
            throws IOException {
        FileSystem fs = FileSystem.get(conf);
        OutputStream outputStream = fs.create(path, overwrite);
        return wrapStream(conf, path, outputStream);
    }
}