avatar

990

Recognize the new format for seller feedback percentages and paypal acceptance. by mrs, 25 Jul, 2009 01:13 AM
Diff this changeset:
Seller.java
mrs 1   package com.jbidwatcher.auction;
mrs 2   
mrs 3   import com.jbidwatcher.util.db.*;
mrs 4   import com.jbidwatcher.util.db.ActiveRecord;
mrs 5   import com.jbidwatcher.util.xml.XMLElement;
mrs 6   
mrs 7   import java.text.NumberFormat;
mrs 8   
mrs 9   /**
mrs 10   * User: Morgan
mrs 11   * Date: Sep 29, 2007
mrs 12   * Time: 7:27:30 PM
mrs 13   * To change this template use File | Settings | File Templates.
mrs 14   */
mrs 15  public class Seller extends ActiveRecord
mrs 16  {
mrs 17    public String getSeller() { return getString("seller"); }
mrs 18    private void setSeller(String name) { setString("seller", name); }
mrs 19  
mrs 20    private static NumberFormat decimalPercentage = null;
mrs 21    public String getPositivePercentage() {
mrs 22      if(decimalPercentage == null) {
mrs 23        decimalPercentage = NumberFormat.getPercentInstance();
mrs 24        decimalPercentage.setMinimumFractionDigits(1);
mrs 25        decimalPercentage.setMaximumFractionDigits(1);
mrs 26      }
mrs 27      String feedbackPercent = getString("feedback_percentage");
mrs 28      if(feedbackPercent != null) {
mrs 29        Double x = Double.parseDouble(feedbackPercent);
mrs 30        return decimalPercentage.format(x/100.0);
mrs 31      } else {
mrs 32        return "n/a";
mrs 33      }
mrs 34    }
mrs 35    public void setPositivePercentage(String positivePercentage) {
mrs 36      setString("feedback_percentage", positivePercentage.replaceAll(",", ".").replaceFirst("%", ""));
mrs 37      saveDB();
mrs 38    }
mrs 39    public int getFeedback() { return getInteger("feedback", 0); }
mrs 40    public void setFeedback(int feedback) { setInteger("feedback", feedback); saveDB(); }
mrs 41  
mrs 42    @SuppressWarnings({"RefusedBequest"})
mrs 43    public XMLElement toXML() {
mrs 44      XMLElement xmlResult = new XMLElement("seller");
mrs 45      XMLElement xseller = new XMLElement("name");
mrs 46      XMLElement xfeedback = new XMLElement("feedback");
mrs 47      XMLElement xpercentage = new XMLElement("feedback_percent");
mrs 48      xseller.setContents(getSeller());
mrs 49      xmlResult.addChild(xseller);
mrs 50  
mrs 51      xfeedback.setContents(Integer.toString(getFeedback()));
mrs 52      xmlResult.addChild(xfeedback);
mrs 53  
mrs 54      String fp = getString("feedback_percentage");
mrs 55      if(fp == null || fp.equals("100.00")) fp = "100";
mrs 56      int decimal = fp.lastIndexOf('.');
mrs 57      if(decimal != -1) {
mrs 58        if(fp.substring(decimal+1).length() == 1) fp = fp + "0";
mrs 59      }
mrs 60      xpercentage.setContents(fp);
mrs 61      xmlResult.addChild(xpercentage);
mrs 62  
mrs 63      return xmlResult;
mrs 64    }
mrs 65  
mrs 66    public static Seller newFromXML(XMLElement curElement) {
mrs 67      String seller = curElement.getChild("name").getContents();
mrs 68      if(seller == null || seller.length() == 0) return null;
mrs 69  
mrs 70      try {
mrs 71        Seller rval = new Seller();
mrs 72        rval.setSeller(seller);
mrs 73        rval.setFeedback(Integer.parseInt(curElement.getChild("feedback").getContents()));
mrs 74        rval.setPositivePercentage(curElement.getChild("feedback_percent").getContents());
mrs 75  
mrs 76        rval.saveDB();
mrs 77        return rval;
mrs 78      } catch(Exception e) {
mrs 79        return null;
mrs 80      }
mrs 81    }
mrs 82  
mrs 83    public static Seller makeSeller(String sellerName) {
mrs 84      if(sellerName == null) return null;
mrs 85  
mrs 86      Seller existing_seller = findFirstBy("seller", sellerName);
mrs 87      if (existing_seller == null) {
mrs 88        existing_seller = new Seller();
mrs 89        existing_seller.setSeller(sellerName);
mrs 90        existing_seller.saveDB();
mrs 91      }
mrs 92  
mrs 93      return existing_seller;
mrs 94    }
mrs 95  
mrs 96    public Seller makeSeller(String sellerName, Seller oldSeller) {
mrs 97      Seller rval = makeSeller(sellerName);
mrs 98      rval.setFeedback(oldSeller.getFeedback());
mrs 99      rval.setPositivePercentage(oldSeller.getString("feedback_percentage"));
mrs 100 
mrs 101     rval.saveDB();
mrs 102     return rval;
mrs 103   }
mrs 104 
mrs 105   /*************************/
mrs 106   /* Database access stuff */
mrs 107   /*************************/
mrs 108 
mrs 109   private static Table sDB = null;
mrs 110 
mrs 111   protected static String getTableName() { return "sellers"; }
mrs 112 
mrs 113   protected Table getDatabase() {
mrs 114     if (sDB == null) {
mrs 115       sDB = openDB(getTableName());
mrs 116     }
mrs 117     return sDB;
mrs 118   }
mrs 119 
mrs 120   public static Seller findFirstBy(String key, String value) {
mrs 121     return (Seller) ActiveRecord.findFirstBy(Seller.class, key, value);
mrs 122   }
mrs 123 }

Check out the code: svn co jbidwatcher/trunk/src/com/jbidwatcher/auction/Seller.java