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

org.rcsb.cif.model.builder.StrColumnBuilderImpl 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.StrColumn;
import org.rcsb.cif.model.StrColumnBuilder;
import org.rcsb.cif.model.ValueKind;

import java.util.ArrayList;
import java.util.List;

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

public class StrColumnBuilderImpl

, PP extends BlockBuilder, PPP extends CifFileBuilder> extends ColumnBuilderImpl implements StrColumnBuilder { private final List values; public StrColumnBuilderImpl(String categoryName, String columnName, P parent) { super(categoryName, columnName, parent); this.values = new ArrayList<>(); } @Override public List getValues() { return values; } @Override public StrColumnBuilder markNextNotPresent() { values.add("."); mask.add(ValueKind.NOT_PRESENT); return this; } @Override public StrColumnBuilder markNextUnknown() { values.add("?"); mask.add(ValueKind.UNKNOWN); return this; } @Override public StrColumn build() { return createColumnText(getColumnName(), values, mask, StrColumn.class); } @Override public StrColumnBuilder add(String... values) { for (String s : values) { if (".".equals(s)) { markNextNotPresent(); } else if ("?".equals(s)) { markNextUnknown(); } else { this.values.add(s); mask.add(ValueKind.PRESENT); } } 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