/* * SPDX-License-Identifier: Apache-2.0 * * The OpenSearch Contributors require contributions made to * this file be licensed under the Apache-2.0 license or a * * Modifications Copyright OpenSearch Contributors. See * GitHub history for details. */ /* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch 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.opensearch.hadoop.serialization; import java.util.List; import org.opensearch.hadoop.cfg.Settings; import org.opensearch.hadoop.handler.HandlerLoader; import org.opensearch.hadoop.handler.impl.PreloadedHandlerLoader; import org.opensearch.hadoop.serialization.builder.ValueReader; import org.opensearch.hadoop.serialization.dto.mapping.Mapping; import org.opensearch.hadoop.serialization.handler.read.IDeserializationErrorHandler; import org.opensearch.hadoop.serialization.handler.read.impl.DeserializationHandlerLoader; import org.opensearch.hadoop.util.StringUtils; public class ScrollReaderConfigBuilder { public static ScrollReaderConfigBuilder builder(ValueReader reader, Mapping resolvedMapping, Settings settings) { return builder(reader, settings).setResolvedMapping(resolvedMapping); } public static ScrollReaderConfigBuilder builder(ValueReader reader, Settings settings) { return new ScrollReaderConfigBuilder(settings, reader); } // Integration specific object factory private final ValueReader reader; // Record Typing private boolean returnRawJson; // Mappings private Mapping resolvedMapping; private boolean ignoreUnmappedFields; // Metadata Fields private boolean readMetadata; private String metadataName; // Field Filtering private List includeFields; private List excludeFields; private List includeArrayFields; private HandlerLoader errorHandlerLoader; public ScrollReaderConfigBuilder(Settings settings, ValueReader reader) { this.reader = reader; // Source defaults from Settings this.returnRawJson = settings.getOutputAsJson(); this.ignoreUnmappedFields = settings.getReadMappingMissingFieldsIgnore(); this.readMetadata = settings.getReadMetadata(); this.metadataName = settings.getReadMetadataField(); this.includeFields = StringUtils.tokenize(settings.getReadFieldInclude()); this.excludeFields = StringUtils.tokenize(settings.getReadFieldExclude()); this.includeArrayFields = StringUtils.tokenize(settings.getReadFieldAsArrayInclude()); DeserializationHandlerLoader loader = new DeserializationHandlerLoader(); loader.setSettings(settings); this.errorHandlerLoader = loader; // No default value this.resolvedMapping = null; } public ValueReader getReader() { return reader; } public boolean getReturnRawJson() { return returnRawJson; } public ScrollReaderConfigBuilder setReturnRawJson(boolean returnRawJson) { this.returnRawJson = returnRawJson; return this; } public Mapping getResolvedMapping() { return resolvedMapping; } public ScrollReaderConfigBuilder setResolvedMapping(Mapping resolvedMapping) { this.resolvedMapping = resolvedMapping; return this; } public boolean getIgnoreUnmappedFields() { return ignoreUnmappedFields; } public ScrollReaderConfigBuilder setIgnoreUnmappedFields(boolean ignoreUnmappedFields) { this.ignoreUnmappedFields = ignoreUnmappedFields; return this; } public boolean getReadMetadata() { return readMetadata; } public ScrollReaderConfigBuilder setReadMetadata(boolean readMetadata) { this.readMetadata = readMetadata; return this; } public String getMetadataName() { return metadataName; } public ScrollReaderConfigBuilder setMetadataName(String metadataName) { this.metadataName = metadataName; return this; } public List getIncludeFields() { return includeFields; } public ScrollReaderConfigBuilder setIncludeFields(List includeFields) { this.includeFields = includeFields; return this; } public List getExcludeFields() { return excludeFields; } public ScrollReaderConfigBuilder setExcludeFields(List excludeFields) { this.excludeFields = excludeFields; return this; } public List getIncludeArrayFields() { return includeArrayFields; } public ScrollReaderConfigBuilder setIncludeArrayFields(List includeArrayFields) { this.includeArrayFields = includeArrayFields; return this; } public HandlerLoader getErrorHandlerLoader() { return errorHandlerLoader; } public ScrollReaderConfigBuilder setErrorHandlerLoader(HandlerLoader errorHandlerLoader) { this.errorHandlerLoader = errorHandlerLoader; return this; } public ScrollReaderConfigBuilder setErrorHandlers(List errorHandlers) { this.errorHandlerLoader = new PreloadedHandlerLoader(errorHandlers); return this; } }