org.rcsb.cif.model.binary.BinaryCategory Maven / Gradle / Ivy
package org.rcsb.cif.model.binary;
import org.rcsb.cif.binary.codec.BinaryCifCodec;
import org.rcsb.cif.model.Category;
import org.rcsb.cif.model.Column;
import org.rcsb.cif.model.LinkedCaseInsensitiveMap;
import java.lang.reflect.Array;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class BinaryCategory implements Category {
private final String name;
private final int rowCount;
private final Object[] encodedColumns;
private final Map> decodedColumns;
private final List columnNames;
@SuppressWarnings("unchecked")
public BinaryCategory(String name, int rowCount, Object[] encodedColumns) {
this.name = name;
this.rowCount = rowCount;
this.encodedColumns = encodedColumns;
this.decodedColumns = new LinkedCaseInsensitiveMap<>();
this.columnNames = Stream.of(encodedColumns)
.map(map -> ((Map) map).get("name"))
.map(String.class::cast)
.collect(Collectors.toList());
}
@Override
public String getCategoryName() {
return name;
}
@Override
public int getRowCount() {
return rowCount;
}
@Override
@SuppressWarnings("unchecked")
public Column getColumn(String name) {
Optional