/* * Copyright 2003-2012 Yusuke Yamamoto * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package samurai.util; import samurai.gc.LineGraph; import samurai.gc.LineGraphRenderer; import java.util.ArrayList; import java.util.List; public class CSVParser implements LineGraphDataSourceParser { public CSVParser() { } private String[] labels = null; private List<LineGraph> lineGraphs = null; public boolean parse(String line, LineGraphRenderer renderer) { if (null == lineGraphs) { labels = line.split(","); lineGraphs = new ArrayList<LineGraph>(labels.length); for(String label:labels){ lineGraphs.add(renderer.addLineGraph(label, new String[]{label})); } } else { String[] splitted = line.split(","); double[] datas = new double[labels.length]; for (int i = 0; i < labels.length; i++) { try { datas[i] = Double.parseDouble(splitted[i]); } catch (NumberFormatException nfe) { datas[i] = splitted[i].hashCode(); } catch (ArrayIndexOutOfBoundsException aioobe) { datas[i] = 0d; } } for(int i=0;i<labels.length;i++){ lineGraphs.get(i).addValues(new double[]{datas[i]}); } } return true; } }