All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.rcsb.cif.model.builder.IntColumnBuilderImpl Maven / Gradle / Ivy

package org.rcsb.cif.model.builder;

import org.rcsb.cif.model.BlockBuilder;
import org.rcsb.cif.model.CategoryBuilder;
import org.rcsb.cif.model.CifFileBuilder;
import org.rcsb.cif.model.IntColumn;
import org.rcsb.cif.model.IntColumnBuilder;
import org.rcsb.cif.model.ValueKind;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;

import static org.rcsb.cif.model.CategoryBuilder.createColumnText;

public class IntColumnBuilderImpl

, PP extends BlockBuilder, PPP extends CifFileBuilder> extends ColumnBuilderImpl implements IntColumnBuilder { private final List values; public IntColumnBuilderImpl(String categoryName, String columnName, P parent) { super(categoryName, columnName, parent); this.values = new ArrayList<>(); } @Override public List getValues() { return values; } @Override public IntColumnBuilder markNextNotPresent() { values.add(0); mask.add(ValueKind.NOT_PRESENT); return this; } @Override public IntColumnBuilder markNextUnknown() { values.add(0); mask.add(ValueKind.UNKNOWN); return this; } @Override public IntColumn build() { return createColumnText(getColumnName(), values, mask, IntColumn.class); } @Override public IntColumnBuilder add(int... values) { IntStream.of(values).forEach(this.values::add); IntStream.range(0, values.length).mapToObj(i -> ValueKind.PRESENT).forEach(mask::add); return this; } @Override public P leaveColumn() { if (parent == null) { throw new IllegalStateException("cannot leave column with undefined parent category"); } parent.digest(this); return parent; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy