package org.biojava.nbio.structure.io.mmcif;
import org.biojava.nbio.structure.io.FileParsingParameters;
import org.biojava.nbio.structure.io.mmcif.chem.MetalBondDistance;
import org.biojava.nbio.structure.io.mmcif.model.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by andreas on 6/9/16.
*/
public class MetalBondConsumer implements MMcifConsumer{
Map<String,List<MetalBondDistance>> definitions = new HashMap();
@Override
public void documentStart() {
definitions.clear();
}
@Override
public void documentEnd() {
// minimize memory consumption
for (List<MetalBondDistance> d : definitions.values()){
ArrayList<MetalBondDistance> a = (ArrayList)d;
a.trimToSize();
}
}
@Override
public void newAtomSite(AtomSite atom) {
}
@Override
public void newEntity(Entity entity) {
}
@Override
public void newEntityPoly(EntityPoly entityPoly) {
}
@Override
public void newEntityPolySeq(EntityPolySeq epolseq) {
}
@Override
public void newStructAsym(StructAsym sasym) {
}
@Override
public void setStruct(Struct struct) {
}
@Override
public void newDatabasePDBrev(DatabasePDBrev dbrev) {
}
@Override
public void newDatabasePDBrevRecord(DatabasePdbrevRecord dbrev) {
}
@Override
public void newDatabasePDBremark(DatabasePDBremark remark) {
}
@Override
public void newExptl(Exptl exptl) {
}
@Override
public void newCell(Cell cell) {
}
@Override
public void newSymmetry(Symmetry symmetry) {
}
@Override
public void newStructNcsOper(StructNcsOper sNcsOper) {
}
@Override
public void newAtomSites(AtomSites atomSites) {
}
@Override
public void newStructRef(StructRef sref) {
}
@Override
public void newStructRefSeq(StructRefSeq sref) {
}
@Override
public void newStructRefSeqDif(StructRefSeqDif sref) {
}
@Override
public void newStructSite(StructSite sref) {
}
@Override
public void newStructSiteGen(StructSiteGen sref) {
}
@Override
public void newPdbxPolySeqScheme(PdbxPolySeqScheme ppss) {
}
@Override
public void newPdbxNonPolyScheme(PdbxNonPolyScheme ppss) {
}
@Override
public void newPdbxEntityNonPoly(PdbxEntityNonPoly pen) {
}
@Override
public void newStructKeywords(StructKeywords kw) {
}
@Override
public void newRefine(Refine r) {
}
@Override
public void newChemComp(ChemComp c) {
}
@Override
public void newChemCompDescriptor(ChemCompDescriptor ccd) {
}
@Override
public void newPdbxStructOperList(PdbxStructOperList structOper) {
}
@Override
public void newPdbxStrucAssembly(PdbxStructAssembly strucAssembly) {
}
@Override
public void newPdbxStrucAssemblyGen(PdbxStructAssemblyGen strucAssembly) {
}
@Override
public void newChemCompAtom(ChemCompAtom atom) {
}
@Override
public void newPdbxChemCompIndentifier(PdbxChemCompIdentifier id) {
}
@Override
public void newChemCompBond(ChemCompBond bond) {
}
@Override
public void newPdbxChemCompDescriptor(PdbxChemCompDescriptor desc) {
}
@Override
public void newEntitySrcGen(EntitySrcGen entitySrcGen) {
}
@Override
public void newEntitySrcNat(EntitySrcNat entitySrcNat) {
}
@Override
public void newEntitySrcSyn(EntitySrcSyn entitySrcSyn) {
}
@Override
public void newStructConn(StructConn structConn) {
}
@Override
public void newAuditAuthor(AuditAuthor aa) {
}
@Override
public void newGenericData(String category, List<String> loopFields, List<String> lineData) {
MetalBondDistance d = new MetalBondDistance();
d.setAtomType1(lineData.get(0));
d.setAtomType2(lineData.get(1));
d.setLowerLimit(Float.parseFloat(lineData.get(2)));
d.setUpperLimit(Float.parseFloat(lineData.get(3)));
List<MetalBondDistance> defs = definitions.get(d.getAtomType1());
if ( defs == null){
defs = new ArrayList<>();
definitions.put(d.getAtomType1(),defs);
}
defs.add(d);
}
@Override
public void setFileParsingParameters(FileParsingParameters params) {
}
@Override
public FileParsingParameters getFileParsingParameters() {
return null;
}
public Map<String,List<MetalBondDistance>> getDefinitions(){
return definitions;
}
}