package org.biojava.nbio.structure.io.mmcif; import org.biojava.nbio.structure.io.mmcif.chem.MetalBondDistance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.InputStream; import java.util.*; import java.util.zip.GZIPInputStream; /** * Created by andreas on 6/6/16. */ public class MetalBondParser { private static final Logger logger = LoggerFactory.getLogger(MetalBondParser.class); private static final String BONDS_FILE = "org/biojava/nbio/structure/bond_distance_limits.cif.gz"; static Map<String,List<MetalBondDistance>> definitions; static { definitions = init(); } public static Map<String,List<MetalBondDistance>> getMetalBondDefinitions(){ return definitions; } private static Map<String,List<MetalBondDistance>> init(){ InputStream inputStream = MetalBondParser.class.getClassLoader().getResourceAsStream(BONDS_FILE); if (inputStream == null) { throw new RuntimeException("Could not find resource "+BONDS_FILE+". This probably means that your biojava.jar file is corrupt or incorrectly built."); } try { GZIPInputStream gzIS = new GZIPInputStream(inputStream); SimpleMMcifParser parser = new SimpleMMcifParser(); MetalBondConsumer consumer = new MetalBondConsumer(); parser.addMMcifConsumer(consumer); parser.parse(gzIS); Map<String,List<MetalBondDistance>> defs = consumer.getDefinitions(); return defs; } catch ( Exception e){ logger.error(e.getMessage(),e); } return null; } }