blob: 4a4099ef564e64564ad4c6ecc20a6107ac9cacb4 [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.tajo.catalog;
import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableList;
import org.apache.tajo.schema.QualifiedIdentifier;
import org.apache.tajo.schema.Field;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetSchemaBuilder implements SchemaBuilder.SchemaCollector {
private final Set<QualifiedIdentifier> nameSet = new HashSet<>();
private final ImmutableList.Builder<Field> fields = new ImmutableList.Builder();
@Override
public void add(Field field) {
if (!nameSet.contains(field.name())) {
fields.add(field);
nameSet.add(field.name());
}
}
@Override
public void addAll(Iterator<Field> fields) {
while (fields.hasNext()) {
add(fields.next());
}
}
@Override
public void addAll(Iterable<Field> fields) {
for (Field n : fields) {
add(n);
}
}
@Override
public ImmutableCollection<Field> build() {
return fields.build();
}
}