AnalyzePortfolio.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:4k
源码类别:

Java编程

开发平台:

Java

  1. package bible.ejb.session.example2;
  2. import java.rmi.*;
  3. import javax.ejb.*;
  4. import java.util.*;
  5. import javax.naming.*;
  6. /**
  7.  * Class AnalyzePortfolio
  8.  *
  9.  *
  10.  * @author
  11.  * @version %I%, %G%
  12.  */
  13. public class AnalyzePortfolio implements SessionBean {
  14.   private SessionContext sessionContext;
  15.   /**
  16.    * Method ejbCreate
  17.    *
  18.    *
  19.    */
  20.   public void ejbCreate() {}
  21.   /**
  22.    * Method ejbRemove
  23.    *
  24.    *
  25.    * @throws RemoteException
  26.    *
  27.    */
  28.   public void ejbRemove() throws RemoteException {}
  29.   /**
  30.    * Method ejbActivate
  31.    *
  32.    *
  33.    * @throws RemoteException
  34.    *
  35.    */
  36.   public void ejbActivate() throws RemoteException {}
  37.   /**
  38.    * Method ejbPassivate
  39.    *
  40.    *
  41.    * @throws RemoteException
  42.    *
  43.    */
  44.   public void ejbPassivate() throws RemoteException {}
  45.   /**
  46.    * Method setSessionContext
  47.    *
  48.    *
  49.    * @param sessionContext
  50.    *
  51.    * @throws RemoteException
  52.    *
  53.    */
  54.   public void setSessionContext(SessionContext sessionContext)
  55.     throws RemoteException {
  56.     this.sessionContext = sessionContext;
  57.   }
  58.   // Internal state variables
  59.   private HashMap holdings = new HashMap();
  60.   private HashMap debts    = new HashMap();
  61.   /**
  62.    *  Adds a holding.
  63.    */
  64.   public void addHolding(String name, Integer amount) throws RemoteException {
  65.     holdings.put(name, amount);
  66.   }
  67.   /**
  68.    * Adds a debt.
  69.    */
  70.   public void addDebt(String name, Integer amount) throws RemoteException {
  71.     debts.put(name, amount);
  72.   }
  73.   /**
  74.    * Returns a detailed analysis of the current state.
  75.    */
  76.   public String getAnalysis() throws RemoteException {
  77.     StringBuffer sb = new StringBuffer();
  78.     sb.append("nn**Current Portfolio Analysis**n");
  79.     sb.append(analyzeMap("Your Holdings", holdings));
  80.     sb.append(analyzeMap("Your Debts", debts));
  81.     sb.append("  Total Cash Value: " + this.getTotalCash() + "n");
  82.     sb.append("Currently qualifies for Zeetrade Gold plan: "
  83.               + this.qualifiesForGoldAccount());
  84.     return sb.toString();
  85.   }
  86.   /**
  87.    * Returns true if they have the financial strength to qualify for
  88.    * a gold account.
  89.    */
  90.   public boolean qualifiesForGoldAccount() throws RemoteException {
  91.     if (this.getGoldAccountMinimum() > this.getTotalCash()) {
  92.       return false;
  93.     } else {
  94.       return true;
  95.     }
  96.   }
  97.   /**
  98.    * Checks the deployment descriptor for the minimum amount of
  99.    * total cash is needed to qualify.
  100.    */
  101.   private int getGoldAccountMinimum() {
  102.     InitialContext ctx     = null;
  103.     Integer        minimum = new Integer(10000);  // 10000 for default.
  104.     try {
  105.       ctx     = new InitialContext();
  106.       minimum = (Integer) ctx.lookup("java:comp/env/goldAccountMinimum");
  107.     } catch (Exception e) {
  108.       e.printStackTrace();
  109.     } finally {
  110.       try {
  111.         ctx.close();
  112.       } catch (Exception e) {}
  113.     }
  114.     return minimum.intValue();
  115.   }
  116.   private int getTotalCash() {
  117.     return getTotalHoldings() - getTotalDebt();
  118.   }
  119.   private int getTotalHoldings() {
  120.     return calculateTotal(holdings);
  121.   }
  122.   private int getTotalDebt() {
  123.     return calculateTotal(debts);
  124.   }
  125.   private int calculateTotal(HashMap map) {
  126.     Iterator iter  = map.values().iterator();
  127.     int      total = 0;
  128.     Integer  tmp   = null;
  129.     while (iter.hasNext()) {
  130.       tmp   = (Integer) iter.next();
  131.       total += tmp.intValue();
  132.     }
  133.     return total;
  134.   }
  135.   private String analyzeMap(String name, HashMap map) {
  136.     StringBuffer sb = new StringBuffer();
  137.     sb.append("  **" + name + "**n");
  138.     Iterator iter   = map.keySet().iterator();
  139.     String   key    = null;
  140.     Integer  tmpInt = null;
  141.     int      total  = 0;
  142.     while (iter.hasNext()) {
  143.       key    = (String) iter.next();
  144.       tmpInt = (Integer) map.get(key);
  145.       sb.append("    " + key + ": " + tmpInt.intValue() + "n");
  146.       total += tmpInt.intValue();
  147.     }
  148.     sb.append("  Total: " + total + "nn");
  149.     return sb.toString();
  150.   }
  151. }
  152. /*--- Formatted in Bible Style on Thu, Sep 6, '01 ---*/
  153. /*------ Formatted by Jindent 3.24 Gold 1.02 --- http://www.jindent.de ------*/