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

org.rcsb.cif.model.text.TextCategory Maven / Gradle / Ivy

package org.rcsb.cif.model.text;

import org.rcsb.cif.model.Category;
import org.rcsb.cif.model.Column;

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

public class TextCategory implements Category {
    private final String name;
    private final int rowCount;
    private final Map> textFields;

    public TextCategory(String name, Map> textColumns) {
        this.name = name;
        this.rowCount = textColumns.values()
                .stream()
                .findFirst()
                .map(Column::getRowCount)
                .orElse(0);
        this.textFields = textColumns;
    }

    @Override
    public String getCategoryName() {
        return name;
    }

    @Override
    public int getRowCount() {
        return rowCount;
    }

    @Override
    public Column getColumn(String name) {
        // let's switch to getOrDefault to not introduce any meaningless columns when called for missing data
        return textFields.getOrDefault(name, new Column.EmptyColumn(name));
    }

    @Override
    public Map> getColumns() {
        return textFields;
    }

    @Override
    public List getColumnNames() {
        // this could cause issues when users call getColumn and introduce empty columns
        return new ArrayList<>(textFields.keySet());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy