diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..2894530
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,11 @@
+{
+ "configurations": [
+ {
+ "type": "java",
+ "name": "CodeLens (Launch) - ApirestApplication",
+ "request": "launch",
+ "mainClass": "com.produtos.apirest.ApirestApplication",
+ "projectName": "apirest"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100755
index 0000000..e30d6b1
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,29 @@
+version: '3'
+
+services:
+ teste-postgres-compose:
+ image: postgres
+ environment:
+ POSTGRES_PASSWORD: "Postgres2019!"
+ ports:
+ - "15432:5432"
+ volumes:
+ - /Users/charles/Desenvolvimento/Docker-Compose/PostgreSQL:/var/lib/postgresql/data
+# networks:
+# - postgres-compose-network
+#
+# teste-pgadmin-compose:
+# image: dpage/pgadmin4
+# environment:
+# PGADMIN_DEFAULT_EMAIL: "charlesdccti@gmail.com"
+# PGADMIN_DEFAULT_PASSWORD: "PgAdmin2019!"
+# ports:
+# - "16543:80"
+# depends_on:
+# - teste-postgres-compose
+# networks:
+# - postgres-compose-network
+#
+#networks:
+# postgres-compose-network:
+# driver: bridge
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 2541139..3cf7d1e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,7 @@
org.postgresql
postgresql
42.2.2
+ runtime
org.springframework.boot
@@ -53,6 +54,16 @@
springfox-swagger-ui
2.7.0
+
+ org.springframework.boot
+ spring-boot-actuator
+
+
+ org.projectlombok
+ lombok
+ 1.18.10
+ provided
+
diff --git a/src/main/java/com/produtos/apirest/ApirestApplication.java b/src/main/java/com/produtos/apirest/ApirestApplication.java
index efe458f..0fd7783 100644
--- a/src/main/java/com/produtos/apirest/ApirestApplication.java
+++ b/src/main/java/com/produtos/apirest/ApirestApplication.java
@@ -2,13 +2,22 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+@RestController
@SpringBootApplication
public class ApirestApplication {
-
+
public static void main(String[] args) {
SpringApplication.run(ApirestApplication.class, args);
}
+
+ @RequestMapping(value="/", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+ String index() {
+ return "Acesse a interface da API: http://localhost:8080/swagger-ui.html#/produto45resource";
+ }
}
diff --git a/src/main/java/com/produtos/apirest/config/SwaggerConfig.java b/src/main/java/com/produtos/apirest/config/SwaggerConfig.java
index 342d5a4..29e318a 100644
--- a/src/main/java/com/produtos/apirest/config/SwaggerConfig.java
+++ b/src/main/java/com/produtos/apirest/config/SwaggerConfig.java
@@ -1,20 +1,16 @@
package com.produtos.apirest.config;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-
import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.VendorExtension;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
import static springfox.documentation.builders.PathSelectors.regex;
-import java.util.ArrayList;
@Configuration
@EnableSwagger2
@@ -25,7 +21,7 @@ public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.produtos.apirest"))
- .paths(regex("/api.*"))
+ .paths(regex("/v1/api.*"))
.build();
}
diff --git a/src/main/java/com/produtos/apirest/models/Lembrete.java b/src/main/java/com/produtos/apirest/models/Lembrete.java
index 44d54fe..81f5561 100644
--- a/src/main/java/com/produtos/apirest/models/Lembrete.java
+++ b/src/main/java/com/produtos/apirest/models/Lembrete.java
@@ -4,6 +4,7 @@
import javax.persistence.*;
import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
import java.util.Objects;
@Entity
@@ -19,9 +20,15 @@ public class Lembrete {
@Column
private Prioridade prioridade;
@Column
+ private Long modificado;
+ @Column
private Boolean arquivado;
@Column
- private Long modificado;
+ private BigDecimal numeroUsuarios;
+ @Column
+ private String cor;
+
+
@@ -96,4 +103,20 @@ public String toString() {
", modificado=" + modificado +
'}';
}
+
+ public BigDecimal getNumeroUsuarios() {
+ return numeroUsuarios;
+ }
+
+ public void setNumeroUsuarios(BigDecimal numeroUsuarios) {
+ this.numeroUsuarios = numeroUsuarios;
+ }
+
+ public String getCor() {
+ return cor;
+ }
+
+ public void setCor(String cor) {
+ this.cor = cor;
+ }
}
diff --git a/src/main/java/com/produtos/apirest/models/Produto.java b/src/main/java/com/produtos/apirest/models/Produto.java
index 9a17b56..bc4dd4e 100644
--- a/src/main/java/com/produtos/apirest/models/Produto.java
+++ b/src/main/java/com/produtos/apirest/models/Produto.java
@@ -1,88 +1,56 @@
package com.produtos.apirest.models;
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import com.produtos.apirest.util.Categoria;
+import com.produtos.apirest.util.Prioridade;
+
+import lombok.Data;
+
import java.io.Serializable;
import java.math.BigDecimal;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.validation.constraints.NotNull;
-
/**
* @author charles
*
*/
+@Data
@Entity
-@Table(name="TB_PRODUTO")
+@Table(name="produto")
public class Produto implements Serializable{
private static final long serialVersionUID = 1L;
+ // id: number;
+ // titulo: string;
+ // descricao: string;
+ // conteudo: string;
+ // categoria: categoria;
+ // preco: number;
+ // formData: FormData;
+
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
- private long id;
+ private Long id;
@NotNull
- private String nome;
+ private String titulo;
- @NotNull
- private BigDecimal quantidade;
-
- @NotNull
- private BigDecimal valor;
-
-
-
-
-
- public long getId() {
- return id;
- }
-
+// @NotNull
+ private String descricao;
- public void setId(long id) {
- this.id = id;
- }
+// @NotNull
+ @Enumerated(EnumType.STRING)
+ @Column
+ private Categoria categoria;
+
+ @NotNull
+ private Double preco;
-
- public String getNome() {
- return nome;
- }
-
-
- public void setNome(String nome) {
- this.nome = nome;
- }
-
-
- public BigDecimal getQuantidade() {
- return quantidade;
- }
-
-
- public void setQuantidade(BigDecimal quantidade) {
- this.quantidade = quantidade;
- }
-
-
- public BigDecimal getValor() {
- return valor;
- }
-
-
- public void setValor(BigDecimal valor) {
- this.valor = valor;
- }
-
-
- public static long getSerialversionuid() {
- return serialVersionUID;
- }
-
-
-
-
+ @Column
+ private String foto;
}
\ No newline at end of file
diff --git a/src/main/java/com/produtos/apirest/repository/ProdutoRepository.java b/src/main/java/com/produtos/apirest/repository/ProdutoRepository.java
index 2eb07a7..9ef5c3c 100644
--- a/src/main/java/com/produtos/apirest/repository/ProdutoRepository.java
+++ b/src/main/java/com/produtos/apirest/repository/ProdutoRepository.java
@@ -15,4 +15,5 @@ public interface ProdutoRepository extends JpaRepository{
Produto findById(long id);
+ //Produto findOneByName(String nome);
}
diff --git a/src/main/java/com/produtos/apirest/resources/FotosResource.java b/src/main/java/com/produtos/apirest/resources/FotosResource.java
new file mode 100644
index 0000000..da85dc0
--- /dev/null
+++ b/src/main/java/com/produtos/apirest/resources/FotosResource.java
@@ -0,0 +1,27 @@
+package com.produtos.apirest.resources;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.produtos.apirest.storage.Disco;
+
+
+@CrossOrigin("*")
+@RestController
+@RequestMapping(value="/v1/api")
+public class FotosResource {
+
+ @Autowired
+ private Disco disco;
+
+ @PostMapping("/fotos")
+ public void upload(@RequestParam MultipartFile foto) {
+ disco.salvarFoto(foto);
+ }
+
+}
diff --git a/src/main/java/com/produtos/apirest/resources/LembreteResource.java b/src/main/java/com/produtos/apirest/resources/LembreteResource.java
index c997747..7801ed5 100644
--- a/src/main/java/com/produtos/apirest/resources/LembreteResource.java
+++ b/src/main/java/com/produtos/apirest/resources/LembreteResource.java
@@ -3,27 +3,26 @@
import com.produtos.apirest.models.Lembrete;
import com.produtos.apirest.service.LembreteService;
+import java.util.List;
+import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-import javax.validation.Valid;
-import java.util.List;
+@CrossOrigin
@RestController
-@RequestMapping(value="/api")
+@RequestMapping(value="/v1/api")
public class LembreteResource {
@Autowired
private LembreteService lembreteService;
-
- @GetMapping(value="/lembretes", produces="application/json")
+ @GetMapping(value="/lembrete", produces="application/json")
public @ResponseBody List listaLembretes(){
return lembreteService.findAll();
}
-
@GetMapping(value = "/lembrete/{id}", produces="application/json")
public @ResponseBody Lembrete findById(@PathVariable(value = "id") long id){
return this.lembreteService.findById(id);
@@ -34,16 +33,20 @@ public class LembreteResource {
return lembreteService.save(lembrete);
}
+ @DeleteMapping("/lembrete/{id}")
+ public void deletaLembreteById(@PathVariable(value = "id") long id) {
+ lembreteService.deleteById(id);
+ }
@DeleteMapping("/lembrete")
public void deletaLembrete(@RequestBody @Valid Lembrete lembrete) {
lembreteService.delete(lembrete);
}
-
- @PutMapping("/lembrete")
- public @ResponseBody Lembrete atualizaLembrete(@RequestBody @Valid Lembrete lembrete) {
+ @PutMapping("/lembrete/{id}")
+ public @ResponseBody Lembrete atualizaLembrete(@RequestBody @Valid Lembrete lembrete, @PathVariable(value = "id") long id) {
return lembreteService.save(lembrete);
}
+
}
diff --git a/src/main/java/com/produtos/apirest/resources/MyController.java b/src/main/java/com/produtos/apirest/resources/MyController.java
new file mode 100644
index 0000000..afc3f2e
--- /dev/null
+++ b/src/main/java/com/produtos/apirest/resources/MyController.java
@@ -0,0 +1,68 @@
+package com.produtos.apirest.resources;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.produtos.apirest.service.ProdutoService;
+
+import javax.servlet.http.Part;
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+@RestController
+@CrossOrigin
+@RequestMapping("api/v1/test")
+public class MyController {
+
+ @Autowired
+ private ProdutoService produtoService;
+
+ @PutMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+ public boolean saveFile(@RequestPart("myFile") MultipartFile myFile,
+ @RequestPart("myFile") byte[] isFile,
+ @RequestPart("myFile") Part myPart,
+ @RequestParam("myFile") MultipartFile multipartFile2,
+ @RequestParam("myFile") Part partFile) {
+ /*
+ * There are three ways we can obtain this value, but in all cases we need to use
+ * @RequestPart annotation.
+ * 1. Byte Array ( byte [] )
+ * 2. MultipartFile ( Spring way )
+ * 3. Part ( Java EE way )
+ */
+
+ System.out.println(isFile);
+ System.out.println(myPart.getSubmittedFileName());
+
+ System.out.println("================================");
+
+ /**
+ * It is important to note that you can also use @RequestParam annotation if you need
+ * But with that you can't retrieve the data as a byte array
+ */
+
+ System.out.println(multipartFile2.getOriginalFilename());
+ System.out.println(partFile.getSubmittedFileName());
+
+ try {
+ // Let's get the project location
+ String projectPath = new File(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile().getAbsolutePath();
+ // Let's create a folder there for uploading purposes, if not exists
+ File uploadsDir = new File(projectPath + "/uploads");
+ uploadsDir.mkdir();
+ // It is time to transfer the file into the newly created dir
+ myFile.transferTo(new File(uploadsDir.getAbsolutePath() + "/" + myFile.getOriginalFilename()));
+ return true;
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ return false;
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+}
diff --git a/src/main/java/com/produtos/apirest/resources/ProdutoResource.java b/src/main/java/com/produtos/apirest/resources/ProdutoResource.java
index 1e4fc17..9af1808 100644
--- a/src/main/java/com/produtos/apirest/resources/ProdutoResource.java
+++ b/src/main/java/com/produtos/apirest/resources/ProdutoResource.java
@@ -3,59 +3,59 @@
*/
package com.produtos.apirest.resources;
-import java.util.List;
+import com.produtos.apirest.models.Produto;
+import com.produtos.apirest.service.ProdutoService;
+import com.produtos.apirest.storage.Disco;
+import java.util.List;
import javax.validation.Valid;
-
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
-import com.produtos.apirest.models.Produto;
-import com.produtos.apirest.repository.ProdutoRepository;
/**
* @author charles
*
*/
+@CrossOrigin
@RestController
-@RequestMapping(value="/api")
+@RequestMapping(value="/v1/api")
public class ProdutoResource {
@Autowired
- ProdutoRepository produtoRepository;
+ private ProdutoService produtoService;
+ @Autowired
+ private Disco disco;
@GetMapping(value="/produtos", produces="application/json")
public @ResponseBody List listaProdutos(){
- return produtoRepository.findAll();
+ List listProdutos = produtoService.findAll();
+ return listProdutos;
}
@GetMapping(value="/produto/{id}", produces="application/json")
public @ResponseBody Produto listaProdutoUnico(@PathVariable(value="id") long id){
- return produtoRepository.findById(id);
+ return produtoService.findById(id);
}
@PostMapping(value="/produto", produces="application/json")
public @ResponseBody Produto salvaProduto(@RequestBody @Valid Produto produto) {
- return produtoRepository.save(produto);
+ //disco.salvarFoto(foto);
+ produto.setId(null);
+ return produtoService.save(produto);
}
@DeleteMapping("/produto")
public void deletaProduto(@RequestBody @Valid Produto produto) {
- produtoRepository.delete(produto);
+ produtoService.delete(produto);
}
@PutMapping("/produto")
public @ResponseBody Produto atualizaProduto(@RequestBody @Valid Produto produto) {
- return produtoRepository.save(produto);
+ return produtoService.save(produto);
}
diff --git a/src/main/java/com/produtos/apirest/service/LembreteService.java b/src/main/java/com/produtos/apirest/service/LembreteService.java
index 7336920..8c74a4d 100644
--- a/src/main/java/com/produtos/apirest/service/LembreteService.java
+++ b/src/main/java/com/produtos/apirest/service/LembreteService.java
@@ -35,4 +35,9 @@ public Lembrete save(Lembrete entity) {
public void delete(Lembrete entity) {
lembreteRepository.delete(entity);
}
+
+ @Transactional(readOnly = false)
+ public void deleteById(long id) {
+ lembreteRepository.deleteById(id);
+ }
}
diff --git a/src/main/java/com/produtos/apirest/service/ProdutoService.java b/src/main/java/com/produtos/apirest/service/ProdutoService.java
new file mode 100644
index 0000000..54b1a1d
--- /dev/null
+++ b/src/main/java/com/produtos/apirest/service/ProdutoService.java
@@ -0,0 +1,44 @@
+package com.produtos.apirest.service;
+
+import com.produtos.apirest.models.Produto;
+import com.produtos.apirest.repository.ProdutoRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+public class ProdutoService {
+
+ @Autowired
+ private ProdutoRepository produtoRepository;
+
+ public List findAll() {
+ return produtoRepository.findAll();
+ }
+
+ public Produto findById(long id) {
+ Produto produto = produtoRepository.findById(id);
+ return produto;
+ }
+
+ @Transactional(readOnly = false)
+ public Produto save(Produto entity) {
+ Integer indexInicio = "C:\fakepath\\".length()+1;
+ String foto = entity.getFoto().substring(indexInicio, entity.getFoto().length());
+ entity.setFoto(foto);
+ return produtoRepository.save(entity);
+ }
+
+ @Transactional(readOnly = false)
+ public void delete(Produto entity) {
+ produtoRepository.delete(entity);
+ }
+
+ @Transactional(readOnly = false)
+ public void deleteById(long id) {
+ produtoRepository.deleteById(id);
+ }
+
+}
diff --git a/src/main/java/com/produtos/apirest/storage/Disco.java b/src/main/java/com/produtos/apirest/storage/Disco.java
new file mode 100644
index 0000000..033a16f
--- /dev/null
+++ b/src/main/java/com/produtos/apirest/storage/Disco.java
@@ -0,0 +1,39 @@
+package com.produtos.apirest.storage;
+
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+@Component
+public class Disco {
+
+ @Value("${contato.disco.raiz}")
+ private String raiz;
+
+ @Value("${contato.disco.diretorio-fotos}")
+ private String diretorioFotos;
+
+ public void salvarFoto(MultipartFile foto) {
+ this.salvar(this.diretorioFotos, foto);
+ }
+
+ public void salvar(String diretorio, MultipartFile arquivo) {
+ Path diretorioPath = Paths.get(this.raiz, diretorio);
+ Path arquivoPath = diretorioPath.resolve(arquivo.getOriginalFilename());
+
+ try {
+ Files.createDirectories(diretorioPath);
+ arquivo.transferTo(arquivoPath.toFile());
+ System.out.println(diretorioPath);
+ System.out.println(arquivoPath);
+ } catch (IOException e) {
+ throw new RuntimeException("Problemas na tentativa de salvar arquivo.", e);
+ }
+ }
+}
diff --git a/src/main/java/com/produtos/apirest/util/Categoria.java b/src/main/java/com/produtos/apirest/util/Categoria.java
new file mode 100644
index 0000000..8f99d70
--- /dev/null
+++ b/src/main/java/com/produtos/apirest/util/Categoria.java
@@ -0,0 +1,6 @@
+package com.produtos.apirest.util;
+
+public enum Categoria {
+
+ DIVERSAO, CAMISOLAS, FANTASIAS;
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 1f89ed9..52ae6d1 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,8 +1,29 @@
-spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+#Path para o disco salvar as fotos
+
+contato.disco.raiz=${java.io.tmpdir}/contato-disco
+contato.disco.diretorio-fotos=fotos
+
#Banco local - localhost
-spring.datasource.url= jdbc:postgresql://localhost:5432/produtos-apirest
+
+spring.datasource.url= jdbc:postgresql://localhost:15432/postgres
spring.datasource.username=postgres
-spring.datasource.password=postgres
-#spring.datasource.password=123
-spring.jpa.hibernate.ddl-auto=update
\ No newline at end of file
+spring.datasource.password=Postgres2019!
+spring.datasource.driver-class-name=org.postgresql.Driver
+
+# Keep the connection alive if idle for a long time (needed in production)
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+
+
+# The SQL dialect makes Hibernate generate better SQL for the chosen database
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
+
+# Hibernate ddl auto (create, create-drop, validate, update)
+spring.jpa.hibernate.ddl-auto = update
+
+spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+
+
+
+
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
new file mode 100644
index 0000000..25cb86d
--- /dev/null
+++ b/src/main/resources/data.sql
@@ -0,0 +1,4 @@
+--INSERT INTO PRODUTO VALUES(1, 'CARRO', 2, 50000);
+--INSERT INTO PRODUTO VALUES(2, 'MOTO', 3, 10000);
+--INSERT INTO PRODUTO VALUES(3, 'CASA', 5, 99000);
+
diff --git a/src/test/java/com/produtos/apirest/ApirestApplicationTests.java b/src/test/java/com/produtos/apirest/ApirestApplicationTests.java
index 0ff260c..349dbff 100644
--- a/src/test/java/com/produtos/apirest/ApirestApplicationTests.java
+++ b/src/test/java/com/produtos/apirest/ApirestApplicationTests.java
@@ -11,6 +11,7 @@ public class ApirestApplicationTests {
@Test
public void contextLoads() {
+ System.out.println("executou esse teste!");
}
}
diff --git a/src/test/java/com/produtos/apirest/ProdutoRepositoryTest.java b/src/test/java/com/produtos/apirest/ProdutoRepositoryTest.java
new file mode 100644
index 0000000..ef4f4fa
--- /dev/null
+++ b/src/test/java/com/produtos/apirest/ProdutoRepositoryTest.java
@@ -0,0 +1,50 @@
+package com.produtos.apirest;
+
+import com.produtos.apirest.repository.ProdutoRepository;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+//import static org.assertj.core.api.Assertions.assertThat;
+
+
+@RunWith(SpringRunner.class)
+@DataJpaTest
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
+public class ProdutoRepositoryTest {
+
+ @Autowired
+ private ProdutoRepository produtoRepository;
+
+ //Produto produto01;
+
+// @Before
+// public void setUp() {
+//// produto01 = new Produto();
+//// produto01.setNome("carro");
+//// produto01.setCor("RED");
+//// produtoRepository.save(produto01);
+////
+//// produto01 = new Produto();
+//// produto01.setNome("Moto");
+//// produto01.setCor("Vermelha");
+//// produtoRepository.save(produto01);
+// }
+
+ @Test
+ public void sizeListAll() {
+ System.out.println("teste de charles");
+ //int size = produtoRepository.findAll().size();
+ //assertThat(produtoRepository.findAll().size()).isEqualTo(size);
+ }
+
+// @Test
+// public void findOneByName() {
+// Produto result = produtoRepository.findOneByName("carro");
+// assertEquals(result.toString(), user01.toString());
+// }
+
+}
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 515664c..7f0bed7 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
+Built-By: charles
+Build-Jdk: 11.0.4
Implementation-Title: apirest
Implementation-Version: 0.0.1-SNAPSHOT
-Built-By: charles
Implementation-Vendor-Id: com.produtos
-Build-Jdk: 1.8.0_20
-Implementation-URL: https://projects.spring.io/spring-boot/#/spring-bo
- ot-starter-parent/apirest
+Implementation-URL: https://projects.spring.io/spring-boot/#/spring-boot
+ -starter-parent/apirest
Created-By: Maven Integration for Eclipse
diff --git a/target/classes/META-INF/maven/com.produtos/apirest/pom.properties b/target/classes/META-INF/maven/com.produtos/apirest/pom.properties
deleted file mode 100644
index be562b4..0000000
--- a/target/classes/META-INF/maven/com.produtos/apirest/pom.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-#Generated by Maven Integration for Eclipse
-#Sun Jan 20 20:35:58 BRT 2019
-version=0.0.1-SNAPSHOT
-groupId=com.produtos
-m2e.projectName=apirest
-m2e.projectLocation=/Users/charles/projto_quebec/workspace/apirest
-artifactId=apirest
diff --git a/target/classes/META-INF/maven/com.produtos/apirest/pom.xml b/target/classes/META-INF/maven/com.produtos/apirest/pom.xml
deleted file mode 100644
index 2541139..0000000
--- a/target/classes/META-INF/maven/com.produtos/apirest/pom.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.1.2.RELEASE
-
-
- com.produtos
- apirest
- 0.0.1-SNAPSHOT
- apirest
- Demo project for Spring Boot
-
-
- 1.8
-
-
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-devtools
- runtime
-
-
- org.postgresql
- postgresql
- 42.2.2
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.springfox
- springfox-swagger2
- 2.7.0
-
-
- io.springfox
- springfox-swagger-ui
- 2.7.0
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
diff --git a/target/classes/application.properties b/target/classes/application.properties
index beab2de..52ae6d1 100644
--- a/target/classes/application.properties
+++ b/target/classes/application.properties
@@ -1,8 +1,29 @@
-spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+#Path para o disco salvar as fotos
+
+contato.disco.raiz=${java.io.tmpdir}/contato-disco
+contato.disco.diretorio-fotos=fotos
+
#Banco local - localhost
-spring.datasource.url= jdbc:postgresql://localhost:5432/produtos-apirest
+
+spring.datasource.url= jdbc:postgresql://localhost:15432/postgres
spring.datasource.username=postgres
-spring.datasource.password=123
-spring.jpa.hibernate.ddl-auto=update
-
\ No newline at end of file
+spring.datasource.password=Postgres2019!
+spring.datasource.driver-class-name=org.postgresql.Driver
+
+# Keep the connection alive if idle for a long time (needed in production)
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+
+
+# The SQL dialect makes Hibernate generate better SQL for the chosen database
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
+
+# Hibernate ddl auto (create, create-drop, validate, update)
+spring.jpa.hibernate.ddl-auto = update
+
+spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+
+
+
+
diff --git a/target/classes/com/produtos/apirest/ApirestApplication.class b/target/classes/com/produtos/apirest/ApirestApplication.class
index fe15e8e..40f042f 100644
Binary files a/target/classes/com/produtos/apirest/ApirestApplication.class and b/target/classes/com/produtos/apirest/ApirestApplication.class differ
diff --git a/target/classes/com/produtos/apirest/config/SwaggerConfig.class b/target/classes/com/produtos/apirest/config/SwaggerConfig.class
index 98f62e8..6832b6a 100644
Binary files a/target/classes/com/produtos/apirest/config/SwaggerConfig.class and b/target/classes/com/produtos/apirest/config/SwaggerConfig.class differ
diff --git a/target/classes/com/produtos/apirest/models/Produto.class b/target/classes/com/produtos/apirest/models/Produto.class
index 88fc191..169a25f 100644
Binary files a/target/classes/com/produtos/apirest/models/Produto.class and b/target/classes/com/produtos/apirest/models/Produto.class differ
diff --git a/target/classes/com/produtos/apirest/resources/ProdutoResource.class b/target/classes/com/produtos/apirest/resources/ProdutoResource.class
index 124ef67..145a61c 100644
Binary files a/target/classes/com/produtos/apirest/resources/ProdutoResource.class and b/target/classes/com/produtos/apirest/resources/ProdutoResource.class differ
diff --git a/target/test-classes/com/produtos/apirest/ApirestApplicationTests.class b/target/test-classes/com/produtos/apirest/ApirestApplicationTests.class
index f2a22ca..d9e413f 100644
Binary files a/target/test-classes/com/produtos/apirest/ApirestApplicationTests.class and b/target/test-classes/com/produtos/apirest/ApirestApplicationTests.class differ