001 package jp.osdl.jbento2.chart; 002 003 import java.text.ParseException; 004 import java.util.Date; 005 006 import jp.osdl.jbento2.StateDateFormatter; 007 008 import org.jfree.data.general.AbstractDataset; 009 import org.jfree.data.time.Millisecond; 010 import org.jfree.data.time.TimeTableXYDataset; 011 012 public class XYDateDataSetBuilder extends DataSetBuilderBase { 013 014 private StateDateFormatter formatter = new StateDateFormatter("HH:mm:ss.S", 015 StateDateFormatter.DATE); 016 017 protected void add(AbstractDataset dataset, String row, String column, 018 String value) { 019 020 try { 021 ((TimeTableXYDataset) dataset).add(new Millisecond(nextDate(row)), 022 Double.parseDouble(value), column); 023 } catch (ParseException e) { 024 System.err.println("row=\"" + row + "\", value=\"" + value 025 + "\" : " + e.getMessage()); 026 } catch (NumberFormatException e) { 027 System.err.println("row=\"" + row + "\", value=\"" + value 028 + "\" : " + e.getMessage()); 029 } 030 } 031 032 protected AbstractDataset newDataset() { 033 return new TimeTableXYDataset(); 034 } 035 036 protected Date nextDate(String row) throws ParseException { 037 try { 038 return formatter.nextDate(row); 039 } catch (ParseException e) { 040 formatter = new StateDateFormatter("HH:mm:ss", 041 StateDateFormatter.DATE); 042 return formatter.nextDate(row); 043 } 044 } 045 046 }