diff --git a/README.md b/README.md index 338e4406..6598460d 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,46 @@ -# Por que trabalhar na Contabilizei +# Minha solução para o Projeto de Pedidos -**Eleita a melhor startup B2B da América Latina em 2016, a Contabilizei** é um escritório de contabilidade online, líder de mercado, com sede em Curitiba (PR). Nosso propósito é resolver a dor e burocracia de micro e pequenas empresas ao se manterem regulares com o governo. Somos contadores, só que online, simples assim. Acreditamos no poder da tecnologia para melhorar continuamente a vida das pessoas. +Projeto desenvolvido para o processo seletivo da Contabilizei -Se você tem espírito e comportamento empreendedor, muita disposição e proatividade para trabalhar em uma empresa em franca expansão, você é um forte candidato :) +## Tecnologias utilizadas -Como Desenvolvedor Full-stack você irá atuar no desenvolvimento de soluções em arquitetura Java Web MVC com RestFul APis (JAX-RS), integrações com outros sistemas (SOAP, XML, JSON), banco de dados NoSQL e soluções escaláveis, participando de todo o processo de desenvolvimento, desde tomadas de decisões à codificação e testes. +- Back-End + * Java EE + * Jersey Framework + * Tomcat 8 + * MySQL -### O que fazem os Ninjas da Contabilizei? O que comem (e bebem)? Onde vivem? +- Front-End + * HTML5 + * Bootstrap ~3.3.7 + * JavaScript + * AngularJS ~1.5.8 -Somos um time de desenvolvimento ágil, focado em fazer as coisas acontecerem. Trabalhamos com Kanban, entregas contínuas, Git, Cloud, aplicações distribuídas e mais uma porrada de tecnologias novas... Queremos que nosso cliente tenha o produto e a experiência mais fodásticos do planeta. Gostamos de compartilhar ideias, testar tecnologias e de cerveja :) +## Estruturas de Pastas +- O projeto Back-End está localizado na pasta servico_rest +- A Single Page Application está localizada na pasta app_pedidoscontabilizei -# O trabalho por aqui +## Como executar o projeto -Que tal fazer parte de um time com atitude “get Fˆ%#ing things done”? Participar de uma das maiores disrupções no mercado? Ter a oportunidade de trabalhar com tecnologias e conceitos inovadores, como: -* Práticas ágeis como Kanban / Scrum -* Google Cloud Platform -* Escalabilidade -* Micro services e aplicações distribuídas -* Kubernetes -* Git -* AngularJs -* Material Design -* BDD +Foi desenvolvido um Maven Project no Eclipse utilizando Java 8 e como Server Runtime o Tomcat 8, +assim que você importar o projeto para a IDE, o adicione ao Tomcat e execute o comando Maven Update Project +para atualização das dependêcias. -Mais informações sobre a vaga você encontra aqui: [Desenvolvedor Full Stack Java na Contabilizei](https://jobs.lever.co/contabilizei/826c32bd-d800-475a-9f05-531e86dc4ea3) +Crie uma banco de dados no MySQL com o nome "pedidoscontabilizei" e altere os dados de acesso ao MySQL no arquivo +META-INF/persistence.xml dentro da pasta resources do projeto. -# O que preciso fazer? +Certifique que o Tomcat esteja sendo executado na porta padrão 8080, pois todos as requisições da Single Page +estão sendo executadas nessa porta. -Vamos ser práticos e diretos, se você quer trabalhar conosco siga os passos abaixo: +No desenvolvimento da Single Page Application, foi utilizado o NPM como gerenciador de pacotes após clonar o +projeto execute ```npm install [opcional --save]``` para baixar suas dependências. -* Faça um "fork" desse projeto para sua conta GitHub. -* Implemente o desafio descrito no tópico abaixo. -* Faça um push para seu repositório com o desafio implementado. -* Envie um email para (souninja@contabilizei.com.br) avisando que finalizou o desafio com a url do seu fork. -* Cruze os dedos e aguarde nosso contato. +Para evitar problemas com Access-Control-Allow-Origin dos Browsers, o projeto deve ser executado em cima de um +simples servidor HTTP local, pode ser o do ```node http-server``` que é instalado através +```npm install http-server -g``` ou o do Python caso tenha instalado na máquina. -# O desafio (CRUD de pedidos) +Exemplos de como executar a SPA, dentro da pasta app_pedidoscontabilizei execute: -Você deverá criar 2 aplicações para cadastramento de pedidos de venda: - -**Back-end:** aplicação JavaEE baseada em Web Services no padrão RESTful JAX-RS. - -**Front-end:** Single Page Application que se comunique com estes serviços. - -A aplicação Back-end dever ter, ao menos, serviços para: inclusão, alteração, exclusão e listagem dos pedidos. - -Pedidos deverão conter: -* número -* data de emissão -* cliente -* lista de produtos -* valor total - -Cada produto do pedido deve ter: -* código -* descrição -* quantidade -* valor unitário - -No pedido, deve constar as seguintes informações do cliente: -* cpf ou cnpj -* nome ou razão social -* telefone -* e-mail - -### Tecnologias - -Escolha umas das opções abaixo para implementar sua solução. A modelagem dos dados fica a seu critério. Não se preocupe com autenticação ou multitenancy. - -#### Back-end - -**Opção 1** - -* Aplicação JavaEE utilizando framework [**Google App Engine para Java**](https://cloud.google.com/appengine/) -* Banco de dados NOSQL [Datastore](https://cloud.google.com/datastore/) -* RESTFul API com [Google Endpoints](https://cloud.google.com/appengine/docs/java/endpoints/) ou Jersey JAX-RS - -**Opção 2** - -* Aplicação pura Java EE (não utilize Spring, Struts, EJB, etc) -* RESTful API JAX-RS utilizando Servlets ou framework Jersey -* Banco de dados SQL (MySQL, PostgreSQL, HSQLDB) com JPA ou NOSQL(MongoDB, Cassandra) - -#### Front-end - -* Single Page Application utilizando apenas HTML5 e CSS3 -* Javascript puro / JQuery (e plugins) -* AngularJS 1.x (será diferencial) -* Bootstrap (http://getbootstrap.com/) ou Angular Material Design (será diferencial) - -### Arquitetura e documentação - -No arquivo README do projeto explique o funcionamento e a arquitetura da solução adotada na sua implementação. Descreva também os passos para executar corretamente seu projeto. - -### Avaliação - -Entre os critérios de avaliação estão: - -* Facilidade de configuração do projeto -* Performance -* Código limpo e organização -* Documentação de código -* Documentação do projeto (readme) -* Arquitetura -* Boas práticas de desenvolvimento -* Design Patterns - -# Sobre você - -Queremos saber um pouco mais sobre você também :) Por favor, responda o questionário do arquivo [questions.md](questions.md) e envie junto com seu projeto. +- Utilizando Python: ```python -m http.server 8888``` +- Utilizando node: ```http-server -p 8888``` diff --git a/app_pedidoscontabilizei/app/app.js b/app_pedidoscontabilizei/app/app.js new file mode 100644 index 00000000..9c885084 --- /dev/null +++ b/app_pedidoscontabilizei/app/app.js @@ -0,0 +1,5 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app', []); +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/controllers/clientes_controller.js b/app_pedidoscontabilizei/app/controllers/clientes_controller.js new file mode 100644 index 00000000..60c3bc47 --- /dev/null +++ b/app_pedidoscontabilizei/app/controllers/clientes_controller.js @@ -0,0 +1,84 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').controller('clientesController', clientesController); + + clientesController.$inject = ['clienteAPI', '$scope']; + + function clientesController(clienteAPI, $scope, $uibModal) { + $scope.clientes = []; + $scope.cliente; + $scope.escondeAdicionar = false; + + $scope.buscaTodos = function () { + buscarTodos(); + } + + $scope.carregarFormulario = function (documento) { + clienteAPI.buscaPorCPF(documento).success(function (data) { + $scope.cliente = data; + $scope.escondeAdicionar = true; + + $('#documentoCliente').attr('readonly', 'documentoCliente'); + }); + } + + $scope.inserir = function (cliente) { + clienteAPI.inserir(cliente).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.alterar = function (cliente) { + clienteAPI.alterar(cliente).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.excluir = function (cpf) { + clienteAPI.excluir(cpf).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.cancelar = function () { + limparDados(); + } + + function buscarTodos() { + clienteAPI.buscaTodos().success(function (result) { + $scope.clientes = result; + }); + } + + function limparDados() { + $scope.cliente = null; + $scope.escondeAdicionar = false; + + resetCliente(); + buscarTodos(); + } + + function resetCliente() { + $('#nomRazaoSocial').val(''); + $('#cpfCnpj').val(''); + $('#telefone').val(''); + $('#telefone').val(''); + $('#documentoCliente').removeAttr('readonly', 'documentoCliente'); + } + + function mostraErro(data) { + alert("Infelizmente ocorreu um erro. Verifique seus dados e tente novamente mais tarde"); + } + } + +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/controllers/pedidos_controller.js b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js new file mode 100644 index 00000000..92360266 --- /dev/null +++ b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js @@ -0,0 +1,172 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').controller('pedidosController', pedidosController); + + pedidosController.$inject = ['pedidoAPI', 'clienteAPI', 'produtoAPI', '$scope']; + + function pedidosController(pedidoAPI, clienteAPI, produtoAPI, $scope) { + $scope.pedido; + $scope.pedidos = []; + $scope.clientes = []; + $scope.produto = []; + $scope.produtosPedido = []; + $scope.codigoProdutos = []; + $scope.escondeAdicionar = false; + + $scope.buscaTodos = function () { + buscaDadosIniciais(); + } + + $scope.carregarFormulario = function (codigo) { + resetPedidos(); + + pedidoAPI.buscaPorCodigo(codigo).success(function (data) { + $scope.pedido = data; + $scope.escondeAdicionar = true; + let tamanho = data.codigoProdutos.length; + + for (var i = 0; i < tamanho; i++) { + var obj = new Object(); + obj.codigo = data.codigoProdutos[i]; + obj.descricao = data.descricaoProdutos[i]; + obj.valorUnitario = data.valorUnitarioProdutos[i]; + + $scope.codigoProdutos.push(obj.codigo); + $scope.produtosPedido.push(obj); + } + }) + } + + $scope.inserir = function (pedido) { + if (pedido === undefined) { + alert("Ops! Os dados do seu pedido são inválidos!"); + } + + pedido.codigoProdutos = $scope.codigoProdutos; + + pedidoAPI.inserir(pedido).success(function (data) { + limpaDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.alterar = function (pedido) { + pedido.codigoProdutos = $scope.codigoProdutos; + + pedidoAPI.alterar(pedido).success(function (data) { + limpaDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.excluir = function (numero) { + pedidoAPI.excluir(numero).success(function (data) { + limpaDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.adicionarProduto = function (produto) { + if (produto === undefined) { + return; + } + + let existente = $scope.produtosPedido.some(function (arg) { + return arg.codigo == produto.codigo; + }) + + if (existente) { + alert("Produto já adicionado!") + return false; + } + + $scope.codigoProdutos.push(produto.codigo); + $scope.produtosPedido.push(produto); + + calculaTotal(); + } + + $scope.removerProduto = function (codigo) { + var novosCodigos = $scope.codigoProdutos.filter(function (param) { + return param != codigo; + }); + $scope.codigoProdutos = []; + + var novosProdutos = $scope.produtosPedido.filter(function (param) { + return param.codigo != codigo; + }); + $scope.produtosPedido = []; + + $scope.codigoProdutos = novosCodigos; + $scope.produtosPedido = novosProdutos; + + calculaTotal(); + } + + $scope.cancelar = function () { + resetPedidos(); + } + + function calculaTotal() { + var total = $scope.produtosPedido.reduce(function (result, prod) { + return result + prod.valorUnitario; + }, 0); + + $scope.pedido.valorTotal = parseFloat(total.toFixed(2)); + } + + function buscaDadosIniciais() { + $scope.pedidos = []; + $scope.produtos = []; + $scope.clientes = []; + + pedidoAPI.buscaTodos().success(function (data) { + $scope.pedidos = data; + }) + .error(function (data) { + console.log(data); + }); + + clienteAPI.buscaTodos().success(function (data) { + $scope.clientes = data; + }) + .error(function (data) { + console.log(data); + }); + + produtoAPI.buscaTodos().success(function (data) { + $scope.produtos = data; + }) + .error(function (data) { + console.log(data); + }); + } + + function limpaDados() { + $scope.pedido = null; + $scope.escondeAdicionar = false; + + resetPedidos(); + buscaDadosIniciais(); + } + + function resetPedidos(argument) { + $('select').val(''); + $('#valorUnitario').val(''); + + $scope.produtosPedido = []; + $scope.codigoProdutos = []; + } + + function mostraErro(data) { + alert("Infelizmente ocorreu um erro. Verifique seus dados e tente novamente mais tarde"); + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/controllers/produtos_controller.js b/app_pedidoscontabilizei/app/controllers/produtos_controller.js new file mode 100644 index 00000000..48d7bdca --- /dev/null +++ b/app_pedidoscontabilizei/app/controllers/produtos_controller.js @@ -0,0 +1,83 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').controller('produtosController', produtosController); + + produtosController.$inject = ['produtoAPI', '$scope']; + + function produtosController(produtoAPI, $scope) { + $scope.produtos = []; + $scope.produto; + $scope.escondeAdicionar = false; + + $scope.buscaTodos = function () { + buscarTodos(); + } + + $scope.carregarFormulario = function (codigo) { + produtoAPI.buscaPorCodigo(codigo).success(function (data) { + $scope.produto = data; + $scope.escondeAdicionar = true; + }); + } + + $scope.inserir = function (produto) { + produto.valorUnitario = produto.valorUnitario.replace(',', '.'); + + produtoAPI.inserir(produto).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.alterar = function (produto) { + produto.valorUnitario = produto.valorUnitario.replace(',', '.'); + + produtoAPI.alterar(produto).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.excluir = function (codigo) { + produtoAPI.excluir(codigo).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.cancelar = function (argument) { + limparDados(); + } + + function buscarTodos() { + produtoAPI.buscaTodos().success(function (data) { + $scope.produtos = data; + }); + } + + function limparDados(argument) { + $scope.produto = null; + $scope.escondeAdicionar = false; + + resetProdutos(); + buscarTodos(); + } + + function resetProdutos() { + $('#descricao').val(''); + $('#quantidade').val(''); + $('#valorUnitario').val(''); + } + + function mostraErro(data) { + alert("Infelizmente ocorreu um erro. Verifique seus dados e tente novamente mais tarde"); + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/services/clientes_service.js b/app_pedidoscontabilizei/app/services/clientes_service.js new file mode 100644 index 00000000..33885706 --- /dev/null +++ b/app_pedidoscontabilizei/app/services/clientes_service.js @@ -0,0 +1,39 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').factory('clienteAPI', clienteAPI); + + clienteAPI.$inject = ['$http']; + + function clienteAPI($http) { + var _buscaTodos = function () { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/clientes'); + } + + var _inserir = function (cliente) { + return $http.post('http://localhost:8080/pedidoscontabilizei/rest/clientes', cliente); + } + + + var _alterar = function (cliente) { + return $http.put('http://localhost:8080/pedidoscontabilizei/rest/clientes', cliente); + } + + var _excluir = function (cpf) { + return $http.delete('http://localhost:8080/pedidoscontabilizei/rest/clientes/' + cpf); + } + + var _buscaPorCPF = function (cpf) { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/clientes/' + cpf); + } + + return { + buscaTodos : _buscaTodos, + buscaPorCPF : _buscaPorCPF, + inserir : _inserir, + alterar : _alterar, + excluir : _excluir + } + } + +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/services/pedidos_service.js b/app_pedidoscontabilizei/app/services/pedidos_service.js new file mode 100644 index 00000000..aefd2af9 --- /dev/null +++ b/app_pedidoscontabilizei/app/services/pedidos_service.js @@ -0,0 +1,37 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').factory('pedidoAPI', pedidoAPI); + + pedidoAPI.$inject = ['$http']; + + function pedidoAPI($http) { + var _buscaTodos = function () { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/pedidos'); + } + + var _buscaPorCodigo = function (codigo) { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/pedidos/' + codigo); + } + + var _inserir = function (pedido) { + return $http.post('http://localhost:8080/pedidoscontabilizei/rest/pedidos', pedido); + } + + var _alterar = function (pedido) { + return $http.put('http://localhost:8080/pedidoscontabilizei/rest/pedidos', pedido); + } + + var _excluir = function (codigo) { + return $http.delete('http://localhost:8080/pedidoscontabilizei/rest/pedidos/' + codigo); + } + + return { + buscaTodos : _buscaTodos, + buscaPorCodigo : _buscaPorCodigo, + inserir : _inserir, + alterar : _alterar, + excluir : _excluir + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/services/produtos_service.js b/app_pedidoscontabilizei/app/services/produtos_service.js new file mode 100644 index 00000000..c57770bf --- /dev/null +++ b/app_pedidoscontabilizei/app/services/produtos_service.js @@ -0,0 +1,37 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').factory('produtoAPI', produtoAPI); + + produtoAPI.$inject = ["$http"]; + + function produtoAPI($http) { + var _buscaTodos = function () { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/produtos'); + } + + var _buscaPorCodigo = function (codigo) { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/produtos/' + codigo); + } + + var _inserir = function (produto) { + return $http.post('http://localhost:8080/pedidoscontabilizei/rest/produtos', produto); + } + + var _alterar = function (produto) { + return $http.put('http://localhost:8080/pedidoscontabilizei/rest/produtos', produto); + } + + var _excluir = function (codigo) { + return $http.delete('http://localhost:8080/pedidoscontabilizei/rest/produtos/' + codigo); + } + + return { + buscaTodos : _buscaTodos, + buscaPorCodigo : _buscaPorCodigo, + inserir : _inserir, + alterar : _alterar, + excluir : _excluir + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/assets/css/index.css b/app_pedidoscontabilizei/assets/css/index.css new file mode 100644 index 00000000..be19f0cb --- /dev/null +++ b/app_pedidoscontabilizei/assets/css/index.css @@ -0,0 +1,3 @@ +table.table { + margin-top: 3%; +} \ No newline at end of file diff --git a/app_pedidoscontabilizei/assets/js/index.js b/app_pedidoscontabilizei/assets/js/index.js new file mode 100644 index 00000000..11c5c8cd --- /dev/null +++ b/app_pedidoscontabilizei/assets/js/index.js @@ -0,0 +1,31 @@ +function escondeElementos(texto) { + if (texto === 'Pedidos') { + $('#pedidos').show(); + $('#clientes').hide(); + $('#produtos').hide(); + } + + if (texto === 'Clientes') { + $('#clientes').show(); + $('#pedidos').hide(); + $('#produtos').hide(); + } + + if (texto === 'Produtos') { + $('#produtos').show(); + $('#clientes').hide(); + $('#pedidos').hide(); + } +} + +$(function() { + $('.tab-section').on('click', function () { + var texto = $(this).text(); + escondeElementos(texto); + }); + + $('.selectpicker').selectpicker({ + style: 'btn-info', + size: 5 + }); +}); \ No newline at end of file diff --git a/app_pedidoscontabilizei/index.html b/app_pedidoscontabilizei/index.html new file mode 100644 index 00000000..0ba4af3e --- /dev/null +++ b/app_pedidoscontabilizei/index.html @@ -0,0 +1,54 @@ + + + + + Pedidos Contabilizei + + + + + + +
+
+
+ +
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/app_pedidoscontabilizei/package.json b/app_pedidoscontabilizei/package.json new file mode 100644 index 00000000..76473fb1 --- /dev/null +++ b/app_pedidoscontabilizei/package.json @@ -0,0 +1,18 @@ +{ + "name": "app_pedidoscontabilizei", + "version": "1.0.0", + "description": "App de pedidos para o processo de seleção da Contabilizei", + "main": "index.html", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Luiz Gustavo Caciatori", + "license": "MIT", + "dependencies": { + "angular": "^1.5.8", + "angular-ui-bootstrap": "^2.0.1", + "bootstrap": "^3.3.7", + "bootstrap-select": "^1.10.0", + "jquery": "^3.1.0" + } +} diff --git a/app_pedidoscontabilizei/views/clientes/listar.html b/app_pedidoscontabilizei/views/clientes/listar.html new file mode 100644 index 00000000..dc40781d --- /dev/null +++ b/app_pedidoscontabilizei/views/clientes/listar.html @@ -0,0 +1,70 @@ + \ No newline at end of file diff --git a/app_pedidoscontabilizei/views/pedidos/listar.html b/app_pedidoscontabilizei/views/pedidos/listar.html new file mode 100644 index 00000000..2f8e9147 --- /dev/null +++ b/app_pedidoscontabilizei/views/pedidos/listar.html @@ -0,0 +1,98 @@ +
+

+ +

+ +
+
Cadatro de Pedidos
+
+
+ + + +
+ + +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + +
CódigoDescriçãoValor UnitárioExcluir Produto
{{ produtoPedido.codigo }}{{ produtoPedido.descricao }}{{ produtoPedido.valorUnitario}} + +
+
+ +
+ + +
+ + + + +
+
+
+ + + + + + + + + + + + + + + + +
Nº PedidoClienteValor TotalAções
{{ pedido.numero }}{{ pedido.nomeCliente }}{{ pedido.valorTotal | currency:"R$ " }} + + +
+
\ No newline at end of file diff --git a/app_pedidoscontabilizei/views/produtos/listar.html b/app_pedidoscontabilizei/views/produtos/listar.html new file mode 100644 index 00000000..2ca30c80 --- /dev/null +++ b/app_pedidoscontabilizei/views/produtos/listar.html @@ -0,0 +1,66 @@ + \ No newline at end of file diff --git a/questions.md b/questions.md deleted file mode 100644 index 59818eb0..00000000 --- a/questions.md +++ /dev/null @@ -1,12 +0,0 @@ - -## Fale um pouco sobre você :) - -### 1) Por que se interessou pela oportunidade? - -### 2) O que espera da Contabilizei? - -### 3) O que você considera como seu principal diferencial? - -### 4) Cite 2 dos principais desafios e projetos da sua carreira. Descreva a importância da sua participação, como você fez a diferença, os resultados que alcançou com a equipe/empresa. - -### 5) Adicione aqui links para seu perfil profissional (Linkedin, por exemplo): diff --git a/servico_rest/.classpath b/servico_rest/.classpath new file mode 100644 index 00000000..64e1c21c --- /dev/null +++ b/servico_rest/.classpath @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/servico_rest/.project b/servico_rest/.project new file mode 100644 index 00000000..fe8392d4 --- /dev/null +++ b/servico_rest/.project @@ -0,0 +1,37 @@ + + + pedidoscontabilizei + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/servico_rest/.settings/.jsdtscope b/servico_rest/.settings/.jsdtscope new file mode 100644 index 00000000..24181231 --- /dev/null +++ b/servico_rest/.settings/.jsdtscope @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.core.resources.prefs b/servico_rest/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..839d647e --- /dev/null +++ b/servico_rest/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/servico_rest/.settings/org.eclipse.jdt.core.prefs b/servico_rest/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..6e80039d --- /dev/null +++ b/servico_rest/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/servico_rest/.settings/org.eclipse.jpt.core.prefs b/servico_rest/.settings/org.eclipse.jpt.core.prefs new file mode 100644 index 00000000..7f6edff2 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.jpt.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.jpt.core.platform=generic2_0 +org.eclipse.jpt.jpa.core.discoverAnnotatedClasses=true diff --git a/servico_rest/.settings/org.eclipse.m2e.core.prefs b/servico_rest/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 00000000..f897a7f1 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/servico_rest/.settings/org.eclipse.wst.common.component b/servico_rest/.settings/org.eclipse.wst.common.component new file mode 100644 index 00000000..68fdbae6 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.common.component @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml new file mode 100644 index 00000000..1f540442 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.xml b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..fb0121d6 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.container b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 00000000..3bd5d0a4 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.name b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 00000000..05bd71b6 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/servico_rest/.settings/org.eclipse.wst.validation.prefs b/servico_rest/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 00000000..04cad8cb --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/servico_rest/pom.xml b/servico_rest/pom.xml new file mode 100644 index 00000000..db1050db --- /dev/null +++ b/servico_rest/pom.xml @@ -0,0 +1,107 @@ + + 4.0.0 + br.com + pedidoscontabilizei + war + 0.0.1-SNAPSHOT + pedidoscontabilizei Maven Webapp + http://maven.apache.org + + + + + snapshot-repository.java.net + Java.net Snapshot Repository for Maven + https://maven.java.net/content/repositories/snapshots/ + default + + + + + 2.22.1 + UTF-8 + + + + + + org.glassfish.jersey + jersey-bom + ${jersey.version} + pom + import + + + + + + + javax.servlet + servlet-api + 2.4 + + + + org.glassfish.jersey.ext + jersey-mvc-jsp + + + + javax.servlet + jstl + 1.2 + + + + org.glassfish.jersey.containers + jersey-container-servlet-core + + + + javax.ws.rs + javax.ws.rs-api + 2.0.1 + + + + org.glassfish.jersey.media + jersey-media-moxy + 2.22.2 + + + + org.hibernate + hibernate-core + 5.1.0.Final + + + + org.hibernate + hibernate-entitymanager + 5.1.0.Final + + + + + mysql + mysql-connector-java + 5.1.38 + + + + + + + pedidoscontabilizei + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + + diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ClienteDao.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ClienteDao.java new file mode 100644 index 00000000..8ab285ad --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ClienteDao.java @@ -0,0 +1,13 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; + +import br.com.pedidoscontabilizei.modelos.Cliente; + +public class ClienteDao extends DaoGenerico { + + public ClienteDao(EntityManager entityManager) { + super(entityManager); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/DaoGenerico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/DaoGenerico.java new file mode 100644 index 00000000..5ca84017 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/DaoGenerico.java @@ -0,0 +1,48 @@ +package br.com.pedidoscontabilizei.dao; + +import java.lang.reflect.ParameterizedType; +import java.util.List; + +import javax.persistence.EntityManager; + +public class DaoGenerico { + + protected EntityManager entityManager = null; + + public DaoGenerico(EntityManager entityManager) { + this.entityManager = entityManager; + } + + public T buscaPeloId(PK id) { + return (T) entityManager.find(getTypeClass(), id); + } + + public List buscaTodos() { + return entityManager.createQuery(("SELECT e FROM " + getTypeClass().getSimpleName() + " e")).getResultList(); + } + + public void inserir(T entidade) { + entityManager.getTransaction().begin(); + entityManager.persist(entidade); + entityManager.getTransaction().commit(); + } + + public void alterar(T entidade) { + entityManager.getTransaction().begin(); + entityManager.merge(entidade); + entityManager.getTransaction().commit(); + } + + public void deletar(T entidade) { + entityManager.getTransaction().begin(); + entityManager.remove(entidade); + entityManager.getTransaction().commit(); + } + + private Class getTypeClass() { + Class clazz = (Class) ((ParameterizedType) this.getClass() + .getGenericSuperclass()).getActualTypeArguments()[1]; + return clazz; + } +} + diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/EMF.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/EMF.java new file mode 100644 index 00000000..6afa88e2 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/EMF.java @@ -0,0 +1,27 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +public class EMF { + + private static EntityManagerFactory emf; + + public EMF() { + emf = Persistence.createEntityManagerFactory("PedidosContabilizeiPU"); + } + + public EntityManager createEntityManager() { + if (emf == null) { + throw new IllegalStateException("Contexto não foi incializado."); + } + + return emf.createEntityManager(); + } + + public void closeConnection() { + emf.close(); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/PedidoDao.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/PedidoDao.java new file mode 100644 index 00000000..1681c047 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/PedidoDao.java @@ -0,0 +1,13 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; + +import br.com.pedidoscontabilizei.modelos.Pedido; + +public class PedidoDao extends DaoGenerico { + + public PedidoDao(EntityManager entityManager) { + super(entityManager); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ProdutoDao.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ProdutoDao.java new file mode 100644 index 00000000..df560d7d --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ProdutoDao.java @@ -0,0 +1,12 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; + +import br.com.pedidoscontabilizei.modelos.Produto; + +public class ProdutoDao extends DaoGenerico { + + public ProdutoDao(EntityManager entityManager) { + super(entityManager); + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java new file mode 100644 index 00000000..0285e5df --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java @@ -0,0 +1,47 @@ +package br.com.pedidoscontabilizei.dto; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ClienteDTO { + + private String documentoCliente; + private String nomRazaoSocial; + private String telefone; + private String email; + + public ClienteDTO() { + } + + public String getDocumentoCliente() { + return documentoCliente; + } + + public void setDocumentoCliente(String cpfCnpj) { + this.documentoCliente = cpfCnpj; + } + + public String getNomRazaoSocial() { + return nomRazaoSocial; + } + + public void setNomRazaoSocial(String nomRazaoSocial) { + this.nomRazaoSocial = nomRazaoSocial; + } + + public String getTelefone() { + return telefone; + } + + public void setTelefone(String telefone) { + this.telefone = telefone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/PedidoDTO.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/PedidoDTO.java new file mode 100644 index 00000000..06b51b68 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/PedidoDTO.java @@ -0,0 +1,127 @@ +package br.com.pedidoscontabilizei.dto; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class PedidoDTO { + + private Long numero; + private String documentoCliente; + private String nomeCliente; + private List descricaoProdutos; + private List codigoProdutos; + private List valorUnitarioProdutos; + private BigDecimal valorTotal; + private Calendar emissao; + + private List produtos; + + public PedidoDTO() { } + + public Long getNumero() { + return numero; + } + + public void setNumero(Long numero) { + this.numero = numero; + } + + public String getDocumentoCliente() { + return documentoCliente; + } + + public void setDocumentoCliente(String documentoCliente) { + this.documentoCliente = documentoCliente; + } + + public String getNomeCliente() { + return nomeCliente; + } + + public void setNomeCliente(String nomeCliente) { + this.nomeCliente = nomeCliente; + } + + public List getDescricaoProdutos() { + return descricaoProdutos; + } + + public void setDescricaoProdutos(List descricaoProdutos) { + this.descricaoProdutos = descricaoProdutos; + } + + public List getCodigoProdutos() { + return codigoProdutos; + } + + public void setCodigoProdutos(List codigoProdutos) { + this.codigoProdutos = codigoProdutos; + } + + public List getValorUnitarioProdutos() { + return valorUnitarioProdutos; + } + + public void setValorUnitarioProdutos(List valorUnitarioProdutos) { + this.valorUnitarioProdutos = valorUnitarioProdutos; + } + + public BigDecimal getValorTotal() { + return valorTotal; + } + + public void setValorTotal(BigDecimal valorTotal) { + this.valorTotal = valorTotal; + } + + public List getProdutos() { + return produtos; + } + + public void setProdutos(List produtos) { + this.produtos = produtos; + } + + public Calendar getEmissao() { + return emissao; + } + + public void setEmissao(Calendar emissao) { + this.emissao = emissao; + } + + public void addDescricaoProduto(String descricao) { + if (this.descricaoProdutos == null) { + this.descricaoProdutos = new ArrayList(); + } + + if (descricao != null || descricao.trim().length() > 0) { + this.descricaoProdutos.add(descricao); + } + } + + public void addCodigoProduto(Long codigoProduto) { + if (this.codigoProdutos == null) { + this.codigoProdutos = new ArrayList(); + } + + if (codigoProduto > 0) { + this.codigoProdutos.add(codigoProduto); + } + } + + public void addValorUnitarioProduto(BigDecimal valor) { + if (this.valorUnitarioProdutos == null) { + this.valorUnitarioProdutos = new ArrayList(); + } + + if (valor.compareTo(BigDecimal.ZERO) > 0) { + this.valorUnitarioProdutos.add(valor); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ProdutoDTO.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ProdutoDTO.java new file mode 100644 index 00000000..7c823b34 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ProdutoDTO.java @@ -0,0 +1,49 @@ +package br.com.pedidoscontabilizei.dto; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ProdutoDTO { + + private Long codigo; + private String descricao; + private BigDecimal quantidade; + private BigDecimal valorUnitario; + + public ProdutoDTO() { + } + + public Long getCodigo() { + return codigo; + } + + public void setCodigo(Long codigo) { + this.codigo = codigo; + } + + public String getDescricao() { + return descricao; + } + + public void setDescricao(String descricao) { + this.descricao = descricao; + } + + public BigDecimal getQuantidade() { + return quantidade; + } + + public void setQuantidade(BigDecimal quantidade) { + this.quantidade = quantidade; + } + + public BigDecimal getValorUnitario() { + return valorUnitario; + } + + public void setValorUnitario(BigDecimal valorUnitario) { + this.valorUnitario = valorUnitario; + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Cliente.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Cliente.java new file mode 100644 index 00000000..97c91fd3 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Cliente.java @@ -0,0 +1,87 @@ +package br.com.pedidoscontabilizei.modelos; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlRootElement; + +@Entity +@Table(name = "clientes") +@XmlRootElement +public class Cliente { + + @Id + @Column(length = 18) + private String cpfCnpj; + + @Column(nullable = false, length = 80) + private String nomRazaoSocial; + + @Column(nullable = false, length = 14) + private String telefone; + + @Column(nullable = false, length = 80) + private String email; + + @OneToMany(mappedBy = "cliente", cascade = CascadeType.ALL, fetch=FetchType.LAZY) + private List pedidos; + + public Cliente() { } + + public String getCpfCnpj() { + return cpfCnpj; + } + + public void setCpfCnpj(String cpfCnpj) { + this.cpfCnpj = cpfCnpj; + } + + public String getNomRazaoSocial() { + return nomRazaoSocial; + } + + public void setNomRazaoSocial(String nomRazaoSocial) { + this.nomRazaoSocial = nomRazaoSocial; + } + + public String getTelefone() { + return telefone; + } + + public void setTelefone(String telefone) { + this.telefone = telefone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public List getPedidos() { + return pedidos; + } + + public void setPedidos(List pedidos) { + this.pedidos = pedidos; + } + + public void addPedido(Pedido pedido) { + if (pedidos == null) { + this.pedidos = new ArrayList(); + } + + if (pedido != null) { + this.pedidos.add(pedido); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Pedido.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Pedido.java new file mode 100644 index 00000000..e914520b --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Pedido.java @@ -0,0 +1,97 @@ +package br.com.pedidoscontabilizei.modelos; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.xml.bind.annotation.XmlRootElement; + + +@Entity +@Table(name="pedidos") +@XmlRootElement +public class Pedido { + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private Long numero; + + @Column(nullable=false) + @Temporal(TemporalType.DATE) + private Calendar emissao; + + @Column(nullable=false, precision=18, scale=2, columnDefinition="DECIMAL(10,2)") + private BigDecimal valorTotal; + + @ManyToOne(fetch=FetchType.EAGER) + //@JsonBackReference + private Cliente cliente; + + @ManyToMany(fetch=FetchType.EAGER) + //@JsonManagedReference + private List produtos; + + public Pedido() { } + + public Long getNumero() { + return numero; + } + + public void setNumero(Long numero) { + this.numero = numero; + } + + public Calendar getEmissao() { + return emissao; + } + + public void setEmissao(Calendar emissao) { + this.emissao = emissao; + } + + public BigDecimal getValorTotal() { + return valorTotal; + } + + public void setValorTotal(BigDecimal valorTotal) { + this.valorTotal = valorTotal; + } + + public Cliente getCliente() { + return cliente; + } + + public void setCliente(Cliente cliente) { + this.cliente = cliente; + } + + public List getProdutos() { + return produtos; + } + + public void setProdutos(List produtos) { + this.produtos = produtos; + } + + public void addProduto(Produto produto) { + if (this.produtos == null) { + this.produtos = new ArrayList(); + } + + if (produto != null) { + this.produtos.add(produto); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Produto.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Produto.java new file mode 100644 index 00000000..c72a3322 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Produto.java @@ -0,0 +1,89 @@ +package br.com.pedidoscontabilizei.modelos; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlRootElement; + +@Entity +@Table(name="produtos") +@XmlRootElement +public class Produto { + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private Long codigo; + + @Column(nullable=false, length=100) + private String descricao; + + @Column(nullable=false, precision=18, scale=2, columnDefinition="DECIMAL(10,2)") + private BigDecimal quantidade; + + @Column(nullable=false, precision=18, scale=2, columnDefinition="DECIMAL(10,2)") + private BigDecimal valorUnitario; + + @ManyToMany(mappedBy="produtos", fetch=FetchType.LAZY) + private List pedidos; + + public Produto() {} + + public Long getCodigo() { + return codigo; + } + + public void setCodigo(Long codigo) { + this.codigo = codigo; + } + + public String getDescricao() { + return descricao; + } + + public void setDescricao(String descricao) { + this.descricao = descricao; + } + + public BigDecimal getQuantidade() { + return quantidade; + } + + public void setQuantidade(BigDecimal quantidade) { + this.quantidade = quantidade; + } + + public BigDecimal getValorUnitario() { + return valorUnitario; + } + + public void setValorUnitario(BigDecimal valorUnitario) { + this.valorUnitario = valorUnitario; + } + + public List getPedidos() { + return pedidos; + } + + public void setPedidos(List pedidos) { + this.pedidos = pedidos; + } + + public void addPedido(Pedido pedido){ + if (this.pedidos == null) { + this.pedidos = new ArrayList(); + } + + if (pedido != null) { + this.pedidos.add(pedido); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ClientesResource.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ClientesResource.java new file mode 100644 index 00000000..7b51daa2 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ClientesResource.java @@ -0,0 +1,97 @@ +package br.com.pedidoscontabilizei.resources; + +import java.util.List; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import br.com.pedidoscontabilizei.dto.ClienteDTO; +import br.com.pedidoscontabilizei.servicos.ClienteServico; + +@Path("/clientes") +public class ClientesResource { + private ClienteServico clienteServico; + + public ClientesResource() { + clienteServico = new ClienteServico(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response inserir(ClienteDTO cliente) { + try { + + clienteServico.inserir(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response alterar(ClienteDTO cliente) { + try { + clienteServico.alterar(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @DELETE + @Path("{cpf}") + @Produces(MediaType.APPLICATION_JSON) + public Response excluir(@PathParam("cpf") String cpf) { + try { + boolean sucesso = clienteServico.remover(cpf); + + if (!sucesso) { + throw new WebApplicationException(404); + } + + return Response.ok().build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public List buscarTodos() { + try { + return clienteServico.buscaTodosClientes(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Path("{cpf}") + @Produces(MediaType.APPLICATION_JSON) + public ClienteDTO buscarPorCodigo(@PathParam("cpf") String cpf) { + try { + return clienteServico.buscaClientePorDocumento(cpf); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/CorsFilter.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/CorsFilter.java new file mode 100644 index 00000000..265c8a0c --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/CorsFilter.java @@ -0,0 +1,23 @@ +package br.com.pedidoscontabilizei.resources; + +import java.io.IOException; + +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerResponseContext; +import javax.ws.rs.container.ContainerResponseFilter; +import javax.ws.rs.ext.Provider; + +@Provider +public class CorsFilter implements ContainerResponseFilter { + + @Override + public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) + throws IOException { + responseContext.getHeaders().add("Access-Control-Allow-Origin", "*"); + responseContext.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization"); + responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true"); + responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); + responseContext.getHeaders().add("Access-Control-Max-Age", "1209600"); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/PedidosResource.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/PedidosResource.java new file mode 100644 index 00000000..ced5c834 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/PedidosResource.java @@ -0,0 +1,98 @@ +package br.com.pedidoscontabilizei.resources; + +import java.util.List; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import br.com.pedidoscontabilizei.dto.PedidoDTO; +import br.com.pedidoscontabilizei.servicos.PedidoServico; + +@Path("/pedidos") +public class PedidosResource { + + private PedidoServico pedidoServico; + + public PedidosResource() { + pedidoServico = new PedidoServico(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response inserir(PedidoDTO pedido) { + try { + + pedidoServico.inserir(pedido); + + return Response.ok(pedido).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response alterar(PedidoDTO pedido) { + try { + pedidoServico.alterar(pedido); + + return Response.ok(pedido).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @DELETE + @Path("{numero}") + @Produces(MediaType.APPLICATION_JSON) + public Response excluir(@PathParam("numero") Long numero) { + try { + boolean sucesso = pedidoServico.remover(numero); + + if (!sucesso) { + throw new WebApplicationException(404); + } + + return Response.ok().build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public List buscarTodos() { + try { + return pedidoServico.buscaTodosPedidos(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Path("{numero}") + @Produces(MediaType.APPLICATION_JSON) + public PedidoDTO buscarPorCodigo(@PathParam("numero") Long numero) { + try { + return pedidoServico.buscaPedidoPorDocumento(numero); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ProdutosResource.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ProdutosResource.java new file mode 100644 index 00000000..7fcdd469 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ProdutosResource.java @@ -0,0 +1,97 @@ +package br.com.pedidoscontabilizei.resources; + +import java.util.List; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import br.com.pedidoscontabilizei.dto.ProdutoDTO; +import br.com.pedidoscontabilizei.servicos.ProdutoServico; + +@Path("/produtos") +public class ProdutosResource { + private ProdutoServico produtoServico; + + public ProdutosResource() { + produtoServico = new ProdutoServico(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response inserir(ProdutoDTO cliente) { + try { + + produtoServico.inserir(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response alterar(ProdutoDTO cliente) { + try { + produtoServico.alterar(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @DELETE + @Path("{codigo}") + @Produces(MediaType.APPLICATION_JSON) + public Response excluir(@PathParam("codigo") Long codigo) { + try { + boolean sucesso = produtoServico.remover(codigo); + + if (!sucesso) { + throw new WebApplicationException(404); + } + + return Response.ok().build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public List buscarTodos() { + try { + return produtoServico.buscaTodosProdutos(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Path("{codigo}") + @Produces(MediaType.APPLICATION_JSON) + public ProdutoDTO buscarPorCodigo(@PathParam("codigo") Long codigo) { + try { + return produtoServico.buscaProdutoPorCodigo(codigo); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java new file mode 100644 index 00000000..3a1f39ab --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java @@ -0,0 +1,82 @@ +package br.com.pedidoscontabilizei.servicos; + +import java.util.ArrayList; +import java.util.List; + +import br.com.pedidoscontabilizei.dao.ClienteDao; +import br.com.pedidoscontabilizei.dao.EMF; +import br.com.pedidoscontabilizei.dto.ClienteDTO; +import br.com.pedidoscontabilizei.modelos.Cliente; + +public class ClienteServico { + private ClienteDao clienteDao; + + public ClienteServico() { + EMF emf = new EMF(); + clienteDao = new ClienteDao(emf.createEntityManager()); + } + + public void inserir(ClienteDTO clienteDTO) { + Cliente cliente = converteParaModelo(clienteDTO); + + clienteDao.inserir(cliente); + } + + public void alterar(ClienteDTO clienteDTO) { + Cliente cliente = converteParaModelo(clienteDTO); + + clienteDao.alterar(cliente); + } + + public List buscaTodosClientes() { + List clientes = clienteDao.buscaTodos(); + List clientesDTO = new ArrayList(); + + for (Cliente cliente : clientes) { + clientesDTO.add(converteParaDTO(cliente)); + } + + return clientesDTO; + } + + public ClienteDTO buscaClientePorDocumento(String cpf) { + Cliente cliente = clienteDao.buscaPeloId(cpf); + if (cliente != null) { + return converteParaDTO(cliente); + } + + return null; + } + + public boolean remover(String cpf) { + Cliente cliente = clienteDao.buscaPeloId(cpf); + + if (cliente == null) { + return false; + } + + clienteDao.deletar(cliente); + + return true; + } + + private ClienteDTO converteParaDTO(Cliente cliente) { + ClienteDTO dto = new ClienteDTO(); + dto.setDocumentoCliente(cliente.getCpfCnpj()); + dto.setNomRazaoSocial(cliente.getNomRazaoSocial()); + dto.setEmail(cliente.getEmail()); + dto.setTelefone(cliente.getTelefone()); + + return dto; + } + + private Cliente converteParaModelo(ClienteDTO clienteDTO) { + Cliente cliente = new Cliente(); + cliente.setCpfCnpj(clienteDTO.getDocumentoCliente()); + cliente.setNomRazaoSocial(clienteDTO.getNomRazaoSocial()); + cliente.setEmail(clienteDTO.getEmail()); + cliente.setTelefone(clienteDTO.getTelefone()); + + return cliente; + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/PedidoServico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/PedidoServico.java new file mode 100644 index 00000000..611e46d2 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/PedidoServico.java @@ -0,0 +1,116 @@ +package br.com.pedidoscontabilizei.servicos; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.List; + +import br.com.pedidoscontabilizei.dao.PedidoDao; +import br.com.pedidoscontabilizei.dao.ProdutoDao; +import br.com.pedidoscontabilizei.dao.ClienteDao; +import br.com.pedidoscontabilizei.dao.EMF; +import br.com.pedidoscontabilizei.dto.PedidoDTO; +import br.com.pedidoscontabilizei.modelos.Cliente; +import br.com.pedidoscontabilizei.modelos.Pedido; +import br.com.pedidoscontabilizei.modelos.Produto; + +public class PedidoServico { + private PedidoDao pedidoDao; + private ClienteDao clienteDao; + private ProdutoDao produtoDao; + + public PedidoServico() { + EMF emf = new EMF(); + pedidoDao = new PedidoDao(emf.createEntityManager()); + clienteDao = new ClienteDao(emf.createEntityManager()); + produtoDao = new ProdutoDao(emf.createEntityManager()); + } + + public void inserir(PedidoDTO pedidoDTO) { + Pedido pedido = converteParaModelo(pedidoDTO); + Cliente cliente = pedido.getCliente(); + cliente.addPedido(pedido); + + for (Produto produto : pedido.getProdutos()) { + produto.addPedido(pedido); + } + + pedidoDao.inserir(pedido); + } + + public void alterar(PedidoDTO pedidoDTO) { + Pedido pedido = converteParaModelo(pedidoDTO); + + pedidoDao.alterar(pedido); + } + + public List buscaTodosPedidos() { + List pedidos = pedidoDao.buscaTodos(); + List pedidosDTO = new ArrayList(); + + for (Pedido pedido : pedidos) { + pedidosDTO.add(converteParaDTO(pedido)); + } + + return pedidosDTO; + } + + public PedidoDTO buscaPedidoPorDocumento(Long numero) { + Pedido pedido = pedidoDao.buscaPeloId(numero); + if (pedido != null) { + return converteParaDTO(pedido); + } + + return null; + } + + public boolean remover(Long numero) { + Pedido pedido = pedidoDao.buscaPeloId(numero); + + if (pedido == null) { + return false; + } + + pedidoDao.deletar(pedido); + + return true; + } + + + private PedidoDTO converteParaDTO(Pedido pedido) { + PedidoDTO dto = new PedidoDTO(); + dto.setNumero(pedido.getNumero()); + dto.setNomeCliente(pedido.getCliente().getNomRazaoSocial()); + dto.setDocumentoCliente(pedido.getCliente().getCpfCnpj()); + dto.setValorTotal(pedido.getValorTotal()); + dto.setEmissao(pedido.getEmissao()); + + for (Produto produto : pedido.getProdutos()) { + if (produto != null) { + dto.addDescricaoProduto(produto.getDescricao()); + dto.addCodigoProduto(produto.getCodigo()); + dto.addValorUnitarioProduto(produto.getValorUnitario()); + } + } + + return dto; + } + + private Pedido converteParaModelo(PedidoDTO pedidoDTO) { + + Pedido pedido = new Pedido(); + pedido.setEmissao(Calendar.getInstance()); + pedido.setNumero(pedidoDTO.getNumero()); + pedido.setValorTotal(pedidoDTO.getValorTotal()); + pedido.setCliente(clienteDao.buscaPeloId(pedidoDTO.getDocumentoCliente())); + + for (Long codigo : pedidoDTO.getCodigoProdutos()) { + if (codigo != null) { + pedido.addProduto(produtoDao.buscaPeloId(codigo)); + } + } + + return pedido; + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ProdutoServico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ProdutoServico.java new file mode 100644 index 00000000..15ab1916 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ProdutoServico.java @@ -0,0 +1,83 @@ +package br.com.pedidoscontabilizei.servicos; + +import java.util.ArrayList; +import java.util.List; + +import br.com.pedidoscontabilizei.dao.EMF; +import br.com.pedidoscontabilizei.dao.ProdutoDao; +import br.com.pedidoscontabilizei.dto.ProdutoDTO; +import br.com.pedidoscontabilizei.modelos.Produto; + +public class ProdutoServico { + + private ProdutoDao produtoDao; + + public ProdutoServico() { + EMF emf = new EMF(); + produtoDao = new ProdutoDao(emf.createEntityManager()); + } + + public void inserir(ProdutoDTO produtoDTO) { + Produto produto = converteParaModelo(produtoDTO); + + produtoDao.inserir(produto); + } + + public void alterar(ProdutoDTO produtoDTO) { + Produto produto = converteParaModelo(produtoDTO); + + produtoDao.alterar(produto); + } + + public List buscaTodosProdutos() { + List produtos = produtoDao.buscaTodos(); + List produtosDTO = new ArrayList(); + + for (Produto produto : produtos) { + produtosDTO.add(converteParaDTO(produto)); + } + + return produtosDTO; + } + + public ProdutoDTO buscaProdutoPorCodigo(Long codigo) { + Produto produto = produtoDao.buscaPeloId(codigo); + if (produto != null) { + return converteParaDTO(produto); + } + + return null; + } + + public boolean remover(Long codigo) { + Produto produto = produtoDao.buscaPeloId(codigo); + + if (produto == null) { + return false; + } + + produtoDao.deletar(produto); + + return true; + } + + private ProdutoDTO converteParaDTO(Produto produto) { + ProdutoDTO dto = new ProdutoDTO(); + dto.setCodigo(produto.getCodigo()); + dto.setDescricao(produto.getDescricao()); + dto.setQuantidade(produto.getQuantidade()); + dto.setValorUnitario(produto.getValorUnitario()); + + return dto; + } + + private Produto converteParaModelo(ProdutoDTO produtoDTO) { + Produto produto = new Produto(); + produto.setCodigo(produtoDTO.getCodigo()); + produto.setDescricao(produtoDTO.getDescricao()); + produto.setQuantidade(produtoDTO.getQuantidade()); + produto.setValorUnitario(produtoDTO.getValorUnitario()); + + return produto; + } +} diff --git a/servico_rest/src/main/resources/META-INF/persistence.xml b/servico_rest/src/main/resources/META-INF/persistence.xml new file mode 100644 index 00000000..10ebc39e --- /dev/null +++ b/servico_rest/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,21 @@ + + + + + org.hibernate.ejb.HibernatePersistence + + + + + + + + + + + + \ No newline at end of file diff --git a/servico_rest/src/main/webapp/WEB-INF/web.xml b/servico_rest/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..e79e4152 --- /dev/null +++ b/servico_rest/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,28 @@ + + + + + Jersey REST Service + org.glassfish.jersey.servlet.ServletContainer + + com.sun.jersey.spi.container.ContainerResponseFilters + br.com.pedidoscontabilizei.resources.CorsFilter + + + + jersey.config.server.provider.packages + br.com.pedidoscontabilizei.resources + + 1 + + + + Jersey REST Service + /rest/* + + + \ No newline at end of file diff --git a/servico_rest/src/main/webapp/index.jsp b/servico_rest/src/main/webapp/index.jsp new file mode 100644 index 00000000..4a51d2f8 --- /dev/null +++ b/servico_rest/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Acesse nosso app PedidosContabilizei ;)

+ + diff --git a/servico_rest/target/classes/META-INF/persistence.xml b/servico_rest/target/classes/META-INF/persistence.xml new file mode 100644 index 00000000..10ebc39e --- /dev/null +++ b/servico_rest/target/classes/META-INF/persistence.xml @@ -0,0 +1,21 @@ + + + + + org.hibernate.ejb.HibernatePersistence + + + + + + + + + + + + \ No newline at end of file diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ClienteDao.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ClienteDao.class new file mode 100644 index 00000000..b4fbea95 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ClienteDao.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/DaoGenerico.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/DaoGenerico.class new file mode 100644 index 00000000..c981b779 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/DaoGenerico.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/EMF.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/EMF.class new file mode 100644 index 00000000..3d62c933 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/EMF.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/PedidoDao.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/PedidoDao.class new file mode 100644 index 00000000..a5548fb3 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/PedidoDao.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ProdutoDao.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ProdutoDao.class new file mode 100644 index 00000000..94ebce8e Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ProdutoDao.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ClienteDTO.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ClienteDTO.class new file mode 100644 index 00000000..b6500f50 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ClienteDTO.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/PedidoDTO.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/PedidoDTO.class new file mode 100644 index 00000000..cfd6cd25 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/PedidoDTO.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ProdutoDTO.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ProdutoDTO.class new file mode 100644 index 00000000..6c410988 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ProdutoDTO.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Cliente.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Cliente.class new file mode 100644 index 00000000..e73b4af4 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Cliente.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Pedido.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Pedido.class new file mode 100644 index 00000000..11ba4994 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Pedido.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Produto.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Produto.class new file mode 100644 index 00000000..37a0fb50 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Produto.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ClientesResource.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ClientesResource.class new file mode 100644 index 00000000..0007db88 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ClientesResource.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/CorsFilter.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/CorsFilter.class new file mode 100644 index 00000000..3f3c21f6 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/CorsFilter.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/PedidosResource.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/PedidosResource.class new file mode 100644 index 00000000..a12d913d Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/PedidosResource.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ProdutosResource.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ProdutosResource.class new file mode 100644 index 00000000..44a86c55 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ProdutosResource.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ClienteServico.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ClienteServico.class new file mode 100644 index 00000000..5a7ce9c5 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ClienteServico.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/PedidoServico.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/PedidoServico.class new file mode 100644 index 00000000..941e2ac2 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/PedidoServico.class differ diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ProdutoServico.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ProdutoServico.class new file mode 100644 index 00000000..46401d31 Binary files /dev/null and b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ProdutoServico.class differ diff --git a/servico_rest/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF b/servico_rest/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..fc4b1fe6 --- /dev/null +++ b/servico_rest/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: Luiz Gustavo Caciato +Build-Jdk: 1.8.0_101 +Created-By: Maven Integration for Eclipse + diff --git a/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.properties b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.properties new file mode 100644 index 00000000..41b62113 --- /dev/null +++ b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Thu Aug 11 23:29:51 BRT 2016 +version=0.0.1-SNAPSHOT +groupId=br.com +m2e.projectName=pedidoscontabilizei +m2e.projectLocation=F\:\\Documentos\\Luiz Gustavo\\fullstack-java-teste\\servico_rest +artifactId=pedidoscontabilizei diff --git a/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.xml b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.xml new file mode 100644 index 00000000..db1050db --- /dev/null +++ b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.xml @@ -0,0 +1,107 @@ + + 4.0.0 + br.com + pedidoscontabilizei + war + 0.0.1-SNAPSHOT + pedidoscontabilizei Maven Webapp + http://maven.apache.org + + + + + snapshot-repository.java.net + Java.net Snapshot Repository for Maven + https://maven.java.net/content/repositories/snapshots/ + default + + + + + 2.22.1 + UTF-8 + + + + + + org.glassfish.jersey + jersey-bom + ${jersey.version} + pom + import + + + + + + + javax.servlet + servlet-api + 2.4 + + + + org.glassfish.jersey.ext + jersey-mvc-jsp + + + + javax.servlet + jstl + 1.2 + + + + org.glassfish.jersey.containers + jersey-container-servlet-core + + + + javax.ws.rs + javax.ws.rs-api + 2.0.1 + + + + org.glassfish.jersey.media + jersey-media-moxy + 2.22.2 + + + + org.hibernate + hibernate-core + 5.1.0.Final + + + + org.hibernate + hibernate-entitymanager + 5.1.0.Final + + + + + mysql + mysql-connector-java + 5.1.38 + + + + + + + pedidoscontabilizei + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + +