blob: cdc9a32fea7541d4a52394cf8d2e3d7470c2ff1b [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.nifi.serialization.record;
import java.util.List;
import java.util.Optional;
public interface RecordSchema {
/**
* @return the list of fields that are present in the schema
*/
List<RecordField> getFields();
/**
* @return the number of fields in the schema
*/
int getFieldCount();
/**
* @param index the 0-based index of which field to return
* @return the index'th field
*
* @throws IndexOutOfBoundsException if the index is < 0 or >= the number of fields (determined by {@link #getFieldCount()}).
*/
RecordField getField(int index);
/**
* @return the data types of the fields
*/
List<DataType> getDataTypes();
/**
* @return the names of the fields
*/
List<String> getFieldNames();
/**
* @param fieldName the name of the field whose type is desired
* @return the RecordFieldType associated with the field that has the given name, or
* <code>null</code> if the schema does not contain a field with the given name
*/
Optional<DataType> getDataType(String fieldName);
/**
* @return the textual representation of the schema, if one is available
*/
Optional<String> getSchemaText();
/**
* @return the format of the schema text, if schema text is present
*/
Optional<String> getSchemaFormat();
/**
* @param fieldName the name of the field
* @return an Optional RecordField for the field with the given name
*/
Optional<RecordField> getField(String fieldName);
/**
* @return the SchemaIdentifier, which provides various attributes for identifying a schema
*/
SchemaIdentifier getIdentifier();
/**
* @return the name of the schema's root record.
*/
Optional<String> getSchemaName();
/**
* @return the namespace of the schema.
*/
Optional<String> getSchemaNamespace();
}