package polly.rx.parsing;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import de.skuzzle.polly.tools.iterators.ArrayIterator;
import polly.rx.entities.ScoreBoardEntry;
public class ScoreBoardParser {
public static Collection<ScoreBoardEntry> parse(String paste, Date date)
throws ParseException {
if (paste == null) {
throw new ParseException();
}
String[] lines = paste.split("[\n\r]+"); //$NON-NLS-1$
ArrayIterator<String> it = ArrayIterator.get(lines);
while (it.peekNext().equals("")) { //$NON-NLS-1$
it.next();
}
if (it.peekNext().equals("Umgebungsliste")) { //$NON-NLS-1$
it.next();
}
if (it.peekNext().startsWith("Rang")) { //$NON-NLS-1$
it.next();
}
Collection<ScoreBoardEntry> result = new ArrayList<ScoreBoardEntry>();
while (it.hasNext()) {
String line = it.next();
String[] parts = line.split("\\s+"); //$NON-NLS-1$
if (parts.length != 3) {
continue;
}
int rank = Integer.parseInt(parts[0]);
String venad = parts[1];
String clan = ""; //$NON-NLS-1$
int i = venad.indexOf("["); //$NON-NLS-1$
if (i != -1) {
clan = venad.substring(i + 1, venad.length() - 1);
venad = venad.substring(0, venad.length() - clan.length() - 2);
}
int points = Integer.parseInt(parts[2]);
result.add(new ScoreBoardEntry(venad, clan, rank, points, date));
}
return result;
}
}