Buscar

Projeto Implementacao OO - Trabalho Final

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIADE ESTÁCIO DE SÁ 
Pós-Graduação em Engenharia de Software 
 
 
 
TRABALHO FINAL 
Disciplina: Projeto e Implementação Orientado a Objetos 
 
JOÃO BOSCO ALEXANDRE DA COSTA 
Matrícula: 201911010255 
 
 
 
 
 
 
 
 
 
 
 
 
 
Fortaleza – CE 
2020 
Objetivo 
Desenvolver um sistema que realize as operações CRUD e controle sessão de usuário para 
Web seguindo os padrões MVC II, Front Controller e Command. 
 
Sistema de Anúncio 
Qualquer usuário poderá ver os anúncios publicados no website, cada anúncio estará 
vinculada a uma categoria. O usuário administrador/editor/redator, logado, poderá cadastrar, 
excluir, editar ou deletar uma notícia (registro), bem como criar novas categorias. 
 
Técnologias Usadas 
Java 
Servlet 
jsp 
Javascript 
MySql 
Padrões usados 
MVC 
Front Controller 
Command 
DDD 
FluentValidation 
Repository 
Frameworks usados 
Jquery 
Bootstrap 
Font awesome 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
IDE: Elicpse Mars 
Banco de Dados MySql 
 
CREATE TABLE `publicidade`.`categoria` (`GUID` VARCHAR(40) NOT NULL, `NOME` 
VARCHAR(50) NOT NULL, PRIMARY KEY (`GUID`)); 
 
CREATE TABLE `publicidade`.`anunciante` (`GUID` VARCHAR(40) NOT NULL, `NOME` 
VARCHAR(100), `DOCUMENTO` VARCHAR(30), `ENDERECO` VARCHAR(150), 
`TELEFONE` VARCHAR(20), `DATACRIACAO` DATETIME DEFAULT 
CURRENT_TIMESTAMP, PRIMARY KEY (`GUID`)) 
 
CREATE TABLE `publicidade`.`anuncio` (`GUID` VARCHAR(40) NOT NULL, 
`GUIDANUNCIANTE` VARCHAR(40) NOT NULL, `GUIDCATEGORIA` VARCHAR(40) NOT 
NULL, `DATAVALIDADE` DATETIME NOT NULL, `DATACRIACAO` DATETIME DEFAULT 
CURRENT_TIMESTAMP, PRIMARY KEY(`GUID`)) 
 
CREATE TABLE `publicidade`.`usuario` (`GUID` VARCHAR(40) NOT NULL, `NOME` 
VARCHAR(45) NOT NULL, `LOGIN` VARCHAR(45) NOT NULL, `SENHA` VARCHAR(45) 
NULL, PRIMARY KEY (`GUID`)); 
 
ALTER TABLE anuncio 
ADD FOREIGN KEY (`GUIDANUNCIANTE`) REFERENCES ANUNCIANTE(`GUID`) 
 
ALTER TABLE anuncio 
ADD FOREIGN KEY (`GUIDCATEGORIA`) REFERENCES CATEGORIA(`GUID`) 
 
ALTER TABLE `publicidade`.`anunciante` 
ADD COLUMN `CIDADE` VARCHAR(45) NULL AFTER `DATACRIACAO`; 
 
SELECT ANUNCIO.GUID, ANUNCIO.GUIDANUNCIANTE, ANUNCIO.GUIDCATEGORIA, 
ANUNCIO.DATAVALIDADE, ANUNCIO.DATACRIACAO, ANUNCIANTE.NOME, 
ANUNCIANTE.DOCUMENTO, ANUNCIANTE.ENDERECO, ANUNCIANTE.TELEFONE, 
CATEGORIA.NOME AS CATEGORIANOME 
FROM ANUNCIO INNER JOIN 
ANUNCIANTE ON ANUNCIANTE.GUID = ANUNCIO.GUIDANUNCIANTE INNER JOIN 
CATEGORIA ON CATEGORIA.GUID = ANUNCIO.GUIDCATEGORIA 
 
 
Inserts realizados no Banco 
 
-- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64) 
-- Host: localhost Database: publicidade 
-- Server version 5.7.21-log 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, 
FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, 
SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 
-- Dumping data for table `anunciante` 
LOCK TABLES `anunciante` WRITE; 
/*!40000 ALTER TABLE `anunciante` DISABLE KEYS */; 
INSERT INTO `anunciante` VALUES ('6c8c380d-b5d4-44b8-835b-b317b51053c2','novo 
anunciante tira isso aqui','0123456789','teste endereco','0123456789','2018-01-21 
09:52:44','testetse'),('76258549-14c2-4ddd-85c3-ab7810ff44de','Marcos Aureliano Lima 
Costa','012345679','rua modesta, 120','85987752207','2018-01-21 09:50:41','fortaleza'); 
/*!40000 ALTER TABLE `anunciante` ENABLE KEYS */; 
UNLOCK TABLES; 
-- Dumping data for table `anuncio` 
LOCK TABLES `anuncio` WRITE; 
/*!40000 ALTER TABLE `anuncio` DISABLE KEYS */; 
INSERT INTO `anuncio` VALUES ('11639eca-befd-4268-9b08-94f43b2a7411','76258549-
14c2-4ddd-85c3-ab7810ff44de','2e8a8188-8915-40cd-80e7-d956ff36019e','2018-01-21 
18:10:33','2018-01-21 18:10:33'),('443c5e20-3bc0-4e8b-b11d-faf188146ee5','6c8c380d-b5d4-
44b8-835b-b317b51053c2','229678bb-79f9-4bbb-ac01-7346396b0100','2018-01-21 
18:10:29','2018-01-21 18:10:29'); 
/*!40000 ALTER TABLE `anuncio` ENABLE KEYS */; 
UNLOCK TABLES; 
-- Dumping data for table `categoria` 
LOCK TABLES `categoria` WRITE; 
/*!40000 ALTER TABLE `categoria` DISABLE KEYS */; 
INSERT INTO `categoria` VALUES ('229678bb-79f9-4bbb-ac01-
7346396b0100','Profissional'),('2e8a8188-8915-40cd-80e7-d956ff36019e','Cama mesa e 
banho'),('7a96b7be-7ea8-409b-9ce8-719583bb9d61','Casa e cozinha'),('9d3467ce-de59-4ca0-
845e-e4dc283f146a','Beleza'),('ff0d19c7-3932-416c-bd7a-6a77e70f4f7d','transporte'); 
/*!40000 ALTER TABLE `categoria` ENABLE KEYS */; 
UNLOCK TABLES; 
-- Dumping data for table `usuario` 
LOCK TABLES `usuario` WRITE; 
/*!40000 ALTER TABLE `usuario` DISABLE KEYS */; 
INSERT INTO `usuario` VALUES ('280d14c1-5533-4ec0-9db7-
1409be862126','novoUsuario','teste3','teste4'),('43617ae9-1549-45bf-bf02-
32964be0bfa6','novoUsuario','teste3','123456'),('47324185-4735-4157-9cb2-
304858f15793','teste1','teste1','123546'),('581e3a86-9126-42ad-9b1e-
7f80a522bb18','teste5','teste6','123456'),('7df6d488-35c9-4d78-8268-
7ba152124282','teste','teste','123456'),('87832965-dd06-4ae2-a002-
6b8562f206f8','novoUsuario','teste3','teste4'),('889bca0b-ea79-47ae-bccf-
0f51d6b0079b','admin','admin','123456'),('9a65e8ef-203f-4b7f-9bae-
4db68afe1244','teste6','teste6','123456'),('a010cb4b-76bc-4282-91b9-
2b0413bbc828','novoUsuario','teste3','teste4'),('c3baa831-47a0-4bb8-a1df-
9387d71155c2','novoUsuario','teste3','123456'),('d8766aa7-0cfd-4fae-9e9b-
541c5342201c','login1','teste5','123456'); 
/*!40000 ALTER TABLE `usuario` ENABLE KEYS */; 
UNLOCK TABLES; 
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 
 
-- Dump completed on 2020-02-20 21:16:26 
package factory; 
 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
 
public class ConnectionFactory { 
 
 private String driver = 
"com.mysql.jdbc.Driver";//"com.microsoft.sqlserver";//"net.sourceforge.jtds.jdbc.Dr
iver";//"com.microsoft.sqlserver";//"com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
 private String connectionStr = "jdbc:mysql://localhost:3306/pioopublicidade"; 
 private String username = "aplicacao"; 
 private String password = "123456"; 
 
 private static ConnectionFactory connectionFactory = null; 
 
 private ConnectionFactory(){ 
 try{ 
 Class.forName(driver); 
 }catch(ClassNotFoundException e){ 
 e.printStackTrace(); 
 } 
 } 
 
 public Connection getConnection() throws SQLException{ 
 Connection conn = null; 
 try{ 
 conn = DriverManager.getConnection(connectionStr, username, 
password); 
 }catch(SQLException e){ 
 e.printStackTrace(); 
 } 
 return conn; 
 } 
 
 public static ConnectionFactory getInstance(){ 
 if(connectionFactory == null) 
 connectionFactory = new ConnectionFactory(); 
 
 return connectionFactory; 
 } 
} 
 
 
package servlet; 
 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import command.Command; 
 
public class Controller extends HttpServlet { 
 
 protected void processRequest(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException { 
 
 Command comando = null; 
 
 try { 
 comando =(Command)Class.forName("command.navegacao."+request.getParameter("command")).newIns
tance(); 
 } catch (InstantiationException e) { 
 e.printStackTrace(); 
 } catch (IllegalAccessException e) { 
 e.printStackTrace(); 
 } catch (ClassNotFoundException e) { 
 e.printStackTrace(); 
 } 
 comando.execute(request, response); 
 } 
 
 @Override 
 protected void doGet(HttpServletRequest request, HttpServletResponse 
response) 
 throws ServletException, IOException { 
 processRequest(request, response); 
 } 
 
 @Override 
 protected void doPost(HttpServletRequest request, HttpServletResponse 
response) 
 throws ServletException, IOException { 
 processRequest(request, response); 
 } 
} 
package fluent; 
 
import java.util.ArrayList; 
import java.util.Date; 
 
public abstract class Validacao { 
 private ArrayList<String> mensagens; 
 
 public Validacao() { 
 this.mensagens = new ArrayList<String>(); 
 } 
 
 public void deveSerVazio(Object obj, String mensagem) 
 { 
 if(obj != null) 
 { 
 this.mensagens.add(mensagem); 
 return; 
 } 
 } 
 
 public void deveSerVazio(String obj, String mensagem) 
 { 
 if(!obj.isEmpty()) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 } 
 
 public void naoDeveSerVazio(Object obj, String mensagem) 
 { 
 if(obj == null) 
 { 
 this.mensagens.add(mensagem); 
 return; 
 } 
 } 
 
 public void naoDeveSerVazio(String obj, String mensagem) 
 { 
 if(obj.isEmpty()) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 } 
 
 
 public void deveSerMaiorQue(int valor, int compare, String mensagem) 
 { 
 if(compare > valor) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 } 
 
 public void deveSerMaiorQue(Date valor, Date compare, String mensagem) 
 { 
 if(compare.before(valor)) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 
 } 
 
 public void deveSerMenorQue(int valor, int compare, String mensagem) 
 { 
 if(compare < valor) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 } 
 
 public void deveSerMenorQue(Date valor, Date compare, String mensagem) 
 { 
 if(compare.after(valor)) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 
 } 
 
 public void deveSerIgual(String valor, String compare, String mensagem) 
 { 
 if(!valor.equals(compare)) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 } 
 
 public void naoDeveSerIgual(String valor, String compare, String mensagem) 
 { 
 if(valor.equals(compare)) 
 { 
 this.adicionarMensagem(mensagem); 
 } 
 } 
 
 public boolean EValido() 
 { 
 return this.mensagens.isEmpty(); 
 } 
 
 public boolean EInvalido() 
 { 
 return !this.mensagens.isEmpty(); 
 } 
 
 public void adicionarMensagem(String mensagem) 
 { 
 this.mensagens.add(mensagem); 
 } 
 
 public void adicionarMensagens(ArrayList mensagens) 
 { 
 this.mensagens.addAll(mensagens); 
 } 
 
 public ArrayList<String> obterMensagens() { 
 
 return this.mensagens; 
 } 
 
 
} 
 
package domain; 
 
import java.util.UUID; 
import fluent.Validacao; 
 
public abstract class Entidade extends Validacao { 
 
 private UUID id; 
 
 
 private boolean novoRegistro; 
 public Entidade() { 
 super(); 
 this.setId(UUID.randomUUID()); 
 this.novoRegistro = true; 
 
 } 
 
 private void setId(UUID valor) { 
 this.novoRegistro = false; 
 this.id = valor; 
 } 
 
 public void setId(String valor) 
 { 
 this.novoRegistro = false; 
 this.id = UUID.fromString(valor); 
 } 
 
 public String getId() 
 { 
 return id.toString(); 
 } 
 
 public boolean isNovoRegistro() { 
 return novoRegistro; 
 } 
} 
 
package domain; 
 
public class Usuario extends Entidade { 
 
 private String nome; 
 private String login; 
 private String senha; 
 
 public Usuario(String login, String senha) 
 { 
 super(); 
 
 
 naoDeveSerVazio(login, "Login deve ser informado"); 
 naoDeveSerVazio(senha, "Senha deve ser informado"); 
 
 
 this.login = login; 
 this.senha = senha; 
 } 
 
 public Usuario(String nome, String login, String senha) 
 { 
 
 super(); 
 
 naoDeveSerVazio(nome, "Nome deve ser informado"); 
 naoDeveSerVazio(login, "Login deve ser informado"); 
 naoDeveSerVazio(senha, "Senha deve ser informado"); 
 
 this.nome = nome; 
 this.login = login; 
 this.senha = senha; 
 
 } 
 
 public void setSenha(String senha, String senhaCompare) 
 { 
 
 deveSerIgual(senha, senhaCompare, "Senhas não coicidem"); 
 this.senha = senha; 
 } 
 
 public String getNome() { 
 return nome; 
 } 
 public String getLogin() { 
 return login; 
 } 
 public String getSenha() { 
 
 return senha; 
 } 
} 
 
 
 
 
package domain; 
 
public class Categoria extends Entidade { 
 
 private String nome; 
 
 
 public Categoria(String nome) 
 { 
 super(); 
 super.naoDeveSerVazio(nome, "Nome da categoria deve ser informado!"); 
 this.nome = nome; 
 } 
 
 public String getNome() { 
 return this.nome; 
 } 
 
 
 
} 
 
package domain; 
 
import java.util.Date; 
 
public class Anuncio extends Entidade { 
 private Date dataCriacao; 
 private Date dataValidade; 
 private Categoria categoria; 
 private Anunciante anunciante; 
 
 protected Anuncio() 
 { 
 super(); 
 } 
 
 public Anuncio(Categoria categoria, Anunciante anunciante, Date dataValidade) 
{ 
 super(); 
 
 super.adicionarMensagens(categoria.obterMensagens()); 
 super.adicionarMensagens(anunciante.obterMensagens()); 
 super.deveSerMaiorQue(dataValidade, new Date(), "Data de validade deve 
ser maior do que a data atual"); 
 
 this.setDataCriacao(new Date()); 
 this.categoria = categoria; 
 this.anunciante = anunciante; 
 this.dataValidade = dataValidade; 
 
 } 
 
 
 public Date getDataCriacao() { 
 return dataCriacao; 
 } 
 
 public Date getDataValidade() { 
 return dataValidade; 
 } 
 
 public Categoria getCategoria() { 
 return categoria; 
 } 
 
 public Anunciante getAnunciante() { 
 return anunciante; 
 } 
 
 public void setDataCriacao(Date dataCriacao) { 
 this.dataCriacao = dataCriacao; 
 } 
} 
 
 
 
 
 
 
 
package domain; 
 
import java.util.Date; 
 
public class Anunciante extends Entidade { 
 
 private String nome; 
 private String documento; 
 private String endereco; 
 private String cidade; 
 private String telefone; 
 
 
 
 private Date dataCriacao; 
 
 protected Anunciante() 
 { 
 super(); 
 } 
 
 public Anunciante(String nome, String documento, String endereco, String 
cidade, String telefone) 
 { 
 super(); 
 
 super.naoDeveSerVazio(nome, "Nome deve ser informado!"); 
 super.naoDeveSerVazio(documento, "Documento deve ser informado!"); 
 super.naoDeveSerVazio(endereco, "Endereço deve ser informado!"); 
 super.naoDeveSerVazio(cidade, "Cidade deve ser informada!"); 
 super.naoDeveSerVazio(telefone, "Telefone deve ser informado!"); 
 
 this.nome = nome; 
 this.documento = documento; 
 this.endereco = endereco; 
 this.cidade = cidade; 
 this.telefone = telefone; 
 this.setDataCriacao(new Date()); 
 } 
 
 public String getNome() { 
 return nome; 
 } 
 
 public String getDocumento() { 
 return documento; 
 } 
 
 public String getEndereco() { 
 return endereco; 
 } 
 
 public String getCidade() { 
 return cidade; 
 } 
 
 public String getTelefone() { 
 return telefone; 
 } 
 
 
 public Date getDataCriacao() { 
 return dataCriacao; 
 } 
 
 public void setDataCriacao(Date dataCriacao) { 
 this.dataCriacao = dataCriacao; 
 } 
 
} 
package command.navegacao; 
 
import java.io.IOException; 
import java.sql.SQLException; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import command.Command; 
import domain.Usuario; 
import repositorios.UsuarioRepositorio; 
 
public class LoginUsuario implements Command { 
 
 private UsuarioRepositorio usuarioRepositorio; 
 public LoginUsuario() { 
 if(usuarioRepositorio == null) 
 { 
 this.usuarioRepositorio = new 
infra.repositorios.UsuarioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response){ 
 try { 
 
 if(request.getParameter("login") == null && 
request.getParameter("senha") == null) 
 { 
 request.getSession().setAttribute("usuarioLogado", null); 
 RequestDispatcher d = 
request.getRequestDispatcher("/Usuario/LoginUsuario.jsp"); 
 d.forward(request,response); 
 
 } 
 else 
 { 
 
 Usuario usuario = new 
Usuario(request.getParameter("login").toString(), 
request.getParameter("senha").toString()); 
 
 if(usuario.EValido()) 
 { 
 usuario = this.usuarioRepositorio.Login(usuario); 
 if(usuario != null) 
 { 
 
 request.getSession().setAttribute("usuarioLogado", usuario); 
 RequestDispatcher d = 
request.getRequestDispatcher("/index.jsp"); 
 d.forward(request,response); 
 } 
 else 
 { 
 
 request.getSession().setAttribute("usuarioLogado", null); 
 RequestDispatcher d = 
request.getRequestDispatcher("/Usuario/LoginUsuario.jsp"); 
 d.forward(request,response); 
 } 
 } 
 else 
 { 
 request.getSession().setAttribute("usuarioLogado", 
null); 
 RequestDispatcher d = 
request.getRequestDispatcher("/Usuario/LoginUsuario.jsp"); 
 d.forward(request,response); 
 
 } 
 } 
 
 } catch (IOException | ServletException e) { 
 e.printStackTrace(); 
 } 
 } 
 
} 
package command.navegacao; 
 
import java.io.IOException; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import command.Command; 
import domain.Usuario; 
import repositorios.UsuarioRepositorio; 
 
public class LogoutUsuario implements Command { 
 
 private UsuarioRepositorio usuarioRepositorio; 
 public LogoutUsuario() { 
 if(usuarioRepositorio == null) 
 { 
 this.usuarioRepositorio = new 
infra.repositorios.UsuarioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response) 
{ 
 try { 
 request.getSession().setAttribute("usuarioLogado", null); 
 
 request.getRequestDispatcher("/index.jsp").forward(request,response); 
 
 } catch (IOException | ServletException e) { 
 e.printStackTrace(); 
 } 
 } 
} 
 
 
package command.navegacao; 
 
import java.io.IOException; 
import java.sql.SQLException; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import command.Command; 
import domain.Usuario; 
import repositorios.UsuarioRepositorio; 
 
 
public class SalvarUsuario implements Command { 
 
 private UsuarioRepositorio categoriaRepositorio; 
 public SalvarUsuario() { 
 if(categoriaRepositorio == null) 
 { 
 this.categoriaRepositorio = new 
infra.repositorios.UsuarioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response) 
{ 
 try { 
 boolean isNovo = true; 
 Usuario usuariologado = 
(Usuario)request.getSession().getAttribute("usuarioLogado"); 
 Usuario usuario = new Usuario(request.getParameter("nome"), 
request.getParameter("login"), request.getParameter("senha")); 
 
 if(!request.getParameter("isnew").equals("true")) 
 { 
 usuario.setId(request.getParameter("id")); 
 isNovo = false; 
 } 
 
 if(usuario.EValido()) 
 { 
 if(isNovo) 
 { 
 this.categoriaRepositorio.inserir(usuario); 
 } 
 else 
 { 
 this.categoriaRepositorio.alterar(usuario); 
 } 
 } 
 
 
 if(usuariologado == null) 
 { 
 
 request.getRequestDispatcher("Controller?command=LoginUsuario").forward(reque
st,response); 
 } 
 else 
 { 
 
 request.getRequestDispatcher("Controller?command=ListarUsuario").forward(requ
est,response); 
 } 
 
 
 } catch (IOException | ServletException | SQLException e) { 
 e.printStackTrace(); 
 } 
 
 } 
 
} 
 
package command.navegacao; 
 
import java.io.IOException; 
import java.sql.SQLException; 
import java.util.List; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import command.Command; 
import domain.Usuario; 
import repositorios.UsuarioRepositorio; 
 
public class ListarUsuario implements Command { 
 
 private UsuarioRepositorio usuarioRepositorio; 
 public ListarUsuario() { 
 if(usuarioRepositorio == null) 
 { 
 this.usuarioRepositorio = new 
infra.repositorios.UsuarioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response) 
{ 
 try { 
 
 List<Usuario> usuarios = 
this.usuarioRepositorio.listarConsulta(""); 
 
 request.setAttribute("usuarios", usuarios); 
 
 RequestDispatcher d = 
request.getRequestDispatcher("/Usuario/ListarUsuario.jsp"); 
 d.forward(request,response); 
 
 } catch (IOException | ServletException | SQLException e) { 
 e.printStackTrace(); 
 } 
 
 } 
 
} 
 
 
 
 
 
 
 
package command.navegacao; 
 
import java.io.IOException; 
import java.sql.SQLException; 
import java.util.Date; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import command.Command; 
import domain.Anunciante; 
import domain.Anuncio; 
import domain.Categoria; 
import repositorios.AnuncioRepositorio; 
 
public class SalvarAnuncio implements Command { 
 
 private AnuncioRepositorio anuncioRepositorio; 
 public SalvarAnuncio() { 
 if(anuncioRepositorio == null) 
 { 
 this.anuncioRepositorio = new 
infra.repositorios.AnuncioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response) 
{ 
 try { 
 boolean isNovo = true; 
 Categoria categoria = new Categoria(""); 
 Anunciante anunciante = new Anunciante("", "", "", "", ""); 
 categoria.setId(request.getParameter("categoriaId").toString()); 
 
 anunciante.setId(request.getParameter("anuncianteId").toString()); 
 
 Anuncio anuncio = new Anuncio(categoria, anunciante, new 
Date()); 
 
 
 if(!request.getParameter("isnew").equals("true")) 
 { 
 anuncio.setId(request.getParameter("id")); 
 isNovo = false; 
 } 
 
 
 if(isNovo) 
 { 
 this.anuncioRepositorio.inserir(anuncio); 
 } 
 else 
 { 
 this.anuncioRepositorio.alterar(anuncio); 
 } 
 
 
 RequestDispatcher d = 
request.getRequestDispatcher("Controller?command=ListarAnuncio"); 
 d.forward(request,response); 
 
 } catch (IOException | ServletException | SQLException e) { 
 e.printStackTrace(); 
 } 
 
 } 
 
} 
 
package command.navegacao; 
 
import java.io.IOException; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import command.Command; 
import domain.Anunciante; 
import domain.Anuncio; 
import domain.Categoria; 
import repositorios.AnuncioRepositorio; 
import repositorios.CategoriaRepositorio; 
 
public class ListarAnuncio implements Command { 
 
 private AnuncioRepositorio anuncioRepositorio; 
 public ListarAnuncio() { 
 if(anuncioRepositorio == null) 
 { 
 this.anuncioRepositorio = new 
infra.repositorios.AnuncioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response) 
{ 
 try { 
 List<Anuncio> anuncios = 
this.anuncioRepositorio.listarConsulta(""); 
 request.setAttribute("anuncios", anuncios); 
 RequestDispatcher d = 
request.getRequestDispatcher("/Anuncios/ListarAnuncio.jsp"); 
 d.forward(request,response); 
 
 } catch (IOException | ServletException | SQLException e) { 
 e.printStackTrace(); 
 } 
 } 
 
} 
package command.navegacao; 
 
import java.io.IOException; 
import java.sql.SQLException; 
import java.util.ArrayList;import java.util.Date; 
import java.util.List; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import command.Command; 
import domain.Anunciante; 
import domain.Anuncio; 
import domain.Categoria; 
import repositorios.AnuncianteRepositorio; 
import repositorios.AnuncioRepositorio; 
import repositorios.CategoriaRepositorio; 
 
public class EditarAnuncio implements Command { 
 
 private CategoriaRepositorio categoriaRepositorio; 
 private AnuncianteRepositorio anuncianteRepositorio; 
 private AnuncioRepositorio anuncioRepositorio; 
 
 public EditarAnuncio() { 
 if(categoriaRepositorio == null) 
 { 
 this.categoriaRepositorio = new 
infra.repositorios.CategoriaRepositorio(); 
 } 
 
 if(anuncianteRepositorio == null) 
 { 
 this.anuncianteRepositorio = new 
infra.repositorios.AnuncianteRepositorio(); 
 } 
 
 if(anuncioRepositorio == null) 
 { 
 this.anuncioRepositorio = new 
infra.repositorios.AnuncioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response) 
{ 
 try { 
 Anuncio anuncio = null; 
 
 if(request.getAttribute("id") != null) 
 { 
 anuncio = 
this.anuncioRepositorio.selecionarConsulta(request.getAttribute("id").toString()); 
 } 
 else 
 { 
 anuncio = new Anuncio(new Categoria(""), new 
Anunciante("", "", "", "", ""), new Date()); 
 } 
 List<Categoria> categorias = 
this.categoriaRepositorio.listarConsulta(""); 
 List<Anunciante> anunciantes = 
this.anuncianteRepositorio.listarConsulta(""); 
 
 request.setAttribute("categorias", categorias); 
 request.setAttribute("anunciantes", anunciantes); 
 request.setAttribute("anuncio", anuncio); 
 
 RequestDispatcher d = 
request.getRequestDispatcher("/Anuncios/EditarAnuncio.jsp"); 
 d.forward(request,response); 
 
 } catch (IOException | ServletException | SQLException e) { 
 e.printStackTrace(); 
 } 
 } 
 
} 
package command.navegacao; 
 
import java.io.IOException; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import command.Command; 
import domain.Anunciante; 
import domain.Anuncio; 
import domain.Categoria; 
import repositorios.AnuncioRepositorio; 
 
public class DeletarAnuncio implements Command { 
 
 private AnuncioRepositorio anuncioRepositorio; 
 public DeletarAnuncio() { 
 if(anuncioRepositorio == null) 
 { 
 this.anuncioRepositorio = new 
infra.repositorios.AnuncioRepositorio(); 
 } 
 } 
 
 @Override 
 public void execute(HttpServletRequest request, HttpServletResponse response) 
{ 
 try { 
 Anuncio anuncio = new Anuncio(new Categoria(""), new 
Anunciante("", "", "", "", ""), new Date()); 
 
 anuncio.setId(request.getParameter("id")); 
 
 this.anuncioRepositorio.excluir(anuncio); 
 
 RequestDispatcher d = 
request.getRequestDispatcher("Controller?command=ListarAnuncio"); 
 d.forward(request,response); 
 
 } catch (IOException | ServletException | SQLException e) { 
 e.printStackTrace(); 
 } 
 } 
 
}

Outros materiais