扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
样例源代码
清单 1 展示了 StockData 程序的源代码:
清单 1. StockData
public class StockData
{
private static Log log;
public static void main(String[] args)
{
System.setProperty("log4j.configuration", "file:log4j.properties");
log = LogFactory.getLog(StockData.class);
try
{
String symbol = args[0];
String csvFile = args[1];
String query = args[2];
// open store, uses HSQLDB driver and memory only database
Store store = new Store("org.hsqldb.jdbcDriver","jdbc:hsqldb:mem:stockdata");
// read csv and generate beans
List historicalData = FileUtils.readLines(new File(csvFile), "UTF-8");
// remove first line (header)
historicalData.remove(0);
// store beans to database
for (Object _data : historicalData)
{
String[] data = ((String) _data).split(",");
StockBean bean = new StockBean(symbol, data[0],
Double.parseDouble(data[4]), Double.parseDouble(data[5]));
//save stock bean to database
store.save(bean);
}
// find beans that match query
List results=store.find(query);
// print beans that matched
System.out.println("Total results: "+results.size());
for (Object object : results)
{
StockBean bean=(StockBean)object;
System.out.println(bean.toString());
}
}
catch (Exception e)
{
log.error(e.getMessage(), e);
System.out
.println("Usage: java sample.StockData " +
"<symbol name> <historical prices file> <query>");
}
}
}
|
StockData 应用程序使用 Apache Commons IO 包将 CSV 文件读入 List。然后,for 循环解析文本行并创建 StockBean 对象,该对象被存入数据库中。CSV 文件的格式如下:
Date,Open,High,Low,Close,Volume,Adj. Close*
29-Dec-06,97.00,97.88,96.83,97.15,4455900,97.15
28-Dec-06,97.11,97.40,96.87,96.97,4501700,96.97
27-Dec-06,96.30,97.23,96.27,97.20,4571600,97.20
可下载演示包 中提供了一个样例 CSV 文件。
将所有对象存入数据库后,会执行一个简单的 find 查询(在命令行中指定)并返回一份相匹配结果的 List。结果打印到 System.out。请注意,Simple Persistence for Java 实现 LazyList,对象可在 LazyList 中随需检索。这确保了内存中最终不会出现成千上万的对象。
StockBean 对象
清单 2 展示了 StockBean Java 对象的源代码,该代码用于存储 StockData 中的信息。StockBean 有四个字段:symbol name、date、price 和 volume。
清单 2. StockBean 对象
public class StockBean
{
private String symbolName = "";
private String date = null;
private double price = 0.0;
private double volume = 0.0;
public StockBean()
{
// no-argument constructor required by Simple Persistence
}
public String toString()
{
StringBuffer sb=new StringBuffer();
sb.append(symbolName);
sb.append(',');
sb.append(date);
sb.append(',');
sb.append(price);
sb.append(',');
sb.append(volume);
return sb.toString();
}
public StockBean(String symbolName, String date, double price, double volume)
{
this.symbolName = symbolName;
this.date = date;
this.price = price;
this.volume = volume;
}
public String getDate()
{
return date;
}
public void setDate(String date)
{
this.date = date;
}
public double getPrice()
{
return price;
}
public void setPrice(double price)
{
this.price = price;
}
public String getSymbolName()
{
return symbolName;
}
public void setSymbolName(String symbolName)
{
this.symbolName = symbolName;
}
public double getVolume()
{
return volume;
}
public void setVolume(double volume)
{
this.volume = volume;
}
} |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。