All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.facebook.presto.orc.stream.MissingInputStreamSource Maven / Gradle / Ivy

There is a newer version: 0.291
Show newest version
/*
 * 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.
 */
package com.facebook.presto.orc.stream;

import javax.annotation.Nullable;

import static java.util.Objects.requireNonNull;

public class MissingInputStreamSource>
        implements InputStreamSource
{
    private static final MissingInputStreamSource BOOLEAN_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(BooleanInputStream.class);
    private static final MissingInputStreamSource BYTE_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(ByteInputStream.class);
    private static final MissingInputStreamSource BYTE_ARRAY_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(ByteArrayInputStream.class);
    private static final MissingInputStreamSource DECIMAL_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(DecimalInputStream.class);
    private static final MissingInputStreamSource DOUBLE_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(DoubleInputStream.class);
    private static final MissingInputStreamSource FLOAT_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(FloatInputStream.class);
    private static final MissingInputStreamSource LONG_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(LongInputStream.class);
    private static final MissingInputStreamSource ROW_GROUP_DICTIONARY_LENGTH_MISSING_STREAM_SOURCE = new MissingInputStreamSource<>(RowGroupDictionaryLengthInputStream.class);

    private final Class streamType;

    private MissingInputStreamSource(Class streamType)
    {
        this.streamType = requireNonNull(streamType, "streamType is null");
    }

    public static InputStreamSource getBooleanMissingStreamSource()
    {
        return BOOLEAN_MISSING_STREAM_SOURCE;
    }

    public static InputStreamSource getByteMissingStreamSource()
    {
        return BYTE_MISSING_STREAM_SOURCE;
    }

    public static MissingInputStreamSource getByteArrayMissingStreamSource()
    {
        return BYTE_ARRAY_MISSING_STREAM_SOURCE;
    }

    public static MissingInputStreamSource getDecimalMissingStreamSource()
    {
        return DECIMAL_MISSING_STREAM_SOURCE;
    }

    public static MissingInputStreamSource getDoubleMissingStreamSource()
    {
        return DOUBLE_MISSING_STREAM_SOURCE;
    }

    public static MissingInputStreamSource getFloatMissingStreamSource()
    {
        return FLOAT_MISSING_STREAM_SOURCE;
    }

    public static InputStreamSource getLongMissingStreamSource()
    {
        return LONG_MISSING_STREAM_SOURCE;
    }

    public static MissingInputStreamSource getRowGroupDictionaryLengthMissingStreamSource()
    {
        return ROW_GROUP_DICTIONARY_LENGTH_MISSING_STREAM_SOURCE;
    }

    public static > InputStreamSource missingStreamSource(Class streamType)
    {
        if (BOOLEAN_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) BOOLEAN_MISSING_STREAM_SOURCE;
        }
        if (LONG_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) LONG_MISSING_STREAM_SOURCE;
        }
        if (BYTE_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) BYTE_MISSING_STREAM_SOURCE;
        }
        if (BYTE_ARRAY_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) BYTE_ARRAY_MISSING_STREAM_SOURCE;
        }
        if (DECIMAL_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) DECIMAL_MISSING_STREAM_SOURCE;
        }
        if (DOUBLE_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) DOUBLE_MISSING_STREAM_SOURCE;
        }
        if (FLOAT_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) FLOAT_MISSING_STREAM_SOURCE;
        }
        if (ROW_GROUP_DICTIONARY_LENGTH_MISSING_STREAM_SOURCE.streamType.equals(streamType)) {
            return (InputStreamSource) ROW_GROUP_DICTIONARY_LENGTH_MISSING_STREAM_SOURCE;
        }
        return new MissingInputStreamSource<>(streamType);
    }

    @Override
    public Class getStreamType()
    {
        return streamType;
    }

    @Nullable
    @Override
    public S openStream()
    {
        return null;
    }
}