1 5 package com.nightlabs.ipanema.trade; 6 7 import java.rmi.RemoteException ; 8 import java.util.Date ; 9 10 import javax.ejb.CreateException ; 11 import javax.ejb.EJBException ; 12 import javax.ejb.SessionBean ; 13 import javax.ejb.SessionContext ; 14 import javax.jdo.PersistenceManager; 15 16 import org.apache.log4j.Logger; 17 18 import com.nightlabs.ModuleException; 19 import com.nightlabs.ipanema.accounting.Currency; 20 import com.nightlabs.ipanema.accounting.Invoice; 21 import com.nightlabs.ipanema.accounting.id.CurrencyID; 22 import com.nightlabs.ipanema.base.BaseSessionBeanImpl; 23 import com.nightlabs.ipanema.security.User; 24 import com.nightlabs.ipanema.store.Product; 25 import com.nightlabs.ipanema.store.id.ProductID; 26 import com.nightlabs.ipanema.trade.id.OfferID; 27 import com.nightlabs.ipanema.trade.id.OfferItemID; 28 import com.nightlabs.ipanema.trade.id.OrderID; 29 30 31 38 public abstract class TradeManagerBean 39 extends BaseSessionBeanImpl 40 implements SessionBean 41 { 42 public static final Logger LOGGER = Logger.getLogger(TradeManagerBean.class); 43 44 46 50 public void ejbCreate() 51 throws CreateException 52 { 53 try 54 { 55 LOGGER.debug("TradeManagerBean created by " + this.getPrincipalString()); 56 } 57 catch (Exception e) 58 { 59 LOGGER.error("TradeManagerBean.ejbCreate() failed!", e); 60 throw new CreateException (e.getMessage()); 61 } 62 } 63 64 68 public void setSessionContext(SessionContext ctx) 69 throws EJBException , RemoteException 70 { 71 super.setSessionContext(ctx); 72 } 73 75 86 public Order createOrder(String currencyID) 87 throws ModuleException 88 { 89 PersistenceManager pm = getPersistenceManager(); 90 try { 91 Trader trader = Trader.getTrader(pm); 92 pm.getExtent(Currency.class); 93 Currency currency = (Currency)pm.getObjectById(CurrencyID.create(currencyID), true); 94 95 if (!getPrincipal().userIsOrganisation()) 96 throw new IllegalStateException ("This method cannot be called by a user who is not an organisation!"); 97 98 OrganisationLegalEntity customer = trader.createCustomerOrganisationLegalEntity(getPrincipal().getUserID()); 99 Order order = trader.createOrder(trader.getMandator(), customer, currency); 101 102 return (Order)pm.detachCopy(order); } finally { 104 pm.close(); 105 } 106 } 107 108 118 public Offer createOffer(OrderID orderID) 119 throws ModuleException 120 { 121 PersistenceManager pm = getPersistenceManager(); 122 try { 123 Trader trader = Trader.getTrader(pm); 124 Offer offer = trader.createOffer(trader.getOrder(orderID)); 128 return (Offer) pm.detachCopy(offer); } finally { 130 pm.close(); 131 } 132 } 133 134 145 public OfferItem createOfferItemToSell(OfferID offerID, ProductID productID, Date autoReleaseDT) 146 throws ModuleException 147 { 148 PersistenceManager pm = getPersistenceManager(); 149 try { 150 pm.getExtent(Offer.class); 151 pm.getExtent(Product.class); 152 pm.getExtent(User.class); 153 Offer offer = (Offer) pm.getObjectById(offerID, true); 154 Product product = (Product) pm.getObjectById(productID, true); 155 User user = User.getUser(pm, getPrincipal()); 156 OfferItem offerItem = offer.createOfferItemToSell(user, product, autoReleaseDT); 157 return (OfferItem)pm.detachCopy(offerItem); } finally { 159 pm.close(); 160 } 161 } 162 163 174 public OfferItem createOfferItemToRefund(OfferID offerID, OfferItemID offerItemID) 175 throws ModuleException 176 { 177 PersistenceManager pm = getPersistenceManager(); 178 try { 179 pm.getExtent(Offer.class); 180 pm.getExtent(OfferItem.class); 181 Offer offer = (Offer) pm.getObjectById(offerID, true); 183 OfferItem offerItemToRefund = (OfferItem) pm.getObjectById(offerItemID, true); 184 User user = User.getUser(pm, getPrincipal()); 185 OfferItem offerItem = offer.createOfferItemToRefund(user, offerItemToRefund); 186 return (OfferItem)pm.detachCopy(offerItem); } finally { 188 pm.close(); 189 } 190 } 191 192 193 198 public Invoice createInvoice() 199 throws ModuleException 200 { 201 return null; 202 } 203 204 } 205 | Popular Tags |