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:
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.
}
}