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

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

package org.rcsb.cif.model.builder;

import org.rcsb.cif.model.Block;
import org.rcsb.cif.model.BlockBuilder;
import org.rcsb.cif.model.Category;
import org.rcsb.cif.model.CategoryBuilder;
import org.rcsb.cif.model.CifFileBuilder;
import org.rcsb.cif.model.text.TextBlock;
import org.rcsb.cif.model.text.TextCategory;

import java.util.LinkedHashMap;
import java.util.Map;

public class BlockBuilderImpl

implements BlockBuilder

{ private final String blockName; protected final Map categories; protected final P parent; public BlockBuilderImpl(String blockName, P parent) { this.blockName = blockName; this.categories = new LinkedHashMap<>(); this.parent = parent; } @Override public CategoryBuilder, P> enterCategory(String categoryName) { return new CategoryBuilderImpl<>(categoryName, this); } @Override public String getBlockHeader() { return blockName; } @Override public Map getCategories() { return categories; } @Override public void digest(CategoryBuilder, P> builder) { Category category = new TextCategory(builder.getCategoryName(), builder.getColumns()); categories.put(builder.getCategoryName(), category); } @Override public P leaveBlock() { if (parent == null) { throw new IllegalStateException("cannot leave block with undefined parent file"); } parent.digest(this); return parent; } @Override public Block build() { return new TextBlock(categories, "unknown"); } @Override public BlockBuilder

addCategory(Category category) { categories.put(category.getCategoryName(), category); return this; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy