blob: 572386bdd14f65a88c7faaeadca509c9793eec97 [file] [log] [blame]
/*
* 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.fn;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.temporal.TemporalAccessor;
import org.apache.drill.exec.vector.complex.reader.FieldReader;
import org.joda.time.Period;
/**
* Interface through which UDFs, RecordWriters and other systems can write out a JSON output.
* Generally used to control how non-json types are mapped to a json output stream.
*/
public interface JsonOutput {
// basic json tools.
void flush() throws IOException;
void writeStartArray() throws IOException;
void writeEndArray() throws IOException;
void writeStartObject() throws IOException;
void writeEndObject() throws IOException;
void writeUntypedNull() throws IOException;
void writeFieldName(String name) throws IOException;
// literals
void writeDecimal(BigDecimal value) throws IOException;
void writeTinyInt(byte value) throws IOException;
void writeSmallInt(short value) throws IOException;
void writeInt(int value) throws IOException;
void writeBigInt(long value) throws IOException;
void writeFloat(float value) throws IOException;
void writeDouble(double value) throws IOException;
void writeVarChar(String value) throws IOException;
void writeVar16Char(String value) throws IOException;
void writeBinary(byte[] value) throws IOException;
void writeBoolean(boolean value) throws IOException;
void writeDate(TemporalAccessor value) throws IOException;
void writeTime(TemporalAccessor value) throws IOException;
void writeTimestamp(TemporalAccessor value) throws IOException;
void writeInterval(Period value) throws IOException;
void writeDecimalNull() throws IOException;
void writeTinyIntNull() throws IOException;
void writeSmallIntNull() throws IOException;
void writeIntNull() throws IOException;
void writeBigIntNull() throws IOException;
void writeFloatNull() throws IOException;
void writeDoubleNull() throws IOException;
void writeVarcharNull() throws IOException;
void writeVar16charNull() throws IOException;
void writeBinaryNull() throws IOException;
void writeBooleanNull() throws IOException;
void writeDateNull() throws IOException;
void writeTimeNull() throws IOException;
void writeTimestampNull() throws IOException;
void writeIntervalNull() throws IOException;
// scalars reader
void writeDecimal(FieldReader reader) throws IOException;
void writeTinyInt(FieldReader reader) throws IOException;
void writeSmallInt(FieldReader reader) throws IOException;
void writeInt(FieldReader reader) throws IOException;
void writeBigInt(FieldReader reader) throws IOException;
void writeFloat(FieldReader reader) throws IOException;
void writeDouble(FieldReader reader) throws IOException;
void writeVarChar(FieldReader reader) throws IOException;
void writeVar16Char(FieldReader reader) throws IOException;
void writeBinary(FieldReader reader) throws IOException;
void writeBoolean(FieldReader reader) throws IOException;
void writeDate(FieldReader reader) throws IOException;
void writeTime(FieldReader reader) throws IOException;
void writeTimestamp(FieldReader reader) throws IOException;
void writeInterval(FieldReader reader) throws IOException;
// index positioned scalars
void writeDecimal(int index, FieldReader reader) throws IOException;
void writeTinyInt(int index, FieldReader reader) throws IOException;
void writeSmallInt(int index, FieldReader reader) throws IOException;
void writeInt(int index, FieldReader reader) throws IOException;
void writeBigInt(int index, FieldReader reader) throws IOException;
void writeFloat(int index, FieldReader reader) throws IOException;
void writeDouble(int index, FieldReader reader) throws IOException;
void writeVarChar(int index, FieldReader reader) throws IOException;
void writeVar16Char(int index, FieldReader reader) throws IOException;
void writeBinary(int index, FieldReader reader) throws IOException;
void writeBoolean(int index, FieldReader reader) throws IOException;
void writeDate(int index, FieldReader reader) throws IOException;
void writeTime(int index, FieldReader reader) throws IOException;
void writeTimestamp(int index, FieldReader reader) throws IOException;
void writeInterval(int index, FieldReader reader) throws IOException;
}