package com.aptana.rdt.internal.profiling; import java.io.Reader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class StandardOutputParser extends AbstractProfileOutputParser { private ProfileThread thread; /* (non-Javadoc) * @see com.aptana.rdt.internal.profiling.IStatisticsParser#parse(java.io.Reader) */ public List<ProfileThread> parse(Reader reader) { thread = null; List<String> lines = getLines(reader); lines.remove(0); // Thread ID lines.remove(0); // Total time lines.remove(0); // blank lines.remove(0); // column names List<ProfileThread> threads = new ArrayList<ProfileThread>(); thread = new ProfileThread("fake_id", 0.0f); List<MethodCall> list = new ArrayList<MethodCall>(); for (String line : lines) { if (line == null || line.trim().length() == 0) continue; list.add(getStatistic(line)); } thread.addMethodCalls(list); threads.add(thread); return threads; } private MethodCall getStatistic(String line) { StringTokenizer tokenizer = new StringTokenizer(line); float selfPercent = Float.parseFloat(stripLastChar(tokenizer.nextToken())); float total = Float.parseFloat(tokenizer.nextToken()); float self = Float.parseFloat(tokenizer.nextToken()); float wait = Float.parseFloat(tokenizer.nextToken()); float child = Float.parseFloat(tokenizer.nextToken()); int calls = Integer.parseInt(tokenizer.nextToken()); String methodName = tokenizer.nextToken(); return new MethodCall(thread, methodName, calls, selfPercent, self, wait, child); } }