1 /* 2 * RegisterUserFormController 3 * 4 * author snambi 5 * copyright (C) 2009 nambi sankaran. 6 * 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 * 20 */ 21 22 package net.sf.emarket.web.controllers.user; 23 24 import java.util.Date; 25 import java.util.HashMap; 26 import java.util.Map; 27 import java.util.logging.Logger; 28 29 import javax.servlet.ServletException; 30 import javax.servlet.http.HttpServletRequest; 31 32 import net.sf.emarket.account.domain.Account; 33 import net.sf.emarket.account.service.IAccountManagerService; 34 import net.sf.emarket.user.domain.User; 35 import net.sf.emarket.user.service.IUserManagerService; 36 import net.sf.emarket.user.service.UserAlreadyExistsException; 37 import net.sf.emarket.user.service.UserDataNotCompleteException; 38 39 import org.springframework.beans.factory.annotation.Autowired; 40 import org.springframework.validation.BindException; 41 import org.springframework.validation.Validator; 42 import org.springframework.web.servlet.ModelAndView; 43 import org.springframework.web.servlet.mvc.SimpleFormController; 44 import org.springframework.web.servlet.view.RedirectView; 45 46 /*** 47 * RegisterUserFormController Description. 48 * 49 * @author : nambi 50 */ 51 public class RegisterUserController extends SimpleFormController { 52 53 private static Logger logger = Logger.getLogger(RegisterUserController.class.getName()); 54 55 private IUserManagerService userManager; 56 private IAccountManagerService accountMgr; 57 private Validator validator; 58 59 60 @Autowired 61 public void setUserManager(IUserManagerService mgr){ 62 userManager = mgr; 63 } 64 65 @Autowired 66 public void setAccountManager( IAccountManagerService mgr){ 67 accountMgr = mgr; 68 } 69 70 71 protected Object formBackingObject(HttpServletRequest request) throws Exception { 72 RegisterUser registerUser = new RegisterUser(); 73 System.out.println("calling formBackingObject"); 74 return registerUser; 75 } 76 77 78 protected Map referenceData(HttpServletRequest request) throws Exception { 79 Map<Object, Object> dataMap = new HashMap<Object, Object>(); 80 dataMap.put("time", new Date()); 81 return dataMap; 82 } 83 84 85 @Override 86 public ModelAndView onSubmit(Object command, BindException errors) throws ServletException { 87 88 RegisterUser u = (RegisterUser) command; 89 90 User user = new User(); 91 user.setId( u.getId()); 92 user.setFirstName( u.getFirstName()); 93 user.setPassword( u.getPassword() ); 94 95 // Call userManager to register the user 96 try { 97 userManager.addUser(user); 98 } catch (UserAlreadyExistsException e) { 99 e.printStackTrace(); 100 logger.info(user.getId() + " already exists " + e.getMessage()); 101 102 Map map = errors.getModel(); 103 map.put("time", "current time is great"); 104 105 errors.reject("10001","emarket Id already exists"); 106 logger.info("form view "+ getFormView() ); 107 return new ModelAndView( getFormView() , map); 108 109 } catch (UserDataNotCompleteException e) { 110 e.printStackTrace(); 111 logger.info("form view "+ getFormView() ); 112 113 errors.reject("10001", e.getMessage()); 114 Map map = errors.getModel(); 115 map.put("time", "current time is great"); 116 return new ModelAndView( getFormView(), map ); 117 } 118 119 Account account = addAccount(user); 120 /* transferCash(account); 121 transferPositions( account );*/ 122 123 //logger.fine("returing model and view"); 124 logger.fine("success view "+ getSuccessView() ); 125 126 return new ModelAndView(new RedirectView(getSuccessView())); 127 } 128 129 130 private Account addAccount( User user ){ 131 132 // create account, once user creation succeeds 133 // Call AccountMgr to create the account 134 Account account = new Account(); 135 136 account.setId(user.getId()); 137 account.setType(Account.TYPE_CASH); 138 //TODO: remove hardcoded currency 139 account.setCurrency( "INR"); 140 //account.setCountry("India"); 141 142 accountMgr.addAccount(account); 143 144 return account; 145 } 146 147 /* 148 private void transferCash( Account account ){ 149 150 Date date = new Date(); 151 Timestamp createdTime = new Timestamp(date.getTime()); 152 153 // transfer 1000 from system account 154 CashTransfer transfer = new CashTransfer(); 155 transfer.setAmount(1000); 156 transfer.setSenderAcctId("1000"); 157 transfer.setReceiverAcctId(account.getAcctId()); 158 transfer.setCreatedTime(createdTime); 159 160 // transfer 1000 stocks from each of the STOCKS 161 try { 162 accountMgr.tranferCash(transfer); 163 } catch (NotEnoughCashException e) { 164 e.printStackTrace(); 165 } catch (NotValidAccountException e) { 166 e.printStackTrace(); 167 } 168 } 169 170 private void transferPositions( Account account ){ 171 172 // Add 1000 stcoks of each share 173 174 AcctPositionTransfer blrtransfer = new AcctPositionTransfer(); 175 blrtransfer.setSenderAcctId("1000"); 176 blrtransfer.setReceiverAcctId( account.getAcctId()); 177 blrtransfer.setSymbol("BLR"); 178 blrtransfer.setQuantity(1000); 179 blrtransfer.setPrice(10.0f); 180 blrtransfer.setType( AcctPosition.TYPE_LONG); 181 182 AcctPositionTransfer chntransfer = new AcctPositionTransfer(); 183 chntransfer.setSenderAcctId("1000"); 184 chntransfer.setReceiverAcctId( account.getAcctId()); 185 chntransfer.setSymbol("CHN"); 186 chntransfer.setQuantity(1000); 187 chntransfer.setPrice(10.0f); 188 chntransfer.setType( AcctPosition.TYPE_LONG); 189 190 AcctPositionTransfer dlhtransfer = new AcctPositionTransfer(); 191 dlhtransfer.setSenderAcctId("1000"); 192 dlhtransfer.setReceiverAcctId( account.getAcctId()); 193 dlhtransfer.setSymbol("DLH"); 194 dlhtransfer.setQuantity(1000); 195 dlhtransfer.setPrice(10.0f); 196 dlhtransfer.setType( AcctPosition.TYPE_LONG); 197 198 AcctPositionTransfer hydtransfer = new AcctPositionTransfer(); 199 hydtransfer.setSenderAcctId("1000"); 200 hydtransfer.setReceiverAcctId( account.getAcctId()); 201 hydtransfer.setSymbol("HYD"); 202 hydtransfer.setQuantity(1000); 203 hydtransfer.setPrice(10.0f); 204 hydtransfer.setType( AcctPosition.TYPE_LONG); 205 206 AcctPositionTransfer koltransfer = new AcctPositionTransfer(); 207 koltransfer.setSenderAcctId("1000"); 208 koltransfer.setReceiverAcctId( account.getAcctId()); 209 koltransfer.setSymbol("KOL"); 210 koltransfer.setQuantity(1000); 211 koltransfer.setPrice(10.0f); 212 koltransfer.setType( AcctPosition.TYPE_LONG); 213 214 AcctPositionTransfer mumtransfer = new AcctPositionTransfer(); 215 mumtransfer.setSenderAcctId("1000"); 216 mumtransfer.setReceiverAcctId( account.getAcctId()); 217 mumtransfer.setSymbol("MUM"); 218 mumtransfer.setQuantity(1000); 219 mumtransfer.setPrice(10.0f); 220 mumtransfer.setType( AcctPosition.TYPE_LONG); 221 222 AcctPositionTransfer puntransfer = new AcctPositionTransfer(); 223 puntransfer.setSenderAcctId("1000"); 224 puntransfer.setReceiverAcctId( account.getAcctId()); 225 puntransfer.setSymbol("PUN"); 226 puntransfer.setQuantity(1000); 227 puntransfer.setPrice(10.0f); 228 puntransfer.setType( AcctPosition.TYPE_LONG); 229 230 AcctPositionTransfer rjdtransfer = new AcctPositionTransfer(); 231 rjdtransfer.setSenderAcctId("1000"); 232 rjdtransfer.setReceiverAcctId( account.getAcctId()); 233 rjdtransfer.setSymbol("RJD"); 234 rjdtransfer.setQuantity(1000); 235 rjdtransfer.setPrice(10.0f); 236 rjdtransfer.setType( AcctPosition.TYPE_LONG); 237 238 try { 239 accountMgr.transferPosition(blrtransfer); 240 accountMgr.transferPosition(chntransfer); 241 accountMgr.transferPosition(dlhtransfer); 242 accountMgr.transferPosition(hydtransfer); 243 accountMgr.transferPosition(koltransfer); 244 accountMgr.transferPosition(mumtransfer); 245 accountMgr.transferPosition(puntransfer); 246 accountMgr.transferPosition(rjdtransfer); 247 } catch (NotEnoughPositionsException e) { 248 e.printStackTrace(); 249 } catch (NotValidAccountException e) { 250 e.printStackTrace(); 251 } 252 } 253 */ 254 255 }