package com.jbidwatcher.auction; import com.jbidwatcher.util.Constants; import com.jbidwatcher.util.Currency; import com.jbidwatcher.util.db.ActiveRecord; import java.io.File; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * User: mrs * Date: 3/9/13 * Time: 6:32 PM * * This contains the core auction information. */ public abstract class AuctionCore extends ActiveRecord { private static Map<String, String> mKeys; protected String mThumbnailPath; private static void setupKeys() { mKeys = new HashMap<String, String>(); mKeys.put("startDate", "started_at"); mKeys.put("start", "started_at"); mKeys.put("endDate", "ending_at"); mKeys.put("seller", "seller_id"); mKeys.put("end", "ending_at"); mKeys.put("highbidder", "high_bidder"); mKeys.put("highBidder", "high_bidder"); mKeys.put("highBidderEmail", "high_bidder_email"); mKeys.put("itemLocation", "location"); mKeys.put("numBids", "bid_count"); mKeys.put("bidcount", "bid_count"); mKeys.put("insurance_optional", "optional_insurance"); mKeys.put("insuranceOptional", "optional_insurance"); mKeys.put("noThumbnail", "no_thumbnail"); mKeys.put("reserveMet", "reserve_met"); mKeys.put("isReserve", "reserve"); mKeys.put("fixed", "fixed_price"); mKeys.put("fixedPrice", "fixed_price"); mKeys.put("isDutch", "dutch"); mKeys.put("currently", "current_bid"); mKeys.put("curBid", "current_bid"); mKeys.put("minimum", "minimum_bid"); mKeys.put("minBid", "minimum_bid"); mKeys.put("usprice", "usd_current"); mKeys.put("us_cur", "usd_current"); mKeys.put("buy_now_us", "usd_buy_now"); mKeys.put("buynow", "buy_now"); } static { setupKeys(); } public AuctionCore() { setTranslationTable(mKeys); } public String getIdentifier() { return getString("identifier"); } public String getTitle() { return getString("title"); } public String getHighBidder() { return getString("highBidder"); } // public String getHighBidderEmail() { return getString("highBidderEmail"); } public String getItemLocation() { return getString("itemLocation", ""); } public boolean isComplete() { return getBoolean("ended"); } public Currency getBestPrice() { Currency currentPrice = getCurBid(); if (currentPrice == null || currentPrice.isNull()) { currentPrice = getBuyNow(); } return currentPrice; } public Currency getCurBid() { return getMonetary("curBid"); } public Currency getUSCurBid() { if (getCurBid().getCurrencyType() == Currency.US_DOLLAR) { return getCurBid(); } return getMonetary("us_cur", Currency.US_DOLLAR); } public Currency getMinBid() { return getMonetary("minBid", getCurBid()); } public Currency getShipping() { return getMonetary("shipping"); } public Currency getInsurance() { return getMonetary("insurance"); } public Currency getBuyNow() { return getMonetary("buy_now"); } public int getQuantity() { return getInteger("quantity", 1); } public int getNumBidders() { return getInteger("numBids", 0); } public int getNumBids() { return getNumBidders(); } public Date getStartDate() { return getDate("start"); } public Date getEndDate() { Date end = getEnd(); if(end == null) end = Constants.FAR_FUTURE; return end; } public boolean isReserve() { return getBoolean("isReserve"); } public boolean isPrivate() { return getBoolean("isPrivate"); } public boolean isFixed() { return getBoolean("fixed_price"); } public boolean isReserveMet() { return getBoolean("reserve_met"); } public boolean hasPaypal() { return getBoolean("paypal"); } boolean isInsuranceOptional() { return getBoolean("insurance_optional", true); } protected boolean hasNoThumbnail() { return getBoolean("noThumbnail"); } public Currency getUSCur() { return getMonetary("us_cur", Currency.US_DOLLAR); } public Currency getBuyNowUS() { return getMonetary("buy_now_us", Currency.US_DOLLAR); } public Date getStart() { return getDate("start"); } public Date getEnd() { return getDate("end"); } public String getSellerId() { return get("seller_id"); } private boolean hasThumb() { return getBoolean("has_thumbnail"); } private void setHasThumb(boolean hasThumb) { setBoolean("has_thumbnail", hasThumb); } protected boolean hasThumbnail() { String imgPath = mThumbnailPath; if(imgPath == null) { imgPath = Thumbnail.getValidImagePath(getIdentifier()); if(imgPath == null) return false; } File tester = new File(imgPath); boolean rval= tester.exists(); if(rval && mThumbnailPath == null) mThumbnailPath = imgPath; return rval; } public String getThumbnail() { // Bad optimization -- BUGBUG -- mrs: 21-March-2004 18:28 // If it doesn't have a thumbnail, we check. if(!hasThumb() || mThumbnailPath == null) { if(!hasThumbnail()) return null; } setHasThumb(true); return "file:" + mThumbnailPath; } }