package com.sun.j2ee.blueprints.petstore.controller.ejb.actions;
import java.util.Collection;
import java.util.Iterator;
import java.util.Locale;
import javax.ejb.FinderException;
import com.sun.j2ee.blueprints.waf.event.Event;
import com.sun.j2ee.blueprints.waf.event.EventResponse;
import com.sun.j2ee.blueprints.waf.event.EventException;
import com.sun.j2ee.blueprints.waf.controller.ejb.action.EJBActionSupport;
import com.sun.j2ee.blueprints.waf.util.I18nUtil;
import com.sun.j2ee.blueprints.customer.ejb.CustomerLocal;
import com.sun.j2ee.blueprints.customer.ejb.CustomerLocalHome;
import com.sun.j2ee.blueprints.customer.account.ejb.AccountLocal;
import com.sun.j2ee.blueprints.contactinfo.ejb.ContactInfoLocal;
import com.sun.j2ee.blueprints.customer.profile.ejb.ProfileLocal;
import com.sun.j2ee.blueprints.creditcard.ejb.CreditCardLocal;
import com.sun.j2ee.blueprints.address.ejb.AddressLocal;
import com.sun.j2ee.blueprints.creditcard.ejb.CreditCard;
import com.sun.j2ee.blueprints.contactinfo.ejb.ContactInfo;
import com.sun.j2ee.blueprints.customer.profile.ejb.ProfileInfo;
import com.sun.j2ee.blueprints.address.ejb.Address;
import com.sun.j2ee.blueprints.petstore.controller.events.CustomerEvent;
import com.sun.j2ee.blueprints.petstore.util.PetstoreKeys;
import com.sun.j2ee.blueprints.petstore.controller.ejb.ShoppingClientFacadeLocal;
public class CustomerEJBAction extends EJBActionSupport {
private ShoppingClientFacadeLocal scf = null;
public EventResponse perform(Event e) throws EventException {
CustomerEvent ce = (CustomerEvent)e;
scf = (ShoppingClientFacadeLocal)machine.getAttribute(PetstoreKeys.SHOPPING_CLIENT_FACADE);
switch (ce.getActionType()) {
case CustomerEvent.CREATE : {
String userId = scf.getUserId();
scf.createCustomer(userId);
updateCustomer(ce);
break;
}
case CustomerEvent.UPDATE : {
updateCustomer(ce);
break;
}
}
return null;
}
private void updateCustomer(CustomerEvent ce) throws EventException {
CustomerLocal customer = null;
try {
customer = scf.getCustomer();
} catch (FinderException fe) {
}
AccountLocal account = customer.getAccount();
ContactInfoLocal contactInfoLocal = account.getContactInfo();
ContactInfo contactInfo = ce.getContactInfo();
contactInfoLocal.setFamilyName(contactInfo.getFamilyName());
contactInfoLocal.setGivenName(contactInfo.getGivenName());
contactInfoLocal.setTelephone(contactInfo.getPhone());
contactInfoLocal.setEmail(contactInfo.getEmail());
Address address = contactInfo.getAddress();
AddressLocal addressLocal = contactInfoLocal.getAddress();
addressLocal.setStreetName1(address.getStreetName1());
addressLocal.setStreetName2(address.getStreetName2());
addressLocal.setCity(address.getCity());
addressLocal.setZipCode(address.getZipCode());
addressLocal.setState(address.getState());
addressLocal.setCountry(address.getCountry());
CreditCard creditCard = ce.getCreditCard();
CreditCardLocal creditCardLocal = account.getCreditCard();
creditCardLocal.setCardNumber(creditCard.getCardNumber());
creditCardLocal.setCardType(creditCard.getCardType());
creditCardLocal.setExpiryDate(creditCard.getExpiryDate());
ProfileInfo profileInfo = ce.getProfileInfo();
ProfileLocal profileLocal = customer.getProfile();
profileLocal.setPreferredLanguage(profileInfo.getPreferredLanguage());
profileLocal.setFavoriteCategory(profileInfo.getFavoriteCategory());
profileLocal.setMyListPreference(profileInfo.getMyListPreference());
profileLocal.setBannerPreference(profileInfo.getBannerPreference());
Locale locale = I18nUtil.getLocaleFromString(profileInfo.getPreferredLanguage());
machine.setAttribute("locale", locale);
}
}