package com.ibatis.jpetstore.presentation; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.struts.beanaction.BeanActionException; import com.ibatis.common.util.PaginatedList; import com.ibatis.jpetstore.domain.Account; import com.ibatis.jpetstore.service.AccountService; import com.ibatis.jpetstore.service.CatalogService; public class AccountBean extends AbstractBean { private static final List LANGUAGE_LIST; private static final List CATEGORY_LIST; private AccountService accountService; private CatalogService catalogService; private Account account; private String repeatedPassword; private String pageDirection; private String validation; private PaginatedList myList; private boolean authenticated; static { List langList = new ArrayList(); langList.add("english"); langList.add("japanese"); LANGUAGE_LIST = Collections.unmodifiableList(langList); List catList = new ArrayList(); catList.add("FISH"); catList.add("DOGS"); catList.add("REPTILES"); catList.add("CATS"); catList.add("BIRDS"); CATEGORY_LIST = Collections.unmodifiableList(catList); } public AccountBean() { this(new AccountService(), new CatalogService()); } public AccountBean(AccountService accountService, CatalogService catalogService) { account = new Account(); this.accountService = accountService; this.catalogService = catalogService; } public String getUsername() { return account.getUsername(); } public void setUsername(String username) { account.setUsername(username); } public String getPassword() { return account.getPassword(); } public void setPassword(String password) { account.setPassword(password); } public PaginatedList getMyList() { return myList; } public void setMyList(PaginatedList myList) { this.myList = myList; } public String getRepeatedPassword() { return repeatedPassword; } public void setRepeatedPassword(String repeatedPassword) { this.repeatedPassword = repeatedPassword; } public Account getAccount() { return account; } public void setAccount(Account account) { this.account = account; } public List getLanguages() { return LANGUAGE_LIST; } public List getCategories() { return CATEGORY_LIST; } public String getPageDirection() { return pageDirection; } public void setPageDirection(String pageDirection) { this.pageDirection = pageDirection; } public String getValidation() { return validation; } public void setValidation(String validation) { this.validation = validation; } public String newAccount() { try { accountService.insertAccount(account); account = accountService.getAccount(account.getUsername()); myList = catalogService.getProductListByCategory(account.getFavouriteCategoryId()); authenticated = true; repeatedPassword = null; return SUCCESS; } catch (Exception e) { throw new BeanActionException("There was a problem creating your Account Information. Cause: " + e, e); } } public String editAccountForm() { try { account = accountService.getAccount(account.getUsername()); return SUCCESS; } catch (Exception e) { throw new BeanActionException("There was a problem retrieving your Account Information. Cause: " + e, e); } } public String editAccount() { try { accountService.updateAccount(account); account = accountService.getAccount(account.getUsername()); myList = catalogService.getProductListByCategory(account.getFavouriteCategoryId()); return SUCCESS; } catch (Exception e) { throw new BeanActionException("There was a problem updating your Account Information. Cause: " + e, e); } } public String switchMyListPage() { if ("next".equals(pageDirection)) { myList.nextPage(); } else if ("previous".equals(pageDirection)) { myList.previousPage(); } return SUCCESS; } public String signon() { account = accountService.getAccount(account.getUsername(), account.getPassword()); if (account == null || account == null) { String value = "Invalid username or password. Signon failed."; setMessage(value); clear(); return FAILURE; } else { account.setPassword(null); myList = catalogService.getProductListByCategory(account.getFavouriteCategoryId()); authenticated = true; return SUCCESS; } } public String signoff() { // ActionContext.getActionContext().getRequest().getSession().invalidate(); clear(); return SUCCESS; } public boolean isAuthenticated() { return authenticated && account != null && account.getUsername() != null; } public void reset() { if (account != null) { account.setBannerOption(false); account.setListOption(false); } } public void clear() { account = new Account(); repeatedPassword = null; pageDirection = null; myList = null; authenticated = false; } }