⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 item.java

📁 webwork in action 源码
💻 JAVA
字号:
package org.hibernate.auction.model;import org.hibernate.auction.exceptions.*;import java.io.Serializable;import java.util.*;/** * An item for sale. * * @author Christian Bauer <christian@hibernate.org> */public class Item implements Serializable, Comparable, Auditable {    private Long id = null;    private int version;    private String name;    private User seller;    private String description;    private MonetaryAmount initialPrice;    private MonetaryAmount reservePrice;    private Date startDate;    private Date endDate;    private Set categorizedItems = new HashSet();    private Collection bids = new ArrayList();    private Bid successfulBid;    private ItemState state;    private User approvedBy;    private Date approvalDatetime;    private Date created = new Date();    /**     * No-arg constructor for JavaBean tools.     */    public Item() {    }    /**     * Full constructor.     */    public Item(String name, String description, User seller,                MonetaryAmount initialPrice, MonetaryAmount reservePrice,                Date startDate, Date endDate,                Set categories, List bids, Bid successfulBid) {        this.name = name;        this.seller = seller;        this.description = description;        this.initialPrice = initialPrice;        this.reservePrice = reservePrice;        this.startDate = startDate;        this.endDate = endDate;        this.categorizedItems = categories;        this.bids = bids;        this.successfulBid = successfulBid;        this.state = ItemState.DRAFT;    }    /**     * Simple properties only constructor.     */    public Item(String name, String description, User seller,                MonetaryAmount initialPrice, MonetaryAmount reservePrice,                Date startDate, Date endDate) {        this.name = name;        this.seller = seller;        this.description = description;        this.initialPrice = initialPrice;        this.reservePrice = reservePrice;        this.startDate = startDate;        this.endDate = endDate;        this.state = ItemState.DRAFT;    }    // ********************** Accessor Methods ********************** //    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public User getSeller() {        return seller;    }    public void setSeller(User seller) {        this.seller = seller;    }    public String getDescription() {        return description;    }    public void setDescription(String description) {        this.description = description;    }    public MonetaryAmount getInitialPrice() {        return initialPrice;    }    public void setInitialPrice(MonetaryAmount initialPrice) {        this.initialPrice = initialPrice;    }    public MonetaryAmount getReservePrice() {        return reservePrice;    }    public void setReservePrice(MonetaryAmount reservePrice) {        this.reservePrice = reservePrice;    }    public Date getStartDate() {        return startDate;    }    public void setStartDate(Date startDate) {        this.startDate = startDate;    }    public Date getEndDate() {        return endDate;    }    public void setEndDate(Date endDate) {        this.endDate = endDate;    }    public Set getCategorizedItems() {        return categorizedItems;    }    public void addCategorizedItem(CategorizedItem catItem) {        if (catItem == null)            throw new IllegalArgumentException("Can't add a null CategorizedItem.");        this.getCategorizedItems().add(catItem);    }    public Collection getBids() {        return bids;    }    public void addBid(Bid bid) {        if (bid == null)            throw new IllegalArgumentException("Can't add a null Bid.");        this.getBids().add(bid);    }    public Bid getSuccessfulBid() {        return successfulBid;    }    public void setSuccessfulBid(Bid successfulBid) {        this.successfulBid = successfulBid;    }    public ItemState getState() {        return state;    }    public void setState(ItemState state) {        this.state = state;    }    public User getApprovedBy() {        return approvedBy;    }    public void setApprovedBy(User approvedBy) {        this.approvedBy = approvedBy;    }    public Date getApprovalDatetime() {        return approvalDatetime;    }    public void setApprovalDatetime(Date approvalDatetime) {        this.approvalDatetime = approvalDatetime;    }    public Date getCreated() {        return created;    }    public void setCreated(Date created) {        this.created = created;    }    // ********************** Common Methods ********************** //    public boolean equals(Object o) {        if (this == o) return true;        if (!(o instanceof Item)) return false;        final Item item = (Item) o;        if (!created.equals(item.created)) return false;        if (name != null ? !name.equals(item.name) : item.name != null) return false;        return true;    }    public int hashCode() {        int result;        result = (name != null ? name.hashCode() : 0);        result = 29 * result + created.hashCode();        return result;    }    public String toString() {        return "Item ('" + getId() + "'), " +                "Name: '" + getName() + "' " +                "Initial Price: '" + getInitialPrice() + "'";    }    public int compareTo(Object o) {        if (o instanceof Item) {            return this.getCreated().compareTo(((Item) o).getCreated());        }        return 0;    }    // ********************** Business Methods ********************** //    /**     * Places a bid while checking business constraints.     * <p/>     * This method may throw a BusinessException if one of the requirements     * for the bid placement wasn't met, e.g. if the auction already ended.     *     * @param bidder     * @param bidAmount     * @param currentMaxBid the most valuable bid for this item     * @param currentMinBid the least valuable bid for this item     * @return     * @throws BusinessException     */    public Bid placeBid(User bidder, MonetaryAmount bidAmount,                        Bid currentMaxBid, Bid currentMinBid)            throws BusinessException {        // Check highest bid (can also be a different Strategy (pattern))        if (currentMaxBid != null && currentMaxBid.getAmount().compareTo(bidAmount) > 0) {            throw new BusinessException("Bid too low.");        }        // Auction is active        if (!state.equals(ItemState.ACTIVE))            throw new BusinessException("Auction is not active yet.");        // Auction still valid        if (this.getEndDate().before(new Date()))            throw new BusinessException("Can't place new bid, auction already ended.");        // Create new Bid        Bid newBid = new Bid(bidAmount, this, bidder);        // Place bid for this Item        this.addBid(newBid);        return newBid;    }    /**     * Anyone can set this item into PENDING state for approval.     */    public void setPendingForApproval() {        state = ItemState.PENDING;    }    /**     * Approve this item for auction and set its state to active.     *     * @param byUser     * @throws BusinessException     */    public void approve(User byUser) throws BusinessException {        if (!byUser.isAdmin())            throw new PermissionException("Not an administrator.");        if (!state.equals(ItemState.PENDING))            throw new IllegalStateException("Item still in draft.");        state = ItemState.ACTIVE;        approvedBy = byUser;        approvalDatetime = new Date();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -