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

org.rcsb.cif.schema.DelegatingBlock Maven / Gradle / Ivy

package org.rcsb.cif.schema;

import org.rcsb.cif.model.Block;
import org.rcsb.cif.model.Category;
import org.rcsb.cif.model.LinkedCaseInsensitiveMap;

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

public abstract class DelegatingBlock implements Block {
    protected final Block delegate;

    protected DelegatingBlock(Block block) {
        this.delegate = block;
    }

    @Override
    public String getBlockHeader() {
        return delegate.getBlockHeader();
    }

    @Override
    public Category getCategory(String name) {
        return getCategories().computeIfAbsent(name, Category.EmptyCategory::new);
    }

    @Override
    public Map getCategories() {
        Map categories = new LinkedCaseInsensitiveMap<>();
        for (Map.Entry entry : delegate.getCategories().entrySet()) {
            categories.put(entry.getKey(), createDelegate(entry.getKey(), entry.getValue()));
        }
        return categories;
    }

    protected abstract Category createDelegate(String categoryName, Category category);

    @Override
    public List getSaveFrames() {
        return delegate.getSaveFrames();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy