/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.drill.exec.vector.complex.impl; import org.apache.drill.exec.vector.complex.writer.BaseWriter; import org.apache.drill.exec.vector.complex.writer.BaseWriter.MapOrListWriter; import org.apache.drill.exec.vector.complex.writer.BigIntWriter; import org.apache.drill.exec.vector.complex.writer.BitWriter; import org.apache.drill.exec.vector.complex.writer.DateWriter; import org.apache.drill.exec.vector.complex.writer.Decimal18Writer; import org.apache.drill.exec.vector.complex.writer.Decimal28DenseWriter; import org.apache.drill.exec.vector.complex.writer.Decimal28SparseWriter; import org.apache.drill.exec.vector.complex.writer.Decimal38DenseWriter; import org.apache.drill.exec.vector.complex.writer.Decimal38SparseWriter; import org.apache.drill.exec.vector.complex.writer.Decimal9Writer; import org.apache.drill.exec.vector.complex.writer.Float4Writer; import org.apache.drill.exec.vector.complex.writer.Float8Writer; import org.apache.drill.exec.vector.complex.writer.IntWriter; import org.apache.drill.exec.vector.complex.writer.IntervalDayWriter; import org.apache.drill.exec.vector.complex.writer.IntervalWriter; import org.apache.drill.exec.vector.complex.writer.IntervalYearWriter; import org.apache.drill.exec.vector.complex.writer.SmallIntWriter; import org.apache.drill.exec.vector.complex.writer.TimeStampWriter; import org.apache.drill.exec.vector.complex.writer.TimeWriter; import org.apache.drill.exec.vector.complex.writer.TinyIntWriter; import org.apache.drill.exec.vector.complex.writer.UInt1Writer; import org.apache.drill.exec.vector.complex.writer.UInt2Writer; import org.apache.drill.exec.vector.complex.writer.UInt4Writer; import org.apache.drill.exec.vector.complex.writer.UInt8Writer; import org.apache.drill.exec.vector.complex.writer.Var16CharWriter; import org.apache.drill.exec.vector.complex.writer.VarBinaryWriter; import org.apache.drill.exec.vector.complex.writer.VarCharWriter; public class MapOrListWriterImpl implements MapOrListWriter { public final BaseWriter.MapWriter map; public final BaseWriter.ListWriter list; public MapOrListWriterImpl(final BaseWriter.MapWriter writer) { this.map = writer; this.list = null; } public MapOrListWriterImpl(final BaseWriter.ListWriter writer) { this.map = null; this.list = writer; } public void start() { if (map != null) { map.start(); } else { list.startList(); } } public void end() { if (map != null) { map.end(); } else { list.endList(); } } public MapOrListWriter map(final String name) { assert map != null; return new MapOrListWriterImpl(map.map(name)); } public MapOrListWriter listoftmap(final String name) { assert list != null; return new MapOrListWriterImpl(list.map()); } public MapOrListWriter list(final String name) { assert map != null; return new MapOrListWriterImpl(map.list(name)); } public boolean isMapWriter() { return map != null; } public boolean isListWriter() { return list != null; } public VarCharWriter varChar(final String name) { return (map != null) ? map.varChar(name) : list.varChar(); } public IntWriter integer(final String name) { return (map != null) ? map.integer(name) : list.integer(); } public BigIntWriter bigInt(final String name) { return (map != null) ? map.bigInt(name) : list.bigInt(); } public Float4Writer float4(final String name) { return (map != null) ? map.float4(name) : list.float4(); } public Float8Writer float8(final String name) { return (map != null) ? map.float8(name) : list.float8(); } public BitWriter bit(final String name) { return (map != null) ? map.bit(name) : list.bit(); } /** * {@inheritDoc} */ @Deprecated public VarBinaryWriter binary(final String name) { return (map != null) ? map.varBinary(name) : list.varBinary(); } @Override public TinyIntWriter tinyInt(String name) { return (map != null) ? map.tinyInt(name) : list.tinyInt(); } @Override public SmallIntWriter smallInt(String name) { return (map != null) ? map.smallInt(name) : list.smallInt(); } @Override public DateWriter date(String name) { return (map != null) ? map.date(name) : list.date(); } @Override public TimeWriter time(String name) { return (map != null) ? map.time(name) : list.time(); } @Override public TimeStampWriter timeStamp(String name) { return (map != null) ? map.timeStamp(name) : list.timeStamp(); } @Override public VarBinaryWriter varBinary(String name) { return (map != null) ? map.varBinary(name) : list.varBinary(); } @Override public Var16CharWriter var16Char(String name) { return (map != null) ? map.var16Char(name) : list.var16Char(); } @Override public UInt1Writer uInt1(String name) { return (map != null) ? map.uInt1(name) : list.uInt1(); } @Override public UInt2Writer uInt2(String name) { return (map != null) ? map.uInt2(name) : list.uInt2(); } @Override public UInt4Writer uInt4(String name) { return (map != null) ? map.uInt4(name) : list.uInt4(); } @Override public UInt8Writer uInt8(String name) { return (map != null) ? map.uInt8(name) : list.uInt8(); } @Override public IntervalYearWriter intervalYear(String name) { return (map != null) ? map.intervalYear(name) : list.intervalYear(); } @Override public IntervalDayWriter intervalDay(String name) { return (map != null) ? map.intervalDay(name) : list.intervalDay(); } @Override public IntervalWriter interval(String name) { return (map != null) ? map.interval(name) : list.interval(); } @Override public Decimal9Writer decimal9(String name) { return (map != null) ? map.decimal9(name) : list.decimal9(); } @Override public Decimal18Writer decimal18(String name) { return (map != null) ? map.decimal18(name) : list.decimal18(); } @Override public Decimal28DenseWriter decimal28Dense(String name) { return (map != null) ? map.decimal28Dense(name) : list.decimal28Dense(); } @Override public Decimal38DenseWriter decimal38Dense(String name) { return (map != null) ? map.decimal38Dense(name) : list.decimal38Dense(); } @Override public Decimal38SparseWriter decimal38Sparse(String name) { return (map != null) ? map.decimal38Sparse(name) : list.decimal38Sparse(); } @Override public Decimal28SparseWriter decimal28Sparse(String name) { return (map != null) ? map.decimal28Sparse(name) : list.decimal28Sparse(); } }