+\r
+ Map<Integer, Set<Hit>> iters;\r
+\r
+ public BlastParser(String file) throws FileNotFoundException,\r
+ XMLStreamException {\r
+ XMLInputFactory f = XMLInputFactory.newInstance();\r
+ XMLStreamReader r = f.createXMLStreamReader(new BufferedInputStream(\r
+ new FileInputStream(new File(file))));\r
+ Set<Hit> pl = new HashSet<Hit>();\r
+ Hit psi = null;\r
+ this.iters = new HashMap<Integer, Set<Hit>>();\r
+ Integer iternum = null;\r
+ while (r.hasNext()) {\r
+ int idx = r.next();\r
+ if (r.isStartElement()) {\r
+ String name = r.getLocalName();\r
+ if (name.equals("Iteration_iter-num")) {\r
+ iternum = Integer.parseInt(r.getElementText().trim());\r
+ System.out.println("Iter " + iternum);\r
+ }\r
+ if (name.equals("Hit")) {\r
+ psi = new Hit();\r
+ }\r
+ if (name.equals("Hit_num")) {\r
+ psi.number = r.getElementText();\r
+ }\r
+ if (name.equals("Hit_accession")) {\r
+ psi.accession = r.getElementText();\r
+ // System.out.println(psi.id);\r
+ }\r
+ if (name.equals("Hit_def")) {\r
+ // System.out.println(r.getElementText());\r
+ psi.name = r.getElementText().split("\\s+")[0].trim();\r
+ // System.out.println(psi.id);\r
+ }\r
+ if (name.equals("Hsp_hseq")) {\r
+ psi.seq = r.getElementText();\r
+ // System.out.println(psi.seq);\r
+ }\r
+ if (name.equals("Hsp_evalue")) {\r
+ psi.evalue = r.getElementText();\r
+ // System.out.println(psi.seq);\r
+ }\r
+\r
+ }\r
+\r
+ if (r.isEndElement()) {\r
+ String name = r.getLocalName();\r
+ if (name.equals("Hit")) {\r
+ boolean replaced = pl.add(psi);\r
+ assert replaced : "Expect unique elements only!";\r
+ psi = null;\r
+ }\r
+ if (name.equals("Iteration")) {\r
+ iters.put(iternum, pl);\r
+ pl = new HashSet<Hit>();\r
+ }\r
+ }\r