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

org.rcsb.cif.model.builder.FloatColumnBuilderImpl 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.FloatColumn;
import org.rcsb.cif.model.FloatColumnBuilder;
import org.rcsb.cif.model.ValueKind;

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

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

public class FloatColumnBuilderImpl

, PP extends BlockBuilder, PPP extends CifFileBuilder> extends ColumnBuilderImpl implements FloatColumnBuilder { private final List values; public FloatColumnBuilderImpl(String categoryName, String columnName, P parent) { super(categoryName, columnName, parent); this.values = new ArrayList<>(); } @Override public List getValues() { return values; } @Override public FloatColumnBuilder markNextNotPresent() { values.add(0.0); mask.add(ValueKind.NOT_PRESENT); return this; } @Override public FloatColumnBuilder markNextUnknown() { values.add(0.0); mask.add(ValueKind.UNKNOWN); return this; } @Override public FloatColumn build() { return createColumnText(getColumnName(), values, mask, FloatColumn.class); } @Override public FloatColumnBuilder add(double... value) { DoubleStream.of(value).forEach(values::add); IntStream.range(0, value.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