/*
* Copyright (C) 2012-2016 The Android Money Manager Ex Project Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.money.manager.ex.domainmodel;
import android.database.Cursor;
import android.database.DatabaseUtils;
import com.money.manager.ex.datalayer.StockFields;
import com.money.manager.ex.utils.MmxDate;
import com.money.manager.ex.utils.MmxDateTimeUtils;
import org.parceler.Parcel;
import java.util.Date;
import info.javaperformance.money.Money;
import info.javaperformance.money.MoneyFactory;
/**
* Stock entity.
*/
@Parcel
public class Stock
extends EntityBase {
public static Stock from(Cursor c) {
Stock stock = new Stock();
stock.loadFromCursor(c);
return stock;
}
public static Stock create() {
Stock stock = new Stock();
// Set to today.
stock.setPurchaseDate(new MmxDate().toDate());
stock.setName("");
stock.setHeldAt(0);
stock.setNumberOfShares(0.0);
stock.setPurchasePrice(MoneyFactory.fromString("0"));
stock.setCommission(MoneyFactory.fromString("0"));
stock.setCurrentPrice(MoneyFactory.fromString("0"));
return stock;
}
public static Stock create(String date, String name, String purchasePrice, String currentPrice) {
Stock stock = Stock.create();
stock.setPurchaseDate(date);
stock.setName(name);
stock.setPurchasePrice(MoneyFactory.fromString(purchasePrice));
stock.setCurrentPrice(MoneyFactory.fromString(currentPrice));
return stock;
}
public Stock() {
// default constructor.
}
@Override
public void loadFromCursor(Cursor c) {
super.loadFromCursor(c);
// Reload all money values.
DatabaseUtils.cursorDoubleToCursorValues(c, StockFields.COMMISSION, this.contentValues);
DatabaseUtils.cursorDoubleToCursorValues(c, StockFields.CURRENTPRICE, this.contentValues);
DatabaseUtils.cursorDoubleToCursorValues(c, StockFields.NUMSHARES, this.contentValues);
DatabaseUtils.cursorDoubleToCursorValues(c, StockFields.PURCHASEPRICE, this.contentValues);
}
// properties
public Integer getId() {
return getInt(StockFields.STOCKID);
}
public Money getCommission() {
return getMoney(StockFields.COMMISSION);
}
public void setCommission(Money value) {
setMoney(StockFields.COMMISSION, value);
}
public Money getCurrentPrice() {
String currentPrice = contentValues.getAsString(StockFields.CURRENTPRICE);
return MoneyFactory.fromString(currentPrice);
}
public void setCurrentPrice(Money currentPrice) {
contentValues.put(StockFields.CURRENTPRICE, currentPrice.toString());
}
public int getHeldAt() {
return getInt(StockFields.HELDAT);
}
public void setHeldAt(int value) {
setInt(StockFields.HELDAT, value);
}
public String getNotes() {
return getString(StockFields.NOTES);
}
public void setNotes(String value) {
setString(StockFields.NOTES, value);
}
public Double getNumberOfShares() {
return getDouble(StockFields.NUMSHARES);
}
public void setNumberOfShares(Double value) {
setDouble(StockFields.NUMSHARES, value);
}
public Date getPurchaseDate() {
String dateString = getString(StockFields.PURCHASEDATE);
return new MmxDate(dateString).toDate();
}
public void setPurchaseDate(Date value) {
setDate(StockFields.PURCHASEDATE, value);
}
public Money getPurchasePrice() {
String purchasePrice = contentValues.getAsString(StockFields.PURCHASEPRICE);
return MoneyFactory.fromString(purchasePrice);
}
public void setPurchaseDate(String value) {
setString(StockFields.PURCHASEDATE, value);
}
public void setPurchasePrice(Money value) {
setMoney(StockFields.PURCHASEPRICE, value);
}
public String getName() {
return getString(StockFields.STOCKNAME);
}
public void setName(String value) {
setString(StockFields.STOCKNAME, value);
}
public String getSymbol() {
return getString(StockFields.SYMBOL);
}
public void setSymbol(String value) {
setString(StockFields.SYMBOL, value);
}
public Money getValue() {
// value = current price * num shares
Money value = this.getCurrentPrice().multiply(this.getNumberOfShares());
setMoney(StockFields.VALUE, value);
return value;
}
}