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