package org.genedb.web.applications.motifsearch; import org.springframework.util.StringUtils; import java.io.BufferedReader; import java.io.IOException; public class FastaLoader { BufferedReader in; public FastaLoader(BufferedReader in) { if (!in.markSupported()) { throw new RuntimeException("FastaLoader requires a BufferedReader which supports marks"); } this.in = in; } public void skip(int numRecords) { // TODO Lines or records } FastaEntry readEntry() { String header; try { header = in.readLine(); if (!header.startsWith(">")) { throw new RuntimeException(String.format("Expected a FASTA header but got '%s'", header)); } FastaEntry entry = new FastaEntry(header); boolean inSequence = true; StringBuilder sequence = new StringBuilder(); while (inSequence) { in.mark(200); String line = in.readLine(); if (line.startsWith(">")) { inSequence = false; in.reset(); } else { line = StringUtils.deleteAny(header, " "); // TODO Check sequence.append(line); } } entry.setSequence(sequence.toString()); return entry; } catch (IOException exp) { throw new RuntimeException(exp); } } }