001/*
002 *                    BioJava development code
003 *
004 * This code may be freely distributed and modified under the
005 * terms of the GNU Lesser General Public Licence.  This should
006 * be distributed with the code.  If you do not have a copy,
007 * see:
008 *
009 *      http://www.gnu.org/copyleft/lesser.html
010 *
011 * Copyright for this code is held jointly by the individual
012 * authors.  These should be listed in @author doc comments.
013 *
014 * For more information on the BioJava project and its aims,
015 * or to join the biojava-l mailing list, visit the home page
016 * at:
017 *
018 *      http://www.biojava.org/
019 *
020 */
021package org.biojava.nbio.structure.io.mmcif;
022
023import org.biojava.nbio.structure.io.FileParsingParameters;
024import org.biojava.nbio.structure.io.mmcif.chem.MetalBondDistance;
025import org.biojava.nbio.structure.io.mmcif.model.*;
026
027import java.util.ArrayList;
028import java.util.HashMap;
029import java.util.List;
030import java.util.Map;
031
032/**
033 * Created by andreas on 6/9/16.
034 */
035public class MetalBondConsumer implements MMcifConsumer{
036
037
038        Map<String,List<MetalBondDistance>> definitions = new HashMap<>();
039
040        @Override
041        public void documentStart() {
042                definitions.clear();
043        }
044
045        @Override
046        public void documentEnd() {
047
048                // minimize memory consumption
049
050                for  (List<MetalBondDistance> d : definitions.values()){
051                        ArrayList<MetalBondDistance> a = (ArrayList<MetalBondDistance>)d;
052
053                        a.trimToSize();
054                }
055
056        }
057
058        @Override
059        public void newAtomSite(AtomSite atom) {
060
061        }
062
063        @Override
064        public void newEntity(Entity entity) {
065
066        }
067
068        @Override
069        public void newEntityPoly(EntityPoly entityPoly) {
070
071        }
072
073        @Override
074        public void newEntityPolySeq(EntityPolySeq epolseq) {
075
076        }
077
078        @Override
079        public void newStructAsym(StructAsym sasym) {
080
081        }
082
083        @Override
084        public void setStruct(Struct struct) {
085
086        }
087
088        @Override
089        public void newDatabasePDBrev(DatabasePDBrev dbrev) {
090
091        }
092
093        @Override
094        public void newDatabasePDBrevRecord(DatabasePdbrevRecord dbrev) {
095
096        }
097
098        @Override
099        public void newDatabasePDBremark(DatabasePDBremark remark) {
100
101        }
102
103        @Override
104        public void newExptl(Exptl exptl) {
105
106        }
107
108        @Override
109        public void newCell(Cell cell) {
110
111        }
112
113        @Override
114        public void newSymmetry(Symmetry symmetry) {
115
116        }
117
118        @Override
119        public void newStructNcsOper(StructNcsOper sNcsOper) {
120
121        }
122
123        @Override
124        public void newAtomSites(AtomSites atomSites) {
125
126        }
127
128        @Override
129        public void newStructRef(StructRef sref) {
130
131        }
132
133        @Override
134        public void newStructRefSeq(StructRefSeq sref) {
135
136        }
137
138        @Override
139        public void newStructRefSeqDif(StructRefSeqDif sref) {
140
141        }
142
143        @Override
144        public void newStructSite(StructSite sref) {
145
146        }
147
148        @Override
149        public void newStructSiteGen(StructSiteGen sref) {
150
151        }
152
153        @Override
154        public void newPdbxPolySeqScheme(PdbxPolySeqScheme ppss) {
155
156        }
157
158        @Override
159        public void newPdbxNonPolyScheme(PdbxNonPolyScheme ppss) {
160
161        }
162
163        @Override
164        public void newPdbxEntityNonPoly(PdbxEntityNonPoly pen) {
165
166        }
167
168        @Override
169        public void newStructKeywords(StructKeywords kw) {
170
171        }
172
173        @Override
174        public void newRefine(Refine r) {
175
176        }
177
178        @Override
179        public void newChemComp(ChemComp c) {
180
181        }
182
183        @Override
184        public void newChemCompDescriptor(ChemCompDescriptor ccd) {
185
186        }
187
188        @Override
189        public void newPdbxStructOperList(PdbxStructOperList structOper) {
190
191        }
192
193        @Override
194        public void newPdbxStrucAssembly(PdbxStructAssembly strucAssembly) {
195
196        }
197
198        @Override
199        public void newPdbxStrucAssemblyGen(PdbxStructAssemblyGen strucAssembly) {
200
201        }
202
203        @Override
204        public void newChemCompAtom(ChemCompAtom atom) {
205
206        }
207
208        @Override
209        public void newPdbxChemCompIndentifier(PdbxChemCompIdentifier id) {
210
211        }
212
213        @Override
214        public void newChemCompBond(ChemCompBond bond) {
215
216        }
217
218        @Override
219        public void newPdbxChemCompDescriptor(PdbxChemCompDescriptor desc) {
220
221        }
222
223        @Override
224        public void newEntitySrcGen(EntitySrcGen entitySrcGen) {
225
226        }
227
228        @Override
229        public void newEntitySrcNat(EntitySrcNat entitySrcNat) {
230
231        }
232
233        @Override
234        public void newEntitySrcSyn(EntitySrcSyn entitySrcSyn) {
235
236        }
237
238        @Override
239        public void newStructConn(StructConn structConn) {
240
241        }
242
243        @Override
244        public void newAuditAuthor(AuditAuthor aa) {
245
246        }
247
248        @Override
249        public void newGenericData(String category, List<String> loopFields, List<String> lineData) {
250
251                MetalBondDistance d = new MetalBondDistance();
252
253                d.setAtomType1(lineData.get(0));
254                d.setAtomType2(lineData.get(1));
255                d.setLowerLimit(Float.parseFloat(lineData.get(2)));
256                d.setUpperLimit(Float.parseFloat(lineData.get(3)));
257
258                List<MetalBondDistance> defs = definitions.get(d.getAtomType1());
259
260                if ( defs == null){
261                        defs = new ArrayList<>();
262                        definitions.put(d.getAtomType1(),defs);
263                }
264
265                defs.add(d);
266
267        }
268
269        @Override
270        public void setFileParsingParameters(FileParsingParameters params) {
271
272        }
273
274        @Override
275        public FileParsingParameters getFileParsingParameters() {
276                return null;
277        }
278
279        public Map<String,List<MetalBondDistance>> getDefinitions(){
280                return definitions;
281        }
282
283        @Override
284        public void newPdbxAuditRevisionHistory(PdbxAuditRevisionHistory history) {
285                // TODO Auto-generated method stub
286
287        }
288
289        @Override
290        public void newPdbxDatabaseStatus(PdbxDatabaseStatus status) {
291                // TODO Auto-generated method stub
292
293        }
294}