package com.usemodj.jpetstore.struts.action;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import com.usemodj.jpetstore.domain.Account;
import com.usemodj.jpetstore.domain.Signon;
import com.usemodj.jpetstore.service.SignonService;
import com.usemodj.struts.CreateAccountException;
import com.usemodj.struts.Role;
import com.usemodj.struts.action.BaseAction;
public class RegisterAction extends BaseAction {
private static final long serialVersionUID = -524552703410060590L;
private static Logger logger = Logger.getLogger(RegisterAction.class);
private SignonService signonService = new SignonService();
private Signon signon;
private Account account;
public String execute() throws Exception {
SqlSession sqlSession = this.getSqlSessionFactory().openSession();
try {
Signon _signon = signonService.selectSignon(sqlSession, signon.getUsername());
if(null != _signon) {
this.addActionMessage(getText("using.username"));
}
if( !signon.getPassword().equals(signon.getPasswordConfirm())){
this.addActionMessage(getText("mismatch.password"));
}
signon.setRole( Role.GENERAL);
if( this.hasActionMessages() || this.hasActionErrors()) return INPUT;
account.setUserid( signon.getUsername());
signonService.createSignonAndAccount(sqlSession, signon, account);
} catch (CreateAccountException e) {
this.addActionError(getText("error.create.signon.account"));
logger.error( getText("error.create.signon.account") + " : " + e.getMessage());
return INPUT;
} catch (Exception e) {
logger.error(" RegisterAtion.execute() Exception: " + e.getMessage());
} finally {
sqlSession.close();
}
//login session scope
this.setSession(LOGIN, signon);
this.addActionMessage(getText("success.create.signon.account"));
return SUCCESS;
}
public String input() throws Exception {
return INPUT;
}
public Signon getSignon() {
return signon;
}
public void setSignon(Signon signon) {
this.signon = signon;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
}