Como criar um ArrayList de Produtos em uma classe Usuário e fazer com que o Servlet não as reset ?

2 respostas
javawebjavaservlet
thiagodebonis

Estou tentando criar um CRUD que é referente a criar uma Lista de Compras…

E estou com os seguintes problemas:
1) Como dizer do modo que fiz, que o Usuário possui uma Lista de produtos?
2) Como inicializar com essa lista de produtos vazia, ao cadastrar o usuário ?
3) Como faço para que o meu servlet não “reset” a minha lista de usuário ? Digo isto, pois ao dar POST no cadastro do usuário, ele me indica 1 usuário, porém se voltar a página e der novamente POST, ele indica 1 usuário, ou sejá ele está apagando a minha lista de usuário e suas informações, eu preciso manter para fazer as trocas de informações nas rotas…

MINHA ARQUITETURA DE PASTAS:
image

SERVLET CLASSE REGISTER

@WebServlet(name = "Register", urlPatterns = {"/Register"})
public class Register extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        // REQUEST
        final String username = request.getParameter("username");
        final String password = request.getParameter("password");
        
        // MSG RESPONSE
        String msgSaveUser = "";
        
        
        
        if(!username.equals("") && !username.equals(" ") && !password.equals("") && !password.equals(" ")){
            Produto newProduct = new Produto(null, 0);
            RepositorioProduto rp = new RepositorioProduto();
            rp.saveProduct(newProduct);
            
            Usuario newUser = new Usuario(username, password);
            RepositorioUsuario ru = new RepositorioUsuario();
            
            msgSaveUser = ru.saveUser(newUser);
           

        }
        
        
    }

}

CLASSE PRODUTO:

public class Produto {

private String name;

private int quantity;
public Produto(String name, int quantity){
    this.name = name;
    this.quantity = quantity;
}

public String getName(){
    return this.name;
}

public int getQuantity(){
    return this.quantity;
}

}

CLASSE USUÁRIO:

public class Usuario {
    private String username;
    private String password;
    
    public Usuario(String username, String password){
        this.username = username;
        this.password = password;
    }
    
    public String getUsername(){
        return this.username;
    }
    
    public String getPassword(){
        return this.password;
    }
}

INTERFACE REPOSITÓRIO USUÁRIO:

public interface IRepositorioUsuario {
        public String saveUser(Usuario user);
        public boolean checkExistUser(String username);
        public int getUserListSize();
        public List<Usuario> getUser(String username);
    }

INTERFACE REPOSITÓRIO PRODUTO:

public interface IRepositorioProduto {
    public String saveProduct(Produto product);
    public boolean checkExistProduct(String productName);
    public int getProductListSize();
    public List<Produto> getProduct(String productName);
}

CLASSE REPOSITÓRIO USUÁRIO:

public class RepositorioUsuario implements IRepositorioUsuario {
    private List<Usuario> userList = new ArrayList<Usuario>();

    @Override
    public String saveUser(Usuario user) {
        try {
            // VERIFICA SE EXISTE USUÁRIO ADICIONADO
            // SE, NÃO EXISTIR, ADICIONE O USUÁRIO
            // SE NÃO, VERIFIQUE O USUÁRIO A SER CADASTRADO, CASO JÁ EXISTA RETURN FALSE, CASO NÃO EXISTA ADICIONE O USUÁRIO
            if(this.getUserListSize() == 0){ 
                this.userList.add(user);
                return "USUÁRIO SALVO";
            } else { 
                if(this.checkExistUser(user.getUsername())){
                    return "USUÁRIO JÁ EXISTE NO BANCO DE DADOS";
                } else {
                    this.userList.add(user);
                    return "USUÁRIO SALVO";
                }    
            }
        } catch (Exception e){
            return e.toString();
        }
    }

    @Override
    public int getUserListSize() {
        return this.userList.size();
    }
    
    @Override
    public List<Usuario> getUser(String username) { return null; }
    
    @Override
    public boolean checkExistUser(String username) {
        for(Usuario user : this.userList){
            return (user.getUsername().equals(username)) ? true : false;
        }
        
        return false;
        
    }
}

CLASSE REPOSITÓRIO PRODUTO:

public class RepositorioProduto implements IRepositorioProduto {
    private List<Produto> productList = new ArrayList<Produto>();

    @Override
    public String saveProduct(Produto product) {
        try {
            // VERIFICA SE EXISTE PRODUTO ADICIONADO
            // SE, NÃO EXISTIR, ADICIONE O PRODUTO
            // SE NÃO, VERIFIQUE O PRODUTO A SER CADASTRADO, CASO JÁ EXISTA RETURN FALSE, CASO NÃO EXISTA ADICIONE O PRODUTO
            if(this.getProductListSize() == 0){ 
                this.productList.add(product);
                return "PRODUTO SALVO";
            } else { 
                if(this.checkExistProduct(product.getName())){
                    return "PRODUTO JÁ EXISTE NO BANCO DE DADOS";
                } else {
                    this.productList.add(product);
                    return "PRODUTO SALVO";
                }    
            }
        } catch (Exception e){
            return e.toString();
        }
    }

    @Override
    public boolean checkExistProduct(String productName) {
        for(Produto product : this.productList){
            return (product.getName().equals(productName)) ? true : false;
        }
        
        return false;
    }

    @Override
    public int getProductListSize() {
        return this.productList.size();
    }

    @Override
    public List<Produto> getProduct(String productName) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}

2 Respostas

staroski

Se cada instância da classe Usuarios representa um usuário, então ela deveria se chamar Usuario, no singular.

Após renomear sua classe, você pode criar uma lista de usuários dessa forma:

List<Usuario> usuarios = new ArrayList<>();
thiagodebonis

@staroski
Amigo, eu alterei a minha pergunta e o seu conteúdo…
Elaborei melhor meus códigos, você consegue me ajudar nestas informações?

Criado 21 de novembro de 2018
Ultima resposta 21 de nov. de 2018
Respostas 2
Participantes 2