/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.aries.samples.ariestrader.entities; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Transient; import org.apache.aries.samples.ariestrader.util.Log; import org.apache.aries.samples.ariestrader.util.TradeConfig; import org.apache.aries.samples.ariestrader.api.persistence.AccountDataBean; import org.apache.aries.samples.ariestrader.api.persistence.HoldingDataBean; import org.apache.aries.samples.ariestrader.api.persistence.QuoteDataBean; @Entity(name = "holdingejb") @Table(name = "holdingejb") @NamedQueries( { @NamedQuery(name = "holdingejb.findByPurchaseprice", query = "SELECT h FROM holdingejb h WHERE h.purchasePrice = :purchaseprice"), @NamedQuery(name = "holdingejb.findByHoldingid", query = "SELECT h FROM holdingejb h WHERE h.holdingID = :holdingid"), @NamedQuery(name = "holdingejb.findByQuantity", query = "SELECT h FROM holdingejb h WHERE h.quantity = :quantity"), @NamedQuery(name = "holdingejb.findByPurchasedate", query = "SELECT h FROM holdingejb h WHERE h.purchaseDate = :purchasedate"), @NamedQuery(name = "holdingejb.holdingsByUserID", query = "SELECT h FROM holdingejb h where h.account.profile.userID = :userID") }) public class HoldingDataBeanImpl implements HoldingDataBean, Serializable { /* persistent/relationship fields */ @TableGenerator(name = "holdingIdGen", table = "KEYGENEJB", pkColumnName = "KEYNAME", valueColumnName = "KEYVAL", pkColumnValue = "holding", allocationSize = 1000) @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "holdingIdGen") @Column(name = "HOLDINGID", nullable = false) private Integer holdingID; /* holdingID */ @Column(name = "QUANTITY", nullable = false) private double quantity; /* quantity */ @Column(name = "PURCHASEPRICE") private BigDecimal purchasePrice; /* purchasePrice */ @Column(name = "PURCHASEDATE") private Date purchaseDate; /* purchaseDate */ @Transient private String quoteID; /* Holding() ---> Quote(1) */ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ACCOUNT_ACCOUNTID") private AccountDataBeanImpl account; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "QUOTE_SYMBOL", columnDefinition="VARCHAR(255)") private QuoteDataBeanImpl quote; public HoldingDataBeanImpl() { } public HoldingDataBeanImpl(Integer holdingID, double quantity, BigDecimal purchasePrice, Date purchaseDate, String quoteID) { setHoldingID(holdingID); setQuantity(quantity); setPurchasePrice(purchasePrice); setPurchaseDate(purchaseDate); setQuoteID(quoteID); } public HoldingDataBeanImpl(double quantity, BigDecimal purchasePrice, Date purchaseDate, AccountDataBean account, QuoteDataBean quote) { setQuantity(quantity); setPurchasePrice(purchasePrice); setPurchaseDate(purchaseDate); setAccount(account); setQuote(quote); } public static HoldingDataBean getRandomInstance() { return new HoldingDataBeanImpl(new Integer(TradeConfig.rndInt(100000)), // holdingID TradeConfig.rndQuantity(), // quantity TradeConfig.rndBigDecimal(1000.0f), // purchasePrice new java.util.Date(TradeConfig.rndInt(Integer.MAX_VALUE)), // purchaseDate TradeConfig.rndSymbol() // symbol ); } public String toString() { return "\n\tHolding Data for holding: " + getHoldingID() + "\n\t\t quantity:" + getQuantity() + "\n\t\t purchasePrice:" + getPurchasePrice() + "\n\t\t purchaseDate:" + getPurchaseDate() + "\n\t\t quoteID:" + getQuoteID(); } public String toHTML() { return "<BR>Holding Data for holding: " + getHoldingID() + "</B>" + "<LI> quantity:" + getQuantity() + "</LI>" + "<LI> purchasePrice:" + getPurchasePrice() + "</LI>" + "<LI> purchaseDate:" + getPurchaseDate() + "</LI>" + "<LI> quoteID:" + getQuoteID() + "</LI>"; } public void print() { Log.log(this.toString()); } public Integer getHoldingID() { return holdingID; } public void setHoldingID(Integer holdingID) { this.holdingID = holdingID; } public double getQuantity() { return quantity; } public void setQuantity(double quantity) { this.quantity = quantity; } public BigDecimal getPurchasePrice() { return purchasePrice; } public void setPurchasePrice(BigDecimal purchasePrice) { this.purchasePrice = purchasePrice; } public Date getPurchaseDate() { return purchaseDate; } public void setPurchaseDate(Date purchaseDate) { this.purchaseDate = purchaseDate; } public String getQuoteID() { if (quote != null) { return quote.getSymbol(); } return quoteID; } public void setQuoteID(String quoteID) { this.quoteID = quoteID; } public AccountDataBean getAccount() { return account; } public void setAccount(AccountDataBean account) { this.account = (AccountDataBeanImpl) account; } /* * Disabled for D185273 public String getSymbol() { return getQuoteID(); } */ public QuoteDataBean getQuote() { return quote; } public void setQuote(QuoteDataBean quote) { this.quote = (QuoteDataBeanImpl) quote; } @Override public int hashCode() { int hash = 0; hash += (this.holdingID != null ? this.holdingID.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are // not set if (!(object instanceof HoldingDataBeanImpl)) { return false; } HoldingDataBeanImpl other = (HoldingDataBeanImpl) object; if (this.holdingID != other.holdingID && (this.holdingID == null || !this.holdingID .equals(other.holdingID))) return false; return true; } }