Quebrando uma função em duas

1 resposta
V

Pessoal,

Tenho o seguinte método:

private boolean createUser(HttpServletRequest request) {
    	ResourceBundle messages = ResourceBundle.getBundle("br.com.cpqd.www.dmd.Messages", request.getLocale());
            	
        String username = request.getParameter("username");
        String name = request.getParameter("name");
        String email = request.getParameter("email");        
        Long id_cliente = Long.parseLong(request.getParameter("id_cliente"));
        
        boolean formOk = true;
        if((username == null) || ("".equals(username.trim()))) {
            MessageTag.addMessage(request, new JspMessage("user", messages.getString("servlet.nullUsername")));
            formOk = false;
        }
        
        if((name == null) || ("".equals(name.trim()))) {
            MessageTag.addMessage(request, new JspMessage("name", messages.getString("servlet.nullName")));
            formOk = false;
        }
        
        if((email == null) || ("".equals(email.trim()))) {
            MessageTag.addMessage(request, new JspMessage("email", messages.getString("servlet.nullEmail")));
            formOk = false;
        }
        
        if(!formOk) {
            return false;
        }
        
        User newUser = new User();
        newUser.setUsername(username);
        newUser.setName(name);
        newUser.setEmail(email);
        newUser.setAccessLevel(User.USER);
        newUser.setClientID(id_cliente);
        
        String pwd = RandomPasswordGenerator.generatePassword(8);
        newUser.setPassword(pwd);
        
        //insert the user in the database
        DAO dao = DAOFactory.getDAOInstance(DAOFactory.USER_DAO);
        try {
            if(!dao.createObject(newUser)) {
                MessageTag.addMessage(request, new JspMessage("user", messages.getString("servlet.usernameExists")));
                return false;
            }
            
            String mailMsg = messages.getString("servlet.mailMsg1") + newUser.getUsername() +  messages.getString("servlet.mailMsg2") + pwd;
            SendMail.postMail(new String[] { newUser.getEmail() }, messages.getString("servlet.msgTtle"), mailMsg, "[email removido]");
            
            MessageTag.addMessage(request, new JspMessage(null, messages.getString("servlet.msgConfirm"), JspMessage.INFO_MSG));
            return true;
        } catch(SQLException e) {
            if((e.getSQLState().equals("23505")) || //SQLState for unique key violation
               (e.getMessage().indexOf("duplicate key violates unique constraint \"UQ_USUARIO_EMAIL\"") >= 0)) {
                MessageTag.addMessage(request, new JspMessage("email", messages.getString("servlet.emailExists")));   
            } else {
                MessageTag.addMessage(request, new JspMessage(messages.getString("servlet.baseError")));
                e.printStackTrace();
            }
            
            return false;
        } catch(MessagingException me) {
            MessageTag.addMessage(request, new JspMessage(messages.getString("servlet.emailError")));
            me.printStackTrace();
            
            //if we could not email the password to the user, delete the user data from DB
            try {
                dao.deleteObject(newUser.getId().longValue());
            } catch(Exception ex) {
                MessageTag.addMessage(request, new JspMessage(messages.getString("servlet.baseError")));
                me.printStackTrace();
            }
            
            return false;
        }
}

Alguém sabe como faço para deixar toda a parte abaixo de “//insert the user in the database” como uma outra função e chamá-la da createUser()?

Ou alguma outra força de quebrar esse método.

Vinicius.

1 Resposta

cv1

De uma pesquisada pelo refactoring ‘Extract Method’ :wink:

Criado 12 de junho de 2006
Ultima resposta 12 de jun. de 2006
Respostas 1
Participantes 2