package com.manning.hip.ch3; import com.manning.hip.ch3.csv.CSVParser; import org.apache.commons.lang.builder.*; import org.apache.hadoop.io.*; import java.io.*; public class StockPriceWritable implements WritableComparable<StockPriceWritable>, Cloneable { String symbol; String date; double open; double high; double low; double close; int volume; double adjClose; public StockPriceWritable() { } public StockPriceWritable(String symbol, String date, double open, double high, double low, double close, int volume, double adjClose) { this.symbol = symbol; this.date = date; this.open = open; this.high = high; this.low = low; this.close = close; this.volume = volume; this.adjClose = adjClose; } @Override public void write(DataOutput out) throws IOException { WritableUtils.writeString(out, symbol); WritableUtils.writeString(out, date); out.writeDouble(open); out.writeDouble(high); out.writeDouble(low); out.writeDouble(close); out.writeInt(volume); out.writeDouble(adjClose); } @Override public void readFields(DataInput in) throws IOException { symbol = WritableUtils.readString(in); date = WritableUtils.readString(in); open = in.readDouble(); high = in.readDouble(); low = in.readDouble(); close = in.readDouble(); volume = in.readInt(); adjClose = in.readDouble(); } @Override public int compareTo(StockPriceWritable passwd) { return CompareToBuilder.reflectionCompare(this, passwd); } @Override public String toString() { return ToStringBuilder .reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); } public String getSymbol() { return symbol; } public void setSymbol(String symbol) { this.symbol = symbol; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public double getOpen() { return open; } public void setOpen(double open) { this.open = open; } public double getHigh() { return high; } public void setHigh(double high) { this.high = high; } public double getLow() { return low; } public void setLow(double low) { this.low = low; } public double getClose() { return close; } public void setClose(double close) { this.close = close; } public int getVolume() { return volume; } public void setVolume(int volume) { this.volume = volume; } public double getAdjClose() { return adjClose; } public void setAdjClose(double adjClose) { this.adjClose = adjClose; } public static StockPriceWritable fromLine(String line) throws IOException { CSVParser parser = new CSVParser(); String[] parts = parser.parseLine(line); StockPriceWritable stock = new StockPriceWritable( //<co id="ch03_comment_seqfile_write3"/> parts[0], parts[1], Double.valueOf(parts[2]), Double.valueOf(parts[3]), Double.valueOf(parts[4]), Double.valueOf(parts[5]), Integer.valueOf(parts[6]), Double.valueOf(parts[7]) ); return stock; } }