diff --git a/ (2).gitignore b/ (2).gitignore new file mode 100644 index 0000000..246fb8c --- /dev/null +++ b/ (2).gitignore @@ -0,0 +1,81 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +build/ +target +target/* +target/** +.mvn +.mvn/* + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +.idea/* +.idea/** +*.iml +*/.idea + +/.metadata/ diff --git a/ (2).hintrc b/ (2).hintrc new file mode 100644 index 0000000..dc105b7 --- /dev/null +++ b/ (2).hintrc @@ -0,0 +1,28 @@ +{ + "extends": [ + "development" + ], + "hints": { + "axe/name-role-value": [ + "default", + { + "button-name": "off" + } + ], + "button-type": "off", + "axe/text-alternatives": [ + "default", + { + "document-title": "off" + } + ], + "axe/language": [ + "default", + { + "html-has-lang": "off" + } + ], + "meta-charset-utf-8": "off", + "meta-viewport": "off" + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 9a2b1bb..d42e355 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # Compiled class file +*bin *.class # Log file @@ -78,3 +79,4 @@ Thumbs.db *.iml */.idea +/.metadata/ diff --git a/.hintrc b/.hintrc new file mode 100644 index 0000000..dc105b7 --- /dev/null +++ b/.hintrc @@ -0,0 +1,28 @@ +{ + "extends": [ + "development" + ], + "hints": { + "axe/name-role-value": [ + "default", + { + "button-name": "off" + } + ], + "button-type": "off", + "axe/text-alternatives": [ + "default", + { + "document-title": "off" + } + ], + "axe/language": [ + "default", + { + "html-has-lang": "off" + } + ], + "meta-charset-utf-8": "off", + "meta-viewport": "off" + } +} \ No newline at end of file diff --git a/.run/Template Java Scratch.run (2).xml b/.run/Template Java Scratch.run (2).xml new file mode 100644 index 0000000..b3a53d9 --- /dev/null +++ b/.run/Template Java Scratch.run (2).xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/.run/Template Java Scratch.run.xml b/.run/Template Java Scratch.run.xml new file mode 100644 index 0000000..b3a53d9 --- /dev/null +++ b/.run/Template Java Scratch.run.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/README.md b/README.md index e436188..e2fb4a0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ # backend-java-ebac -Exemplos dos projetos para o curso de Backend Java da Ebac. + +- Classes taught by professor Rodrigo Pires. EBAC. diff --git a/docker/postgresl/docker-compose.yml b/docker/postgresl/docker-compose.yml index 08d7e52..dbe88e9 100644 --- a/docker/postgresl/docker-compose.yml +++ b/docker/postgresl/docker-compose.yml @@ -4,19 +4,22 @@ services: ebac-postgres-compose: image: postgres environment: - POSTGRES_PASSWORD: "admin" + PGADMIN_DEFAULT_EMAIL: "rpires@admin.com" + PGADMIN_DEFAULT_PASSWORD: "admin" + PGADMIN_DEFAULT_USERNAME: "steve" ports: - "15432:5432" volumes: - - /Users/rodrigo.pires/dev/docker/volumes/PostgreSQL:/var/lib/postgresql/data + - C:\Users\Micro\IdeaProjects\Java_EBAC\backend-java-ebac\docker\postgresl:/var/lib/postgresql/data2 networks: - postgres-ebac-network - + ebac-pgadmin-compose: image: dpage/pgadmin4 environment: PGADMIN_DEFAULT_EMAIL: "rpires@admin.com" PGADMIN_DEFAULT_PASSWORD: "admin" + PGADMIN_DEFAULT_USERNAME: "steve" ports: - "16543:80" depends_on: diff --git a/mod1/TesteAPI/Untitled 1 b/mod1/TesteAPI/Untitled 1 new file mode 100644 index 0000000..c70bcd8 --- /dev/null +++ b/mod1/TesteAPI/Untitled 1 @@ -0,0 +1,4 @@ + + org.springframework.boot + spring-boot-starter-web + diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/GetMapping.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/GetMapping.java new file mode 100644 index 0000000..a30a766 --- /dev/null +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/GetMapping.java @@ -0,0 +1,7 @@ +package br.com.rpires.TesteAPI; + +public @interface GetMapping { + + String value(); + +} diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/PathVariable.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/PathVariable.java new file mode 100644 index 0000000..d71244e --- /dev/null +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/PathVariable.java @@ -0,0 +1,5 @@ +package br.com.rpires.TesteAPI; + +public @interface PathVariable { + +} diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/ResponseBody.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/ResponseBody.java new file mode 100644 index 0000000..5110cfb --- /dev/null +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/ResponseBody.java @@ -0,0 +1,5 @@ +package br.com.rpires.TesteAPI; + +public @interface ResponseBody { + +} diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/ResponseEntity.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/ResponseEntity.java new file mode 100644 index 0000000..70b346b --- /dev/null +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/ResponseEntity.java @@ -0,0 +1,15 @@ +package br.com.rpires.TesteAPI; + +public class ResponseEntity { + + public static void main(String[] args) { + // TODO Auto-generated method stub + + } + + public static ResponseEntity ok(String string) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/RestController.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/RestController.java new file mode 100644 index 0000000..bd6ebe7 --- /dev/null +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/RestController.java @@ -0,0 +1,5 @@ +package br.com.rpires.TesteAPI; + +public @interface RestController { + +} diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/SpringBootApplication.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/SpringBootApplication.java new file mode 100644 index 0000000..79ef775 --- /dev/null +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/SpringBootApplication.java @@ -0,0 +1,5 @@ +package br.com.rpires.TesteAPI; + +public @interface SpringBootApplication { + +} diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteApiApplication.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteApiApplication.java index da7a877..5b50916 100644 --- a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteApiApplication.java +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteApiApplication.java @@ -1,13 +1,12 @@ package br.com.rpires.TesteAPI; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; +import br.com.rpires.ebac.Springbootjsp.SpringbootJspApplication; @SpringBootApplication public class TesteApiApplication { public static void main(String[] args) { - SpringApplication.run(TesteApiApplication.class, args); + SpringbootJspApplication.run(TesteApiApplication.class, args); } } diff --git a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteController.java b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteController.java index bc55557..67a2532 100644 --- a/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteController.java +++ b/mod1/TesteAPI/src/main/java/br/com/rpires/TesteAPI/TesteController.java @@ -1,14 +1,13 @@ package br.com.rpires.TesteAPI; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.http.HttpResponse; +import org.springframework.web.bind.annotation.RequestMapping; + /** - * @author rodrigo.pires + * @author Steve.Vaz */ @RestController @RequestMapping(value = "/api/v1/teste") @@ -19,13 +18,16 @@ public ResponseEntity teste1() { return ResponseEntity.ok("Teste"); } - @GetMapping(value = "/teste2") - public void teste2(HttpServletResponse response) throws IOException { - response.getWriter().write(""); - response.getWriter().write(" "); - response.getWriter().write("

Olá

"); - response.getWriter().write(" "); - response.getWriter().write(""); + @GetMapping(value = "/api/v1/teste/teste2") + @ResponseBody + public String teste2(HttpResponse response) throws IOException { + StringBuilder html = new StringBuilder(); + html.append(""); + html.append(" "); + html.append("

Olá

"); + html.append(" "); + html.append(""); + return html.toString(); } @GetMapping(value = "/teste3/{nome}") diff --git a/mod1/TesteAPI/src/test/java/br/com/rpires/TesteAPI/SpringBootTest.java b/mod1/TesteAPI/src/test/java/br/com/rpires/TesteAPI/SpringBootTest.java new file mode 100644 index 0000000..8da35a3 --- /dev/null +++ b/mod1/TesteAPI/src/test/java/br/com/rpires/TesteAPI/SpringBootTest.java @@ -0,0 +1,5 @@ +package br.com.rpires.TesteAPI; + +public @interface SpringBootTest { + +} diff --git a/mod1/TesteAPI/src/test/java/br/com/rpires/TesteAPI/TesteApiApplicationTests.java b/mod1/TesteAPI/src/test/java/br/com/rpires/TesteAPI/TesteApiApplicationTests.java index 96094fd..be6fe26 100644 --- a/mod1/TesteAPI/src/test/java/br/com/rpires/TesteAPI/TesteApiApplicationTests.java +++ b/mod1/TesteAPI/src/test/java/br/com/rpires/TesteAPI/TesteApiApplicationTests.java @@ -1,12 +1,9 @@ package br.com.rpires.TesteAPI; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - @SpringBootTest class TesteApiApplicationTests { - @Test + void contextLoads() { } diff --git a/mod10/ExemplosMod10/src/br/com/rpires/ExemploScanner.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ExemploScanner.java similarity index 66% rename from mod10/ExemplosMod10/src/br/com/rpires/ExemploScanner.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ExemploScanner.java index 03490a5..56a7ebf 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/ExemploScanner.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ExemploScanner.java @@ -3,16 +3,18 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploScanner { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite sua idade: "); - int idade = s.nextInt(); + int idade = sc.nextInt(); System.out.println("Vc tem " + idade + " anos."); + + sc.close(); } diff --git a/mod10/ExemplosMod10/src/br/com/rpires/ExemploScanner1.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ExemploScanner1.java similarity index 64% rename from mod10/ExemplosMod10/src/br/com/rpires/ExemploScanner1.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ExemploScanner1.java index 3da67ee..5a97946 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/ExemploScanner1.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ExemploScanner1.java @@ -3,19 +3,21 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploScanner1 { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite seu nome: "); - String nome = s.nextLine(); + String nome = sc.nextLine(); System.out.println("\nDigite sua altura: "); - double altura = s.nextDouble(); + double altura = sc.nextDouble(); System.out.println(nome + " tem " + altura + " de altura."); + + sc.close(); } } diff --git a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploAnimal.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploAnimal.java similarity index 84% rename from mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploAnimal.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploAnimal.java index e6dde4c..af5fc9b 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploAnimal.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploAnimal.java @@ -3,18 +3,19 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploAnimal { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite o nome de uma animal: "); - String texto = s.next(); + String texto = sc.next(); String animal = exampleOfIF(texto); System.out.println(animal); + sc.close(); } public static String exampleOfIF(String animal) { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploIdade.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploIdade.java similarity index 84% rename from mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploIdade.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploIdade.java index c070e83..1464e73 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploIdade.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploIdade.java @@ -3,17 +3,18 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploIdade { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite sua idade: "); - int idade = s.nextInt(); + int idade = sc.nextInt(); String idadeSt = getIdade(idade); System.out.println(idadeSt); + sc.close(); } public static String getIdade(int idade) { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT1.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT1.java similarity index 92% rename from mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT1.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT1.java index 0851314..a3ec391 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT1.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT1.java @@ -1,7 +1,7 @@ package br.com.rpires.ifelse; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPPT1 { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT1Console.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT1Console.java similarity index 78% rename from mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT1Console.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT1Console.java index 57102db..64287d0 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT1Console.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT1Console.java @@ -3,15 +3,15 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPPT1Console { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite um número: "); - int result = s.nextInt(); + int result = sc.nextInt(); if (result == 1) { System.out.println("Resultado igual a 1"); @@ -21,5 +21,7 @@ public static void main(String args[]) { else { System.out.println("Resultado menor que 1"); } + + sc.close(); } } diff --git a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT2.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT2.java similarity index 94% rename from mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT2.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT2.java index 8589a9b..367fc5f 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/ifelse/ExemploPPT2.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/ifelse/ExemploPPT2.java @@ -1,7 +1,7 @@ package br.com.rpires.ifelse; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPPT2 { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/switchcase/ExemploAnimal.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/switchcase/ExemploAnimal.java similarity index 85% rename from mod10/ExemplosMod10/src/br/com/rpires/switchcase/ExemploAnimal.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/switchcase/ExemploAnimal.java index fbfe7c2..199e305 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/switchcase/ExemploAnimal.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/switchcase/ExemploAnimal.java @@ -3,17 +3,19 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploAnimal { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite o nome de uma animal: "); - String texto = s.next(); + String texto = sc.next(); String animal = exampleOfSwitch(texto); System.out.println(animal); + + sc.close(); } public static String exampleOfSwitch(String animal) { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/switchcase/ExemploIdade.java b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/switchcase/ExemploIdade.java similarity index 86% rename from mod10/ExemplosMod10/src/br/com/rpires/switchcase/ExemploIdade.java rename to mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/switchcase/ExemploIdade.java index d567e12..f286141 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/switchcase/ExemploIdade.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/br/com/rpires/switchcase/ExemploIdade.java @@ -3,17 +3,19 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploIdade { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite sua idade: "); - int idade = s.nextInt(); + int idade = sc.nextInt(); String idadeSt = getIdade(idade); System.out.println(idadeSt); + + sc.close(); } public static String getIdade(int idade) { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/entities/Grades.java b/mod10/ExemplosMod10/src/br/com/rpires/entities/Grades.java new file mode 100644 index 0000000..8567b3d --- /dev/null +++ b/mod10/ExemplosMod10/src/br/com/rpires/entities/Grades.java @@ -0,0 +1,17 @@ +package entities; + +public class Grades { + public String name; + public double grade1; + public double grade2; + public double grade3; + public double grade4; + + public double finalGrade() { + return grade1 + grade2 + grade3 + grade4; + } + + public double mediaOfGrades() { + return (grade1 + grade2 + grade3 + grade4) / 4; + } +} diff --git a/mod10/ExemplosMod10/src/br/com/rpires/exercise_module10/applicationGrades.java b/mod10/ExemplosMod10/src/br/com/rpires/exercise_module10/applicationGrades.java new file mode 100644 index 0000000..66f7a0d --- /dev/null +++ b/mod10/ExemplosMod10/src/br/com/rpires/exercise_module10/applicationGrades.java @@ -0,0 +1,45 @@ +package exercise_module10; + +import java.util.Locale; +import java.util.Scanner; + +/* +* @author: Steve.Vaz +*/ + +import entities.Grades; + +public class applicationGrades { + + public static void main(String[] args) { + + Locale.setDefault(Locale.US); + Scanner sc = new Scanner(System.in); + + Grades student = new Grades(); + + student.name = sc.nextLine(); + student.grade1 = sc.nextDouble(); + student.grade2 = sc.nextDouble(); + student.grade3 = sc.nextDouble(); + student.grade4 = sc.nextDouble(); + + System.out.println(); + System.out.printf("Final Grade: %.2f%n", student.finalGrade()); + + System.out.printf("Grade average: %.2f%n", student.mediaOfGrades()); + + if (student.mediaOfGrades() >= 7.0) { + System.out.println(); + System.out.println("Mission complete"); + } else if (student.mediaOfGrades() >= 5.0){ + System.out.println(); + System.out.println("The student is recovering."); + } else { + System.out.println(); + System.out.println("Disaproved"); + } + + sc.close(); + } +} diff --git a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT1.java b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT1.java index 2087717..0899e27 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT1.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT1.java @@ -1,10 +1,10 @@ -package br.com.rpires.forewhile; +package forewhile; import java.util.ArrayList; import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPPT1 { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT2.java b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT2.java index 3b49c2d..5531329 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT2.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT2.java @@ -1,7 +1,7 @@ -package br.com.rpires.forewhile; +package forewhile; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPPT2 { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT3.java b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT3.java index 42868f7..fe9d05b 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT3.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT3.java @@ -1,7 +1,7 @@ -package br.com.rpires.forewhile; +package forewhile; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPPT3 { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT4.java b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT4.java index 68dbbd2..e669e4d 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT4.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/ExemploPPT4.java @@ -1,7 +1,7 @@ -package br.com.rpires.forewhile; +package forewhile; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPPT4 { diff --git a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaDoWhile.java b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaDoWhile.java index 21e3367..308d81b 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaDoWhile.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaDoWhile.java @@ -1,27 +1,29 @@ -package br.com.rpires.forewhile; +package forewhile; import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class TabuadaDoWhile { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); String resposta = ""; do { System.out.println("Digite um número para gerar a tabuada: "); - int num = s.nextInt(); + int num = sc.nextInt(); for (int i = 0; i<=10;i++) { System.out.println(num + " X " + i + " = " + num*i); } System.out.println("Deseja gerar novamente a tabuada de algum número? "); - resposta = s.next(); + resposta = sc.next(); } while (resposta.equals("Sim")); System.out.println("Obrigado. "); + + sc.close(); } } diff --git a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaFor.java b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaFor.java index 88fe5d1..8f553d0 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaFor.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaFor.java @@ -1,21 +1,23 @@ -package br.com.rpires.forewhile; +package forewhile; import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class TabuadaFor { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Digite um número para gerar a tabuada: "); - int num = s.nextInt(); + int num = sc.nextInt(); for (int i = 0; i<=10;i++) { System.out.println(num + " X " + i + " = " + num*i); } //1 X 0 = 0; //1 X 1 = 1; + + sc.close(); } } diff --git a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaWhile.java b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaWhile.java index ac5e155..722d5e5 100644 --- a/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaWhile.java +++ b/mod10/ExemplosMod10/src/br/com/rpires/forewhile/TabuadaWhile.java @@ -1,29 +1,31 @@ -package br.com.rpires.forewhile; +package forewhile; import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class TabuadaWhile { public static void main(String args[]) { - Scanner s = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.println("Deseja gerar a tabuada de algum número? "); - String resposta = s.next(); + String resposta = sc.next(); while(resposta.equalsIgnoreCase("Sim")) { System.out.println("Digite um número para gerar a tabuada: "); - int num = s.nextInt(); + int num = sc.nextInt(); for (int i = 0; i<=10;i++) { System.out.println(num + " X " + i + " = " + num*i); } System.out.println("Deseja gerar novamente a tabuada de algum número? "); - resposta = s.next(); + resposta = sc.next(); } System.out.println("Obrigado. "); + + sc.close(); } } diff --git a/mod11/.gitignore b/mod11/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/mod11/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/mod11/ExemplosMod11/src/Collections_part_2/Exercise_mod11.java b/mod11/ExemplosMod11/src/Collections_part_2/Exercise_mod11.java new file mode 100644 index 0000000..088990c --- /dev/null +++ b/mod11/ExemplosMod11/src/Collections_part_2/Exercise_mod11.java @@ -0,0 +1,126 @@ +package Collections_part_2; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Scanner; + +/* + * + * @author Steve.Vaz + * +*/ +enum Gender { + MALE, FEMALE; +} + +class Person { + private int id; + private String name; + private double salary; + private Gender gender; + + public Person(int id, String name, double salary, Gender gender) { + this.id = id; + this.name = name; + this.salary = salary; + this.gender = gender; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public double getSalary() { + return salary; + } + + public Gender getGender() { + return gender; + } + + public void increaseSalary(double percent) { + salary += salary * percent / 100.0; + } + + @Override + public String toString() { + return id + ", " + name + ", " + String.format("%.3f%n", salary) + ", " + gender; + } +} + +public class Exercise_mod11 { + public static void main(String[] args) { + Locale.setDefault(Locale.US); + Scanner sc = new Scanner(System.in); + + List personList = new ArrayList<>(); + + System.out.print("How many employees will be registered? "); + int N = sc.nextInt(); + + for (int i = 0; i < N; i++) { + System.out.println(); + System.out.println("Person #" + (i + 1) + ":"); + System.out.print("Id: "); + Integer id = sc.nextInt(); + + while (hasId(personList, id)) { + System.out.println(); + System.out.print("Id already taken! Try again: "); + id = sc.nextInt(); + } + + System.out.print("Name: "); + sc.nextLine(); + String name = sc.nextLine(); + System.out.print("Salary: "); + Double salary = sc.nextDouble(); + + System.out.print("Gender (M/F): "); + char genderChar = sc.next().charAt(0); + Gender gender = (genderChar == 'M' || genderChar == 'm') ? Gender.MALE : Gender.FEMALE; + + Person person = new Person(id, name, salary, gender); + personList.add(person); + } + + System.out.println(); + System.out.print("Enter the employee id that will have salary increase: "); + int idSalary = sc.nextInt(); + + Person emp = personList.stream().filter(x -> x.getId() == idSalary).findFirst().orElse(null); + + System.out.println(); + if (emp == null) { + System.out.println("This id does not exist!"); + } else { + System.out.print("Enter the percentage: "); + double percent = sc.nextDouble(); + emp.increaseSalary(percent); + } + + System.out.println(); + System.out.println("List of employees: "); + System.out.println(); + + for (Person e : personList) { + System.out.println(e); + } + + sc.close(); + } + + public static boolean hasId(List list, int id) { + for (Person person : list) { + if (person.getId() == id) { + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/mod11/ExemplosMod11/src/br/com/rpires/array/ExemploBubbleSortDinamico.java b/mod11/ExemplosMod11/src/br/com/rpires/array/ExemploBubbleSortDinamico.java index ebb2a10..cf35d2c 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/array/ExemploBubbleSortDinamico.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/array/ExemploBubbleSortDinamico.java @@ -3,39 +3,42 @@ import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploBubbleSortDinamico { public static void main(String args[]) { - Scanner s = new Scanner(System.in); - System.out.println("Digite os números separados por , "); + try (Scanner sc = new Scanner(System.in)) { + System.out.println("Digite os números separados por , "); - String resposta = s.next(); - String[] vetStr = resposta.split(","); - int[] vet = convert(vetStr); - int aux = 0; - int i = 0; + String resposta = sc.next(); + String[] vetStr = resposta.split(","); + int[] vet = convert(vetStr); + int aux = 0; + int i = 0; - System.out.println("Vetor desordenado: "); - for(i = 0; i vet[j + 1]){ - aux = vet[j]; - vet[j] = vet[j+1]; - vet[j+1] = aux; - } - } - } - System.out.println("Vetor organizado:"); - for(i = 0; i vet[j + 1]){ + aux = vet[j]; + vet[j] = vet[j+1]; + vet[j+1] = aux; + } + } + } + System.out.println("Vetor organizado:"); + for(i = 0; i{ +public class Aluno implements Comparable{ - private String nome; + String nome; private String curso; private double nota; private String sala; @@ -81,7 +81,7 @@ public String toString() { * @return */ @Override - public int compareTo(Aluno aluno) { + public int compareTo(Aluno1 aluno) { return this.nome.compareTo(aluno.getNome()); } @@ -89,8 +89,8 @@ public int compareTo(Aluno aluno) { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - Aluno aluno = (Aluno) o; - return Objects.equals(nome, aluno.nome); + Aluno1 aluno = (Aluno1) o; + return Objects.equals(nome, aluno.getNome()); } @Override diff --git a/mod11/ExemplosMod11/src/br/com/rpires/domain/Biblioteca.java b/mod11/ExemplosMod11/src/br/com/rpires/domain/Biblioteca.java index 38a1841..a1795ad 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/domain/Biblioteca.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/domain/Biblioteca.java @@ -1,11 +1,10 @@ package br.com.rpires.domain; import java.util.HashSet; -import java.util.List; import java.util.Set; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Biblioteca { @@ -15,7 +14,7 @@ public class Biblioteca { private String endereco; - private Set livros; + private Set livros; public Biblioteca() { this.livros = new HashSet<>(); @@ -45,7 +44,7 @@ public void setEndereco(String endereco) { this.endereco = endereco; } - public Set getLivros() { + public Set getLivros() { return livros; } @@ -53,11 +52,11 @@ public Set getLivros() { // this.livros = livros; // } - public boolean addLivro(Livro livro) { + public boolean addLivro(Livro4 livro) { return this.livros.add(livro); } - public boolean removeLivro(Livro livro) { + public boolean removeLivro(Livro4 livro) { return this.livros.remove(livro); } } diff --git a/mod11/ExemplosMod11/src/br/com/rpires/domain/ComparaNotaAluno.java b/mod11/ExemplosMod11/src/br/com/rpires/domain/ComparaNotaAluno.java index 50f485c..098c71d 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/domain/ComparaNotaAluno.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/domain/ComparaNotaAluno.java @@ -3,12 +3,12 @@ import java.util.Comparator; /** - * @author rodrigo.pires + * @author Steve.Vaz */ -public class ComparaNotaAluno implements Comparator { +public class ComparaNotaAluno implements Comparator { @Override - public int compare(Aluno o1, Aluno o2) { + public int compare(Aluno1 o1, Aluno1 o2) { //return Double.valueOf(o1.getNota()).compareTo(Double.valueOf(o2.getNota())); //return Double.compare(o2.getNota(), o1.getNota()); return Double.compare(o2.getNota(), o1.getNota()); diff --git a/mod11/ExemplosMod11/src/br/com/rpires/domain/Livro.java b/mod11/ExemplosMod11/src/br/com/rpires/domain/Livro.java index 3895684..e3c6259 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/domain/Livro.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/domain/Livro.java @@ -1,7 +1,7 @@ package br.com.rpires.domain; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Livro { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/iterator/ExemploIterator.java b/mod11/ExemplosMod11/src/br/com/rpires/iterator/ExemploIterator.java index 0af88e0..277c3d4 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/iterator/ExemploIterator.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/iterator/ExemploIterator.java @@ -5,7 +5,7 @@ import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploIterator { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayList.java b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayList.java index d04da54..a7e8078 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayList.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayList.java @@ -6,10 +6,10 @@ /** * - * É como um array cujo tamanho pode crescer. - * A busca de um elemento é rápida, mas inserções e exclusões não são. + * It's like an array whose size can grow. + * Searching for an element is fast, but insertions and deletions are not.. * - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploArrayList { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayListAluno.java b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayListAluno.java index 136cdc2..c0ac654 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayListAluno.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploArrayListAluno.java @@ -1,15 +1,13 @@ package br.com.rpires.list; -import br.com.rpires.domain.Aluno; -import br.com.rpires.domain.ComparaNotaAluno; +import br.com.rpires.domain.Aluno1; +import br.com.rpires.domain.ComparaNotaAluno3; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; -/** - * @author rodrigo.pires - */ public class ExemploArrayListAluno { public static void main(String args[]) { @@ -19,38 +17,37 @@ public static void main(String args[]) { private static void exemploListaSimplesOrdenadaClasseExterna() { System.out.println("****** exemploListaSimplesOrdenadaClasseExterna ******"); - List lista = new ArrayList(); + List lista = new ArrayList<>(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); lista.add(a); lista.add(b); lista.add(c); - System.out.println(lista); - Collections.sort(lista); - System.out.println(lista); - System.out.println(""); + + System.out.println("Lista sem ordenação:\n" + lista); + System.out.println("Lista com ordenação:\n" + lista); // Não é necessário ordenar aqui sem Comparable + System.out.println(); } private static void exemploListaSimplesOrdenadaComparatorAluno() { System.out.println("****** exemploListaSimplesOrdenadaComparatorAluno ******"); - List lista = new ArrayList(); + List lista = new ArrayList<>(); - Aluno a = new Aluno("João da Silva", "Linux básico", 20); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 30); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 10); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 20); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 30); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 10); lista.add(a); lista.add(b); lista.add(c); - System.out.println("Lista sem ordenação" + lista); - Collections.sort(lista); - System.out.println("Lista com ordenação" + lista); - ComparaNotaAluno comparaNotaAluno = new ComparaNotaAluno(); + System.out.println("Lista sem ordenação:\n" + lista); + + Comparator comparaNotaAluno = new ComparaNotaAluno3(); Collections.sort(lista, comparaNotaAluno); - System.out.println("Lista com ordenação por nota" + lista); - System.out.println(""); + System.out.println("Lista com ordenação por nota:\n" + lista); + System.out.println(); } } diff --git a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedList.java b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedList.java index 18f79f4..1345378 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedList.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedList.java @@ -1,6 +1,6 @@ package br.com.rpires.list; -import java.util.ArrayList; + import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -8,7 +8,7 @@ /** * Ao contrário do ArrayList, as buscas são lentas e inserções e exclusões são rápidas. * - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploLinkedList { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedListAluno.java b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedListAluno.java index 5061352..5c441b6 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedListAluno.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/list/ExemploLinkedListAluno.java @@ -1,15 +1,15 @@ package br.com.rpires.list; -import br.com.rpires.domain.Aluno; -import br.com.rpires.domain.ComparaNotaAluno; +import br.com.rpires.domain.Aluno1; +import br.com.rpires.domain.ComparaNotaAluno3; + -import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploLinkedListAluno { @@ -20,11 +20,11 @@ public static void main(String args[]) { private static void exemploListaSimplesOrdenadaClasseExterna() { System.out.println("****** exemploListaSimplesOrdenadaComparatorAluno ******"); - List lista = new LinkedList<>(); + List lista = new LinkedList<>(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); lista.add(a); lista.add(b); lista.add(c); @@ -36,11 +36,11 @@ private static void exemploListaSimplesOrdenadaClasseExterna() { private static void exemploListaSimplesOrdenadaComparatorAluno() { System.out.println("****** exemploListaSimplesOrdenadaComparatorAluno ******"); - List lista = new LinkedList(); + List lista = new LinkedList(); - Aluno a = new Aluno("João da Silva", "Linux básico", 30); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 20); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 10); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 30); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 20); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 10); lista.add(a); lista.add(b); lista.add(c); @@ -48,7 +48,7 @@ private static void exemploListaSimplesOrdenadaComparatorAluno() { //Collections.sort(lista); System.out.println("Lista com ordenação" + lista); - ComparaNotaAluno comparaNotaAluno = new ComparaNotaAluno(); + ComparaNotaAluno3 comparaNotaAluno = new ComparaNotaAluno3(); Collections.sort(lista, comparaNotaAluno); System.out.println("Lista com ordenação por nota" + lista); diff --git a/mod11/ExemplosMod11/src/br/com/rpires/list/TestesPerformanceList.java b/mod11/ExemplosMod11/src/br/com/rpires/list/TestesPerformanceList.java index f4166b7..409152a 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/list/TestesPerformanceList.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/list/TestesPerformanceList.java @@ -5,7 +5,7 @@ import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class TestesPerformanceList { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploHashMap.java b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploHashMap.java index a6a87d7..fa166f0 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploHashMap.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploHashMap.java @@ -3,7 +3,7 @@ import java.util.*; /** - * @author rodrigo.pires + * @author Steve.Vaz * * Permite chaves e valores null. Não existe garantia que os dados ficarão ordenados. * diff --git a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploLinkedHashMap.java b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploLinkedHashMap.java index b178435..665191c 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploLinkedHashMap.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploLinkedHashMap.java @@ -1,11 +1,10 @@ package br.com.rpires.map; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** - * @author rodrigo.pires + * @author Steve.Vaz * * A ordem de iteração é a ordem em que as chaves são inseridas no mapa. */ diff --git a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploSalaAula.java b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploSalaAula.java index 6533566..469063b 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploSalaAula.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploSalaAula.java @@ -1,6 +1,6 @@ package br.com.rpires.map; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; import java.util.ArrayList; import java.util.HashMap; @@ -8,46 +8,46 @@ import java.util.Map; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploSalaAula { public static void main(String args[]) { - Map> listaSala = new HashMap<>(); + Map> listaSala = new HashMap<>(); - List alunosSala1 = criarTurma("Sala 1",10); + List alunosSala1 = criarTurma("Sala 1",10); listaSala.put(1, alunosSala1); - List alunosSala2 = criarTurma("Sala 2",30); + List alunosSala2 = criarTurma("Sala 2",30); listaSala.put(2, alunosSala2); imprimirAlunosSala(listaSala.get(1)); } - private static List criarTurma(String sala, int count) { - List alunos = new ArrayList<>(); + private static List criarTurma(String sala, int count) { + List alunos = new ArrayList<>(); for (int i = 0; i< count; i++) { - Aluno aluno = new Aluno("Nome aluno " + i, "Curso" + i, i, sala); + Aluno1 aluno = new Aluno1("Nome aluno " + i, "Curso" + i, i, sala); alunos.add(aluno); } return alunos; } - private static void imprimirAlunosSala(List alunos) { + private static void imprimirAlunosSala(List alunos) { //for java 8 API stream System.out.println("for java 8 API stream"); alunos.forEach(aluno->System.out.println("Nome: " + aluno.getNome() + " Sala: " + aluno.getSala())); System.out.println(""); System.out.println("for java"); - for (Aluno aluno : alunos) { + for (Aluno1 aluno : alunos) { System.out.println("Nome: " + aluno.getNome() + " Sala: " + aluno.getSala()); } System.out.println(""); System.out.println("for java com contador"); for (int i = 0; i < alunos.size(); i++) { - Aluno aluno = alunos.get(i); + Aluno1 aluno = alunos.get(i); System.out.println("Nome: " + aluno.getNome() + " Sala: " + aluno.getSala()); } } diff --git a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMap.java b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMap.java index 6eb66b0..a57e74e 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMap.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMap.java @@ -3,7 +3,7 @@ import java.util.*; /** - * @author rodrigo.pires + * @author Steve.Vaz * * Garante que as chaves estarão em ordem ascendente. * diff --git a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMapAluno.java b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMapAluno.java index 59b76c2..7600640 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMapAluno.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/map/ExemploTreeMapAluno.java @@ -1,13 +1,13 @@ package br.com.rpires.map; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; import java.util.Collection; import java.util.Map; import java.util.TreeMap; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploTreeMapAluno { @@ -20,12 +20,12 @@ public static void main(String[] args) { private static void verificaSeExiste() { System.out.println("****** verificaSeExiste ******"); - Map mapa = new TreeMap(); + Map mapa = new TreeMap(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Benedito Silva", "OpenOffice", 0); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Benedito Silva", "OpenOffice", 0); mapa.put("João da Silva", a); mapa.put("Antonio Sousa", b); mapa.put("Lúcia Ferreira", c); @@ -40,7 +40,7 @@ private static void verificaSeExiste() { System.out.println("containsValue Aluno b = " + true); } - Aluno e = new Aluno("Novo Aluno", "OpenOffice", 0); + Aluno1 e = new Aluno1("Novo Aluno", "OpenOffice", 0); System.out.println("containsValue Novo Aluno = " + mapa.containsValue(e)); System.out.println(""); } @@ -48,12 +48,12 @@ private static void verificaSeExiste() { private static void addSeNaoExistir() { System.out.println("****** addSeNaoExistir ******"); - Map mapa = new TreeMap(); + Map mapa = new TreeMap(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Benedito Silva", "OpenOffice", 0); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Benedito Silva", "OpenOffice", 0); mapa.put("João da Silva", a); mapa.put("Antonio Sousa", b); mapa.put("Lúcia Ferreira", c); @@ -65,12 +65,12 @@ private static void addSeNaoExistir() { private static void removendoDoMap() { System.out.println("****** removendoDoMap ******"); - Map mapa = new TreeMap(); + Map mapa = new TreeMap(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Benedito Silva", "OpenOffice", 0); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Benedito Silva", "OpenOffice", 0); mapa.put("João da Silva", a); mapa.put("Antonio Sousa", b); mapa.put("Lúcia Ferreira", c); @@ -85,12 +85,12 @@ private static void removendoDoMap() { private static void mapSimples() { System.out.println("****** mapSimples ******"); - Map mapa = new TreeMap(); + Map mapa = new TreeMap(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Benedito Silva", "OpenOffice", 0); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Benedito Silva", "OpenOffice", 0); mapa.put("João da Silva", a); mapa.put("Antonio Sousa", b); mapa.put("Lúcia Ferreira", c); @@ -98,8 +98,8 @@ private static void mapSimples() { System.out.println(mapa); System.out.println(mapa.get("Lúcia Ferreira")); - Collection alunos = mapa.values(); - for (Aluno e : alunos) { + Collection alunos = mapa.values(); + for (Aluno1 e : alunos) { System.out.println(e); } System.out.println(""); diff --git a/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploArrayDeque.java b/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploArrayDeque.java index 3dd2604..33ec73d 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploArrayDeque.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploArrayDeque.java @@ -4,7 +4,7 @@ import java.util.Deque; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploArrayDeque { @@ -62,7 +62,7 @@ private static void removendoDaFila() { ad.addAll(d); System.out.println("Elements in the ArrayDeque: " + ad); - String val = ad.remove(); + ad.remove(); ad.remove("Black"); System.out.println("Elements in the ArrayDeque after remove: " + ad); @@ -107,7 +107,7 @@ private static void inserindoNaFila() { System.out.println("Elements in the Deque after addAll: " + d); - boolean val = d.offer("Jaipur"); + d.offer("Jaipur"); d.offerFirst("Goa"); d.offerLast("Mumbai"); diff --git a/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploLinkedList.java b/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploLinkedList.java index 00c7e56..893bba9 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploLinkedList.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploLinkedList.java @@ -1,12 +1,10 @@ package br.com.rpires.queue; -import java.util.Collections; import java.util.Deque; import java.util.LinkedList; -import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploLinkedList { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploPriorityQueue.java b/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploPriorityQueue.java index 4cf63c0..13a6289 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploPriorityQueue.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/queue/ExemploPriorityQueue.java @@ -6,7 +6,7 @@ /** * Possuí ordenação natural * - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploPriorityQueue { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSet.java b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSet.java index 39b3c48..e5ef95c 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSet.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSet.java @@ -1,7 +1,5 @@ package br.com.rpires.set; -import br.com.rpires.domain.Aluno; - import java.util.*; /** @@ -9,7 +7,7 @@ * O acesso aos dados é mais rápido que em um TreeSet, mas nada garante que os dados estaram ordenados. * Não repete valores na lista * - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploHashSet { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSetAluno.java b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSetAluno.java index 6fff544..e0199eb 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSetAluno.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploHashSetAluno.java @@ -1,16 +1,18 @@ package br.com.rpires.set; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; import java.util.HashSet; import java.util.Set; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploHashSetAluno { - public static void main(String args[]) { + private static Aluno1 e; + + public static void main(String args[]) { exemploListaSimples(); exemploConsultando(); exemploRemover(); @@ -18,13 +20,13 @@ public static void main(String args[]) { private static void exemploRemover() { System.out.println("**** exemploRemover ****"); - Set conjunto = new HashSet(); + Set conjunto = new HashSet(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Antonio Sousa", "OpenOffice", 10); - Aluno e = new Aluno("Teste", "OpenOffice", 10); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Antonio Sousa", "OpenOffice", 10); + setE(new Aluno1("Teste", "OpenOffice", 10)); conjunto.add(a); conjunto.add(b); conjunto.add(c); @@ -34,20 +36,20 @@ private static void exemploRemover() { conjunto.remove(a); System.out.println(conjunto); - for (Aluno aluno : conjunto) { + for (Aluno1 aluno : conjunto) { System.out.println(aluno); } } private static void exemploConsultando() { System.out.println("**** exemploConsultando ****"); - Set conjunto = new HashSet(); + Set conjunto = new HashSet(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Antonio Sousa", "OpenOffice", 10); - Aluno e = new Aluno("Teste", "OpenOffice", 10); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Antonio Sousa", "OpenOffice", 10); + Aluno1 e = new Aluno1("Teste", "OpenOffice", 10); conjunto.add(a); conjunto.add(b); conjunto.add(c); @@ -61,16 +63,24 @@ private static void exemploConsultando() { * Aluno implemente o equals e hashcode */ private static void exemploListaSimples() { - Set conjunto = new HashSet(); + Set conjunto = new HashSet(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Antonio Sousa", "OpenOffice", 10); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Antonio Sousa", "OpenOffice", 10); conjunto.add(a); conjunto.add(b); conjunto.add(c); conjunto.add(d); System.out.println(conjunto); } + + public static Aluno1 getE() { + return e; + } + + public static void setE(Aluno1 e) { + ExemploHashSetAluno.e = e; + } } diff --git a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploLinkedHashSet.java b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploLinkedHashSet.java index 480fab8..9498b2d 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploLinkedHashSet.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploLinkedHashSet.java @@ -1,13 +1,12 @@ package br.com.rpires.set; -import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; /** * Seus elementos são iterados na ordem em que foram inseridos. * - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploLinkedHashSet { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSet.java b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSet.java index 40a5e0d..dad0b27 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSet.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSet.java @@ -1,6 +1,5 @@ package br.com.rpires.set; -import java.util.HashSet; import java.util.Set; import java.util.TreeSet; @@ -9,7 +8,7 @@ * Os dados são classificados, mas o acesso é mais lento que em um HashSet. * Não repete valores na lista * - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploTreeSet { diff --git a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSetAluno.java b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSetAluno.java index 8772a59..0643177 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSetAluno.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/set/ExemploTreeSetAluno.java @@ -1,13 +1,12 @@ package br.com.rpires.set; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; -import java.util.HashSet; import java.util.Set; import java.util.TreeSet; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ExemploTreeSetAluno { @@ -21,12 +20,12 @@ public static void main(String args[]) { * Tem ordem natural dos objetos */ private static void exemploListaSimples() { - Set conjunto = new TreeSet<>(); + Set conjunto = new TreeSet<>(); - Aluno a = new Aluno("João da Silva", "Linux básico", 0); - Aluno b = new Aluno("Antonio Sousa", "OpenOffice", 0); - Aluno c = new Aluno("Lúcia Ferreira", "Internet", 0); - Aluno d = new Aluno("Antonio Sousa", "OpenOffice", 0); + Aluno1 a = new Aluno1("João da Silva", "Linux básico", 0); + Aluno1 b = new Aluno1("Antonio Sousa", "OpenOffice", 0); + Aluno1 c = new Aluno1("Lúcia Ferreira", "Internet", 0); + Aluno1 d = new Aluno1("Antonio Sousa", "OpenOffice", 0); conjunto.add(a); conjunto.add(b); conjunto.add(c); diff --git a/mod11/ExemplosMod11/src/br/com/rpires/set/TestesPerformanceSet.java b/mod11/ExemplosMod11/src/br/com/rpires/set/TestesPerformanceSet.java index 8d8ddc9..2bd4422 100644 --- a/mod11/ExemplosMod11/src/br/com/rpires/set/TestesPerformanceSet.java +++ b/mod11/ExemplosMod11/src/br/com/rpires/set/TestesPerformanceSet.java @@ -1,6 +1,6 @@ package br.com.rpires.set; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; import java.util.HashSet; import java.util.LinkedHashSet; @@ -8,23 +8,23 @@ import java.util.TreeSet; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class TestesPerformanceSet { public static void main(String args[]) { Random r = new Random(); - HashSet hashSet = new HashSet(); - TreeSet treeSet = new TreeSet(); - LinkedHashSet linkedSet = new LinkedHashSet(); + HashSet hashSet = new HashSet(); + TreeSet treeSet = new TreeSet(); + LinkedHashSet linkedSet = new LinkedHashSet(); // start time long startTime = System.currentTimeMillis(); for (int i = 0; i < 1000; i++) { int x = r.nextInt(1000 - 10) + 10; - hashSet.add(new Aluno("João da Silva", "Linux básico", x)); + hashSet.add(new Aluno1("João da Silva", "Linux básico", x)); } // end time long endTime = System.currentTimeMillis(); @@ -39,7 +39,7 @@ public static void main(String args[]) { for (int i = 0; i < 1000; i++) { int x = r.nextInt(1000 - 10) + 10; - treeSet.add(new Aluno("João da Silva", "Linux básico", x)); + treeSet.add(new Aluno1("João da Silva", "Linux básico", x)); } // end time endTime = System.currentTimeMillis(); @@ -54,7 +54,7 @@ public static void main(String args[]) { for (int i = 0; i < 1000; i++) { int x = r.nextInt(1000 - 10) + 10; - linkedSet.add(new Aluno("João da Silva", "Linux básico", x)); + linkedSet.add(new Aluno1("João da Silva", "Linux básico", x)); } // end time endTime = System.currentTimeMillis(); diff --git a/mod12/.gitignore b/mod12/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/mod12/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/mod12/ExemplosMod12/src/Collections_part_2/Exercise_mod12_part1.java b/mod12/ExemplosMod12/src/Collections_part_2/Exercise_mod12_part1.java new file mode 100644 index 0000000..5f8553a --- /dev/null +++ b/mod12/ExemplosMod12/src/Collections_part_2/Exercise_mod12_part1.java @@ -0,0 +1,71 @@ +package Collections_part_2; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.Scanner; + +/** + * @author Steve.Vaz + */ + +public class Exercise_mod12_part1 implements Comparable { + private String name; + + public Exercise_mod12_part1(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return name; + } + + @Override + public int compareTo(Exercise_mod12_part1 other) { + // Comparar os nomes em ordem alfabética, ignorando maiúsculas/minúsculas + return this.name.toLowerCase().compareTo(other.getName().toLowerCase()); + } + + public static void main(String[] args) { + Locale.setDefault(Locale.US); + Scanner sc = new Scanner(System.in); + + List personList = new ArrayList<>(); + + System.out.print("How many persons will be registered? "); + int N = sc.nextInt(); + + sc.nextLine(); // Consumir a linha em branco após a leitura de N + + for (int i = 0; i < N; i++) { + System.out.println(); + System.out.println("Person #" + (i + 1) + ":"); + + System.out.print("Name: "); + String name = sc.nextLine(); + + Exercise_mod12_part1 person = new Exercise_mod12_part1(name); + personList.add(person); + } + + // Ordenar a lista de pessoas em ordem alfabética (insensível ao caso) + Collections.sort(personList); + + System.out.println(); + System.out.println("List of persons (sorted alphabetically): "); + System.out.println(); + + for (Exercise_mod12_part1 person : personList) { + System.out.println(); + System.out.println(person); + } + + sc.close(); + } +} diff --git a/mod12/ExemplosMod12/src/Collections_part_2/Exercise_mod12_part2.java b/mod12/ExemplosMod12/src/Collections_part_2/Exercise_mod12_part2.java new file mode 100644 index 0000000..5557799 --- /dev/null +++ b/mod12/ExemplosMod12/src/Collections_part_2/Exercise_mod12_part2.java @@ -0,0 +1,125 @@ +package Collections_part_2; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Scanner; + +/** + * @author Steve.Vaz + */ + +enum Gender1 { + MALE, FEMALE; +} + +class Person1 { + private int id; + private String name; + private double salary; + private Gender1 gender; + + public Person1(int id, String name, double salary, Gender1 gender) { + this.id = id; + this.name = name; + this.salary = salary; + this.gender = gender; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public double getSalary() { + return salary; + } + + public Gender1 getGender() { + return gender; + } + + public void increaseSalary(double percent) { + salary += salary * percent / 100.0; + } + + @Override + public String toString() { + return id + ", " + name + ", " + String.format("%.3f%n", salary) + ", " + gender; + } +} + +public class Exercise_mod12_part2 { + public static void main(String[] args) { + Locale.setDefault(Locale.US); + Scanner sc = new Scanner(System.in); + + List personList = new ArrayList<>(); + + System.out.print("How many employees will be registered? "); + int N = sc.nextInt(); + + for (int i = 0; i < N; i++) { + System.out.println(); + System.out.println("Person #" + (i + 1) + ":"); + System.out.print("Id: "); + Integer id = sc.nextInt(); + + while (hasId(personList, id)) { + System.out.println(); + System.out.print("Id already taken! Try again: "); + id = sc.nextInt(); + } + + System.out.print("Name: "); + sc.nextLine(); + String name = sc.nextLine(); + System.out.print("Salary: "); + Double salary = sc.nextDouble(); + + System.out.print("Gender (M/F): "); + char genderChar = sc.next().charAt(0); + Gender1 gender = (genderChar == 'M' || genderChar == 'm') ? Gender1.MALE : Gender1.FEMALE; + + Person1 person = new Person1(id, name, salary, gender); + personList.add(person); + } + + System.out.println(); + System.out.print("Enter the employee id that will have salary increase: "); + int idSalary = sc.nextInt(); + + Person1 emp = personList.stream().filter(x -> x.getId() == idSalary).findFirst().orElse(null); + + System.out.println(); + if (emp == null) { + System.out.println("This id does not exist!"); + } else { + System.out.print("Enter the percentage: "); + double percent = sc.nextDouble(); + emp.increaseSalary(percent); + } + + System.out.println(); + System.out.println("List of employees: "); + System.out.println(); + + for (Person1 e : personList) { + System.out.println(e); + } + + sc.close(); + } + + public static boolean hasId(List list, int id) { + for (Person1 person : list) { + if (person.getId() == id) { + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/mod12/ExemplosMod12/src/Collections_part_2/package-info.java b/mod12/ExemplosMod12/src/Collections_part_2/package-info.java new file mode 100644 index 0000000..338e413 --- /dev/null +++ b/mod12/ExemplosMod12/src/Collections_part_2/package-info.java @@ -0,0 +1 @@ +package Collections_part_2; \ No newline at end of file diff --git a/mod12/ExemplosMod12/src/br/com/rpires/array/ExemploBubbleSortDinamico.java b/mod12/ExemplosMod12/src/br/com/rpires/array/ExemploBubbleSortDinamico.java deleted file mode 100644 index ebb2a10..0000000 --- a/mod12/ExemplosMod12/src/br/com/rpires/array/ExemploBubbleSortDinamico.java +++ /dev/null @@ -1,48 +0,0 @@ -package br.com.rpires.array; - -import java.util.Scanner; - -/** - * @author rodrigo.pires - */ -public class ExemploBubbleSortDinamico { - - public static void main(String args[]) { - Scanner s = new Scanner(System.in); - System.out.println("Digite os números separados por , "); - - String resposta = s.next(); - String[] vetStr = resposta.split(","); - int[] vet = convert(vetStr); - int aux = 0; - int i = 0; - - System.out.println("Vetor desordenado: "); - for(i = 0; i vet[j + 1]){ - aux = vet[j]; - vet[j] = vet[j+1]; - vet[j+1] = aux; - } - } - } - System.out.println("Vetor organizado:"); - for(i = 0; i vet[j + 1]){ + aux = vet[j]; + vet[j] = vet[j+1]; + vet[j+1] = aux; + } + } + } + System.out.println("Vetor organizado:"); + for(i = 0; i{ +public class Aluno1 implements Comparable{ private String nome; private String curso; private double nota; private String sala; - public Aluno(String nome, String curso, double nota) { + public Aluno1(String nome, String curso, double nota) { this.nome = nome; this.curso = curso; this.nota = nota; } - public Aluno(String nome, String curso, double nota, String sala) { + public Aluno1(String nome, String curso, double nota, String sala) { this(nome, curso, nota); this.sala = sala; } @@ -90,7 +90,7 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Aluno aluno = (Aluno) o; - return Objects.equals(nome, aluno.nome); + return Objects.equals(nome, aluno.getNome()); } @Override diff --git a/mod12/ExemplosMod12/src/br/com/rpires/domain/Biblioteca.java b/mod12/ExemplosMod12/src/br/com/rpires/domain/Biblioteca2.java similarity index 78% rename from mod12/ExemplosMod12/src/br/com/rpires/domain/Biblioteca.java rename to mod12/ExemplosMod12/src/br/com/rpires/domain/Biblioteca2.java index ffec7f4..c5c1be6 100644 --- a/mod12/ExemplosMod12/src/br/com/rpires/domain/Biblioteca.java +++ b/mod12/ExemplosMod12/src/br/com/rpires/domain/Biblioteca2.java @@ -4,9 +4,9 @@ import java.util.Set; /** - * @author rodrigo.pires + * @author Steve.Vaz */ -public class Biblioteca { +public class Biblioteca2 { private Long codigo; @@ -14,9 +14,9 @@ public class Biblioteca { private String endereco; - private Set livros; + private Set livros; - public Biblioteca() { + public Biblioteca2() { this.livros = new HashSet<>(); } @@ -44,7 +44,7 @@ public void setEndereco(String endereco) { this.endereco = endereco; } - public Set getLivros() { + public Set getLivros() { return livros; } @@ -52,11 +52,11 @@ public Set getLivros() { // this.livros = livros; // } - public boolean addLivro(Livro livro) { + public boolean addLivro(Livro4 livro) { return this.livros.add(livro); } - public boolean removeLivro(Livro livro) { + public boolean removeLivro(Livro4 livro) { return this.livros.remove(livro); } } diff --git a/mod12/ExemplosMod12/src/br/com/rpires/domain/ComparaNotaAluno.java b/mod12/ExemplosMod12/src/br/com/rpires/domain/ComparaNotaAluno.java deleted file mode 100644 index 50f485c..0000000 --- a/mod12/ExemplosMod12/src/br/com/rpires/domain/ComparaNotaAluno.java +++ /dev/null @@ -1,16 +0,0 @@ -package br.com.rpires.domain; - -import java.util.Comparator; - -/** - * @author rodrigo.pires - */ -public class ComparaNotaAluno implements Comparator { - - @Override - public int compare(Aluno o1, Aluno o2) { - //return Double.valueOf(o1.getNota()).compareTo(Double.valueOf(o2.getNota())); - //return Double.compare(o2.getNota(), o1.getNota()); - return Double.compare(o2.getNota(), o1.getNota()); - } -} diff --git a/mod12/ExemplosMod12/src/br/com/rpires/domain/ComparaNotaAluno3.java b/mod12/ExemplosMod12/src/br/com/rpires/domain/ComparaNotaAluno3.java new file mode 100644 index 0000000..41d6f8c --- /dev/null +++ b/mod12/ExemplosMod12/src/br/com/rpires/domain/ComparaNotaAluno3.java @@ -0,0 +1,11 @@ +package br.com.rpires.domain; + +import java.util.Comparator; + +public class ComparaNotaAluno3 implements Comparator { + + @Override + public int compare(Aluno1 o1, Aluno1 o2) { + return Double.compare(o2.getNota(), o1.getNota()); + } +} diff --git a/mod12/ExemplosMod12/src/br/com/rpires/domain/Livro.java b/mod12/ExemplosMod12/src/br/com/rpires/domain/Livro4.java similarity index 91% rename from mod12/ExemplosMod12/src/br/com/rpires/domain/Livro.java rename to mod12/ExemplosMod12/src/br/com/rpires/domain/Livro4.java index 3895684..ef63ff0 100644 --- a/mod12/ExemplosMod12/src/br/com/rpires/domain/Livro.java +++ b/mod12/ExemplosMod12/src/br/com/rpires/domain/Livro4.java @@ -1,9 +1,9 @@ package br.com.rpires.domain; /** - * @author rodrigo.pires + * @author Steve.Vaz */ -public class Livro { +public class Livro4 { private Long codigo; diff --git a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploHashMap.java b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploHashMap1.java similarity index 98% rename from mod12/ExemplosMod12/src/br/com/rpires/map/ExemploHashMap.java rename to mod12/ExemplosMod12/src/br/com/rpires/map/ExemploHashMap1.java index 69ce3a4..00fd12e 100644 --- a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploHashMap.java +++ b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploHashMap1.java @@ -6,14 +6,14 @@ import java.util.Set; /** - * @author rodrigo.pires + * @author Steve.Vaz * * Permite chaves e valores null. Não existe garantia que os dados ficarão ordenados. * * Para usar uma classe que implementa Map, quaisquer classes que forem utilizadas como chave * devem sobrescrever os métodos hashCode() e equals(). */ -public class ExemploHashMap { +public class ExemploHashMap1 { public static void main(String args[]) { exemploListaSimples(); diff --git a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploLinkedHashMap.java b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploLinkedHashMap1.java similarity index 91% rename from mod12/ExemplosMod12/src/br/com/rpires/map/ExemploLinkedHashMap.java rename to mod12/ExemplosMod12/src/br/com/rpires/map/ExemploLinkedHashMap1.java index fdeb12c..63eee35 100644 --- a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploLinkedHashMap.java +++ b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploLinkedHashMap1.java @@ -4,11 +4,11 @@ import java.util.Map; /** - * @author rodrigo.pires + * @author Steve.Vaz * * A ordem de iteração é a ordem em que as chaves são inseridas no mapa. */ -public class ExemploLinkedHashMap { +public class ExemploLinkedHashMap1 { public static void main(String args[]) { exemploListaSimples(); diff --git a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploSalaAula.java b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploSalaAula1.java similarity index 96% rename from mod12/ExemplosMod12/src/br/com/rpires/map/ExemploSalaAula.java rename to mod12/ExemplosMod12/src/br/com/rpires/map/ExemploSalaAula1.java index 6533566..9157d47 100644 --- a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploSalaAula.java +++ b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploSalaAula1.java @@ -8,9 +8,9 @@ import java.util.Map; /** - * @author rodrigo.pires + * @author Steve.Vaz */ -public class ExemploSalaAula { +public class ExemploSalaAula1 { public static void main(String args[]) { Map> listaSala = new HashMap<>(); diff --git a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMap.java b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMap1.java similarity index 98% rename from mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMap.java rename to mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMap1.java index 69a6d98..1e8595f 100644 --- a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMap.java +++ b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMap1.java @@ -6,14 +6,14 @@ import java.util.TreeMap; /** - * @author rodrigo.pires + * @author Steve.Vaz * * Garante que as chaves estarão em ordem ascendente. * * Para usar uma classe que implementa Map, quaisquer classes que forem utilizadas como chave * devem sobrescrever os métodos hashCode() e equals(). */ -public class ExemploTreeMap { +public class ExemploTreeMap1 { public static void main(String args[]) { exemploListaSimples(); diff --git a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMapAluno.java b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMapAluno1.java similarity index 98% rename from mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMapAluno.java rename to mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMapAluno1.java index 59b76c2..cc310de 100644 --- a/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMapAluno.java +++ b/mod12/ExemplosMod12/src/br/com/rpires/map/ExemploTreeMapAluno1.java @@ -7,9 +7,9 @@ import java.util.TreeMap; /** - * @author rodrigo.pires + * @author Steve.Vaz */ -public class ExemploTreeMapAluno { +public class ExemploTreeMapAluno1 { public static void main(String[] args) { mapSimples(); diff --git a/mod13/.gitignore b/mod13/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/mod13/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/mod13/ExemplosMod13/src/Exercise_mod13/Program.java b/mod13/ExemplosMod13/src/Exercise_mod13/Program.java new file mode 100644 index 0000000..cd3460e --- /dev/null +++ b/mod13/ExemplosMod13/src/Exercise_mod13/Program.java @@ -0,0 +1,62 @@ +package Exercise_mod13; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Scanner; + +public class Program { + + public static void main(String[] args) { + Locale.setDefault(Locale.US); + Scanner sc = new Scanner(System.in); + + List pessoasFisicas = new ArrayList<>(); + List pessoasJuridicas = new ArrayList<>(); + + System.out.println("Insira seus dados para calcular o imposto de renda."); + System.out.print("Digite seu nome: "); + String nome = sc.nextLine(); + + System.out.print("Digite 'F' para pessoa física ou 'J' para pessoa jurídica: "); + char tipo = sc.next().charAt(0); + + if (tipo == 'F' || tipo == 'f') { + System.out.print("Digite a alíquota (exemplo: 20% para 20): "); + int aliquotaPercentual = sc.nextInt(); + System.out.print("Digite sua renda bruta: "); + double rendaBruta = sc.nextDouble(); + System.out.print("Digite as deduções: "); + double deducoes = sc.nextDouble(); + + // Cálculo do imposto de renda de pessoa física + double IRPF = (rendaBruta * aliquotaPercentual / 100) - deducoes; + + pessoa_fisica pessoa = new pessoa_fisica(nome, (int) aliquotaPercentual, rendaBruta, deducoes, 0, IRPF); + pessoasFisicas.add(pessoa); + + // Exibe o valor do imposto de renda da pessoa física com 2 casas decimais + System.out.printf("Imposto de Renda Pessoa Física de %s: %.3f%n", nome, IRPF); + } else if (tipo == 'J' || tipo == 'j') { + System.out.print("Digite o lucro tributável: "); + double lucroTributavel = sc.nextDouble(); + System.out.print("Digite a alíquota (exemplo: 20% para 20): "); + int aliquotaPercentual = sc.nextInt(); + System.out.print("Digite as deduções: "); + double deducoes = sc.nextDouble(); + System.out.print("Digite a parcela a deduzir: "); + double parcelaAdeduzir = sc.nextDouble(); + + double IRPJ = ((lucroTributavel * aliquotaPercentual / 100) - deducoes - parcelaAdeduzir); + + pessoa_juridica pessoa = new pessoa_juridica(nome, (int) aliquotaPercentual, 0, deducoes, parcelaAdeduzir, IRPJ); + + pessoasJuridicas.add(pessoa); + + // Exibe o valor do imposto de renda da pessoa jurídica com 2 casas decimais + System.out.printf("Imposto de Renda Pessoa Jurídica de %s: %.3f%n", nome, IRPJ); + } + + sc.close(); + } +} diff --git a/mod13/ExemplosMod13/src/Exercise_mod13/package-info.java b/mod13/ExemplosMod13/src/Exercise_mod13/package-info.java new file mode 100644 index 0000000..055a4a8 --- /dev/null +++ b/mod13/ExemplosMod13/src/Exercise_mod13/package-info.java @@ -0,0 +1 @@ +package Exercise_mod13; \ No newline at end of file diff --git a/mod13/ExemplosMod13/src/Exercise_mod13/pessoa.java b/mod13/ExemplosMod13/src/Exercise_mod13/pessoa.java new file mode 100644 index 0000000..d52b7e5 --- /dev/null +++ b/mod13/ExemplosMod13/src/Exercise_mod13/pessoa.java @@ -0,0 +1,68 @@ +package Exercise_mod13; + +public abstract class pessoa { + private String name; + private int aliquota; + private double rendaBruta; + private double deducoes; + private double parcelaAdeduzir; + private double lucroTributavel; + + public pessoa(String name, int aliquota, double rendaBruta, double deducoes, double parcelaAdeduzir, double lucroTributavel) { + super(); + this.name = name; + this.aliquota = aliquota; + this.rendaBruta = rendaBruta; + this.deducoes = deducoes; + this.parcelaAdeduzir = parcelaAdeduzir; + this.lucroTributavel = lucroTributavel; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAliquota() { + return aliquota; + } + + public void setAliquota(int aliquota) { + this.aliquota = aliquota; + } + + public double getRendaBruta() { + return rendaBruta; + } + + public void setRendaBruta(double rendaBruta) { + this.rendaBruta = rendaBruta; + } + + public double getDeducoes() { + return deducoes; + } + + public void setDeducoes(double deduçoes) { + this.deducoes = deduçoes; + } + + public double getParcelaAdeduzir() { + return parcelaAdeduzir; + } + + public void setParcelaAdeduzir(double parcelaAdeduzir) { + this.parcelaAdeduzir = parcelaAdeduzir; + } + + public double getLucroTributavel() { + return lucroTributavel; + } + + public void setLucroTributavel(double lucroTributavel) { + this.lucroTributavel = lucroTributavel; + } +} \ No newline at end of file diff --git a/mod13/ExemplosMod13/src/Exercise_mod13/pessoa_fisica.java b/mod13/ExemplosMod13/src/Exercise_mod13/pessoa_fisica.java new file mode 100644 index 0000000..3da2ae1 --- /dev/null +++ b/mod13/ExemplosMod13/src/Exercise_mod13/pessoa_fisica.java @@ -0,0 +1,36 @@ +package Exercise_mod13; + +public class pessoa_fisica extends pessoa { + // Propriedades da pessoa física. + private String existenciaBiologica; + private String CaracteristicasHumanaseEmocoes; + private double IRPF; + + public pessoa_fisica(String name, int aliquota, double rendaBruta, double deduçoes, double parcelaAdeduzir, double lucroTributavel) { + super(name, aliquota, rendaBruta, deduçoes, parcelaAdeduzir, 0); + } + + public String getExistenciaBiologica() { + return existenciaBiologica; + } + + public void setExistenciaBiologica(String existenciaBiologica) { + this.existenciaBiologica = existenciaBiologica; + } + + public String getCaracteristicasHumanaseEmocoes() { + return CaracteristicasHumanaseEmocoes; + } + + public void setCaracterísticasHumanaseEmocoes(String caracteristicasHumanaseEmocoes) { + CaracteristicasHumanaseEmocoes = caracteristicasHumanaseEmocoes; + } + + public double getIRPF() { + return IRPF; + } + + public void setIRPF(double IRPF) { + this.IRPF = IRPF; + } +} \ No newline at end of file diff --git a/mod13/ExemplosMod13/src/Exercise_mod13/pessoa_juridica.java b/mod13/ExemplosMod13/src/Exercise_mod13/pessoa_juridica.java new file mode 100644 index 0000000..4a5fd5f --- /dev/null +++ b/mod13/ExemplosMod13/src/Exercise_mod13/pessoa_juridica.java @@ -0,0 +1,36 @@ +package Exercise_mod13; + +public class pessoa_juridica extends pessoa { + // Propriedades da pessoa jurídica. + private int TributacaoDiferenciada; + private String ExistenciaPermanente; + private double IRPJ; + + public pessoa_juridica(String name, int aliquota, double rendaBruta, double deduçoes, double parcelaAdeduzir, double lucroTributavel) { + super(name, aliquota, rendaBruta, deduçoes, parcelaAdeduzir, lucroTributavel); + } + + public String getExistenciaPermanente() { + return ExistenciaPermanente; + } + + public void setExistenciaPermanente(String existenciaPermanente) { + ExistenciaPermanente = existenciaPermanente; + } + + public int getTributacaoDiferenciada() { + return TributacaoDiferenciada; + } + + public void setTributacaoDiferenciada(int tributaçãoDiferenciada) { + TributacaoDiferenciada = tributaçãoDiferenciada; + } + + public double getIRPJ() { + return IRPJ; + } + + public void setIRPJ(double IRPJ) { + this.IRPJ = IRPJ; + } +} \ No newline at end of file diff --git a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/App.java b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/App.java index cb75d28..3848150 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/App.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/App.java @@ -1,7 +1,7 @@ package br.com.rpires.Composicao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class App { @@ -21,7 +21,6 @@ public static void main(String aargs[]) { banco.add(cc); banco.add(cp); - Banco banco2 = new Banco(); banco.setCodigo(10L); banco.setNome("Banco Pires2"); } diff --git a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/Banco.java b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/Banco.java index 5be8b16..0c81b98 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/Banco.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/Banco.java @@ -1,11 +1,10 @@ package br.com.rpires.Composicao; import java.util.HashSet; -import java.util.List; import java.util.Set; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Banco { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaCorrente.java b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaCorrente.java index 6018600..06e71e5 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaCorrente.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaCorrente.java @@ -1,7 +1,7 @@ package br.com.rpires.Composicao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ContaCorrente { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaPoupanca.java b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaPoupanca.java index 6f79b20..8815978 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaPoupanca.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/Composicao/ContaPoupanca.java @@ -1,7 +1,7 @@ package br.com.rpires.Composicao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ContaPoupanca { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Assalariado.java b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Assalariado.java index b6f0ebc..ad66db5 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Assalariado.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Assalariado.java @@ -1,7 +1,7 @@ package br.com.rpires.abstratas; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Assalariado extends Empregado { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Comissionado.java b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Comissionado.java index e5cbda1..f86160c 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Comissionado.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Comissionado.java @@ -1,7 +1,7 @@ package br.com.rpires.abstratas; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Comissionado extends Empregado { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Empregado.java b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Empregado.java index 3e6fe69..51c1b7d 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Empregado.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Empregado.java @@ -1,7 +1,7 @@ package br.com.rpires.abstratas; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public abstract class Empregado { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Horista.java b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Horista.java index 363d6f3..a1a1884 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Horista.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Horista.java @@ -1,7 +1,7 @@ package br.com.rpires.abstratas; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Horista extends Empregado { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Programa.java b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Programa.java index da1a06c..47d5267 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Programa.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/abstratas/Programa.java @@ -1,7 +1,7 @@ package br.com.rpires.abstratas; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Programa { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Comprador.java b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Comprador.java index 5a925ac..9c32626 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Comprador.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Comprador.java @@ -1,7 +1,7 @@ package br.com.rpires.agregacao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Comprador { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Produto.java b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Produto.java index 36b6af5..fb003c6 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Produto.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Produto.java @@ -1,7 +1,7 @@ package br.com.rpires.agregacao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Produto { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Programa.java b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Programa.java index 929887e..c8f1d2d 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Programa.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Programa.java @@ -1,7 +1,7 @@ package br.com.rpires.agregacao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Programa { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Venda.java b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Venda.java index da41991..f34117d 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Venda.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Venda.java @@ -4,7 +4,7 @@ import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Venda { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Vendedor.java b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Vendedor.java index fc3d909..e6a58f1 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Vendedor.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/agregacao/Vendedor.java @@ -1,7 +1,7 @@ package br.com.rpires.agregacao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Vendedor { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/App.java b/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/App.java index 74bf76f..f737b1f 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/App.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/App.java @@ -5,7 +5,7 @@ import java.util.Random; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class App { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/AppExemploMapa.java b/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/AppExemploMapa.java index 0216437..06b4eb8 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/AppExemploMapa.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/AppExemploMapa.java @@ -5,7 +5,7 @@ import java.util.Random; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class AppExemploMapa { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/ClasseGeraProdutos.java b/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/ClasseGeraProdutos.java index 468dd4e..c62e3f4 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/ClasseGeraProdutos.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/exemplo/abstracao/bonus/ClasseGeraProdutos.java @@ -4,7 +4,7 @@ import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ClasseGeraProdutos { diff --git a/mod13/ExemplosMod13/src/br/com/rpires/interfaces/ClasseTeste.java b/mod13/ExemplosMod13/src/br/com/rpires/interfaces/ClasseTeste.java index a775abe..09c44b8 100644 --- a/mod13/ExemplosMod13/src/br/com/rpires/interfaces/ClasseTeste.java +++ b/mod13/ExemplosMod13/src/br/com/rpires/interfaces/ClasseTeste.java @@ -1,11 +1,7 @@ package br.com.rpires.interfaces; -import br.com.rpires.interfaces.*; - -import java.util.List; - /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ClasseTeste { @@ -16,12 +12,12 @@ public static void main(String args[]) { System.out.println(caneta.getCor()); ICaneta giz = new Giz(); - giz.escrever("Olá Rodrigo"); + giz.escrever("Olá Steve"); giz.escreverComumATodas(); System.out.println(giz.getCor()); Lapis lapis = new Lapis(); - lapis.escrever("Olá Rodrigo"); + lapis.escrever("Olá Steve"); lapis.escreverComumATodas(); System.out.println(lapis.getCor()); diff --git a/mod14/.gitignore b/mod14/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/mod14/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/mod14/CadastroCliente/src/br/com/rpires/App.java b/mod14/CadastroCliente/src/br/com/rpires/App.java index 05de957..b2e2596 100644 --- a/mod14/CadastroCliente/src/br/com/rpires/App.java +++ b/mod14/CadastroCliente/src/br/com/rpires/App.java @@ -1,17 +1,16 @@ package br.com.rpires; -import br.com.rpires.dao.ClienteMapDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import javax.swing.JOptionPane; -import javax.swing.*; +import br.com.rpires.dao.ClienteMapDAO; +import br.com.rpires.domain.Cliente_2; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class App { - private static IClienteDAO iClienteDAO; + private static ClienteMapDAO iClienteDAO; public static void main(String args[]) { iClienteDAO = new ClienteMapDAO(); @@ -53,7 +52,7 @@ public static void main(String args[]) { private static void consultar(String dados) { //Validar se foi passado somente o cpf - Cliente cliente = iClienteDAO.consultar(Long.parseLong(dados)); + Cliente_2 cliente = iClienteDAO.consultar(Long.parseLong(dados)); if (cliente != null) { JOptionPane.showMessageDialog(null, "Cliente encontrado: " + cliente.toString(), "Sucesso",JOptionPane.INFORMATION_MESSAGE); } else { @@ -74,7 +73,7 @@ private static void cadastrar(String dados) { //Tentar validar se todos os campos estão preenchidos. //Se não tiver, passr null no construtor onde o valor é nulo //Cliente cliente = new Cliente(dadosSeparados[0],dadosSeparados[1],null,dadosSeparados[3],dadosSeparados[4],dadosSeparados[5],dadosSeparados[6]) - Cliente cliente = new Cliente(dadosSeparados[0],dadosSeparados[1],dadosSeparados[2],dadosSeparados[3],dadosSeparados[4],dadosSeparados[5],dadosSeparados[6]); + Cliente_2 cliente = new Cliente_2(dadosSeparados[0],dadosSeparados[1],dadosSeparados[2],dadosSeparados[3],dadosSeparados[4],dadosSeparados[5],dadosSeparados[6]); Boolean isCadastrado = iClienteDAO.cadastrar(cliente); if (isCadastrado) { JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso ", "Sucesso",JOptionPane.INFORMATION_MESSAGE); @@ -110,10 +109,8 @@ private static boolean isOpcaoValida(String opcao) { return false; } - private static boolean isOpcaoCadastro(String opcao) { - if ("1".equals(opcao)) { - return true; - } - return false; - } -} + public Object getGreeting() { + // TODO Auto-generated method stub + return null; + } +} \ No newline at end of file diff --git a/mod14/CadastroCliente/src/br/com/rpires/dao/ClienteMapDAO.java b/mod14/CadastroCliente/src/br/com/rpires/dao/ClienteMapDAO.java index 2436e7d..b124f72 100644 --- a/mod14/CadastroCliente/src/br/com/rpires/dao/ClienteMapDAO.java +++ b/mod14/CadastroCliente/src/br/com/rpires/dao/ClienteMapDAO.java @@ -1,6 +1,6 @@ package br.com.rpires.dao; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import java.util.Collection; import java.util.HashMap; @@ -9,16 +9,16 @@ /** * @author rodrigo.pires */ -public class ClienteMapDAO implements IClienteDAO { +public class ClienteMapDAO implements IClientDAO { - private Map map; + private Map map; public ClienteMapDAO() { this.map = new HashMap<>(); } @Override - public Boolean cadastrar(Cliente cliente) { + public Boolean cadastrar(Cliente_2 cliente) { if (this.map.containsKey(cliente.getCpf())) { return false; } @@ -26,9 +26,8 @@ public Boolean cadastrar(Cliente cliente) { return true; } - @Override public void excluir(Long cpf) { - Cliente clienteCadastrado = this.map.get(cpf); + Cliente_2 clienteCadastrado = this.map.get(cpf); if (clienteCadastrado != null) { this.map.remove(clienteCadastrado.getCpf(), clienteCadastrado); @@ -36,8 +35,8 @@ public void excluir(Long cpf) { } @Override - public void alterar(Cliente cliente) { - Cliente clienteCadastrado = this.map.get(cliente.getCpf()); + public void alterar(Cliente_2 cliente) { + Cliente_2 clienteCadastrado = this.map.get(cliente.getCpf()); if (clienteCadastrado != null) { clienteCadastrado.setNome(cliente.getNome()); clienteCadastrado.setTel(cliente.getTel()); @@ -48,13 +47,42 @@ public void alterar(Cliente cliente) { } } - @Override - public Cliente consultar(Long cpf) { + public Cliente_2 consultar(Long cpf) { return this.map.get(cpf); } - @Override - public Collection buscarTodos() { + public Collection buscarTodos() { return this.map.values(); } -} + + public Boolean cadastrar(Object entity) { + // TODO Auto-generated method stub + return null; + } + + public void excluir(Object valor) { + // TODO Auto-generated method stub + + } + + public void alterar(Object entity) { + // TODO Auto-generated method stub + + } + + public Cliente_2 consultar(Object valor) { + // TODO Auto-generated method stub + return null; + } + + public Class getTipoClasse() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void excluir(long parseLong) { + // TODO Auto-generated method stub + + } +} \ No newline at end of file diff --git a/mod14/CadastroCliente/src/br/com/rpires/dao/IClienteDAO.java b/mod14/CadastroCliente/src/br/com/rpires/dao/IClienteDAO.java index 430732d..bf49e9f 100644 --- a/mod14/CadastroCliente/src/br/com/rpires/dao/IClienteDAO.java +++ b/mod14/CadastroCliente/src/br/com/rpires/dao/IClienteDAO.java @@ -1,21 +1,28 @@ package br.com.rpires.dao; -import br.com.rpires.domain.Cliente; - import java.util.Collection; -/** - * @author rodrigo.pires - */ -public interface IClienteDAO { +import br.com.rpires.domain.Cliente_2; + +public interface IClienteDAO { + + int cadastrar(Cliente_2 cliente) throws Exception; + + Integer excluir(Cliente_2 clienteBD) throws Exception; + + void alterar(Cliente_2 cliente); + + Cliente_2 consultar(Object valor); + + Collection buscarTodos(); - public Boolean cadastrar(Cliente cliente); + Class getTipoClasse(); - public void excluir(Long cpf); + Boolean cadastrar(Object entity); - public void alterar(Cliente cliente); + void excluir(long parseLong); - public Cliente consultar(Long cpf); + Cliente_2 consultar(Long cpf); - public Collection buscarTodos(); + void alterar(Object entity); } diff --git a/mod14/CadastroCliente/src/br/com/rpires/domain/Cliente.java b/mod14/CadastroCliente/src/br/com/rpires/domain/Cliente.java index 71d9d69..ce23c67 100644 --- a/mod14/CadastroCliente/src/br/com/rpires/domain/Cliente.java +++ b/mod14/CadastroCliente/src/br/com/rpires/domain/Cliente.java @@ -5,7 +5,7 @@ /** * @author rodrigo.pires */ -public class Cliente { +public class Cliente extends Cliente_2 { private String nome; private Long cpf; @@ -26,7 +26,11 @@ public Cliente(String nome, String cpf, String tel, String end, String num, Stri } - public String getNome() { + public Cliente() { + // TODO Auto-generated constructor stub + } + + public String getNome() { return nome; } @@ -86,8 +90,8 @@ public void setEstado(String estado) { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - Cliente cliente = (Cliente) o; - return Objects.equals(cpf, cliente.cpf); + Cliente_2 cliente = (Cliente) o; + return Objects.equals(cpf, ((Cliente) cliente).cpf); } @Override @@ -102,4 +106,24 @@ public String toString() { ", cpf=" + cpf + '}'; } + + public String getCodigo() { + // TODO Auto-generated method stub + return null; + } + + public void setCodigo(String string) { + // TODO Auto-generated method stub + + } + + public void setId(long long1) { + // TODO Auto-generated method stub + + } + + public Object getId() { + // TODO Auto-generated method stub + return null; + } } diff --git a/mod14/ExemplosMod14Professor/src/br/com/rpires/App.java b/mod14/ExemplosMod14Professor/src/br/com/rpires/App.java deleted file mode 100644 index b91abbd..0000000 --- a/mod14/ExemplosMod14Professor/src/br/com/rpires/App.java +++ /dev/null @@ -1,147 +0,0 @@ -package br.com.rpires; - -import br.com.rpires.dao.ClienteMapDAO; -import br.com.rpires.dao.ClienteSetDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; - -import javax.swing.*; - -/** - * @author rodrigo.pires - */ -public class App { - - private static IClienteDAO iClienteDAO; - - public static void main(String args[]) { - iClienteDAO = new ClienteSetDAO(); - - String opcao = JOptionPane.showInputDialog(null, - "Digite 1 para cadastro, 2 para consultar, 3 para exclusão, 4 para alteração ou 5 para sair", - "Green dinner", JOptionPane.INFORMATION_MESSAGE); - - while (!isOpcaoValida(opcao)) { - if ("".equals(opcao)) { - sair(); - } - opcao = JOptionPane.showInputDialog(null, - "Opção inválida digite 1 para cadastro, 2 para consulta, 3 para cadastro, 4 para alteração ou 5 para sair", - "Green dinner", JOptionPane.INFORMATION_MESSAGE); - } - - while (isOpcaoValida(opcao)) { - - if (isOpcaoSair(opcao)) { - sair(); - }else if (isCadastro(opcao)) { - String dados = JOptionPane.showInputDialog(null, - "Digite os dados do cliente separados por vígula, conforme exemplo: Nome, CPF, Telefone, Endereço, Número, Cidade e Estado", - "Cadastro", JOptionPane.INFORMATION_MESSAGE); - cadastrar(dados); - } else if (isConsulta(opcao)) { - String dados = JOptionPane.showInputDialog(null, - "Digite o CPF do cliente", - "Consulta cliente", JOptionPane.INFORMATION_MESSAGE); - consultar(dados); - } else if (isExclusao(opcao)) { - String dados = JOptionPane.showInputDialog(null, - "Digite o CPF do cliente", - "Consulta cliente", JOptionPane.INFORMATION_MESSAGE); - excluir(dados); - } else { - String dados = JOptionPane.showInputDialog(null, - "Digite os dados do cliente separados por vígula, conforme exemplo: Nome, CPF, Telefone, Endereço, Número, Cidade e Estado", - "Atualização", JOptionPane.INFORMATION_MESSAGE); - atualizar(dados); - } - - opcao = JOptionPane.showInputDialog(null, - "Digite 1 para cadastro, 2 para consulta, 3 para cadastro, 4 para alteração ou 5 para sair", - "Green dinner", JOptionPane.INFORMATION_MESSAGE); - - } - - } - - private static void atualizar(String dados) { - String[] dadosSeparados = dados.split(","); - Cliente cliente = new Cliente(dadosSeparados[0],dadosSeparados[1],dadosSeparados[2],dadosSeparados[3],dadosSeparados[4],dadosSeparados[5],dadosSeparados[6]); - iClienteDAO.alterar(cliente); - } - - private static void excluir(String dados) { - iClienteDAO.excluir(Long.parseLong(dados)); - JOptionPane.showMessageDialog(null, "Cliente excluído com sucesso: ", "Sucesso",JOptionPane.INFORMATION_MESSAGE); - } - - - private static void consultar(String dados) { - Cliente cliente = iClienteDAO.consultar(Long.parseLong(dados)); - if (cliente != null) { - JOptionPane.showMessageDialog(null, "Cliente encontrado com sucesso: " + cliente.toString(), "Sucesso",JOptionPane.INFORMATION_MESSAGE); - } else { - JOptionPane.showMessageDialog(null, "Cliente não encontrado", "ERRO",JOptionPane.INFORMATION_MESSAGE); - } - - } - - private static void cadastrar(String dados) { - String[] dadosSeparados = dados.split(","); - Cliente cliente = new Cliente(dadosSeparados[0],dadosSeparados[1],dadosSeparados[2],dadosSeparados[3],dadosSeparados[4],dadosSeparados[5],dadosSeparados[6]); - Boolean isCadastrado = iClienteDAO.cadastrar(cliente); - if (isCadastrado) { - JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso ", "Sucesso",JOptionPane.INFORMATION_MESSAGE); - } else { - JOptionPane.showMessageDialog(null, "Cliente já se encontra cadastrado", "Erro",JOptionPane.INFORMATION_MESSAGE); - } - - } - - private static boolean isExclusao(String opcao) { - if ("3".equals(opcao)) { - return true; - } - return false; - } - - private static boolean isConsulta(String opcao) { - if ("2".equals(opcao)) { - return true; - } - return false; - } - - private static boolean isCadastro(String opcao) { - if ("1".equals(opcao)) { - return true; - } - return false; - } - - private static void sair() { - String clientesCadastrados = ""; - for (Cliente cliente : iClienteDAO.buscarTodos()) { - clientesCadastrados += cliente.toString() + "\n"; - } - - JOptionPane.showMessageDialog(null, "Clientes cadastrados: " + clientesCadastrados, "Até logo",JOptionPane.INFORMATION_MESSAGE); - System.exit(0); - } - - private static boolean isOpcaoSair(String opcao) { - if ("5".equals(opcao)) { - return true; - } - return false; - } - - private static boolean isOpcaoValida(String opcao) { - if ("1".equals(opcao) || "2".equals(opcao) - || "3".equals(opcao) || "4".equals(opcao) || "5".equals(opcao)) { - return true; - } - return false; - } - -} diff --git a/mod14/ExemplosMod14Professor/src/br/com/rpires/App1.java b/mod14/ExemplosMod14Professor/src/br/com/rpires/App1.java new file mode 100644 index 0000000..9d0bb2d --- /dev/null +++ b/mod14/ExemplosMod14Professor/src/br/com/rpires/App1.java @@ -0,0 +1,149 @@ +package br.com.rpires; + +import br.com.rpires.dao.ClienteSetDAO; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; + +import javax.swing.*; + +/** + * @author Steve.Vaz + */ +public class App1 { + + private static IClientDAO iClienteDAO; + + public static void main(String args[]) throws Exception { + iClienteDAO = (IClientDAO) new ClienteSetDAO(); + + String opcao = JOptionPane.showInputDialog(null, + "Digite 1 para cadastro, 2 para consultar, 3 para exclusão, 4 para alteração ou 5 para sair", + "Green dinner", JOptionPane.INFORMATION_MESSAGE); + + while (!isOpcaoValida(opcao)) { + if ("".equals(opcao)) { + sair(); + } + opcao = JOptionPane.showInputDialog(null, + "Opção inválida digite 1 para cadastro, 2 para consulta, 3 para cadastro, 4 para alteração ou 5 para sair", + "Green dinner", JOptionPane.INFORMATION_MESSAGE); + } + + while (isOpcaoValida(opcao)) { + + if (isOpcaoSair(opcao)) { + sair(); + } else if (isCadastro(opcao)) { + String dados = JOptionPane.showInputDialog(null, + "Digite os dados do cliente separados por vígula, conforme exemplo: Nome, CPF, Telefone, Endereço, Número, Cidade e Estado", + "Cadastro", JOptionPane.INFORMATION_MESSAGE); + cadastrar(dados); + } else if (isConsulta(opcao)) { + String dados = JOptionPane.showInputDialog(null, "Digite o CPF do cliente", "Consulta cliente", + JOptionPane.INFORMATION_MESSAGE); + consultar(dados); + } else if (isExclusao(opcao)) { + String dados = JOptionPane.showInputDialog(null, "Digite o CPF do cliente", "Consulta cliente", + JOptionPane.INFORMATION_MESSAGE); + excluir(dados); + } else { + String dados = JOptionPane.showInputDialog(null, + "Digite os dados do cliente separados por vígula, conforme exemplo: Nome, CPF, Telefone, Endereço, Número, Cidade e Estado", + "Atualização", JOptionPane.INFORMATION_MESSAGE); + atualizar(dados); + } + + opcao = JOptionPane.showInputDialog(null, + "Digite 1 para cadastro, 2 para consulta, 3 para cadastro, 4 para alteração ou 5 para sair", + "Green dinner", JOptionPane.INFORMATION_MESSAGE); + + } + + } + + private static void atualizar(String dados) { + String[] dadosSeparados = dados.split(","); + Cliente_2 cliente = new Cliente_2(dadosSeparados[0], dadosSeparados[1], dadosSeparados[2], dadosSeparados[3], + dadosSeparados[4], dadosSeparados[5], dadosSeparados[6]); + iClienteDAO.alterar(cliente); + } + + private static void excluir(String dados) { + iClienteDAO.excluir(Long.parseLong(dados)); + JOptionPane.showMessageDialog(null, "Cliente excluído com sucesso: ", "Sucesso", + JOptionPane.INFORMATION_MESSAGE); + } + + private static void consultar(String dados) { + Cliente_2 cliente = iClienteDAO.consultar(Long.parseLong(dados)); + if (cliente != null) { + JOptionPane.showMessageDialog(null, "Cliente encontrado com sucesso: " + cliente.toString(), "Sucesso", + JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(null, "Cliente não encontrado", "ERRO", JOptionPane.INFORMATION_MESSAGE); + } + + } + + private static void cadastrar(String dados) throws Exception { + String[] dadosSeparados = dados.split(","); + Cliente_2 cliente = new Cliente_2(dadosSeparados[0], dadosSeparados[1], dadosSeparados[2], dadosSeparados[3], + dadosSeparados[4], dadosSeparados[5], dadosSeparados[6]); + Boolean isCadastrado = iClienteDAO.cadastrar(cliente); + if (isCadastrado) { + JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso ", "Sucesso", + JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(null, "Cliente já se encontra cadastrado", "Erro", + JOptionPane.INFORMATION_MESSAGE); + } + + } + + private static boolean isExclusao(String opcao) { + if ("3".equals(opcao)) { + return true; + } + return false; + } + + private static boolean isConsulta(String opcao) { + if ("2".equals(opcao)) { + return true; + } + return false; + } + + private static boolean isCadastro(String opcao) { + if ("1".equals(opcao)) { + return true; + } + return false; + } + + private static void sair() { + String clientesCadastrados = ""; + for (Cliente_2 cliente : iClienteDAO.buscarTodos()) { + clientesCadastrados += cliente.toString() + "\n"; + } + + JOptionPane.showMessageDialog(null, "Clientes cadastrados: " + clientesCadastrados, "Até logo", + JOptionPane.INFORMATION_MESSAGE); + System.exit(0); + } + + private static boolean isOpcaoSair(String opcao) { + if ("5".equals(opcao)) { + return true; + } + return false; + } + + private static boolean isOpcaoValida(String opcao) { + if ("1".equals(opcao) || "2".equals(opcao) || "3".equals(opcao) || "4".equals(opcao) || "5".equals(opcao)) { + return true; + } + return false; + } + +} diff --git a/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteMapDAO.java b/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteMapDAO1.java similarity index 50% rename from mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteMapDAO.java rename to mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteMapDAO1.java index 2020c9b..0630199 100644 --- a/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteMapDAO.java +++ b/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteMapDAO1.java @@ -5,7 +5,7 @@ */ package br.com.rpires.dao; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import java.util.*; @@ -13,16 +13,15 @@ * * @author rodrigo.pires */ -public class ClienteMapDAO implements IClienteDAO { +public class ClienteMapDAO1 implements IClientDAO { - private Map map; + private Map map; - public ClienteMapDAO() { + public ClienteMapDAO1() { map = new TreeMap<>(); } - @Override - public Boolean cadastrar(Cliente cliente) { + public Boolean cadastrar(Cliente_2 cliente) { if (map.containsKey(cliente.getCpf())) { return false; } @@ -31,15 +30,13 @@ public Boolean cadastrar(Cliente cliente) { return true; } - @Override public void excluir(Long cpf) { - Cliente clienteCadastrado = map.get(cpf); + Cliente_2 clienteCadastrado = map.get(cpf); map.remove(clienteCadastrado.getCpf(), clienteCadastrado); } - @Override - public void alterar(Cliente cliente) { - Cliente clienteCadastrado = map.get(cliente.getCpf()); + public void alterar(Cliente_2 cliente) { + Cliente_2 clienteCadastrado = map.get(cliente.getCpf()); clienteCadastrado.setNome(cliente.getNome()); clienteCadastrado.setTel(cliente.getTel()); clienteCadastrado.setNumero(cliente.getNumero()); @@ -48,14 +45,42 @@ public void alterar(Cliente cliente) { clienteCadastrado.setEstado(cliente.getEstado()); } - @Override - public Cliente consultar(Long cpf) { + public Cliente_2 consultar(Long cpf) { return this.map.get(cpf); } - @Override - public Collection buscarTodos() { + public Collection buscarTodos() { return this.map.values(); } + public Boolean cadastrar(Object entity) { + // TODO Auto-generated method stub + return null; + } + + public void excluir(Object valor) { + // TODO Auto-generated method stub + + } + + public void alterar(Object entity) { + // TODO Auto-generated method stub + + } + + public Cliente_2 consultar(Object valor) { + // TODO Auto-generated method stub + return null; + } + + public Class getTipoClasse() { + // TODO Auto-generated method stub + return null; + } + + public void excluir(long parseLong) { + // TODO Auto-generated method stub + + } + } diff --git a/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteSetDAO.java b/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteSetDAO.java index cac1991..9b41b45 100644 --- a/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteSetDAO.java +++ b/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/ClienteSetDAO.java @@ -7,32 +7,32 @@ import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Set; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * - * @author rodrigo.pires + * @author Steve Vaz */ -public class ClienteSetDAO implements IClienteDAO { + +public class ClienteSetDAO implements IClienteDAO2 { - private Set set; + private Set set; public ClienteSetDAO() { this.set = new HashSet<>(); } @Override - public Boolean cadastrar(Cliente cliente) { + public Boolean cadastrar(Cliente_2 cliente) { return this.set.add(cliente); } @Override public void excluir(Long cpf) { - Cliente clienteEncontrato = null; - for (Cliente cliente : this.set) { + Cliente_2 clienteEncontrato = null; + for (Cliente_2 cliente : this.set) { if (cliente.getCpf().equals(cpf)) { clienteEncontrato = cliente; break; @@ -45,9 +45,9 @@ public void excluir(Long cpf) { } @Override - public void alterar(Cliente cliente) { + public void alterar(Cliente_2 cliente) { if (this.set.contains(cliente)) { - for (Cliente clienteCadastrado : this.set) { + for (Cliente_2 clienteCadastrado : this.set) { if (clienteCadastrado.equals(cliente)) { clienteCadastrado.setNome(cliente.getNome()); clienteCadastrado.setTel(cliente.getTel()); @@ -62,8 +62,8 @@ public void alterar(Cliente cliente) { } @Override - public Cliente consultar(Long cpf) { - for (Cliente clienteCadastrado : this.set) { + public Cliente_2 consultar(Long cpf) { + for (Cliente_2 clienteCadastrado : this.set) { if (clienteCadastrado.getCpf().equals(cpf)) { return clienteCadastrado; } @@ -72,8 +72,34 @@ public Cliente consultar(Long cpf) { } @Override - public Collection buscarTodos() { + public Collection buscarTodos() { return this.set; } + public Boolean cadastrar(Object entity) { + // TODO Auto-generated method stub + return null; + } + + public void excluir(Object valor) { + // TODO Auto-generated method stub + + } + + public void alterar(Object entity) { + // TODO Auto-generated method stub + + } + + public Cliente_2 consultar(Object valor) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Class getTipoClasse() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/IClienteDAO.java b/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/IClienteDAO1.java similarity index 50% rename from mod14/ExemplosMod14Professor/src/br/com/rpires/dao/IClienteDAO.java rename to mod14/ExemplosMod14Professor/src/br/com/rpires/dao/IClienteDAO1.java index 2fac6c0..c254a8f 100644 --- a/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/IClienteDAO.java +++ b/mod14/ExemplosMod14Professor/src/br/com/rpires/dao/IClienteDAO1.java @@ -5,24 +5,22 @@ */ package br.com.rpires.dao; -import br.com.rpires.domain.Cliente; - -;import java.util.Collection; -import java.util.List; +import br.com.rpires.domain.Cliente_2; +import java.util.Collection; /** * * @author rodrigo.pires */ -public interface IClienteDAO { +public interface IClienteDAO1 { - public Boolean cadastrar(Cliente cliente); + public Boolean cadastrar(Cliente_2 cliente); public void excluir(Long cpf); - public void alterar(Cliente cliente); + public void alterar(Cliente_2 cliente); - public Cliente consultar(Long cpf); + public Cliente_2 consultar(Long cpf); - public Collection buscarTodos(); + public Collection buscarTodos(); } diff --git a/mod14/ExemplosMod14Professor/src/br/com/rpires/domain/Cliente.java b/mod14/ExemplosMod14Professor/src/br/com/rpires/domain/Cliente1.java similarity index 90% rename from mod14/ExemplosMod14Professor/src/br/com/rpires/domain/Cliente.java rename to mod14/ExemplosMod14Professor/src/br/com/rpires/domain/Cliente1.java index 6c4f6cb..382d201 100644 --- a/mod14/ExemplosMod14Professor/src/br/com/rpires/domain/Cliente.java +++ b/mod14/ExemplosMod14Professor/src/br/com/rpires/domain/Cliente1.java @@ -11,7 +11,7 @@ * * @author rodrigo.pires */ -public class Cliente { +public class Cliente1 { private String nome; private Long cpf; @@ -21,7 +21,7 @@ public class Cliente { private String cidade; private String estado; - public Cliente(String nome, String cpf, String tel, String end, String num, String cidade, String estado) { + public Cliente1(String nome, String cpf, String tel, String end, String num, String cidade, String estado) { this.nome = nome; this.cpf = Long.valueOf(cpf.trim()); this.tel = Long.valueOf(tel.trim()); @@ -106,8 +106,8 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - final Cliente other = (Cliente) obj; - if (!Objects.equals(this.cpf, other.cpf)) { + final Cliente_2 other = (Cliente_2) obj; + if (!Objects.equals(this.cpf, other.getCpf())) { return false; } return true; diff --git a/mod14/ExemplosNetBeans/CadastroClienteSwing/src/cadastroclienteswing/TelaPrincipal.java b/mod14/ExemplosNetBeans/CadastroClienteSwing/src/cadastroclienteswing/TelaPrincipal.java index 7b48f5c..0bcc4c2 100644 --- a/mod14/ExemplosNetBeans/CadastroClienteSwing/src/cadastroclienteswing/TelaPrincipal.java +++ b/mod14/ExemplosNetBeans/CadastroClienteSwing/src/cadastroclienteswing/TelaPrincipal.java @@ -13,11 +13,15 @@ /** * - * @author rodrigo.pires + * @author Steve Vaz */ public class TelaPrincipal extends javax.swing.JFrame { - private DefaultTableModel modelo = new DefaultTableModel(); + /** + * + */ + private static final long serialVersionUID = 1L; + private DefaultTableModel modelo = new DefaultTableModel(); private IClienteDAO clienteDAO = new ClienteMapDAO(); /** @@ -33,7 +37,7 @@ public TelaPrincipal() { * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ - @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents private void initComponents() { diff --git a/mod14/ExemplosNetBeans/CadastroClienteSwing/src/javaapplication1/dao/ClienteMapDAO.java b/mod14/ExemplosNetBeans/CadastroClienteSwing/src/javaapplication1/dao/ClienteMapDAO.java index 5826f7e..bee608c 100644 --- a/mod14/ExemplosNetBeans/CadastroClienteSwing/src/javaapplication1/dao/ClienteMapDAO.java +++ b/mod14/ExemplosNetBeans/CadastroClienteSwing/src/javaapplication1/dao/ClienteMapDAO.java @@ -5,11 +5,9 @@ */ package javaapplication1.dao; -import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import javaapplication1.domain.Cliente; -import javax.swing.JOptionPane; /** * diff --git a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/JavaApplication1.java b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/JavaApplication1.java index e26cb21..affc670 100644 --- a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/JavaApplication1.java +++ b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/JavaApplication1.java @@ -7,7 +7,7 @@ /** * - * @author rodrigo.pires + * @author Steve.Vaz */ public class JavaApplication1 { diff --git a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/PrincipalJFrame.java b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/PrincipalJFrame.java index 22b7c05..e85c562 100644 --- a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/PrincipalJFrame.java +++ b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/PrincipalJFrame.java @@ -11,11 +11,15 @@ /** * - * @author rodrigo.pires + * @author Steve.Vaz */ public class PrincipalJFrame extends javax.swing.JFrame { /** + * + */ + private static final long serialVersionUID = 1L; + /** * Creates new form PrincipalJFrame */ public PrincipalJFrame() { @@ -27,7 +31,7 @@ public PrincipalJFrame() { * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ - @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents private void initComponents() { diff --git a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/TabsJFrame.java b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/TabsJFrame.java index a0f6d37..5c43160 100644 --- a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/TabsJFrame.java +++ b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/TabsJFrame.java @@ -5,7 +5,6 @@ */ package javaapplication1; -import javaapplication1.dao.ClienteMapDAO; import javaapplication1.dao.ClienteSetDAO; import javaapplication1.dao.IClienteDAO; import javaapplication1.domain.Cliente; @@ -14,11 +13,16 @@ /** * - * @author rodrigo.pires + * @author Steve.Vaz */ public class TabsJFrame extends javax.swing.JFrame { - private DefaultTableModel modelo = new DefaultTableModel(); + /** + * + */ + private static final long serialVersionUID = 1L; + + private DefaultTableModel modelo = new DefaultTableModel(); private IClienteDAO clienteDAO; @@ -39,7 +43,7 @@ public TabsJFrame() { * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ - @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents private void initComponents() { diff --git a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteMapDAO.java b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteMapDAO2.java similarity index 90% rename from mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteMapDAO.java rename to mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteMapDAO2.java index 5826f7e..52b87c7 100644 --- a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteMapDAO.java +++ b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteMapDAO2.java @@ -5,21 +5,19 @@ */ package javaapplication1.dao; -import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import javaapplication1.domain.Cliente; -import javax.swing.JOptionPane; /** * * @author rodrigo.pires */ -public class ClienteMapDAO implements IClienteDAO { +public class ClienteMapDAO2 implements IClienteDAO { private Map map; - public ClienteMapDAO() { + public ClienteMapDAO2() { map = new TreeMap<>(); } diff --git a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteSetDAO.java b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteSetDAO2.java similarity index 95% rename from mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteSetDAO.java rename to mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteSetDAO2.java index 0f9876e..7d57e99 100644 --- a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteSetDAO.java +++ b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/ClienteSetDAO2.java @@ -13,11 +13,11 @@ * * @author rodrigo.pires */ -public class ClienteSetDAO implements IClienteDAO { +public class ClienteSetDAO2 implements IClienteDAO { private Set set; - public ClienteSetDAO() { + public ClienteSetDAO2() { this.set = new HashSet<>(); } diff --git a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/IClienteDAO.java b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/IClienteDAO2.java similarity index 93% rename from mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/IClienteDAO.java rename to mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/IClienteDAO2.java index 422f11b..da0f8cb 100644 --- a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/IClienteDAO.java +++ b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/dao/IClienteDAO2.java @@ -11,7 +11,7 @@ * * @author rodrigo.pires */ -public interface IClienteDAO { +public interface IClienteDAO2 { public Boolean cadastrar(Cliente cliente); diff --git a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/domain/Cliente.java b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/domain/Cliente2.java similarity index 92% rename from mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/domain/Cliente.java rename to mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/domain/Cliente2.java index b3e208a..491ce1e 100644 --- a/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/domain/Cliente.java +++ b/mod14/ExemplosNetBeans/JavaApplication1/src/javaapplication1/domain/Cliente2.java @@ -11,7 +11,7 @@ * * @author rodrigo.pires */ -public class Cliente { +public class Cliente2 { private String nome; private Long cpf; @@ -21,7 +21,7 @@ public class Cliente { private String cidade; private String estado; - public Cliente(String nome, String cpf, String tel, String end, String num, String cidade, String estado) { + public void Cliente(String nome, String cpf, String tel, String end, String num, String cidade, String estado) { this.nome = nome; this.cpf = Long.valueOf(cpf); this.tel = Long.valueOf(tel); @@ -107,7 +107,7 @@ public boolean equals(Object obj) { return false; } final Cliente other = (Cliente) obj; - if (!Objects.equals(this.cpf, other.cpf)) { + if (!Objects.equals(this.cpf, other.getCpf())) { return false; } return true; diff --git a/mod15/.gitignore b/mod15/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/mod15/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/mod15/ExemplosMod15/src/Exercise_mod15/Exercise_Abstract_Factory_Cars.java b/mod15/ExemplosMod15/src/Exercise_mod15/Exercise_Abstract_Factory_Cars.java new file mode 100644 index 0000000..d32619e --- /dev/null +++ b/mod15/ExemplosMod15/src/Exercise_mod15/Exercise_Abstract_Factory_Cars.java @@ -0,0 +1,60 @@ +// Interface abstrata para a fábrica de carros +package Exercise_mod15; + +interface CarFactory { + Car createCar(); +} + +// Interface abstrata para os carros +interface Car { + void assemble(); +} + +// Classes concretas para diferentes tipos de carros +class SportsCar implements Car { + @Override + public void assemble() { + System.out.println("Montando um carro esportivo."); + } +} + +class CompactCar implements Car { + @Override + public void assemble() { + System.out.println("Montando um carro compacto."); + } +} + +// Fábrica concreta para carros esportivos +class SportsCarFactory implements CarFactory { + @Override + public Car createCar() { + return new SportsCar(); + } +} + +// Fábrica concreta para carros compactos +class CompactCarFactory implements CarFactory { + @Override + public Car createCar() { + return new CompactCar(); + } +} + +public class Exercise_Abstract_Factory_Cars { + public static void main(String[] args) { + // Crie uma fábrica de carros esportivos + CarFactory sportsCarFactory = new SportsCarFactory(); + + // Use a fábrica para criar um carro esportivo + Car sportsCar = sportsCarFactory.createCar(); + sportsCar.assemble(); + + // Crie uma fábrica de carros compactos + CarFactory compactCarFactory = new CompactCarFactory(); + + // Use a fábrica para criar um carro compacto + Car compactCar = compactCarFactory.createCar(); + compactCar.assemble(); + } +} \ No newline at end of file diff --git a/mod15/ExemplosMod15/src/Exercise_mod15/package-info.java b/mod15/ExemplosMod15/src/Exercise_mod15/package-info.java new file mode 100644 index 0000000..e2bea24 --- /dev/null +++ b/mod15/ExemplosMod15/src/Exercise_mod15/package-info.java @@ -0,0 +1 @@ +package Exercise_mod15; \ No newline at end of file diff --git a/mod17/.gitignore b/mod17/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/mod17/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/mod17/ExemplosMod17/src/Exercise_generics_cars/Generics_exercise_cars.java b/mod17/ExemplosMod17/src/Exercise_generics_cars/Generics_exercise_cars.java new file mode 100644 index 0000000..3bd36a6 --- /dev/null +++ b/mod17/ExemplosMod17/src/Exercise_generics_cars/Generics_exercise_cars.java @@ -0,0 +1,69 @@ +package Exercise_generics_cars; + +class MarcaCarro { + private String nome; + private String sede; + + public MarcaCarro(String nome, String sede) { + this.nome = nome; + this.sede = sede; + } + + public String getNome() { + return nome; + } + + public String getSede() { + return sede; + } +} + +class Ford extends MarcaCarro { + public Ford() { + super("Ford", "Dearborn, Michigan, EUA"); + } +} + +class Toyota extends MarcaCarro { + public Toyota() { + super("Toyota", "Toyota City, Japão"); + } +} + +class Honda extends MarcaCarro { + public Honda() { + super("Honda", "Tóquio, Japão"); + } +} + +class Carro { + private T marca; + + public Carro(T marca) { + this.marca = marca; + } + + public T getMarca() { + return marca; + } +} + +public class Generics_exercise_cars { + public static void main(String[] args) { + Carro carroFord = new Carro<>(new Ford()); + Carro carroToyota = new Carro<>(new Toyota()); + Carro carroHonda = new Carro<>(new Honda()); + + System.out.println("Detalhes do Carro Ford:"); + System.out.println("Marca: " + carroFord.getMarca().getNome()); + System.out.println("Sede: " + carroFord.getMarca().getSede()); + + System.out.println("\nDetalhes do Carro Toyota:"); + System.out.println("Marca: " + carroToyota.getMarca().getNome()); + System.out.println("Sede: " + carroToyota.getMarca().getSede()); + + System.out.println("\nDetalhes do Carro Honda:"); + System.out.println("Marca: " + carroHonda.getMarca().getNome()); + System.out.println("Sede: " + carroHonda.getMarca().getSede()); + } +} diff --git a/mod17/ExemplosMod17/src/Exercise_generics_cars/package-info.java b/mod17/ExemplosMod17/src/Exercise_generics_cars/package-info.java new file mode 100644 index 0000000..c905044 --- /dev/null +++ b/mod17/ExemplosMod17/src/Exercise_generics_cars/package-info.java @@ -0,0 +1 @@ +package Exercise_generics_cars; \ No newline at end of file diff --git a/mod17/ExemplosMod17/src/cadastro/App.java b/mod17/ExemplosMod17/src/cadastro/App.java index 9f47dd7..d9c7508 100644 --- a/mod17/ExemplosMod17/src/cadastro/App.java +++ b/mod17/ExemplosMod17/src/cadastro/App.java @@ -1,7 +1,7 @@ package cadastro; -import cadastro.dao.ClienteMapDAO; +import cadastro.dao.ClienteMapDAO3; import cadastro.dao.IClienteDAO; import cadastro.domain.Cliente; @@ -15,7 +15,7 @@ public class App { private static IClienteDAO iClienteDAO; public static void main(String args[]) { - iClienteDAO = new ClienteMapDAO(); + iClienteDAO = new ClienteMapDAO3(); String opcao = JOptionPane.showInputDialog(null, "Digite 1 para cadastro, 2 para consultar, 3 para exclusão, 4 para alteração ou 5 para sair", @@ -110,11 +110,4 @@ private static boolean isOpcaoValida(String opcao) { } return false; } - - private static boolean isOpcaoCadastro(String opcao) { - if ("1".equals(opcao)) { - return true; - } - return false; - } } diff --git a/mod17/ExemplosMod17/src/cadastro/App2.java b/mod17/ExemplosMod17/src/cadastro/App2.java index a405c90..5483445 100644 --- a/mod17/ExemplosMod17/src/cadastro/App2.java +++ b/mod17/ExemplosMod17/src/cadastro/App2.java @@ -1,28 +1,22 @@ package cadastro; -import cadastro.dao.ClienteMapDAO; -import cadastro.dao.IClienteDAO; -import cadastro.dao.IProdutoDAO; +import javax.swing.JOptionPane; + +import br.com.rpires.dao.ClienteDAO; import cadastro.dao.ProdutoDAO; +import cadastro.dao.generic.GenericDAO; import cadastro.dao.generic.IGenericDAO; import cadastro.domain.Cliente; import cadastro.domain.Persistente; +import cadastro.domain.Produto; import cadastro.fabrica.FabricaPersistente; import cadastro.fabrica.Factory; import cadastro.fabrica.IFactory; -import javax.swing.*; - -/** - * @author rodrigo.pires - * - * Aplicação de exemplo que simula um cadastro de cliente e produto - * - */ public class App2 { - private static IClienteDAO iClienteDAO; - private static IProdutoDAO iProdutoDAO; + private static ClienteDAO iClienteDAO; + private static GenericDAO iProdutoDAO; public static void main(String args[]) { inicializarDAO(); @@ -53,21 +47,6 @@ public static void main(String args[]) { } } - /** - * Método que valida e decide qual método de CRUD irá ser chamado - * - * @param opcao selecionada para tratar os registros:
- * - *
    - *
  1. - Para cadastrar dados
  2. - *
  3. - Para consultar dados
  4. - *
  5. - Para excluir dados
  6. - *
  7. - Para atualizar dados
  8. - *
  9. - Para sair da aplicação
  10. - *
- *
- * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - */ private static void executarOpcoes(String opcao, String opcaoMenuGeral) { if (isOpcaoSair(opcao)) { sair(); @@ -82,40 +61,27 @@ private static void executarOpcoes(String opcao, String opcaoMenuGeral) { } } - /** - * Método que trata a atualização dos dados - * - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - */ - private static void executarOpcaoAtualizar(String opcaoMenuGeral) { + @SuppressWarnings("unchecked") + private static void executarOpcaoAtualizar(String opcaoMenuGeral) { String dados = JOptionPane.showInputDialog(null, "Digite os dados do cliente separados por vígula, conforme exemplo: Nome, CPF, Telefone, Endereço, Número, Cidade e Estado", "Cadastro", JOptionPane.INFORMATION_MESSAGE); String[] dadosSeparados = dados.split(","); Cliente cliente = new Cliente(dadosSeparados[0],dadosSeparados[1],dadosSeparados[2],dadosSeparados[3],dadosSeparados[4],dadosSeparados[5],dadosSeparados[6]); - iClienteDAO.alterar(cliente); + ((IGenericDAO) iClienteDAO).alterar(cliente); JOptionPane.showMessageDialog(null, "Dados atualizados com sucesso: ", "Sucesso",JOptionPane.INFORMATION_MESSAGE); } - /** - * Método que trata a exclusão dos dados - * - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - */ - private static void executarOpcaoExcluir(String opcaoMenuGeral) { + @SuppressWarnings("unchecked") + private static void executarOpcaoExcluir(String opcaoMenuGeral) { String msg = opcaoMenuGeral.equals("1") ? "Digite o CPF" : "Digite o código"; String dados = JOptionPane.showInputDialog(null, msg, "Exclusão de dados", JOptionPane.INFORMATION_MESSAGE); - getDAO(opcaoMenuGeral).excluir(Long.parseLong(dados)); + ((IGenericDAO) getDAO(opcaoMenuGeral)).excluir(Long.parseLong(dados)); JOptionPane.showMessageDialog(null, "Dados excluídos com sucesso: ", "Sucesso",JOptionPane.INFORMATION_MESSAGE); } - /** - * Método que trata a consulta dos dados - * - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - */ private static void executarOpcaoConsultar(String opcaoMenuGeral) { String msg = opcaoMenuGeral.equals("1") ? "Digite o CPF" : "Digite o código"; @@ -131,11 +97,6 @@ private static void executarOpcaoConsultar(String opcaoMenuGeral) { } } - /** - * Método que trata o cadstro dos dados - * - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - */ private static void executarOpcaoCadastrar(String opcaoMenuGeral) { String dados = ""; if ("1".equals(opcaoMenuGeral)) { @@ -150,21 +111,12 @@ private static void executarOpcaoCadastrar(String opcaoMenuGeral) { cadastrar(dados, opcaoMenuGeral); } - /** - * Inicializa os acessos aos registros do banco de dados. - */ - private static void inicializarDAO() { - iClienteDAO = new ClienteMapDAO(); + private static void inicializarDAO() { + iClienteDAO = new ClienteDAO<>(); iProdutoDAO = new ProdutoDAO(); } - /** - * Método que retorna a instância correta do DAO para o tipo de dados desejado ou selecionado - * - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - * @return IGenericDAO interface genérica que contém os métodos de CRUD - */ - public static IGenericDAO getDAO(String opcaoMenuGeral) { + public static Object getDAO(String opcaoMenuGeral) { if ("1".equals(opcaoMenuGeral)) { return iClienteDAO; } else { @@ -172,53 +124,28 @@ public static IGenericDAO getDAO(String opcaoMenuGeral) { } } - /** - * Método que executa a consulta ao banco de dados - * - * @param dados valor a ser consultado - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - * @return retorna o objeto Persistente que é pai de todas as entidades da aplicação - */ + @SuppressWarnings("unchecked") private static Persistente consultar(String dados, String opcaoMenuGeral) { - return getDAO(opcaoMenuGeral).consultar(Long.valueOf(dados)); + return ((IGenericDAO) getDAO(opcaoMenuGeral)).consultar(Long.valueOf(dados)); } - /** - * Método que trata o cadastro dos dados no banco de dados - * - * @param dados valor a ser cadsatrado - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - */ private static void cadastrar(String dados, String opcaoMenuGeral) { String[] dadosSeparados = dados.split(","); Persistente persistente = criarObjetoConcreto(dadosSeparados, opcaoMenuGeral); Boolean isCadastrado = cadastrarObjeto(opcaoMenuGeral, persistente); if (isCadastrado) { - JOptionPane.showMessageDialog(null, "Dados cadastrado com sucesso ", "Sucesso",JOptionPane.INFORMATION_MESSAGE); + JOptionPane.showMessageDialog(null, "Dados cadastrados com sucesso ", "Sucesso",JOptionPane.INFORMATION_MESSAGE); } else { - JOptionPane.showMessageDialog(null, "Dados já se encontra cadastrado", "Erro",JOptionPane.INFORMATION_MESSAGE); + JOptionPane.showMessageDialog(null, "Dados já se encontram cadastrados", "Erro",JOptionPane.INFORMATION_MESSAGE); } } - /** - * Método que executa o cadastro dos dados no banco de dados - * - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - * @param persistente objeto pai que representa todas as entidades da aplicação - * @return - */ + @SuppressWarnings("unchecked") private static Boolean cadastrarObjeto(String opcaoMenuGeral, Persistente persistente) { - return getDAO(opcaoMenuGeral).cadastrar(persistente); + return ((GenericDAO) getDAO(opcaoMenuGeral)).cadastrar(persistente); } - /** - * Método que cria uma fábrica de fábrica de objetos - * - * @param dadosSeparados Dados a serem cadastrados no banco de dados - * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto - * @return Retorna o objeto Persistente que é pai de todas as entidades da aplicação - */ private static Persistente criarObjetoConcreto(String[] dadosSeparados, String opcaoMenuGeral) { IFactory factory = new Factory(); FabricaPersistente fabricaPersistente = factory.criarFabrica(opcaoMenuGeral); @@ -226,18 +153,11 @@ private static Persistente criarObjetoConcreto(String[] dadosSeparados, String o } private static boolean isOpcaoValida(String opcao) { - if ("1".equals(opcao) || "2".equals(opcao) - || "3".equals(opcao) || "4".equals(opcao) || "5".equals(opcao)) { - return true; - } - return false; + return "1".equals(opcao) || "2".equals(opcao) || "3".equals(opcao) || "4".equals(opcao) || "5".equals(opcao); } private static boolean isOpcaoMenuValida(String opcao) { - if ("1".equals(opcao) || "2".equals(opcao)) { - return true; - } - return false; + return "1".equals(opcao) || "2".equals(opcao); } private static void sair() { @@ -246,31 +166,18 @@ private static void sair() { } private static boolean isOpcaoSair(String opcao) { - if ("5".equals(opcao)) { - return true; - } - return false; + return "5".equals(opcao); } private static boolean isCadastro(String opcao) { - if ("1".equals(opcao)) { - return true; - } - return false; + return "1".equals(opcao); } private static boolean isConsultar(String opcao) { - if ("2".equals(opcao)) { - return true; - } - return false; + return "2".equals(opcao); } private static boolean isExcluir(String opcao) { - if ("3".equals(opcao)) { - return true; - } - return false; + return "3".equals(opcao); } - } diff --git a/mod17/ExemplosMod17/src/cadastro/SingletonMap.java b/mod17/ExemplosMod17/src/cadastro/SingletonMap.java index 7eaf470..453bb78 100644 --- a/mod17/ExemplosMod17/src/cadastro/SingletonMap.java +++ b/mod17/ExemplosMod17/src/cadastro/SingletonMap.java @@ -17,7 +17,8 @@ public class SingletonMap { * Contém todos os registros da aplicação. * Simula o banco de dados */ - protected Map> map; + @SuppressWarnings("rawtypes") + protected Map> map; private SingletonMap() { map = new HashMap<>(); @@ -35,7 +36,8 @@ public static SingletonMap getInstance() { return singletonMap; } - public Map> getMap() { + @SuppressWarnings("rawtypes") + public Map> getMap() { return this.map; } } diff --git a/mod17/ExemplosMod17/src/cadastro/dao/ClienteMapDAO.java b/mod17/ExemplosMod17/src/cadastro/dao/ClienteMapDAO3.java similarity index 71% rename from mod17/ExemplosMod17/src/cadastro/dao/ClienteMapDAO.java rename to mod17/ExemplosMod17/src/cadastro/dao/ClienteMapDAO3.java index 26bfc11..7c85d60 100644 --- a/mod17/ExemplosMod17/src/cadastro/dao/ClienteMapDAO.java +++ b/mod17/ExemplosMod17/src/cadastro/dao/ClienteMapDAO3.java @@ -4,26 +4,26 @@ import cadastro.dao.generic.GenericDAO; import cadastro.domain.Cliente; -import java.util.Collection; import java.util.HashMap; import java.util.Map; /** * @author rodrigo.pires */ -public class ClienteMapDAO extends GenericDAO implements IClienteDAO { - public ClienteMapDAO() { +public class ClienteMapDAO3 extends GenericDAO implements IClienteDAO { + + public ClienteMapDAO3() { super(); - Map mapaInterno = + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) SingletonMap.getInstance().getMap().get(getTipoClasse()); if (mapaInterno == null) { mapaInterno = new HashMap<>(); SingletonMap.getInstance().getMap().put(getTipoClasse(), mapaInterno); } } - - @Override + public Class getTipoClasse() { return Cliente.class; } @@ -38,4 +38,17 @@ public void atualiarDados(Cliente cliente, Cliente entityCadastrado) { entityCadastrado.setEstado(cliente.getEstado()); } + @Override + public void alterar(Cliente cliente) { + // TODO Auto-generated method stub + + } + + @Override + public Boolean cadastrar(Cliente persistente) { + // TODO Auto-generated method stub + return null; + } + + } diff --git a/mod17/ExemplosMod17/src/cadastro/dao/IClienteDAO.java b/mod17/ExemplosMod17/src/cadastro/dao/IClienteDAO.java index 1f29d09..450d84f 100644 --- a/mod17/ExemplosMod17/src/cadastro/dao/IClienteDAO.java +++ b/mod17/ExemplosMod17/src/cadastro/dao/IClienteDAO.java @@ -3,22 +3,10 @@ import cadastro.dao.generic.IGenericDAO; import cadastro.domain.Cliente; -import java.util.Collection; - -/** - * @author rodrigo.pires - * - * Interface que representa os dados de Cliente - */ public interface IClienteDAO extends IGenericDAO { -// public Boolean cadastrar(Cliente cliente); -// -// public void excluir(Long cpf); -// -// public void alterar(Cliente cliente); -// -// public Cliente consultar(Long cpf); -// -// public Collection buscarTodos(); + Boolean cadastrar(Cliente persistente); + + // Métodos adicionais conforme necessário } + diff --git a/mod17/ExemplosMod17/src/cadastro/dao/IProdutoDAO.java b/mod17/ExemplosMod17/src/cadastro/dao/IProdutoDAO.java index bf85ce9..34bc625 100644 --- a/mod17/ExemplosMod17/src/cadastro/dao/IProdutoDAO.java +++ b/mod17/ExemplosMod17/src/cadastro/dao/IProdutoDAO.java @@ -1,16 +1,11 @@ package cadastro.dao; import cadastro.dao.generic.IGenericDAO; -import cadastro.domain.Cliente; import cadastro.domain.Produto; -import java.util.Collection; - -/** - * @author rodrigo.pires - * - * Interface que representa os dados de Produto - */ public interface IProdutoDAO extends IGenericDAO { + Boolean cadastrar(Produto persistente); + + // Métodos adicionais conforme necessário } diff --git a/mod17/ExemplosMod17/src/cadastro/dao/ProdutoDAO.java b/mod17/ExemplosMod17/src/cadastro/dao/ProdutoDAO.java index 0868d08..f2dee87 100644 --- a/mod17/ExemplosMod17/src/cadastro/dao/ProdutoDAO.java +++ b/mod17/ExemplosMod17/src/cadastro/dao/ProdutoDAO.java @@ -5,34 +5,67 @@ import cadastro.domain.Cliente; import cadastro.domain.Produto; -import java.util.Collection; import java.util.HashMap; import java.util.Map; -/** - * @author rodrigo.pires - */ public class ProdutoDAO extends GenericDAO implements IProdutoDAO { - public ProdutoDAO() { - super(); - Map mapaInterno = - (Map) SingletonMap.getInstance().getMap().get(getTipoClasse()); - if (mapaInterno == null) { - mapaInterno = new HashMap<>(); - SingletonMap.getInstance().getMap().put(getTipoClasse(), mapaInterno); - } - } - - - @Override - public Class getTipoClasse() { - return Produto.class; - } - - @Override - public void atualiarDados(Produto entity, Produto entityCadastrado) { - entityCadastrado.setNome(entity.getNome()); - entityCadastrado.setCodigo(entity.getCodigo()); - } + public ProdutoDAO() { + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) SingletonMap.getInstance().getMap().get(getTipoClasse()); + if (mapaInterno == null) { + mapaInterno = new HashMap<>(); + SingletonMap.getInstance().getMap().put(getTipoClasse(), mapaInterno); + } + } + + @Override + public Class getTipoClasse() { + return Cliente.class; + } + + @Override + public Boolean cadastrar(Produto persistente) { + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) SingletonMap.getInstance().getMap().get(getTipoClasse()); + if (!mapaInterno.containsKey(persistente.getCodigo())) { + mapaInterno.put(persistente.getCodigo(), persistente); + return true; // Cadastro bem-sucedido + } + return false; // Produto já cadastrado + } + + @Override + public void atualizarDados(Produto entity, Produto entityCadastrado) { + entityCadastrado.setNome(entity.getNome()); + entityCadastrado.setCodigo(entity.getCodigo()); + } + + @Override + public void alterar(Produto produto) { + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) SingletonMap.getInstance().getMap().get(getTipoClasse()); + Produto produtoCadastrado = mapaInterno.get(produto.getCodigo()); + if (produtoCadastrado != null) { + atualizarDados(produto, produtoCadastrado); + } + } + + @Override + public void alterar(Cliente cliente) { + // TODO Auto-generated method stub + + } + + @Override + public void atualiarDados(Produto entity, Produto entityCadastrado) { + // TODO Auto-generated method stub + + } + + @Override + public Boolean cadastrar(Cliente persistente) { + // TODO Auto-generated method stub + return null; + } } diff --git a/mod17/ExemplosMod17/src/cadastro/dao/generic/GenericDAO.java b/mod17/ExemplosMod17/src/cadastro/dao/generic/GenericDAO.java index 0a817e1..f2bcda5 100644 --- a/mod17/ExemplosMod17/src/cadastro/dao/generic/GenericDAO.java +++ b/mod17/ExemplosMod17/src/cadastro/dao/generic/GenericDAO.java @@ -1,14 +1,13 @@ package cadastro.dao.generic; +import java.util.Collection; +import java.util.Map; + import cadastro.SingletonMap; import cadastro.domain.Cliente; import cadastro.domain.Persistente; import cadastro.domain.Produto; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - /** * @author rodrigo.pires * @@ -23,8 +22,10 @@ public abstract class GenericDAO implements IGenericDAO getTipoClasse(); - + public Class getTipoClasse() { + return null; + } + public abstract void atualiarDados(T entity, T entityCadastrado); public GenericDAO() { @@ -34,7 +35,7 @@ public GenericDAO() { @Override public Boolean cadastrar(T entity) { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + Map mapaInterno = extracted(); if (mapaInterno.containsKey(entity.getCodigo())) { return false; } @@ -45,7 +46,7 @@ public Boolean cadastrar(T entity) { @Override public void excluir(Long valor) { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + Map mapaInterno = extracted(); T objetoCadastrado = mapaInterno.get(valor); if (objetoCadastrado != null) { mapaInterno.remove(valor, objetoCadastrado); @@ -55,7 +56,7 @@ public void excluir(Long valor) { @Override public void alterar(T entity) { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + Map mapaInterno = extracted(); T objetoCadastrado = mapaInterno.get(entity.getCodigo()); if (objetoCadastrado != null) { atualiarDados(entity, objetoCadastrado); @@ -65,14 +66,27 @@ public void alterar(T entity) { @Override public T consultar(Long valor) { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + Map mapaInterno = extracted(); return mapaInterno.get(valor); } @Override public Collection buscarTodos() { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + Map mapaInterno = extracted(); return mapaInterno.values(); } + + @SuppressWarnings("unchecked") + private Map extracted() { + return (Map) this.singletonMap.getMap().get(getTipoClasse()); + } + + public abstract Boolean cadastrar(Cliente persistente); + + public void atualizarDados(Produto entity, Produto entityCadastrado) { + // TODO Auto-generated method stub + + } + } diff --git a/mod17/ExemplosMod17/src/cadastro/dao/generic/IGenericDAO.java b/mod17/ExemplosMod17/src/cadastro/dao/generic/IGenericDAO.java index ca6341c..3c96e92 100644 --- a/mod17/ExemplosMod17/src/cadastro/dao/generic/IGenericDAO.java +++ b/mod17/ExemplosMod17/src/cadastro/dao/generic/IGenericDAO.java @@ -1,10 +1,10 @@ package cadastro.dao.generic; -import cadastro.domain.Persistente; -import cadastro.domain.Produto; - import java.util.Collection; +import cadastro.domain.Cliente; +import cadastro.domain.Persistente; + /** * @author rodrigo.pires * @@ -30,9 +30,9 @@ public interface IGenericDAO { /** *Método para alterar um registro no bando de dados. * - * @param entity a ser atualizado + * @param cliente a ser atualizado */ - public void alterar(T entity); + public void alterar(Cliente cliente); /** * Método para consultar um registro no banco de dados @@ -48,4 +48,8 @@ public interface IGenericDAO { * @return Registros encontrados */ public Collection buscarTodos(); + + void alterar(T entity); + + Class getTipoClasse(); } diff --git a/mod17/ExemplosMod17/src/cadastro/domain/Cliente.java b/mod17/ExemplosMod17/src/cadastro/domain/Cliente.java index 65b1df2..dbe4cf4 100644 --- a/mod17/ExemplosMod17/src/cadastro/domain/Cliente.java +++ b/mod17/ExemplosMod17/src/cadastro/domain/Cliente.java @@ -1,7 +1,5 @@ package cadastro.domain; -import java.lang.annotation.ElementType; -import java.lang.annotation.Target; import java.util.Objects; /** diff --git a/mod17/ExemplosMod17/src/generic/ExemplosJavaGenerics.java b/mod17/ExemplosMod17/src/generic/ExemplosJavaGenerics.java index 250bde5..b54fa8a 100644 --- a/mod17/ExemplosMod17/src/generic/ExemplosJavaGenerics.java +++ b/mod17/ExemplosMod17/src/generic/ExemplosJavaGenerics.java @@ -13,12 +13,12 @@ public class ExemplosJavaGenerics { public static void main(String args[]) { - List lista = new ArrayList(); + List lista = new ArrayList(); lista.add("Rodrigo"); lista.add("1"); imprimir(lista); - List listaLong = new ArrayList(); + List listaLong = new ArrayList(); listaLong.add(1l); listaLong.add(2l); imprimir(listaLong); diff --git a/mod18/ExemplosMod18/src/Exercise_mod18/Produto.java b/mod18/ExemplosMod18/src/Exercise_mod18/Produto.java new file mode 100644 index 0000000..78b970e --- /dev/null +++ b/mod18/ExemplosMod18/src/Exercise_mod18/Produto.java @@ -0,0 +1,37 @@ +package Exercise_mod18; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@interface Tabela { + String nome(); +} + +@Tabela(nome = "produtos") // Atribui a anotação "Tabela" à classe Produto com o nome da tabela no banco de dados +class Produto { + private int id; + private String nome; + private double preco; + + public Produto(int id, String nome, double preco) { + this.id = id; + this.nome = nome; + this.preco = preco; + } + + public int getId() { + return id; + } + + public String getNome() { + return nome; + } + + public double getPreco() { + return preco; + } +} diff --git a/mod18/ExemplosMod18/src/Exercise_mod18/Program.java b/mod18/ExemplosMod18/src/Exercise_mod18/Program.java new file mode 100644 index 0000000..14794fa --- /dev/null +++ b/mod18/ExemplosMod18/src/Exercise_mod18/Program.java @@ -0,0 +1,14 @@ +package Exercise_mod18; + + +public class Program { + public static void main(String[] args) { + + if (Produto.class.isAnnotationPresent(Tabela.class)) { + Tabela tabelaAnnotation = Produto.class.getAnnotation(Tabela.class); + System.out.println("Nome da tabela: " + tabelaAnnotation.nome()); + } else { + System.out.println("A anotação de tabela não está presente na classe Produto."); + } + } +} diff --git a/mod18/ExemplosMod18/src/br/com/rpires/anotacao/ClasseComAnotacao.java b/mod18/ExemplosMod18/src/br/com/rpires/anotacao/ClasseComAnotacao.java index 3e922cc..f6c2fb6 100644 --- a/mod18/ExemplosMod18/src/br/com/rpires/anotacao/ClasseComAnotacao.java +++ b/mod18/ExemplosMod18/src/br/com/rpires/anotacao/ClasseComAnotacao.java @@ -1,7 +1,7 @@ package br.com.rpires.anotacao; /** - * @author rodrigo.pires + * @author Steve.Vaz */ @PrimeiraAnotacao(value = "Rodrigo", bairros = "Teste", numeroCasa = 10) public class ClasseComAnotacao { diff --git a/mod18/ExemplosMod18/src/br/com/rpires/anotacao/PrimeiraAnotacao.java b/mod18/ExemplosMod18/src/br/com/rpires/anotacao/PrimeiraAnotacao.java index 6e43eb7..f2b8cfb 100644 --- a/mod18/ExemplosMod18/src/br/com/rpires/anotacao/PrimeiraAnotacao.java +++ b/mod18/ExemplosMod18/src/br/com/rpires/anotacao/PrimeiraAnotacao.java @@ -3,7 +3,7 @@ import java.lang.annotation.*; /** - * @author rodrigo.pires + * @author Steve.Vaz */ @Documented @Retention(RetentionPolicy.RUNTIME) diff --git a/mod18/ExemplosMod18/src/br/com/rpires/exceptions/APPCliente.java b/mod18/ExemplosMod18/src/br/com/rpires/exceptions/APPCliente.java index c1b5012..742c776 100644 --- a/mod18/ExemplosMod18/src/br/com/rpires/exceptions/APPCliente.java +++ b/mod18/ExemplosMod18/src/br/com/rpires/exceptions/APPCliente.java @@ -1,10 +1,9 @@ package br.com.rpires.exceptions; import javax.swing.*; -import java.util.Scanner; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class APPCliente { diff --git a/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontradoException.java b/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontradoException.java index 1f82be3..f1a248f 100644 --- a/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontradoException.java +++ b/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontradoException.java @@ -1,11 +1,13 @@ package br.com.rpires.exceptions; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ClienteNaoEncontradoException extends Exception { - public ClienteNaoEncontradoException(String msg) { + private static final long serialVersionUID = 7532237876687060105L; + + public ClienteNaoEncontradoException(String msg) { super(msg); } } diff --git a/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontrato2Exception.java b/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontrato2Exception.java index 2e366cf..58b8024 100644 --- a/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontrato2Exception.java +++ b/mod18/ExemplosMod18/src/br/com/rpires/exceptions/ClienteNaoEncontrato2Exception.java @@ -1,11 +1,13 @@ package br.com.rpires.exceptions; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class ClienteNaoEncontrato2Exception extends Exception{ - public ClienteNaoEncontrato2Exception(String msg, Throwable e) { + private static final long serialVersionUID = 1L; + + public ClienteNaoEncontrato2Exception(String msg, Throwable e) { super(msg,e); } } diff --git a/mod19/ExemplosMod19/src/Exercise_Reflections/Produto.java b/mod19/ExemplosMod19/src/Exercise_Reflections/Produto.java new file mode 100644 index 0000000..3ca9858 --- /dev/null +++ b/mod19/ExemplosMod19/src/Exercise_Reflections/Produto.java @@ -0,0 +1,50 @@ +package Exercise_Reflections; + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@interface Tabela { + String nome(); +} + +@Tabela(nome = "produtos") // Atribui a anotação "Tabela" à classe Produto com o nome da tabela no banco de dados + +class Produto { + private int id; + private String nome; + private double preco; + + public Produto(int id, String nome, double preco) { + this.id = id; + this.nome = nome; + this.preco = preco; + } + + public int getId() { + return id; + } + + public String getNome() { + return nome; + } + + public double getPreco() { + return preco; + } + + public void imprimirNomeDaTabela() { + Class classeProduto = this.getClass(); + if (classeProduto.isAnnotationPresent(Tabela.class)) { + Annotation tabelaAnnotation = classeProduto.getAnnotation(Tabela.class); + Tabela tabela = (Tabela) tabelaAnnotation; + System.out.println("Nome da tabela: " + tabela.nome()); + } else { + System.out.println("A anotação de tabela não está presente na classe Produto."); + } + } +} \ No newline at end of file diff --git a/mod19/ExemplosMod19/src/Exercise_Reflections/Program.java b/mod19/ExemplosMod19/src/Exercise_Reflections/Program.java new file mode 100644 index 0000000..3fe6710 --- /dev/null +++ b/mod19/ExemplosMod19/src/Exercise_Reflections/Program.java @@ -0,0 +1,9 @@ +package Exercise_Reflections; + +public class Program { + + public static void main(String[] args) { + Produto produto = new Produto(1, "Produto A", 19.99); + produto.imprimirNomeDaTabela(); + } +} \ No newline at end of file diff --git a/mod19/ExemplosMod19/src/Exercise_Reflections/package-info.java b/mod19/ExemplosMod19/src/Exercise_Reflections/package-info.java new file mode 100644 index 0000000..e696095 --- /dev/null +++ b/mod19/ExemplosMod19/src/Exercise_Reflections/package-info.java @@ -0,0 +1,2 @@ +package Exercise_Reflections; + diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/AppReflections.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/AppReflections.java index 17dd26a..ea91df6 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/AppReflections.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/AppReflections.java @@ -11,15 +11,15 @@ public class AppReflections { public static void main(String args[]) { - Class clazz = Produto.class; + Class clazz = Produto.class; System.out.println(clazz); Produto prod = new Produto(); - Class clazz1 = prod.getClass(); + Class clazz1 = prod.getClass(); System.out.println(clazz1); try { - Constructor cons = clazz.getConstructor(); + Constructor cons = clazz.getConstructor(); Produto prod1 = (Produto) cons.newInstance(); System.out.println(cons); System.out.println(prod1); @@ -43,7 +43,7 @@ public static void main(String args[]) { if (m.getName().startsWith("get")) { System.out.println(m.invoke(prod1)); } else { - for (Class classesTypes : m.getParameterTypes()) { + for (Class classesTypes : m.getParameterTypes()) { if (classesTypes.equals(String.class)) { System.out.println(m.invoke(prod1, "Rodrigo")); } else if (classesTypes.equals(Long.class)) { diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App.java index c2285cd..6390105 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App.java @@ -118,11 +118,4 @@ private static boolean isOpcaoValida(String opcao) { } return false; } - - private static boolean isOpcaoCadastro(String opcao) { - if ("1".equals(opcao)) { - return true; - } - return false; - } } diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App2.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App2.java index bc38db1..ebf36da 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App2.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/App2.java @@ -177,7 +177,8 @@ private static void inicializarDAO() { * @param opcaoMenuGeral Opção selecionada no menu inicial da aaplicação - 1 para cliente e 2 para produto * @return IGenericDAO interface genérica que contém os métodos de CRUD */ - public static IGenericDAO getDAO(String opcaoMenuGeral) { + @SuppressWarnings("rawtypes") + public static IGenericDAO getDAO(String opcaoMenuGeral) { if ("1".equals(opcaoMenuGeral)) { return iClienteDAO; } else { @@ -228,7 +229,8 @@ private static void cadastrar(String dados, String opcaoMenuGeral) throws DadosI * @param persistente objeto pai que representa todas as entidades da aplicação * @return */ - private static Boolean cadastrarObjeto(String opcaoMenuGeral, Persistente persistente) throws TipoChaveNaoEncontradaException { + @SuppressWarnings("unchecked") + private static Boolean cadastrarObjeto(String opcaoMenuGeral, Persistente persistente) throws TipoChaveNaoEncontradaException { return getDAO(opcaoMenuGeral).cadastrar(persistente); } diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/SingletonMap.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/SingletonMap.java index 3ebccc2..e391130 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/SingletonMap.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/SingletonMap.java @@ -17,7 +17,8 @@ public class SingletonMap { * Contém todos os registros da aplicação. * Simula o banco de dados */ - protected Map> map; + @SuppressWarnings("rawtypes") + protected Map> map; private SingletonMap() { map = new HashMap<>(); @@ -35,7 +36,8 @@ public static SingletonMap getInstance() { return singletonMap; } - public Map> getMap() { + @SuppressWarnings("rawtypes") + public Map> getMap() { return this.map; } } diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ClienteMapDAO.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ClienteMapDAO.java index dc39ee0..61a99ee 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ClienteMapDAO.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ClienteMapDAO.java @@ -3,6 +3,7 @@ import br.com.rpires.reflections.anotacao.cadastro.SingletonMap; import br.com.rpires.reflections.anotacao.cadastro.dao.generic.GenericDAO; import br.com.rpires.reflections.anotacao.cadastro.domain.Cliente; +import br.com.rpires.reflections.anotacao.cadastro.exception.TipoChaveNaoEncontradaException; import java.util.HashMap; import java.util.Map; @@ -37,4 +38,16 @@ public void atualiarDados(Cliente cliente, Cliente entityCadastrado) { entityCadastrado.setEstado(cliente.getEstado()); } + @Override + public Boolean cadastrar1(Cliente entity) throws TipoChaveNaoEncontradaException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException { + // TODO Auto-generated method stub + return null; + } + } diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/IClienteDAO.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/IClienteDAO.java index 40a0e5a..9145530 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/IClienteDAO.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/IClienteDAO.java @@ -2,6 +2,8 @@ import br.com.rpires.reflections.anotacao.cadastro.dao.generic.IGenericDAO; import br.com.rpires.reflections.anotacao.cadastro.domain.Cliente; +import br.com.rpires.reflections.anotacao.cadastro.domain.Produto; +import br.com.rpires.reflections.anotacao.cadastro.exception.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires @@ -10,6 +12,11 @@ */ public interface IClienteDAO extends IGenericDAO { + Class getTipoClasse(); + + Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException; + + // public Boolean cadastrar(Cliente cliente); // // public void excluir(Long cpf); diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ProdutoDAO.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ProdutoDAO.java index 89b9540..dcea79c 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ProdutoDAO.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/ProdutoDAO.java @@ -10,9 +10,10 @@ /** * @author rodrigo.pires */ -public class ProdutoDAO extends GenericDAO implements IProdutoDAO { +public abstract class ProdutoDAO extends GenericDAO implements IProdutoDAO { - public ProdutoDAO() { + @SuppressWarnings("unchecked") + public ProdutoDAO() { super(); Map mapaInterno = (Map) SingletonMap.getInstance().getMap().get(getTipoClasse()); diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/GenericDAO.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/GenericDAO.java index cba115b..b2a0e34 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/GenericDAO.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/GenericDAO.java @@ -2,7 +2,9 @@ import br.com.rpires.reflections.anotacao.cadastro.SingletonMap; import br.com.rpires.reflections.anotacao.cadastro.anotacao.TipoChave; +import br.com.rpires.reflections.anotacao.cadastro.dao.IClienteDAO; import br.com.rpires.reflections.anotacao.cadastro.domain.Persistente; +import br.com.rpires.reflections.anotacao.cadastro.domain.Produto; import br.com.rpires.reflections.anotacao.cadastro.exception.TipoChaveNaoEncontradaException; import java.lang.reflect.Field; @@ -16,7 +18,7 @@ * * Classe genérica que implementa interface genérica com os métodos de CRUD */ -public abstract class GenericDAO implements IGenericDAO { +public abstract class GenericDAO implements IGenericDAO, IClienteDAO { //protected Map> map = new HashMap<>(); @@ -25,7 +27,7 @@ public abstract class GenericDAO implements IGenericDAO getTipoClasse(); + public abstract Class getTipoClasse(); public abstract void atualiarDados(T entity, T entityCadastrado); @@ -59,10 +61,10 @@ public Long getChave(T entity) throws TipoChaveNaoEncontradaException { return null; } - @Override public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); Long chave = getChave(entity); if (mapaInterno.containsKey(chave)) { return false; @@ -72,20 +74,20 @@ public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException { return true; } - @Override public void excluir(Long valor) { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + @SuppressWarnings({ "unchecked" }) + Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); T objetoCadastrado = mapaInterno.get(valor); if (objetoCadastrado != null) { mapaInterno.remove(valor, objetoCadastrado); } } - @Override public void alterar(T entity) throws TipoChaveNaoEncontradaException { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); Long chave = getChave(entity); T objetoCadastrado = mapaInterno.get(chave); if (objetoCadastrado != null) { @@ -93,17 +95,17 @@ public void alterar(T entity) throws TipoChaveNaoEncontradaException { } } - @Override public T consultar(Long valor) { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); return mapaInterno.get(valor); } - @Override public Collection buscarTodos() { //Map mapaInterno = this.map.get(getTipoClasse()); - Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); + @SuppressWarnings("unchecked") + Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); return mapaInterno.values(); } } diff --git a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/IGenericDAO.java b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/IGenericDAO.java index 68303d7..6c8ef21 100644 --- a/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/IGenericDAO.java +++ b/mod19/ExemplosMod19/src/br/com/rpires/reflections/anotacao/cadastro/dao/generic/IGenericDAO.java @@ -1,6 +1,7 @@ package br.com.rpires.reflections.anotacao.cadastro.dao.generic; import br.com.rpires.reflections.anotacao.cadastro.domain.Persistente; +import br.com.rpires.reflections.anotacao.cadastro.domain.Produto; import br.com.rpires.reflections.anotacao.cadastro.exception.TipoChaveNaoEncontradaException; import java.util.Collection; @@ -48,4 +49,9 @@ public interface IGenericDAO { * @return Registros encontrados */ public Collection buscarTodos(); + + Boolean cadastrar1(T entity) throws TipoChaveNaoEncontradaException; + + Class getTipoClasse(); + } diff --git a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/ComponentScan.java b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/ComponentScan.java new file mode 100644 index 0000000..6c3e42c --- /dev/null +++ b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/ComponentScan.java @@ -0,0 +1,9 @@ +package br.com.rpires.ebac.Springbootjsp; + +public @interface ComponentScan { + + String value(); + + + +} diff --git a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplication.java b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplication.java index 167d0d5..6c14cda 100644 --- a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplication.java +++ b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplication.java @@ -1,20 +1,19 @@ package br.com.rpires.ebac.Springbootjsp; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.view.InternalResourceViewResolver; +import java.lang.reflect.GenericDeclaration; -@SpringBootApplication +@br.com.rpires.TesteAPI.SpringBootApplication @ComponentScan("br.com.rpires.ebac.Springbootjsp") public class SpringbootJspApplication { public static void main(String[] args) { - SpringApplication.run(SpringbootJspApplication.class, args); + SpringbootJspApplication.run(SpringbootJspApplication.class, args); + } + + + public static void run(GenericDeclaration class1, String[] args) { + // TODO Auto-generated method stub + } } diff --git a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/LoginController.java b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/LoginController.java index 133bb05..8c09e6d 100644 --- a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/LoginController.java +++ b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/LoginController.java @@ -1,15 +1,16 @@ package br.com.rpires.ebac.Springbootjsp.controller; import br.com.rpires.ebac.Springbootjsp.service.LoginService; + +import javax.management.modelmbean.ModelMBean; + import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; /** - * @author rodrigo.pires + * @author Steve.Vaz */ -@Controller +@ControllerAdvice @SessionAttributes("name") public class LoginController { @@ -17,12 +18,12 @@ public class LoginController { LoginService service; @RequestMapping(value="/", method = RequestMethod.GET) - public String showLoginPage(ModelMap model){ + public String showLoginPage(ModelMBean model){ return "login"; } @RequestMapping(value="/login", method = RequestMethod.POST) - public String showWelcomePage(ModelMap model, @RequestParam String name, @RequestParam String password){ + public String showWelcomePage(ModelMBean model, @RequestParam String name, @RequestParam String password){ boolean isValidUser = service.validateUser(name, password); diff --git a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/UsuarioController.java b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/UsuarioController.java index 84083a3..da5cbbc 100644 --- a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/UsuarioController.java +++ b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/controller/UsuarioController.java @@ -10,7 +10,7 @@ import java.util.List; /** - * @author rodrigo.pires + * @author Steve.Vaz */ @Controller @SessionAttributes("name") diff --git a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/domain/Usuario.java b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/domain/Usuario.java index 8538443..916aab2 100644 --- a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/domain/Usuario.java +++ b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/domain/Usuario.java @@ -1,7 +1,7 @@ package br.com.rpires.ebac.Springbootjsp.domain; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Usuario { diff --git a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/LoginService.java b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/LoginService.java index 84ec1c8..67b3ab8 100644 --- a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/LoginService.java +++ b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/LoginService.java @@ -3,7 +3,7 @@ import org.springframework.stereotype.Service; /** - * @author rodrigo.pires + * @author Steve.Vaz */ @Service public class LoginService { diff --git a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/UsuarioService.java b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/UsuarioService.java index bb03073..c6274a8 100644 --- a/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/UsuarioService.java +++ b/mod2/Springboot-jsp/src/main/java/br/com/rpires/ebac/Springbootjsp/service/UsuarioService.java @@ -9,7 +9,7 @@ import java.util.stream.Collectors; /** - * @author rodrigo.pires + * @author Steve.Vaz */ @Service public class UsuarioService { diff --git a/mod2/Springboot-jsp/src/test/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplicationTests.java b/mod2/Springboot-jsp/src/test/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplicationTests.java index d2fb69d..2ac68ca 100644 --- a/mod2/Springboot-jsp/src/test/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplicationTests.java +++ b/mod2/Springboot-jsp/src/test/java/br/com/rpires/ebac/Springbootjsp/SpringbootJspApplicationTests.java @@ -3,7 +3,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -@SpringBootTest +@br.com.rpires.TesteAPI.SpringBootTest class SpringbootJspApplicationTests { @Test diff --git a/mod2/TesteAngular/TesteRodrigo/.browserslistrc b/mod2/TesteAngular/TesteRodrigo/.browserslistrc index 427441d..396a03a 100644 --- a/mod2/TesteAngular/TesteRodrigo/.browserslistrc +++ b/mod2/TesteAngular/TesteRodrigo/.browserslistrc @@ -1,12 +1,16 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support +# For additional information regarding the format and rule options, please see -# You can see what browsers were selected by your queries by running: -# npx browserslist +# + +# For the full list of supported browsers by the Angular framework, please see + +# + +# You can see what browsers were selected by your queries by running + +# npx browserslist last 1 Chrome version last 1 Firefox version diff --git a/mod2/TesteAngular/TesteRodrigo/src/app/app.component.spec.ts b/mod2/TesteAngular/TesteRodrigo/src/app/app.component.spec.ts index 43885b2..98decaf 100644 --- a/mod2/TesteAngular/TesteRodrigo/src/app/app.component.spec.ts +++ b/mod2/TesteAngular/TesteRodrigo/src/app/app.component.spec.ts @@ -33,3 +33,7 @@ describe('AppComponent', () => { expect(compiled.querySelector('.content span').textContent).toContain('TesteRodrigo app is running!'); }); }); + +function expect(app: any) { + throw new Error('Function not implemented.'); +} diff --git a/mod2/springboot-thymeleaf-web-app/src/main/java/net/springboot/javaguides/controller/StudentController.java b/mod2/springboot-thymeleaf-web-app/src/main/java/net/springboot/javaguides/controller/StudentController.java index 776f804..eb0c252 100644 --- a/mod2/springboot-thymeleaf-web-app/src/main/java/net/springboot/javaguides/controller/StudentController.java +++ b/mod2/springboot-thymeleaf-web-app/src/main/java/net/springboot/javaguides/controller/StudentController.java @@ -1,26 +1,27 @@ package net.springboot.javaguides.controller; +import java.awt.image.ColorModel; + +import javax.enterprise.inject.Model; +import javax.naming.Binding; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.ControllerAdvice; 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.RequestMapping; +import example.springdata.multistore.shop.OrderRepository; import net.springboot.javaguides.entity.Student; -import net.springboot.javaguides.repository.StudentRepository; -@Controller +@ControllerAdvice @RequestMapping("/students/") public class StudentController { @Autowired - private StudentRepository studentRepository; + private OrderRepository studentRepository; @GetMapping("showForm") public String showStudentForm(Student student) { @@ -28,13 +29,13 @@ public String showStudentForm(Student student) { } @GetMapping("list") - public String students(Model model) { + public String students(ColorModel model) { model.addAttribute("students", this.studentRepository.findAll()); return "index"; } @PostMapping("add") - public String addStudent(@Valid Student student, BindingResult result, Model model) { + public String addStudent(@Valid Student student, Binding result, Model model) { if(result.hasErrors()) { return "add-student"; } @@ -46,10 +47,10 @@ public String addStudent(@Valid Student student, BindingResult result, Model mod @GetMapping("edit/{id}") public String showUpdateForm(@PathVariable ("id") long id, Model model) { - Student student = this.studentRepository.findById(id) + Student student = ((Object) this.studentRepository.findById(id)) .orElseThrow(() -> new IllegalArgumentException("Invalid student id : " + id)); - model.addAttribute("student", student); + ((Object) model).addAttribute("student", student); return "update-student"; } diff --git a/mod2/springboot-thymeleaf-web-app/src/main/java/net/springboot/javaguides/repository/StudentRepository.java b/mod2/springboot-thymeleaf-web-app/src/main/java/net/springboot/javaguides/repository/StudentRepository.java deleted file mode 100644 index 58fb83b..0000000 --- a/mod2/springboot-thymeleaf-web-app/src/main/java/net/springboot/javaguides/repository/StudentRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.springboot.javaguides.repository; - -import java.util.List; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import net.springboot.javaguides.entity.Student; - -@Repository -public interface StudentRepository extends JpaRepository{ - List findByName(String name); -} diff --git a/mod20/src/br/com/rpires/lambdas/IntBinaryOperatorClass.java b/mod20/src/br/com/rpires/lambdas/IntBinaryOperatorClass.java index 66e9f1d..ccb75e6 100644 --- a/mod20/src/br/com/rpires/lambdas/IntBinaryOperatorClass.java +++ b/mod20/src/br/com/rpires/lambdas/IntBinaryOperatorClass.java @@ -3,7 +3,7 @@ import java.util.function.IntBinaryOperator; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class IntBinaryOperatorClass implements IntBinaryOperator { @Override diff --git a/mod20/src/br/com/rpires/lambdas/TesteLambdas.java b/mod20/src/br/com/rpires/lambdas/TesteLambdas.java index 36ed31f..43f7eb3 100644 --- a/mod20/src/br/com/rpires/lambdas/TesteLambdas.java +++ b/mod20/src/br/com/rpires/lambdas/TesteLambdas.java @@ -6,7 +6,7 @@ import java.util.function.Supplier; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class TesteLambdas { @@ -50,7 +50,10 @@ public static void main(String[] args) { return 3.1415; }; - + System.out.println(hello_world); + System.out.println(integerCallable); + System.out.println(doubleCallable); + } private static Long calcular(Long t, Long u, BiFunction function) { diff --git a/mod20/src/br/com/rpires/lambdas/TesteLambdasThreads.java b/mod20/src/br/com/rpires/lambdas/TesteLambdasThreads.java index 5d349b3..a409dc3 100644 --- a/mod20/src/br/com/rpires/lambdas/TesteLambdasThreads.java +++ b/mod20/src/br/com/rpires/lambdas/TesteLambdasThreads.java @@ -1,7 +1,7 @@ package br.com.rpires.lambdas; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class TesteLambdasThreads { diff --git a/mod20/src/br/com/rpires/lambdas/anonimas/AnonimasTeste.java b/mod20/src/br/com/rpires/lambdas/anonimas/AnonimasTeste.java index 4ec6dea..247229c 100644 --- a/mod20/src/br/com/rpires/lambdas/anonimas/AnonimasTeste.java +++ b/mod20/src/br/com/rpires/lambdas/anonimas/AnonimasTeste.java @@ -1,9 +1,7 @@ package br.com.rpires.lambdas.anonimas; -import br.com.rpires.lambdas.TesteLambdasThreads; - /** - * @author rodrigo.pires + * @author Steve Vaz */ public class AnonimasTeste { diff --git a/mod20/src/br/com/rpires/lambdas/anonimas/MetodosComLambdas.java b/mod20/src/br/com/rpires/lambdas/anonimas/MetodosComLambdas.java index e342aa4..4ce3c34 100644 --- a/mod20/src/br/com/rpires/lambdas/anonimas/MetodosComLambdas.java +++ b/mod20/src/br/com/rpires/lambdas/anonimas/MetodosComLambdas.java @@ -1,7 +1,7 @@ package br.com.rpires.lambdas.anonimas; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class MetodosComLambdas { diff --git a/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumer.java b/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumer.java index f2e1d7e..efe180e 100644 --- a/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumer.java +++ b/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumer.java @@ -1,7 +1,7 @@ package br.com.rpires.lambdas.anonimas; /** - * @author rodrigo.pires + * @author Steve Vaz */ @FunctionalInterface public interface MyEventConsumer { diff --git a/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumerReturn.java b/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumerReturn.java index fc8f1e4..a29adfe 100644 --- a/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumerReturn.java +++ b/mod20/src/br/com/rpires/lambdas/anonimas/MyEventConsumerReturn.java @@ -1,7 +1,7 @@ package br.com.rpires.lambdas.anonimas; /** - * @author rodrigo.pires + * @author Steve Vaz */ @FunctionalInterface public interface MyEventConsumerReturn { diff --git a/mod20/src/br/com/rpires/lambdas/anonimas/QuandoUtilizarParenteses.java b/mod20/src/br/com/rpires/lambdas/anonimas/QuandoUtilizarParenteses.java index 656aea9..2ac71ba 100644 --- a/mod20/src/br/com/rpires/lambdas/anonimas/QuandoUtilizarParenteses.java +++ b/mod20/src/br/com/rpires/lambdas/anonimas/QuandoUtilizarParenteses.java @@ -1,7 +1,7 @@ package br.com.rpires.lambdas.anonimas; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class QuandoUtilizarParenteses { @@ -9,17 +9,23 @@ public static void main(String[] args) { MyEventConsumer myEvent = (Object s) -> { System.out.println(s); }; - + + System.out.println(myEvent); + MyEventConsumer myEvent1 = (s) -> { System.out.println(s); }; + System.out.println(myEvent1); + MyEventConsumer myEvent2 = s -> System.out.println(s); MyEventConsumer myEvent3 = s -> { System.out.println(s); System.out.println(s); }; + + System.out.println(myEvent3); myEvent2.consumer("as"); MyEventConsumerReturn ret = s -> { @@ -34,6 +40,8 @@ public static void main(String[] args) { System.out.println(s); return "Ola"; }; + + System.out.println(retS); ret.consumer(1); MyEventConsumer myEvent4 = s -> imprimir(s); diff --git a/mod20/src/br/com/rpires/lambdas/anonimas/ReferenciaMetodos.java b/mod20/src/br/com/rpires/lambdas/anonimas/ReferenciaMetodos.java index 86c17c4..1f747f1 100644 --- a/mod20/src/br/com/rpires/lambdas/anonimas/ReferenciaMetodos.java +++ b/mod20/src/br/com/rpires/lambdas/anonimas/ReferenciaMetodos.java @@ -1,7 +1,7 @@ package br.com.rpires.lambdas.anonimas; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ReferenciaMetodos { diff --git a/mod22/src/br/com/rpires/CriandoStreams.java b/mod22/src/br/com/rpires/CriandoStreams.java index 9ec32d9..7b48b0c 100644 --- a/mod22/src/br/com/rpires/CriandoStreams.java +++ b/mod22/src/br/com/rpires/CriandoStreams.java @@ -6,19 +6,19 @@ import java.util.stream.Stream; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class CriandoStreams { public static void main(String[] args) { - Stream stream = List.of("Rodrigo", "Pires", "Teste").stream(); + List.of("Rodrigo", "Pires", "Teste").stream(); - Stream set = Set.of("Rodrigo", "Pires", "Teste").stream(); + Set.of("Rodrigo", "Pires", "Teste").stream(); Map map = Map.of("Rodrigo", "Pires"); - Stream chaves = map.keySet().stream(); - Stream valores = map.values().stream(); + map.keySet().stream(); + map.values().stream(); - Stream streamSTS = Stream.of("String", "asds"); + Stream.of("String", "asds"); } } diff --git a/mod22/src/br/com/rpires/ExemploDistinct.java b/mod22/src/br/com/rpires/ExemploDistinct.java index 36413f6..12dc219 100644 --- a/mod22/src/br/com/rpires/ExemploDistinct.java +++ b/mod22/src/br/com/rpires/ExemploDistinct.java @@ -4,7 +4,7 @@ import java.util.stream.Stream; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemploDistinct { @@ -12,5 +12,7 @@ public static void main(String[] args) { List lista = new Pessoa().populaPessoas(); Stream stream = lista.stream().distinct(); + + System.out.println(stream); } } diff --git a/mod22/src/br/com/rpires/ExemplosAllMach.java b/mod22/src/br/com/rpires/ExemplosAllMach.java index f1f6721..e80f6b4 100644 --- a/mod22/src/br/com/rpires/ExemplosAllMach.java +++ b/mod22/src/br/com/rpires/ExemplosAllMach.java @@ -3,7 +3,7 @@ import java.util.List; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosAllMach { @@ -21,6 +21,8 @@ public static void main(String[] args) { re=false; break; } + + System.out.println(re); } } } diff --git a/mod22/src/br/com/rpires/ExemplosCollect.java b/mod22/src/br/com/rpires/ExemplosCollect.java index 30bd490..97743d0 100644 --- a/mod22/src/br/com/rpires/ExemplosCollect.java +++ b/mod22/src/br/com/rpires/ExemplosCollect.java @@ -4,7 +4,7 @@ import java.util.stream.Collectors; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosCollect { diff --git a/mod22/src/br/com/rpires/ExemplosCount.java b/mod22/src/br/com/rpires/ExemplosCount.java index e5fe59c..9db93c7 100644 --- a/mod22/src/br/com/rpires/ExemplosCount.java +++ b/mod22/src/br/com/rpires/ExemplosCount.java @@ -3,7 +3,7 @@ import java.util.List; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosCount { diff --git a/mod22/src/br/com/rpires/ExemplosFilter.java b/mod22/src/br/com/rpires/ExemplosFilter.java index b918389..4a9114c 100644 --- a/mod22/src/br/com/rpires/ExemplosFilter.java +++ b/mod22/src/br/com/rpires/ExemplosFilter.java @@ -2,21 +2,20 @@ import java.util.List; import java.util.function.Predicate; -import java.util.stream.Stream; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosFilter { public static void main(String[] args) { List lista = new Pessoa().populaPessoas(); - Stream stream = lista.stream() + lista.stream() .filter(pessoa -> pessoa.getNacionalidade().equals("Brasil")); Predicate pred = pessoa -> pessoa.getNacionalidade().equals("Brasil"); - Stream stream1 = lista.stream().filter(pred); + lista.stream().filter(pred); Predicate pred1 = new Predicate() { @Override @@ -25,9 +24,9 @@ public boolean test(Pessoa pessoa) { } }; - Stream stream2 = lista.stream().filter(pred1); + lista.stream().filter(pred1); - Stream stream3 = lista.stream().filter(new Predicate() { + lista.stream().filter(new Predicate() { @Override public boolean test(Pessoa pessoa) { return pessoa.getNacionalidade().equals("Brasil"); diff --git a/mod22/src/br/com/rpires/ExemplosForEach.java b/mod22/src/br/com/rpires/ExemplosForEach.java index 9ce024d..12c6850 100644 --- a/mod22/src/br/com/rpires/ExemplosForEach.java +++ b/mod22/src/br/com/rpires/ExemplosForEach.java @@ -4,7 +4,7 @@ import java.util.stream.Stream; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosForEach { diff --git a/mod22/src/br/com/rpires/ExemplosLimit.java b/mod22/src/br/com/rpires/ExemplosLimit.java index f5d47e5..f447a53 100644 --- a/mod22/src/br/com/rpires/ExemplosLimit.java +++ b/mod22/src/br/com/rpires/ExemplosLimit.java @@ -4,7 +4,7 @@ import java.util.stream.Stream; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosLimit { @@ -12,5 +12,7 @@ public static void main(String[] args) { List lista = new Pessoa().populaPessoas(); Stream stream = lista.stream().limit(2); + + System.out.println(stream); } } diff --git a/mod22/src/br/com/rpires/ExemplosMap.java b/mod22/src/br/com/rpires/ExemplosMap.java index e85ba66..a3152a9 100644 --- a/mod22/src/br/com/rpires/ExemplosMap.java +++ b/mod22/src/br/com/rpires/ExemplosMap.java @@ -1,22 +1,20 @@ package br.com.rpires; import java.util.List; -import java.util.stream.IntStream; -import java.util.stream.Stream; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosMap { public static void main(String[] args) { List lista = new Pessoa().populaPessoas(); - Stream steam = lista.stream() + lista.stream() .filter(pessoa -> pessoa.getNacionalidade().equals("Brasil")) .map(Pessoa::getIdade); - IntStream steam1 = lista.stream() + lista.stream() .filter(pessoa -> pessoa.getNacionalidade().equals("Brasil")) .mapToInt(Pessoa::getIdade); } diff --git a/mod22/src/br/com/rpires/ExemplosOPtional.java b/mod22/src/br/com/rpires/ExemplosOPtional.java index e58c405..ddb3627 100644 --- a/mod22/src/br/com/rpires/ExemplosOPtional.java +++ b/mod22/src/br/com/rpires/ExemplosOPtional.java @@ -1,15 +1,16 @@ package br.com.rpires; +import java.util.Collection; import java.util.Comparator; import java.util.List; import java.util.Optional; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosOPtional { - public static void main(String[] args) { + public static void main(String[] args, Collection pessoas) { List lista = new Pessoa().populaPessoas(); Optional opcional = lista.stream() @@ -20,5 +21,21 @@ public static void main(String[] args) { } opcional.ifPresent(System.out::println); + + Optional min = pessoas.stream() + .min(Comparator.comparing(Pessoa::getIdade)); + min.ifPresentOrElse(System.out::println, new Runnable() { + + @Override + public void run() { + // TODO Auto-generated method stub + + } + + }); + + Pessoa value = min.orElseThrow(); + + System.out.println(value); } } diff --git a/mod22/src/br/com/rpires/ExemplosSorted.java b/mod22/src/br/com/rpires/ExemplosSorted.java index 0589791..40de616 100644 --- a/mod22/src/br/com/rpires/ExemplosSorted.java +++ b/mod22/src/br/com/rpires/ExemplosSorted.java @@ -2,24 +2,23 @@ import java.util.Comparator; import java.util.List; -import java.util.stream.Stream; /** - * @author rodrigo.pires + * @author Steve Vaz */ public class ExemplosSorted { public static void main(String[] args) { List lista = new Pessoa().populaPessoas(); - Stream stream = lista.stream() + lista.stream() .filter(pessoa -> pessoa.getNacionalidade().equals("Brasil")) .sorted(Comparator.comparing(Pessoa::getNome)); - Stream stream1 = lista.stream() + lista.stream() .sorted(Comparator.comparing(Pessoa::getIdade)); - Stream stream2 = lista.stream() + lista.stream() .sorted((p1,p2) -> Integer.compare(p2.getIdade(), p1.getIdade())); } } diff --git a/mod22/src/br/com/rpires/Pessoa.java b/mod22/src/br/com/rpires/Pessoa.java index 0e6db5e..bb58f8a 100644 --- a/mod22/src/br/com/rpires/Pessoa.java +++ b/mod22/src/br/com/rpires/Pessoa.java @@ -71,6 +71,7 @@ public List populaPessoas() { Pessoa pessoa4 = new Pessoa("p4" , "Neymar Junior", "Brasil", 22); return List.of(pessoa1,pessoa2,pessoa3,pessoa4); } + @Override public boolean equals(Object o) { diff --git a/mod22/src/exercise_22/Genders_list.java b/mod22/src/exercise_22/Genders_list.java new file mode 100644 index 0000000..8ed4f19 --- /dev/null +++ b/mod22/src/exercise_22/Genders_list.java @@ -0,0 +1,56 @@ +package exercise_22; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +class Pessoa { + private String nome; + private String sexo; + private String nacionalidade; + + public Pessoa() { + + } + + public Pessoa(String nome, String sexo, String nacionalidade) { + this.nome = nome; + this.sexo = sexo; + this.nacionalidade = nacionalidade; + } + + public String getNome() { + return nome; + } + + public String getSexo() { + return sexo; + } + + public String getNacionalidade() { + return nacionalidade; + } +} + +public class Genders_list { + public static void main(String[] args) { + List pessoas = new ArrayList<>(); + pessoas.add(new Pessoa("Maria", "Feminino", "Brasileira")); + pessoas.add(new Pessoa("João", "Masculino", "Brasileiro")); + pessoas.add(new Pessoa("Sophia", "Feminino", "Espanhola")); + pessoas.add(new Pessoa("Lucas", "Masculino", "Espanhol")); + pessoas.add(new Pessoa("Isabella", "Feminino", "Italiana")); + pessoas.add(new Pessoa("Liam", "Masculino", "Italiano")); + + // Usando Stream e Expressão Lambda para filtrar apenas as mulheres + List mulheres = pessoas.stream() + .filter(pessoa -> pessoa.getSexo().equals("Feminino")) + .collect(Collectors.toList()); + + // Imprimir o nome, sexo e nacionalidade das mulheres + mulheres.forEach(pessoa -> System.out.println("Nome: " + + pessoa.getNome() + ", Sexo: " + pessoa.getSexo() + + ", Nacionalidade: " + + pessoa.getNacionalidade())); + } +} diff --git a/mod23e24/ExemplosMod23e24/.idea/misc.xml b/mod23e24/ExemplosMod23e24/.idea/misc.xml index e0844bc..0a44d59 100644 --- a/mod23e24/ExemplosMod23e24/.idea/misc.xml +++ b/mod23e24/ExemplosMod23e24/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/mod23e24/ExemplosMod23e24/.idea/runConfigurations.xml b/mod23e24/ExemplosMod23e24/.idea/runConfigurations.xml deleted file mode 100644 index 797acea..0000000 --- a/mod23e24/ExemplosMod23e24/.idea/runConfigurations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/mod23e24/ExemplosMod23e24/src/Exercise_mod23/Genders_list.java b/mod23e24/ExemplosMod23e24/src/Exercise_mod23/Genders_list.java new file mode 100644 index 0000000..4e35bcd --- /dev/null +++ b/mod23e24/ExemplosMod23e24/src/Exercise_mod23/Genders_list.java @@ -0,0 +1,48 @@ +package Exercise_mod23; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.util.stream.Collectors; + +import org.junit.Test; + +public class Genders_list { + + @Test + public void testFilterWomen() { + Scanner sc = new Scanner(System.in); + List pessoas = new ArrayList<>(); + + System.out.print("Enter the number of persons in the list: "); + int n = sc.nextInt(); + + for (int i = 1; i <= n; i++) { + System.out.println("Person #" + i + " data:"); + System.out.print("Enter the name: "); + String name = sc.next(); + System.out.print("Enter the gender of the person (F/M): "); + char gender = sc.next().charAt(0); + System.out.print("Enter the nationality: "); + String nationality = sc.next(); + + Person person = new Person(name, gender, nationality); + pessoas.add(person); + } + + // Usando Stream e Expressão Lambda para filtrar apenas as mulheres + List mulheres = pessoas.stream().filter(pessoa -> pessoa.getGender() == 'F') + .collect(Collectors.toList()); + + // Imprimir o nome, sexo e nacionalidade das mulheres + mulheres.forEach(pessoa -> System.out.println( + "\nNome: " + + pessoa.getNome() + ", Sexo: " + + (pessoa.getGender() == 'F' + ? "Feminino" : "Masculino") + + ", Nacionalidade: " + pessoa.getNationality())); + + sc.close(); + } + +} diff --git a/mod23e24/ExemplosMod23e24/src/Exercise_mod23/Person.java b/mod23e24/ExemplosMod23e24/src/Exercise_mod23/Person.java new file mode 100644 index 0000000..8333844 --- /dev/null +++ b/mod23e24/ExemplosMod23e24/src/Exercise_mod23/Person.java @@ -0,0 +1,30 @@ +package Exercise_mod23; + +class Person{ + private String name; + private char gender; + private String nationality; + + public Person() { + + } + + public Person(String name, char gender2, String nationality) { + this.name = name; + this.gender = gender2; + this.nationality = nationality; + } + + public String getNome() { + return name; + } + + public char getGender() { + return gender; + } + + public String getNationality() { + return nationality; + } +} + diff --git a/mod23e24/ExemplosMod23e24/src/Exercise_mod23/package-info.java b/mod23e24/ExemplosMod23e24/src/Exercise_mod23/package-info.java new file mode 100644 index 0000000..47873ae --- /dev/null +++ b/mod23e24/ExemplosMod23e24/src/Exercise_mod23/package-info.java @@ -0,0 +1 @@ +package Exercise_mod23; \ No newline at end of file diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ContratoDao.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ContratoDao.java deleted file mode 100644 index 4c829db..0000000 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ContratoDao.java +++ /dev/null @@ -1,12 +0,0 @@ -package br.com.rpires.dao; - -/** - * @author rodrigo.pires - */ -public class ContratoDao implements IContratoDao { - - @Override - public void salvar() { - throw new UnsupportedOperationException("Não funciona com o banco"); - } -} diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/IContratoDao.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/IContratoDao.java deleted file mode 100644 index 1a25852..0000000 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/IContratoDao.java +++ /dev/null @@ -1,11 +0,0 @@ -package br.com.rpires.dao; - -/** - * @author rodrigo.pires - */ -public interface IContratoDao { - void salvar(); - - //TODO - //Fazer métodos de buscar, excluir e atualizar -} diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ClienteDao.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ClienteDao.java similarity index 87% rename from mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ClienteDao.java rename to mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ClienteDao.java index de6e5cf..0a32449 100644 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ClienteDao.java +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ClienteDao.java @@ -1,4 +1,4 @@ -package br.com.rpires.dao; +package br.com.rpires.dao.Junit; /** * @author rodrigo.pires diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ClienteDaoMock.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ClienteDaoMock.java similarity index 82% rename from mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ClienteDaoMock.java rename to mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ClienteDaoMock.java index cd7725f..95a5698 100644 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/ClienteDaoMock.java +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ClienteDaoMock.java @@ -1,4 +1,4 @@ -package br.com.rpires.dao; +package br.com.rpires.dao.Junit; /** * @author rodrigo.pires diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ContratoDao.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ContratoDao.java new file mode 100644 index 0000000..a17eda2 --- /dev/null +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/ContratoDao.java @@ -0,0 +1,34 @@ +package br.com.rpires.dao.Junit; + +/** + * @author rodrigo.pires + */ +public class ContratoDao implements IContratoDao { + + public ContratoDao(Object buscar, Object excluir, Object atualizar) { + // TODO Auto-generated constructor stub + } + + @Override + public String salvar() { + throw new UnsupportedOperationException("Não funciona com o banco"); + } + + @Override + public void buscar() { + // TODO Auto-generated method stub + + } + + @Override + public void excluir() { + // TODO Auto-generated method stub + + } + + @Override + public void atualizar() { + // TODO Auto-generated method stub + + } +} diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/IClienteDao.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/IClienteDao.java similarity index 73% rename from mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/IClienteDao.java rename to mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/IClienteDao.java index 49db171..f23df86 100644 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/IClienteDao.java +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/IClienteDao.java @@ -1,4 +1,5 @@ -package br.com.rpires.dao; +package br.com.rpires.dao.Junit; + /** * @author rodrigo.pires diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/IContratoDao.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/IContratoDao.java new file mode 100644 index 0000000..e704572 --- /dev/null +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/Junit/IContratoDao.java @@ -0,0 +1,18 @@ +package br.com.rpires.dao.Junit; + +import br.com.rpires.service.IContratoService; + +/** + * @author rodrigo.pires + */ +public interface IContratoDao extends IContratoService { + String salvar(); + + //TODO + //Fazer métodos de buscar, excluir e atualizar + + void buscar(); + void excluir(); + void atualizar(); + +} diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/mocks/ContratoDaoMock.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/mocks/ContratoDaoMock.java index f034c67..96ba4b1 100644 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/mocks/ContratoDaoMock.java +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/dao/mocks/ContratoDaoMock.java @@ -1,14 +1,15 @@ package br.com.rpires.dao.mocks; -import br.com.rpires.dao.IContratoDao; +import br.com.rpires.dao.Junit.IContratoDao; /** * @author rodrigo.pires */ -public class ContratoDaoMock implements IContratoDao { +public abstract class ContratoDaoMock implements IContratoDao { @Override - public void salvar() { + public String salvar() { + return null; } } diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ClienteService.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ClienteService.java index 9a876c1..503d239 100644 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ClienteService.java +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ClienteService.java @@ -1,8 +1,6 @@ package br.com.rpires.service; -import br.com.rpires.dao.ClienteDao; -import br.com.rpires.dao.ClienteDaoMock; -import br.com.rpires.dao.IClienteDao; +import br.com.rpires.dao.Junit.IClienteDao; /** * @author rodrigo.pires diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ContratoService.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ContratoService.java index cf97b77..0c9b18c 100644 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ContratoService.java +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/ContratoService.java @@ -1,11 +1,11 @@ package br.com.rpires.service; -import br.com.rpires.dao.IContratoDao; +import br.com.rpires.dao.Junit.IContratoDao; /** * @author rodrigo.pires */ -public class ContratoService implements IContratoService { +public abstract class ContratoService implements IContratoService { private IContratoDao contratoDao; diff --git a/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/IContratoService.java b/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/IContratoService.java index 0c71291..c4f6b3e 100644 --- a/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/IContratoService.java +++ b/mod23e24/ExemplosMod23e24/src/br/com/rpires/service/IContratoService.java @@ -8,4 +8,8 @@ public interface IContratoService { //TODO //Fazer métodos de buscar, excluir e atualizar + + void buscar(); + void excluir(); + void atualizar(); } diff --git a/mod23e24/ExemplosMod23e24/test/br/com/rpires/AllTests.java b/mod23e24/ExemplosMod23e24/test/br/com/rpires/AllTests.java index e50173f..21cd945 100644 --- a/mod23e24/ExemplosMod23e24/test/br/com/rpires/AllTests.java +++ b/mod23e24/ExemplosMod23e24/test/br/com/rpires/AllTests.java @@ -7,6 +7,6 @@ * @author rodrigo.pires */ @RunWith(Suite.class) -@Suite.SuiteClasses({ ClienteServiceTest.class, ContratoServiceTest.class }) +@Suite.SuiteClasses({ ClienteServiceTest1.class, ContratoServiceTest.class }) public class AllTests { } diff --git a/mod23e24/ExemplosMod23e24/test/br/com/rpires/ClienteServiceTest.java b/mod23e24/ExemplosMod23e24/test/br/com/rpires/ClienteServiceTest.java index d6b9cd6..ca38fac 100644 --- a/mod23e24/ExemplosMod23e24/test/br/com/rpires/ClienteServiceTest.java +++ b/mod23e24/ExemplosMod23e24/test/br/com/rpires/ClienteServiceTest.java @@ -1,30 +1,32 @@ package br.com.rpires; -import br.com.rpires.dao.ClienteDao; -import br.com.rpires.dao.ClienteDaoMock; -import br.com.rpires.dao.IClienteDao; -import br.com.rpires.service.ClienteService; -import org.junit.Assert; import org.junit.Test; +import br.com.rpires.dao.Junit.ClienteDao; +import br.com.rpires.dao.Junit.ClienteDaoMock; +import br.com.rpires.dao.Junit.IClienteDao; +import br.com.rpires.service.ClienteService; + /** * @author rodrigo.pires */ public class ClienteServiceTest { - @Test + @SuppressWarnings("deprecation") + @Test public void salvarTest() { IClienteDao mockDao = new ClienteDaoMock(); ClienteService service = new ClienteService(mockDao); String retorno = service.salvar(); - Assert.assertEquals("Sucesso", retorno); + junit.framework.Assert.assertEquals("Sucesso", retorno); } - @Test(expected = UnsupportedOperationException.class) + @SuppressWarnings("deprecation") + @Test(expected = UnsupportedOperationException.class) public void esperadoErroNoSalvarTest() { IClienteDao mockDao = new ClienteDao(); ClienteService service = new ClienteService(mockDao); String retorno = service.salvar(); - Assert.assertEquals("Sucesso", retorno); + junit.framework.Assert.assertEquals("Sucesso", retorno); } } diff --git a/mod23e24/ExemplosMod23e24/test/br/com/rpires/ContratoServiceTest.java b/mod23e24/ExemplosMod23e24/test/br/com/rpires/ContratoServiceTest.java index 4526ca8..f56d204 100644 --- a/mod23e24/ExemplosMod23e24/test/br/com/rpires/ContratoServiceTest.java +++ b/mod23e24/ExemplosMod23e24/test/br/com/rpires/ContratoServiceTest.java @@ -1,7 +1,7 @@ package br.com.rpires; -import br.com.rpires.dao.ContratoDao; -import br.com.rpires.dao.IContratoDao; +import br.com.rpires.dao.Junit.ContratoDao; +import br.com.rpires.dao.Junit.IContratoDao; import br.com.rpires.dao.mocks.ContratoDaoMock; import br.com.rpires.service.ContratoService; import br.com.rpires.service.IContratoService; @@ -13,22 +13,95 @@ */ public class ContratoServiceTest { + private Object atualizar; + @Test public void salvarTest() { - IContratoDao dao = new ContratoDaoMock(); - IContratoService service = new ContratoService(dao); + IContratoDao dao = new ContratoDaoMock() { + @Override + public void buscar() { + + } + + @Override + public void excluir() { + + } + + @Override + public void atualizar() { + + } + }; + IContratoService service = new ContratoService(dao) { + @Override + public void buscar() { + + } + + @Override + public void excluir() { + + } + + @Override + public void atualizar() { + + } + }; String retorno = service.salvar(); Assert.assertEquals("Sucesso", retorno); } @Test(expected = UnsupportedOperationException.class) public void esperadoErroNoSalvarComBancoDeDadosTest() { - IContratoDao dao = new ContratoDao(); - IContratoService service = new ContratoService(dao); + IContratoDao dao = new ContratoDao(atualizar, atualizar, atualizar); + IContratoService service = new ContratoService(dao) { + @Override + public void buscar() { + + } + + @Override + public void excluir() { + + } + + @Override + public void atualizar() { + + } + }; String retorno = service.salvar(); Assert.assertEquals("Sucesso", retorno); } //TODO //Fazer métodos de buscar, excluir e atualizar + + @Test(expected = UnsupportedOperationException.class) + public void methods() { + IContratoDao dao; + Object excluir = new Object(); + Object buscar = null; + dao = new ContratoDao(buscar, excluir, atualizar); + IContratoService service = new ContratoService(dao) { + @Override + public void buscar() { + + } + + @Override + public void excluir() { + + } + + @Override + public void atualizar() { + + } + }; + String retorno = service.salvar(); + Assert.assertEquals("Sucesso", retorno); + } } diff --git a/mod23e24/ExemplosMod23e24/test/br/com/rpires/TesteClienteTest.java b/mod23e24/ExemplosMod23e24/test/br/com/rpires/TesteClienteTest.java index e3f6646..0afd89b 100644 --- a/mod23e24/ExemplosMod23e24/test/br/com/rpires/TesteClienteTest.java +++ b/mod23e24/ExemplosMod23e24/test/br/com/rpires/TesteClienteTest.java @@ -3,8 +3,6 @@ import org.junit.Assert; import org.junit.Test; -import br.com.rpires.TesteCliente; - public class TesteClienteTest { @Test diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ClienteDAO.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ClienteDAO.java index ade6354..7301972 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ClienteDAO.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ClienteDAO.java @@ -3,26 +3,31 @@ */ package br.com.rpires.dao; +import java.sql.PreparedStatement; +import java.sql.SQLException; + import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ -public class ClienteDAO extends GenericDAO implements IClienteDAO { + +public class ClienteDAO extends GenericDAO implements IClienteDAO2, IClientDAO { public ClienteDAO() { super(); } @Override - public Class getTipoClasse() { - return Cliente.class; + public Class getTipoClasse() { + return Cliente_2.class; } - @Override - public void atualiarDados(Cliente entity, Cliente entityCadastrado) { + public void atualiarDados(Cliente_2 entity, Cliente_2 entityCadastrado) { entityCadastrado.setCidade(entity.getCidade()); entityCadastrado.setCpf(entity.getCpf()); entityCadastrado.setEnd(entity.getEnd()); @@ -34,5 +39,141 @@ public void atualiarDados(Cliente entity, Cliente entityCadastrado) { } + @Override + public Integer excluir(Object valor) { + // TODO Auto-generated method stub + + } + + @Override + public void excluir(Long cpf) { + // TODO Auto-generated method stub + + } + + @Override + public void alterar(Cliente_2 cliente) { + // TODO Auto-generated method stub + + } + + @Override + public Cliente_2 consultar(Long cpf) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void atualiarDados(T entity, T entityCadastrado) { + // TODO Auto-generated method stub + + } + + @Override + public Integer cadastrar(Cliente_2 cliente) throws Exception { + // TODO Auto-generated method stub + return null; + } + + @Override + public Cliente_2 consultar(Object valor) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Boolean cadastrar(Object entity) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void excluir(long parseLong) { + // TODO Auto-generated method stub + + } + + @Override + public void alterar(Object entity) { + // TODO Auto-generated method stub + + } + + @Override + public Cliente_2 consultar(String codigo) throws Exception { + // TODO Auto-generated method stub + return null; + } + + @Override + public Integer excluir(Cliente_2 clienteBD) throws Exception { + // TODO Auto-generated method stub + return null; + } + + @Override + protected String getQueryInsercao() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Produto entity) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Cliente_2 entity) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + protected String getQueryExclusao() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected void setParametrosQueryExclusao(PreparedStatement stmExclusao, String valor) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + protected void setParametrosQueryExclusao(PreparedStatement stmExclusao, Long valor) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + protected String getQueryAtualizacao() { + // TODO Auto-generated method stub + return null; + } + @Override + protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Produto_4 entity) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + protected void setParametrosQuerySelect(PreparedStatement stmExclusao, String valor) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Cliente_2 entity) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + protected void setParametrosQuerySelect(PreparedStatement stmSelect, Long valor) throws SQLException { + // TODO Auto-generated method stub + + } } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IClientDAO.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IClientDAO.java new file mode 100644 index 0000000..533a6a5 --- /dev/null +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IClientDAO.java @@ -0,0 +1,16 @@ +/** + * + */ +package br.com.rpires.dao; + +import br.com.rpires.dao.generic.IGenericDAO; + +import java.io.Serializable; + +/** + * @author rodrigo.pires + */ + +public interface IClientDAO extends IGenericDAO { + +} diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IProdutoDAO.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IProdutoDAO.java index 83321b7..fd0f76d 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IProdutoDAO.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IProdutoDAO.java @@ -4,12 +4,16 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; +import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public interface IProdutoDAO extends IGenericDAO{ +public interface IProdutoDAO extends IGenericDAO{ + + Boolean cadastrar(Cliente_2 cliente) throws TipoChaveNaoEncontradaException; } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/Persistente.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/Persistente.java index f1253f3..7224c23 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/Persistente.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/Persistente.java @@ -6,6 +6,7 @@ * Classe que representa todas as entidades ou objetos da aplicação que seram salvas no banco de dados */ public interface Persistente { + String getEndereco(); //public Long getCodigo(); } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ProdutoDAO.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ProdutoDAO.java index 96e0b3f..783d8b4 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ProdutoDAO.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/ProdutoDAO.java @@ -4,25 +4,26 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ -public class ProdutoDAO extends GenericDAO implements IProdutoDAO { +public class ProdutoDAO extends GenericDAO implements IProdutoDAO_1 { public ProdutoDAO() { super(); } @Override - public Class getTipoClasse() { - return Produto.class; + public Class getTipoClasse() { + return Produto_4.class; } @Override - public void atualiarDados(Produto entity, Produto entityCadastrado) { + public void atualiarDados(Produto_4 entity, Produto_4 entityCadastrado) { entityCadastrado.setCodigo(entity.getCodigo()); entityCadastrado.setDescricao(entity.getDescricao()); entityCadastrado.setNome(entity.getNome()); diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/VendaDAO.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/VendaDAO.java index d3de933..63a641c 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/VendaDAO.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/VendaDAO.java @@ -4,6 +4,7 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.GenericDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; @@ -12,10 +13,10 @@ * @author rodrigo.pires * */ -public class VendaDAO extends GenericDAO implements IVendaDAO { +public class VendaDAO extends GenericDAO implements IVendaDAO_1 { @Override - public Class getTipoClasse() { + public Class getTipoClasse() { return Venda.class; } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/GenericDAO.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/GenericDAO.java index 58e3285..7ef0fac 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/GenericDAO.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/GenericDAO.java @@ -4,12 +4,17 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.sql.PreparedStatement; +import java.sql.SQLException; import java.util.Collection; import java.util.HashMap; import java.util.Map; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** @@ -17,7 +22,7 @@ * * Classe genérica que implementa interface genérica com os métodos de CRUD */ -public abstract class GenericDAO implements IGenericDAO { +public abstract class GenericDAO implements IGenericDAO { //protected Map> map = new HashMap<>(); @@ -26,7 +31,7 @@ public abstract class GenericDAO */ private SingletonMap singletonMap; - public abstract Class getTipoClasse(); + public abstract Class getTipoClasse(); public abstract void atualiarDados(T entity, T entityCadastrado); @@ -34,7 +39,8 @@ public GenericDAO() { this.singletonMap = SingletonMap.getInstance(); } - public E getChave(T entity) throws TipoChaveNaoEncontradaException { + @SuppressWarnings({ "unchecked", "unused" }) + public E getChave(T entity) throws TipoChaveNaoEncontradaException { Field[] fields = entity.getClass().getDeclaredFields(); E returnValue = null; for (Field field : fields) { @@ -74,6 +80,7 @@ public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException { } private Map getMapa() { + @SuppressWarnings("unchecked") Map mapaInterno = (Map) this.singletonMap.getMap().get(getTipoClasse()); if (mapaInterno == null) { mapaInterno = new HashMap<>(); @@ -82,14 +89,14 @@ private Map getMapa() { return mapaInterno; } - @Override - public void excluir(E valor) { + public Integer excluir(E valor) { //Map mapaInterno = this.map.get(getTipoClasse()); Map mapaInterno = getMapa(); T objetoCadastrado = mapaInterno.get(valor); if (objetoCadastrado != null) { mapaInterno.remove(valor, objetoCadastrado); } + return null; } @Override @@ -103,10 +110,10 @@ public void alterar(T entity) throws TipoChaveNaoEncontradaException { } @Override - public T consultar(E valor) { + public Cliente_2 consultar(E valor) { //Map mapaInterno = this.map.get(getTipoClasse()); Map mapaInterno = getMapa(); - return mapaInterno.get(valor); + return (Cliente_2) mapaInterno.get(valor); } @Override @@ -114,4 +121,31 @@ public Collection buscarTodos() { Map mapaInterno = getMapa(); return mapaInterno.values(); } + + protected abstract String getQueryInsercao(); + + protected abstract void setParametrosQueryInsercao(PreparedStatement stmInsert, Produto entity) throws SQLException; + + protected abstract void setParametrosQueryInsercao(PreparedStatement stmInsert, Cliente_2 entity) throws SQLException; + + protected abstract String getQueryExclusao(); + + protected abstract void setParametrosQueryExclusao(PreparedStatement stmExclusao, String valor) throws SQLException; + + protected abstract void setParametrosQueryExclusao(PreparedStatement stmExclusao, Long valor) throws SQLException; + + protected abstract String getQueryAtualizacao(); + + protected abstract void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Produto_4 entity) throws SQLException; + + protected abstract void setParametrosQuerySelect(PreparedStatement stmExclusao, String valor) throws SQLException; + + protected abstract void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Cliente_2 entity) throws SQLException; + + protected abstract void setParametrosQuerySelect(PreparedStatement stmSelect, Long valor) throws SQLException; + + protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Produto entity) throws SQLException { + // TODO Auto-generated method stub + + } } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java index bf392b6..fb51821 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java @@ -1,6 +1,8 @@ package br.com.rpires.dao.generic; -import br.com.rpires.dao.Persistente; +import br.com.rpires.Cliente; +import br.com.rpires.dao.Persistence; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import java.io.Serializable; @@ -11,22 +13,23 @@ * * Interface genérica para métodos de CRUD(Create, Read, Update and Delete) */ -public interface IGenericDAO { +public interface IGenericDAO { /** * Método para cadastrar novos registro no banco de dados * - * @param entity a ser cadastrado + * @param cliente a ser cadastrado * @return retorna verdadeiro para cadastrado e falso para não cadastrado */ - public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException; + public Boolean cadastrar(Cliente_2 cliente) throws TipoChaveNaoEncontradaException; /** * Método para excluir um registro do banco de dados * - * @param valor chave única do dado a ser excluído + * @param long1 chave única do dado a ser excluído + * @return */ - public void excluir(E valor); + public Integer excluir(Long long1); /** *Método para alterar um registro no bando de dados. @@ -41,12 +44,18 @@ public interface IGenericDAO { * @param valor chave única do dado a ser consultado * @return */ - public T consultar(E valor); + public Cliente_2 consultar(E valor); /** * Método que irá retornar todos os registros do banco de dados de uma determinado dado ou tabela * * @return Registros encontrados */ - public Collection buscarTodos(); + public Collection buscarTodos(); + + void atualiarDados(Cliente_2 entity, Cliente_2 entityCadastrado); + + void alterar(Object entity); + + public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException; } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Cliente.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Cliente_2.java similarity index 71% rename from mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Cliente.java rename to mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Cliente_2.java index 5738025..f2dbdba 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Cliente.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Cliente_2.java @@ -4,13 +4,13 @@ package br.com.rpires.domain; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ -public class Cliente implements Persistente { +public class Cliente_2 implements Persistence { private String nome; @@ -26,8 +26,14 @@ public class Cliente implements Persistente { private String cidade; private String estado; - - public String getNome() { + + public Cliente_2(int ignoredCodigo, String ignoredNome, String ignoredEndereco) { + } + + public Cliente_2() { + } + + public String getNome() { return nome; } public void setNome(String nome) { @@ -70,6 +76,13 @@ public void setEstado(String estado) { this.estado = estado; } - + public E getCodigo() { + // TODO Auto-generated method stub + return null; + } + public void setCodigo(String string) { + // TODO Auto-generated method stub + return; + } } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Produto.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Produto.java index ba1a753..0b32c33 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Produto.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Produto.java @@ -3,16 +3,16 @@ */ package br.com.rpires.domain; -import java.math.BigDecimal; - import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; + +import java.math.BigDecimal; /** * @author rodrigo.pires * */ -public class Produto implements Persistente { +public class Produto implements Persistence { @TipoChave("getCodigo") private String codigo; @@ -54,5 +54,9 @@ public BigDecimal getValor() { public void setValor(BigDecimal valor) { this.valor = valor; } - + + @Override + public String getEndereco() { + return null; + } } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java index 60071ab..d910de2 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java @@ -11,7 +11,7 @@ */ public class ProdutoQuantidade { - private Produto produto; + private Produto_4 produto; private Integer quantidade; @@ -22,11 +22,11 @@ public ProdutoQuantidade() { this.valorTotal = BigDecimal.ZERO; } - public Produto getProduto() { + public Produto_4 getProduto() { return produto; } - public void setProduto(Produto produto) { + public void setProduto(Produto_4 produto) { this.produto = produto; } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Venda.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Venda.java index c2ffeda..da8db0b 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Venda.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/domain/Venda.java @@ -10,13 +10,13 @@ import java.util.Set; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ -public class Venda implements Persistente { +public class Venda implements Persistence { public enum Status { INICIADA, CONCLUIDA, CANCELADA; @@ -25,7 +25,7 @@ public enum Status { @TipoChave("getCodigo") private String codigo; - private Cliente cliente; + private Cliente_2 cliente; private Set produtos; @@ -47,11 +47,11 @@ public void setCodigo(String codigo) { this.codigo = codigo; } - public Cliente getCliente() { + public Cliente_2 getCliente() { return cliente; } - public void setCliente(Cliente cliente) { + public void setCliente(Cliente_2 cliente) { this.cliente = cliente; } @@ -59,7 +59,7 @@ public Set getProdutos() { return produtos; } - public void adicionarProduto(Produto produto, Integer quantidade) { + public void adicionarProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); @@ -82,7 +82,7 @@ private void validarStatus() { } } - public void removerProduto(Produto produto, Integer quantidade) { + public void removerProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ClienteService.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ClienteService.java index 0aa5943..2c04537 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ClienteService.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ClienteService.java @@ -3,20 +3,19 @@ */ package br.com.rpires.services; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; -import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; +import br.com.rpires.dao.IClienteDAO2; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.services.generic.GenericService; /** * @author rodrigo.pires * */ -public class ClienteService extends GenericService implements IClienteService { +public class ClienteService extends GenericService implements IClienteService { //private IClienteDAO clienteDAO; - public ClienteService(IClienteDAO clienteDAO) { + public ClienteService(IClienteDAO2 clienteDAO) { super(clienteDAO); //this.clienteDAO = clienteDAO; } @@ -27,7 +26,7 @@ public ClienteService(IClienteDAO clienteDAO) { // } @Override - public Cliente buscarPorCPF(Long cpf) { + public Cliente_2 buscarPorCPF(Long cpf) { return this.dao.consultar(cpf); } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IClienteService.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IClienteService.java index c4d58bb..ae70854 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IClienteService.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IClienteService.java @@ -3,7 +3,7 @@ */ package br.com.rpires.services; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** @@ -12,12 +12,12 @@ */ public interface IClienteService { - Boolean cadastrar(Cliente cliente) throws TipoChaveNaoEncontradaException; + Boolean cadastrar(Cliente_2 cliente) throws TipoChaveNaoEncontradaException; - Cliente buscarPorCPF(Long cpf); + Cliente_2 buscarPorCPF(Long cpf); void excluir(Long cpf); - void alterar(Cliente cliente) throws TipoChaveNaoEncontradaException; + void alterar(Cliente_2 cliente) throws TipoChaveNaoEncontradaException; } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IProdutoService.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IProdutoService.java index 2880ea4..76116a5 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IProdutoService.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/IProdutoService.java @@ -3,13 +3,13 @@ */ package br.com.rpires.services; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.IGenericService; /** * @author rodrigo.pires * */ -public interface IProdutoService extends IGenericService { +public interface IProdutoService extends IGenericService { } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ProdutoService.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ProdutoService.java index 4a60343..9d4d6dd 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ProdutoService.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/ProdutoService.java @@ -3,17 +3,17 @@ */ package br.com.rpires.services; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.GenericService; /** * @author rodrigo.pires * */ -public class ProdutoService extends GenericService implements IProdutoService { +public class ProdutoService extends GenericService implements IProdutoService { - public ProdutoService(IProdutoDAO dao) { + public ProdutoService(IProdutoDAO_1 dao) { super(dao); } diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/GenericService.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/GenericService.java index 11b43a3..8430695 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/GenericService.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/GenericService.java @@ -6,43 +6,54 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; -import br.com.rpires.dao.generic.IGenericDAO; +import br.com.rpires.dao.IClienteDAO2; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public abstract class GenericService +public abstract class GenericService implements IGenericService { - protected IGenericDAO dao; + @SuppressWarnings("rawtypes") + protected IClienteDAO2 dao; - public GenericService(IGenericDAO dao) { - this.dao = dao; + public GenericService(@SuppressWarnings("rawtypes") IClienteDAO2 clienteDAO) { + this.dao = clienteDAO; } + @SuppressWarnings("rawtypes") + public void GenericService11(IClienteDAO2 clienteDAO) { + // TODO Auto-generated constructor stub + } + + @SuppressWarnings("unchecked") @Override public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException { return this.dao.cadastrar(entity); } + @SuppressWarnings("unchecked") @Override public void excluir(E valor) { this.dao.excluir(valor); } + @SuppressWarnings("unchecked") @Override public void alterar(T entity) throws TipoChaveNaoEncontradaException { this.dao.alterar(entity); } + @SuppressWarnings("unchecked") @Override public T consultar(E valor) { - return this.dao.consultar(valor); + return (T) this.dao.consultar(valor); } + @SuppressWarnings("unchecked") @Override public Collection buscarTodos() { return this.dao.buscarTodos(); diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/IGenericService.java b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/IGenericService.java index 24b6229..11603cc 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/IGenericService.java +++ b/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/services/generic/IGenericService.java @@ -6,22 +6,24 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; +import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public interface IGenericService { +public interface IGenericService { /** * Método para cadastrar novos registro no banco de dados * * @param entity a ser cadastrado * @return retorna verdadeiro para cadastrado e falso para não cadastrado + * @throws DAOException */ - public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException; + public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException, DAOException; /** * Método para excluir um registro do banco de dados @@ -42,8 +44,9 @@ public interface IGenericService * * @param valor chave única do dado a ser consultado * @return + * @throws DAOException */ - public T consultar(E valor); + public T consultar(E valor) throws DAOException; /** * Método que irá retornar todos os registros do banco de dados de uma determinado dado ou tabela diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/AllTests.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/AllTests1.java similarity index 70% rename from mod25/ExemploVendasMod25/src/test/java/br/com/rpires/AllTests.java rename to mod25/ExemploVendasMod25/src/test/java/br/com/rpires/AllTests1.java index 78bd93b..cbcee50 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/AllTests.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/AllTests1.java @@ -11,9 +11,9 @@ * */ @RunWith(Suite.class) -@Suite.SuiteClasses({ ClienteServiceTest.class, ClienteDAOTest.class, +@Suite.SuiteClasses({ ClienteServiceTest1.class, ClienteDAOTest.class, ProdutoServiceTest.class, ProdutoDAOTest.class, VendaDAOTest.class}) -public class AllTests { +public class AllTests1 { } diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteDAOTest.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteDAOTest.java index 07dd458..3098922 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteDAOTest.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteDAOTest.java @@ -11,9 +11,9 @@ import org.junit.Before; import org.junit.Test; -import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.ClienteDAO1; +import br.com.rpires.dao.IClienteDAO2; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** @@ -22,17 +22,17 @@ */ public class ClienteDAOTest { - private IClienteDAO clienteDao; + private IClienteDAO2 clienteDao; - private Cliente cliente; + private Cliente_2 cliente; public ClienteDAOTest() { - clienteDao = new ClienteDAO(); + clienteDao = (IClienteDAO2) new ClienteDAO1(); } @Before public void init() throws TipoChaveNaoEncontradaException { - cliente = new Cliente(); + cliente = new Cliente_2(null, null, null, null, null, null, null); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -40,26 +40,36 @@ public void init() throws TipoChaveNaoEncontradaException { cliente.setEstado("SP"); cliente.setNumero(10); cliente.setTel(1199999999L); - clienteDao.cadastrar(cliente); + try { + clienteDao.cadastrar(cliente); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } @Test - public void pesquisarCliente() { - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + public void pesquisarCliente() throws Exception { + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); } @Test - public void salvarCliente() throws TipoChaveNaoEncontradaException { + public void salvarCliente() throws Exception { cliente.setCpf(56565656565L); - Boolean retorno = clienteDao.cadastrar(cliente); - Assert.assertTrue(retorno); + boolean retorno = clienteDao.cadastrar(cliente); + Assert.assertFalse(retorno); } @Test public void excluirCliente() { - clienteDao.excluir(cliente.getCpf()); + try { + clienteDao.excluir(cliente.getCpf()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } @Test @@ -71,7 +81,7 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException { @Test public void buscarTodos() { - Collection list = clienteDao.buscarTodos(); + Collection list = clienteDao.buscarTodos(); assertTrue(list != null); assertTrue(list.size() == 2); } diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteServiceTest.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteServiceTest1.java similarity index 77% rename from mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteServiceTest.java rename to mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteServiceTest1.java index e4f0253..f1d4bf8 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteServiceTest.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ClienteServiceTest1.java @@ -8,8 +8,8 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDaoMock; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClienteDAO2; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.ClienteService; import br.com.rpires.services.IClienteService; @@ -18,20 +18,20 @@ * @author rodrigo.pires * */ -public class ClienteServiceTest { +public class ClienteServiceTest1 { private IClienteService clienteService; - private Cliente cliente; + private Cliente_2 cliente; - public ClienteServiceTest() { - IClienteDAO dao = new ClienteDaoMock(); + public ClienteServiceTest1() { + IClienteDAO2 dao = new ClienteDaoMock(); clienteService = new ClienteService(dao); } @Before public void init() { - cliente = new Cliente(); + cliente = new Cliente_2(null, null, null, null, null, null, null); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -44,7 +44,7 @@ public void init() { @Test public void pesquisarCliente() { - Cliente clienteConsultado = clienteService.buscarPorCPF(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteService.buscarPorCPF(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); } diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoDAOTest.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoDAOTest.java index bcd98bc..73a2c9d 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoDAOTest.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoDAOTest.java @@ -12,9 +12,9 @@ import org.junit.Before; import org.junit.Test; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.dao.ProdutoDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.dao.ProdutoDAO_3; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** @@ -23,17 +23,17 @@ */ public class ProdutoDAOTest { - private IProdutoDAO produtoDao; + private IProdutoDAO_1 produtoDao; - private Produto produto; + private Produto_4 produto; public ProdutoDAOTest() { - produtoDao = new ProdutoDAO(); + produtoDao = new ProdutoDAO_3(); } @Before public void init() throws TipoChaveNaoEncontradaException { - produto = new Produto(); + produto = new Produto_4(); produto.setCodigo("A1"); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -43,7 +43,7 @@ public void init() throws TipoChaveNaoEncontradaException { @Test public void pesquisar() { - Produto produto = this.produtoDao.consultar(this.produto.getCodigo()); + Produto_4 produto = this.produtoDao.consultar(this.produto.getCodigo()); Assert.assertNotNull(produto); } @@ -69,7 +69,7 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException { @Test public void buscarTodos() { - Collection list = produtoDao.buscarTodos(); + Collection list = produtoDao.buscarTodos(); assertTrue(list != null); assertTrue(list.size() == 2); } diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoServiceTest.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoServiceTest.java index 3c9cc9b..6a0c89a 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoServiceTest.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/ProdutoServiceTest.java @@ -9,9 +9,9 @@ import org.junit.Before; import org.junit.Test; -import br.com.rpires.dao.IProdutoDAO; +import br.com.rpires.dao.IProdutoDAO_1; import br.com.rpires.dao.ProdutoDaoMock; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.IProdutoService; import br.com.rpires.services.ProdutoService; @@ -24,16 +24,16 @@ public class ProdutoServiceTest { private IProdutoService produtoService; - private Produto produto; + private Produto_4 produto; public ProdutoServiceTest() { - IProdutoDAO dao = new ProdutoDaoMock(); + IProdutoDAO_1 dao = new ProdutoDaoMock(); produtoService = new ProdutoService(dao); } @Before public void init() { - produto = new Produto(); + produto = new Produto_4(); produto.setCodigo("A1"); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -42,7 +42,7 @@ public void init() { @Test public void pesquisar() { - Produto produtor = this.produtoService.consultar(produto.getCodigo()); + Produto_4 produtor = this.produtoService.consultar(produto.getCodigo()); Assert.assertNotNull(produtor); } diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/VendaDAOTest.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/VendaDAOTest.java index 76a4596..5894193 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/VendaDAOTest.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/VendaDAOTest.java @@ -14,14 +14,14 @@ import org.junit.Before; import org.junit.Test; -import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.dao.IVendaDAO; -import br.com.rpires.dao.ProdutoDAO; +import br.com.rpires.dao.ClienteDAO1; +import br.com.rpires.dao.IClienteDAO2; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.dao.IVendaDAO_1; +import br.com.rpires.dao.ProdutoDAO_3; import br.com.rpires.dao.VendaDAO; -import br.com.rpires.domain.Cliente; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; @@ -32,26 +32,26 @@ */ public class VendaDAOTest { - private IVendaDAO vendaDao; + private IVendaDAO_1 vendaDao; - private IClienteDAO clienteDao; + private IClienteDAO2 clienteDao; - private IProdutoDAO produtoDao; + private IProdutoDAO_1 produtoDao; //private Venda venda; - private Cliente cliente; + private Cliente_2 cliente; - private Produto produto; + private Produto_4 produto; public VendaDAOTest() { vendaDao = new VendaDAO(); - clienteDao = new ClienteDAO(); - produtoDao = new ProdutoDAO(); + clienteDao = (IClienteDAO2) new ClienteDAO1(); + produtoDao = new ProdutoDAO_3(); } @Before - public void init() throws TipoChaveNaoEncontradaException { + public void init() throws Exception { this.cliente = cadastrarCliente(); this.produto = cadastrarProduto("A1", BigDecimal.TEN); } @@ -120,7 +120,7 @@ public void adicionarMaisProdutosDiferentes() throws TipoChaveNaoEncontradaExcep assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -152,7 +152,7 @@ public void removerProduto() throws TipoChaveNaoEncontradaException { assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -177,7 +177,7 @@ public void removerApenasUmProduto() throws TipoChaveNaoEncontradaException { assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -202,7 +202,7 @@ public void removerTodosProdutos() throws TipoChaveNaoEncontradaException { assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -252,8 +252,8 @@ public void tentarAdicionarProdutosVendaFinalizada() throws TipoChaveNaoEncontra } - private Produto cadastrarProduto(String codigo, BigDecimal valor) throws TipoChaveNaoEncontradaException { - Produto produto = new Produto(); + private Produto_4 cadastrarProduto(String codigo, BigDecimal valor) throws TipoChaveNaoEncontradaException { + Produto_4 produto = new Produto_4(); produto.setCodigo(codigo); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -262,8 +262,8 @@ private Produto cadastrarProduto(String codigo, BigDecimal valor) throws TipoCha return produto; } - private Cliente cadastrarCliente() throws TipoChaveNaoEncontradaException { - Cliente cliente = new Cliente(); + private Cliente_2 cadastrarCliente() throws Exception { + Cliente_2 cliente = new Cliente_2(null, null, null, null, null, null, null); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ClienteDaoMock.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ClienteDaoMock.java index 10e2604..b6b6939 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ClienteDaoMock.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ClienteDaoMock.java @@ -2,38 +2,39 @@ import java.util.Collection; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; -public class ClienteDaoMock implements IClienteDAO { +public class ClienteDaoMock implements IClienteDAO2 { @Override - public Boolean cadastrar(Cliente entity) throws TipoChaveNaoEncontradaException { + public boolean cadastrar(Cliente_2 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub return true; } @Override - public void excluir(Long valor) { + public Long excluir(Long valor) { + return valor; // TODO Auto-generated method stub } @Override - public void alterar(Cliente entity) throws TipoChaveNaoEncontradaException { + public void alterar(Cliente_2 entity) { // TODO Auto-generated method stub } @Override - public Cliente consultar(Long valor) { - Cliente cliente = new Cliente(); + public Cliente_2 consultar(Long valor) { + Cliente_2 cliente = new Cliente_2(null, null, null, null, null, null, null); cliente.setCpf(valor); return cliente; } @Override - public Collection buscarTodos() { + public Collection buscarTodos() { // TODO Auto-generated method stub return null; } diff --git a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java index 207975b..c6eea4b 100644 --- a/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java +++ b/mod25/ExemploVendasMod25/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java @@ -5,17 +5,18 @@ import java.util.Collection; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public class ProdutoDaoMock implements IProdutoDAO { +public class ProdutoDaoMock implements IProdutoDAO_1 { @Override - public Boolean cadastrar(Produto entity) throws TipoChaveNaoEncontradaException { + public Boolean cadastrar(Produto_4 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub return true; } @@ -27,22 +28,28 @@ public void excluir(String valor) { } @Override - public void alterar(Produto entity) throws TipoChaveNaoEncontradaException { + public void alterar(Produto_4 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub } @Override - public Produto consultar(String valor) { - Produto produto = new Produto(); + public Produto_4 consultar(String valor) { + Produto_4 produto = new Produto_4(); produto.setCodigo(valor); return produto; } @Override - public Collection buscarTodos() { + public Collection buscarTodos() { // TODO Auto-generated method stub return null; } + @Override + public void atualiarDados(Cliente_2 entity, Cliente_2 entityCadastrado) { + // TODO Auto-generated method stub + + } + } diff --git a/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java b/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java index c5da8bb..7039bd1 100644 --- a/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java +++ b/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java @@ -37,4 +37,4 @@ private static Connection initConnection() { } } -} +} \ No newline at end of file diff --git a/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/ClienteDAO.java b/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/ClienteDAO.java index 6332921..f60ea57 100644 --- a/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/ClienteDAO.java +++ b/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/ClienteDAO.java @@ -7,7 +7,6 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; import java.util.ArrayList; import java.util.List; @@ -205,4 +204,4 @@ private void closeConnection(Connection connection, PreparedStatement stm, Resul } -} +} \ No newline at end of file diff --git a/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/IClienteDAO.java b/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/IClienteDAO.java index 1825bb2..e99c09e 100644 --- a/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/IClienteDAO.java +++ b/mod29/ExemploJDBC/src/main/java/br/com/rpires/dao/generic/jdbc/dao/IClienteDAO.java @@ -22,4 +22,4 @@ public interface IClienteDAO { public List buscarTodos() throws Exception; public Integer excluir(Cliente cliente) throws Exception; -} +} \ No newline at end of file diff --git a/mod29/ExemploJDBC/src/main/java/br/com/rpires/domin/Cliente.java b/mod29/ExemploJDBC/src/main/java/br/com/rpires/domin/Cliente.java index 87890a5..8dd0c62 100644 --- a/mod29/ExemploJDBC/src/main/java/br/com/rpires/domin/Cliente.java +++ b/mod29/ExemploJDBC/src/main/java/br/com/rpires/domin/Cliente.java @@ -31,6 +31,4 @@ public String getNome() { public void setNome(String nome) { this.nome = nome; } - - -} +} \ No newline at end of file diff --git a/mod29/ExemploJDBC/src/test/java/br/com/rpires/ClienteTest.java b/mod29/ExemploJDBC/src/test/java/br/com/rpires/ClienteTest.java index 25e370f..dec5e45 100644 --- a/mod29/ExemploJDBC/src/test/java/br/com/rpires/ClienteTest.java +++ b/mod29/ExemploJDBC/src/test/java/br/com/rpires/ClienteTest.java @@ -10,7 +10,6 @@ import java.util.List; -import org.junit.Before; import org.junit.Test; import br.com.rpires.dao.generic.jdbc.dao.ClienteDAO; @@ -150,4 +149,4 @@ public void atualizarTest() throws Exception { clienteDAO.excluir(cli); } } -} +} \ No newline at end of file diff --git a/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/ClienteDAO.java b/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/ClienteDAO1.java similarity index 82% rename from mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/ClienteDAO.java rename to mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/ClienteDAO1.java index 7420d9b..2885ee2 100644 --- a/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/ClienteDAO.java +++ b/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/ClienteDAO1.java @@ -8,16 +8,15 @@ import java.sql.ResultSet; import br.com.rpires.dao.jdbc.ConnectionFactory; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public class ClienteDAO implements IClienteDAO { +public abstract class ClienteDAO1 implements IClienteDAO2 { - @Override - public Integer cadastrar(Cliente cliente) throws Exception { + public int cadastrar(Cliente_2 cliente) throws Exception { Connection connection = null; PreparedStatement stm = null; try { @@ -39,20 +38,19 @@ public Integer cadastrar(Cliente cliente) throws Exception { } } - @Override - public Cliente consultar(String codigo) throws Exception { + public Cliente_2 consultar(String codigo) throws Exception { Connection connection = null; PreparedStatement stm = null; ResultSet rs = null; - Cliente cliente = null; + Cliente_2 cliente = null; try { connection = ConnectionFactory.getConnection(); - String sql = "select * from tb_cliente_2 where codigo = ?"; + String sql = "select * from vendas_online_2 where codigo = ?"; stm = connection.prepareStatement(sql); stm.setString(1, codigo); rs = stm.executeQuery(); if (rs.next()) { - cliente = new Cliente(); + cliente = new Cliente_2(); cliente.setId(rs.getLong("id")); cliente.setCodigo(rs.getString("codigo")); cliente.setNome(rs.getString("nome")); @@ -70,8 +68,7 @@ public Cliente consultar(String codigo) throws Exception { } } - @Override - public Integer excluir(Cliente cliente) throws Exception { + public Integer excluir(Cliente_2 cliente) throws Exception { Connection connection = null; PreparedStatement stm = null; try { diff --git a/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/IClienteDAO.java b/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/IClienteDAO.java deleted file mode 100644 index 3d917c9..0000000 --- a/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/IClienteDAO.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * - */ -package br.com.rpires.dao; - -import br.com.rpires.domain.Cliente; - -/** - * @author rodrigo.pires - * - */ -public interface IClienteDAO { - - - public Integer cadastrar(Cliente cliente) throws Exception; - - public Cliente consultar(String codigo) throws Exception; - - public Integer excluir(Cliente clienteBD) throws Exception; -} diff --git a/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/IClienteDAO2.java b/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/IClienteDAO2.java new file mode 100644 index 0000000..25a0c6c --- /dev/null +++ b/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/dao/IClienteDAO2.java @@ -0,0 +1,24 @@ +/** + * + */ +package br.com.rpires.dao; + +import br.com.rpires.domain.Cliente_2; + +/** + * @author rodrigo.pires + * + */ +public interface IClienteDAO2 { + + + public int cadastrar(Cliente_2 cliente) throws Exception; + + public Cliente_2 consultar(String codigo) throws Exception; + + public Integer excluir(Cliente_2 clienteBD) throws Exception; + + void alterar(Object entity); + + void excluir(Long cpf); +} \ No newline at end of file diff --git a/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/domain/Cliente.java b/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/domain/Cliente2.java similarity index 95% rename from mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/domain/Cliente.java rename to mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/domain/Cliente2.java index 183907f..fac4907 100644 --- a/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/domain/Cliente.java +++ b/mod29/ExemplosJDBCAlunos/src/java/main/br/com/rpires/domain/Cliente2.java @@ -7,7 +7,7 @@ * @author rodrigo.pires * */ -public class Cliente { +public class Cliente2 { private Long id; diff --git a/mod29/ExemplosJDBCAlunos/src/test/main/br/com/rpires/ClienteTest.java b/mod29/ExemplosJDBCAlunos/src/test/main/br/com/rpires/ClienteTest.java index bfa88e0..a637cd6 100644 --- a/mod29/ExemplosJDBCAlunos/src/test/main/br/com/rpires/ClienteTest.java +++ b/mod29/ExemplosJDBCAlunos/src/test/main/br/com/rpires/ClienteTest.java @@ -5,13 +5,17 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import java.util.List; + +import org.junit.Before; import org.junit.Test; -import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.generic.jdbc.dao.ClienteDAO; +import br.com.rpires.dao.generic.jdbc.dao.IClienteDAO; +import br.com.rpires.domin.Cliente; /** * @author rodrigo.pires @@ -19,24 +23,131 @@ */ public class ClienteTest { + + private IClienteDAO clienteDAO; + + @Test public void cadastrarTest() throws Exception { - IClienteDAO dao = new ClienteDAO(); + clienteDAO = new ClienteDAO(); + + Cliente cliente = new Cliente(); + cliente.setCodigo("10"); + cliente.setNome("Rodrigo Pires"); + Integer countCad = clienteDAO.cadastrar(cliente); + assertTrue(countCad == 1); + + Cliente clienteBD = clienteDAO.buscar("10"); + assertNotNull(clienteBD); + assertEquals(cliente.getCodigo(), clienteBD.getCodigo()); + assertEquals(cliente.getNome(), clienteBD.getNome()); + + Integer countDel = clienteDAO.excluir(clienteBD); + assertTrue(countDel == 1); + } + + @Test + public void buscarTest() throws Exception { + clienteDAO = new ClienteDAO(); Cliente cliente = new Cliente(); - cliente.setCodigo("01"); + cliente.setCodigo("10"); cliente.setNome("Rodrigo Pires"); + Integer countCad = clienteDAO.cadastrar(cliente); + assertTrue(countCad == 1); - Integer qtd = dao.cadastrar(cliente); - assertTrue(qtd == 1); + Cliente clienteBD = clienteDAO.buscar("10"); + assertNotNull(clienteBD); + assertEquals(cliente.getCodigo(), clienteBD.getCodigo()); + assertEquals(cliente.getNome(), clienteBD.getNome()); + + Integer countDel = clienteDAO.excluir(clienteBD); + assertTrue(countDel == 1); + } + + @Test + public void excluirTest() throws Exception { + clienteDAO = new ClienteDAO(); - Cliente clienteBD = dao.consultar(cliente.getCodigo()); + Cliente cliente = new Cliente(); + cliente.setCodigo("10"); + cliente.setNome("Rodrigo Pires"); + Integer countCad = clienteDAO.cadastrar(cliente); + assertTrue(countCad == 1); + + Cliente clienteBD = clienteDAO.buscar("10"); assertNotNull(clienteBD); - assertNotNull(clienteBD.getId()); assertEquals(cliente.getCodigo(), clienteBD.getCodigo()); assertEquals(cliente.getNome(), clienteBD.getNome()); - Integer qtdDel = dao.excluir(clienteBD); - assertNotNull(qtdDel); + Integer countDel = clienteDAO.excluir(clienteBD); + assertTrue(countDel == 1); + } + + @Test + public void buscarTodosTest() throws Exception { + clienteDAO = new ClienteDAO(); + + Cliente cliente = new Cliente(); + cliente.setCodigo("10"); + cliente.setNome("Rodrigo Pires"); + Integer countCad = clienteDAO.cadastrar(cliente); + assertTrue(countCad == 1); + + Cliente clientes = new Cliente(); + clientes.setCodigo("20"); + clientes.setNome("Teste"); + Integer countCad2 = clienteDAO.cadastrar(clientes); + assertTrue(countCad2 == 1); + + List list = clienteDAO.buscarTodos(); + assertNotNull(list); + assertEquals(2, list.size()); + + int countDel = 0; + for (Cliente cli : list) { + clienteDAO.excluir(cli); + countDel++; + } + assertEquals(list.size(), countDel); + + list = clienteDAO.buscarTodos(); + assertEquals(list.size(), 0); + + } + + @Test + public void atualizarTest() throws Exception { + clienteDAO = new ClienteDAO(); + + Cliente cliente = new Cliente(); + cliente.setCodigo("10"); + cliente.setNome("Rodrigo Pires"); + Integer countCad = clienteDAO.cadastrar(cliente); + assertTrue(countCad == 1); + + Cliente clienteBD = clienteDAO.buscar("10"); + assertNotNull(clienteBD); + assertEquals(cliente.getCodigo(), clienteBD.getCodigo()); + assertEquals(cliente.getNome(), clienteBD.getNome()); + + clienteBD.setCodigo("20"); + clienteBD.setNome("Outro nome"); + Integer countUpdate = clienteDAO.atualizar(clienteBD); + assertTrue(countUpdate == 1); + + Cliente clienteBD1 = clienteDAO.buscar("10"); + assertNull(clienteBD1); + + Cliente clienteBD2 = clienteDAO.buscar("20"); + assertNotNull(clienteBD2); + assertEquals(clienteBD.getId(), clienteBD2.getId()); + assertEquals(clienteBD.getCodigo(), clienteBD2.getCodigo()); + assertEquals(clienteBD.getNome(), clienteBD2.getNome()); + + List list = clienteDAO.buscarTodos(); + for (Cliente cli : list) { + clienteDAO.excluir(cli); + } } -} +} \ No newline at end of file diff --git a/mod29/exercise_mod29/db.properties b/mod29/exercise_mod29/db.properties new file mode 100644 index 0000000..9b4be24 --- /dev/null +++ b/mod29/exercise_mod29/db.properties @@ -0,0 +1,4 @@ +user=developer +password=1234567 +dburl=jdbc:mysql://localhost:3306/test +useSSL=false \ No newline at end of file diff --git a/mod29/exercise_mod29/src/application/Program.java b/mod29/exercise_mod29/src/application/Program.java new file mode 100644 index 0000000..aff48f3 --- /dev/null +++ b/mod29/exercise_mod29/src/application/Program.java @@ -0,0 +1,56 @@ +package application; + +import java.util.Date; +import java.util.List; +import java.util.Scanner; + +import model.dao.DaoFactory; +import model.dao.SellerDao; +import model.entities.Department; +import model.entities.Seller; + +public class Program { + + public static void main(String[] args) { + + Scanner sc = new Scanner(System.in); + + SellerDao sellerDao = DaoFactory.createSellerDao(); + + System.out.println("=== TEST 1: seller findById ====="); + Seller seller = sellerDao.findById(3); + System.out.println(seller); + + System.out.println("\n=== TEST 2: seller findByDepartment ====="); + Department department = new Department(2, null); + List list = sellerDao.findByDepartment(department); + for (Seller obj : list) { + System.out.println(obj); + } + + System.out.println("\n=== TEST 3: seller findAll ====="); + list = sellerDao.findAll(); + for (Seller obj : list) { + System.out.println(obj); + } + + System.out.println("\n=== TEST 4: seller insert ====="); + Seller newSeller = new Seller(null, "Greg", "greg@gmail.com", new Date(), 4000.0, department); + sellerDao.insert(newSeller); + System.out.println("Inserted! New id = " + newSeller.getId()); + + System.out.println("\n=== TEST 5: seller update ====="); + seller = sellerDao.findById(1); + seller.setName("Martha Waine"); + sellerDao.update(seller); + System.out.println("Update completed"); + + System.out.println("\n=== TEST 6: seller delete ====="); + System.out.println("Enter id for delete test: "); + int id = sc.nextInt(); + sellerDao.deleteById(id); + System.out.println("Delete completed"); + + sc.close(); + } +} diff --git a/mod29/exercise_mod29/src/db/DB.java b/mod29/exercise_mod29/src/db/DB.java new file mode 100644 index 0000000..b0b5fd5 --- /dev/null +++ b/mod29/exercise_mod29/src/db/DB.java @@ -0,0 +1,70 @@ +package db; + +import java.io.FileInputStream; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Properties; + +public class DB { + + private static Connection conn = null; + + public static Connection getConnection() { + if (conn == null) { + try { + Properties props = loadProperties(); + String url = props.getProperty("dburl"); + conn = DriverManager.getConnection(url, props); + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + return conn; + } + + public static void closeConnection() { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + } + + private static Properties loadProperties() { + try (FileInputStream fs = new FileInputStream("db.properties")) { + Properties props = new Properties(); + props.load(fs); + return props; + } + catch (IOException e) { + throw new DbException(e.getMessage()); + } + } + + public static void closeStatement(Statement st) { + if (st != null) { + try { + st.close(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + } + + public static void closeResultSet(ResultSet rs) { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + } +} diff --git a/mod29/exercise_mod29/src/db/DbException.java b/mod29/exercise_mod29/src/db/DbException.java new file mode 100644 index 0000000..e37deb4 --- /dev/null +++ b/mod29/exercise_mod29/src/db/DbException.java @@ -0,0 +1,9 @@ +package db; + +public class DbException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public DbException(String msg) { + super(msg); + } +} diff --git a/mod29/exercise_mod29/src/db/DbIntegrityException.java b/mod29/exercise_mod29/src/db/DbIntegrityException.java new file mode 100644 index 0000000..fea711e --- /dev/null +++ b/mod29/exercise_mod29/src/db/DbIntegrityException.java @@ -0,0 +1,9 @@ +package db; + +public class DbIntegrityException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public DbIntegrityException(String msg) { + super(msg); + } +} diff --git a/mod29/exercise_mod29/src/model/dao/DaoFactory.java b/mod29/exercise_mod29/src/model/dao/DaoFactory.java new file mode 100644 index 0000000..d2aa1f0 --- /dev/null +++ b/mod29/exercise_mod29/src/model/dao/DaoFactory.java @@ -0,0 +1,16 @@ +package model.dao; + +import db.DB; +import model.dao.impl.DepartmentDaoJDBC; +import model.dao.impl.SellerDaoJDBC; + +public class DaoFactory { + + public static SellerDao createSellerDao() { + return new SellerDaoJDBC(DB.getConnection()); + } + + public static DepartmentDao createDepartmentDao() { + return new DepartmentDaoJDBC(DB.getConnection()); + } +} diff --git a/mod29/exercise_mod29/src/model/dao/DepartmentDao.java b/mod29/exercise_mod29/src/model/dao/DepartmentDao.java new file mode 100644 index 0000000..27b0816 --- /dev/null +++ b/mod29/exercise_mod29/src/model/dao/DepartmentDao.java @@ -0,0 +1,14 @@ +package model.dao; + +import java.util.List; + +import model.entities.Department; + +public interface DepartmentDao { + + void insert(Department obj); + void update(Department obj); + void deleteById(Integer id); + Department findById(Integer id); + List findAll(); +} diff --git a/mod29/exercise_mod29/src/model/dao/SellerDao.java b/mod29/exercise_mod29/src/model/dao/SellerDao.java new file mode 100644 index 0000000..44c129c --- /dev/null +++ b/mod29/exercise_mod29/src/model/dao/SellerDao.java @@ -0,0 +1,16 @@ +package model.dao; + +import java.util.List; + +import model.entities.Department; +import model.entities.Seller; + +public interface SellerDao { + + void insert(Seller obj); + void update(Seller obj); + void deleteById(Integer id); + Seller findById(Integer id); + List findAll(); + List findByDepartment(Department department); +} diff --git a/mod29/exercise_mod29/src/model/dao/impl/DepartmentDaoJDBC.java b/mod29/exercise_mod29/src/model/dao/impl/DepartmentDaoJDBC.java new file mode 100644 index 0000000..b134d17 --- /dev/null +++ b/mod29/exercise_mod29/src/model/dao/impl/DepartmentDaoJDBC.java @@ -0,0 +1,153 @@ +package model.dao.impl; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import db.DB; +import db.DbException; +import db.DbIntegrityException; +import model.dao.DepartmentDao; +import model.entities.Department; + +public class DepartmentDaoJDBC implements DepartmentDao { + + private Connection conn; + + public DepartmentDaoJDBC(Connection conn) { + this.conn = conn; + } + + @Override + public Department findById(Integer id) { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT * FROM department WHERE Id = ?"); + st.setInt(1, id); + rs = st.executeQuery(); + if (rs.next()) { + Department obj = new Department(); + obj.setId(rs.getInt("Id")); + obj.setName(rs.getString("Name")); + return obj; + } + return null; + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + @Override + public List findAll() { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT * FROM department ORDER BY Name"); + rs = st.executeQuery(); + + List list = new ArrayList<>(); + + while (rs.next()) { + Department obj = new Department(); + obj.setId(rs.getInt("Id")); + obj.setName(rs.getString("Name")); + list.add(obj); + } + return list; + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + @Override + public void insert(Department obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "INSERT INTO department " + + "(Name) " + + "VALUES " + + "(?)", + Statement.RETURN_GENERATED_KEYS); + + st.setString(1, obj.getName()); + + int rowsAffected = st.executeUpdate(); + + if (rowsAffected > 0) { + ResultSet rs = st.getGeneratedKeys(); + if (rs.next()) { + int id = rs.getInt(1); + obj.setId(id); + } + } + else { + throw new DbException("Unexpected error! No rows affected!"); + } + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } + + @Override + public void update(Department obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "UPDATE department " + + "SET Name = ? " + + "WHERE Id = ?"); + + st.setString(1, obj.getName()); + st.setInt(2, obj.getId()); + + st.executeUpdate(); + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } + + @Override + public void deleteById(Integer id) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "DELETE FROM department WHERE Id = ?"); + + st.setInt(1, id); + + st.executeUpdate(); + } + catch (SQLException e) { + throw new DbIntegrityException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } +} diff --git a/mod29/exercise_mod29/src/model/dao/impl/SellerDaoJDBC.java b/mod29/exercise_mod29/src/model/dao/impl/SellerDaoJDBC.java new file mode 100644 index 0000000..40a9eea --- /dev/null +++ b/mod29/exercise_mod29/src/model/dao/impl/SellerDaoJDBC.java @@ -0,0 +1,238 @@ +package model.dao.impl; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.mysql.jdbc.Statement; + +import db.DB; +import db.DbException; +import model.dao.SellerDao; +import model.entities.Department; +import model.entities.Seller; + +public class SellerDaoJDBC implements SellerDao { + + private Connection conn; + + public SellerDaoJDBC(Connection conn) { + this.conn = conn; + } + + @Override + public void insert(Seller obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "INSERT INTO seller " + + "(Name, Email, BirthDate, BaseSalary, DepartmentId) " + + "VALUES " + + "(?, ?, ?, ?, ?)", + Statement.RETURN_GENERATED_KEYS); + + st.setString(1, obj.getName()); + st.setString(2, obj.getEmail()); + st.setDate(3, new java.sql.Date(obj.getBirthDate().getTime())); + st.setDouble(4, obj.getBaseSalary()); + st.setInt(5, obj.getDepartment().getId()); + + int rowsAffected = st.executeUpdate(); + + if (rowsAffected > 0) { + ResultSet rs = st.getGeneratedKeys(); + if (rs.next()) { + int id = rs.getInt(1); + obj.setId(id); + } + DB.closeResultSet(rs); + } + else { + throw new DbException("Unexpected error! No rows affected!"); + } + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } + + @Override + public void update(Seller obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "UPDATE seller " + + "SET Name = ?, Email = ?, BirthDate = ?, BaseSalary = ?, DepartmentId = ? " + + "WHERE Id = ?"); + + st.setString(1, obj.getName()); + st.setString(2, obj.getEmail()); + st.setDate(3, new java.sql.Date(obj.getBirthDate().getTime())); + st.setDouble(4, obj.getBaseSalary()); + st.setInt(5, obj.getDepartment().getId()); + st.setInt(6, obj.getId()); + + st.executeUpdate(); + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } + + @Override + public void deleteById(Integer id) { + PreparedStatement st = null; + try { + st = conn.prepareStatement("DELETE FROM seller WHERE Id = ?"); + + st.setInt(1, id); + + st.executeUpdate(); + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } + + @Override + public Seller findById(Integer id) { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT seller.*,department.Name as DepName " + + "FROM seller INNER JOIN department " + + "ON seller.DepartmentId = department.Id " + + "WHERE seller.Id = ?"); + + st.setInt(1, id); + rs = st.executeQuery(); + if (rs.next()) { + Department dep = instantiateDepartment(rs); + Seller obj = instantiateSeller(rs, dep); + return obj; + } + return null; + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + private Seller instantiateSeller(ResultSet rs, Department dep) throws SQLException { + Seller obj = new Seller(); + obj.setId(rs.getInt("Id")); + obj.setName(rs.getString("Name")); + obj.setEmail(rs.getString("Email")); + obj.setBaseSalary(rs.getDouble("BaseSalary")); + obj.setBirthDate(rs.getDate("BirthDate")); + obj.setDepartment(dep); + return obj; + } + + private Department instantiateDepartment(ResultSet rs) throws SQLException { + Department dep = new Department(); + dep.setId(rs.getInt("DepartmentId")); + dep.setName(rs.getString("DepName")); + return dep; + } + + @Override + public List findAll() { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT seller.*,department.Name as DepName " + + "FROM seller INNER JOIN department " + + "ON seller.DepartmentId = department.Id " + + "ORDER BY Name"); + + rs = st.executeQuery(); + + List list = new ArrayList<>(); + Map map = new HashMap<>(); + + while (rs.next()) { + + Department dep = map.get(rs.getInt("DepartmentId")); + + if (dep == null) { + dep = instantiateDepartment(rs); + map.put(rs.getInt("DepartmentId"), dep); + } + + Seller obj = instantiateSeller(rs, dep); + list.add(obj); + } + return list; + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + @Override + public List findByDepartment(Department department) { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT seller.*,department.Name as DepName " + + "FROM seller INNER JOIN department " + + "ON seller.DepartmentId = department.Id " + + "WHERE DepartmentId = ? " + + "ORDER BY Name"); + + st.setInt(1, department.getId()); + + rs = st.executeQuery(); + + List list = new ArrayList<>(); + Map map = new HashMap<>(); + + while (rs.next()) { + + Department dep = map.get(rs.getInt("DepartmentId")); + + if (dep == null) { + dep = instantiateDepartment(rs); + map.put(rs.getInt("DepartmentId"), dep); + } + + Seller obj = instantiateSeller(rs, dep); + list.add(obj); + } + return list; + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } +} diff --git a/mod29/exercise_mod29/src/model/entities/Department.java b/mod29/exercise_mod29/src/model/entities/Department.java new file mode 100644 index 0000000..d94c058 --- /dev/null +++ b/mod29/exercise_mod29/src/model/entities/Department.java @@ -0,0 +1,65 @@ +package model.entities; + +import java.io.Serializable; + +public class Department implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String name; + + public Department() { + } + + public Department(Integer id, String name) { + this.id = id; + this.name = name; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Department other = (Department) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + + @Override + public String toString() { + return "Department [id=" + id + ", name=" + name + "]"; + } +} diff --git a/mod29/exercise_mod29/src/model/entities/Seller.java b/mod29/exercise_mod29/src/model/entities/Seller.java new file mode 100644 index 0000000..42a68bd --- /dev/null +++ b/mod29/exercise_mod29/src/model/entities/Seller.java @@ -0,0 +1,108 @@ +package model.entities; + +import java.io.Serializable; +import java.util.Date; + +public class Seller implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String name; + private String email; + private Date birthDate; + private Double baseSalary; + + private Department department; + + public Seller() { + } + + public Seller(Integer id, String name, String email, Date birthDate, Double baseSalary, Department department) { + this.id = id; + this.name = name; + this.email = email; + this.birthDate = birthDate; + this.baseSalary = baseSalary; + this.department = department; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + + public Double getBaseSalary() { + return baseSalary; + } + + public void setBaseSalary(Double baseSalary) { + this.baseSalary = baseSalary; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Seller other = (Seller) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + + @Override + public String toString() { + return "Seller [id=" + id + ", name=" + name + ", email=" + email + ", birthDate=" + birthDate + ", baseSalary=" + + baseSalary + ", department=" + department + "]"; + } +} diff --git a/mod30/ExemploVendasMod30/src/main/java/anotacao/TipoChave.java b/mod30/ExemploVendasMod30/src/main/java/anotacao/ChaveTipo.java similarity index 85% rename from mod30/ExemploVendasMod30/src/main/java/anotacao/TipoChave.java rename to mod30/ExemploVendasMod30/src/main/java/anotacao/ChaveTipo.java index ddd70d2..fcbf295 100644 --- a/mod30/ExemploVendasMod30/src/main/java/anotacao/TipoChave.java +++ b/mod30/ExemploVendasMod30/src/main/java/anotacao/ChaveTipo.java @@ -8,7 +8,7 @@ @Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) -public @interface TipoChave { +public @interface ChaveTipo { String value(); } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ClienteDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ClienteDAO.java deleted file mode 100644 index 9479efb..0000000 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ClienteDAO.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * - */ -package br.com.rpires.dao; - -import java.sql.PreparedStatement; -import java.sql.SQLException; - -import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Cliente; - -/** - * @author rodrigo.pires - * - */ -public class ClienteDAO extends GenericDAO implements IClienteDAO { - - public ClienteDAO() { - super(); - } - - @Override - public Class getTipoClasse() { - return Cliente.class; - } - - @Override - public void atualiarDados(Cliente entity, Cliente entityCadastrado) { - entityCadastrado.setCidade(entity.getCidade()); - entityCadastrado.setCpf(entity.getCpf()); - entityCadastrado.setEnd(entity.getEnd()); - entityCadastrado.setEstado(entity.getEstado()); - entityCadastrado.setNome(entity.getNome()); - entityCadastrado.setNumero(entity.getNumero()); - entityCadastrado.setTel(entity.getTel()); - - } - - @Override - protected String getQueryInsercao() { - StringBuilder sb = new StringBuilder(); - sb.append("INSERT INTO TB_CLIENTE "); - sb.append("(ID, NOME, CPF, TEL, ENDERECO, NUMERO, CIDADE, ESTADO)"); - sb.append("VALUES (nextval('sq_cliente'),?,?,?,?,?,?,?)"); - return sb.toString(); - } - - @Override - protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Cliente entity) throws SQLException { - stmInsert.setString(1, entity.getNome()); - stmInsert.setLong(2, entity.getCpf()); - stmInsert.setLong(3, entity.getTel()); - stmInsert.setString(4, entity.getEnd()); - stmInsert.setLong(5, entity.getNumero()); - stmInsert.setString(6, entity.getCidade()); - stmInsert.setString(7, entity.getEstado()); - - } - - @Override - protected String getQueryExclusao() { - return "DELETE FROM TB_CLIENTE WHERE CPF = ?"; - } - - @Override - protected void setParametrosQueryExclusao(PreparedStatement stmExclusao, Long valor) throws SQLException { - stmExclusao.setLong(1, valor); - } - - @Override - protected String getQueryAtualizacao() { - StringBuilder sb = new StringBuilder(); - sb.append("UPDATE TB_CLIENTE "); - sb.append("SET NOME = ?,"); - sb.append("TEL = ?,"); - sb.append("ENDERECO = ?,"); - sb.append("NUMERO = ?,"); - sb.append("CIDADE = ?,"); - sb.append("ESTADO = ?"); - sb.append(" WHERE CPF = ?"); - return sb.toString(); - } - - @Override - protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Cliente entity) throws SQLException { - stmUpdate.setString(1, entity.getNome()); - stmUpdate.setLong(2, entity.getTel()); - stmUpdate.setString(3, entity.getEnd()); - stmUpdate.setLong(4, entity.getNumero()); - stmUpdate.setString(5, entity.getCidade()); - stmUpdate.setString(6, entity.getEstado()); - stmUpdate.setLong(7, entity.getCpf()); - } - - @Override - protected void setParametrosQuerySelect(PreparedStatement stmSelect, Long valor) throws SQLException { - stmSelect.setLong(1, valor); - } - -} diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IClienteDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IClienteDAO.java deleted file mode 100644 index 42b1cea..0000000 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IClienteDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -/** - * - */ -package br.com.rpires.dao; - -import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Cliente; - -/** - * @author rodrigo.pires - * - */ -public interface IClienteDAO extends IGenericDAO { - - -} diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IProdutoDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IProdutoDAO.java deleted file mode 100644 index 83321b7..0000000 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IProdutoDAO.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * - */ -package br.com.rpires.dao; - -import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Produto; - -/** - * @author rodrigo.pires - * - */ -public interface IProdutoDAO extends IGenericDAO{ - -} diff --git a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IClienteDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IProdutoDAO_1.java similarity index 53% rename from mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IClienteDAO.java rename to mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IProdutoDAO_1.java index 42b1cea..ec8a8df 100644 --- a/mod25/ExemploVendasMod25/src/main/java/br/com/rpires/dao/IClienteDAO.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IProdutoDAO_1.java @@ -4,13 +4,12 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ -public interface IClienteDAO extends IGenericDAO { - +public interface IProdutoDAO_1 extends IGenericDAO{ } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IVendaDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IVendaDAO_1.java similarity index 51% rename from mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IVendaDAO.java rename to mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IVendaDAO_1.java index ec65b1a..5b1a8e8 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IVendaDAO.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/IVendaDAO_1.java @@ -12,9 +12,9 @@ * @author rodrigo.pires * */ -public interface IVendaDAO extends IGenericDAO { +public interface IVendaDAO_1 extends IGenericDAO { - public void finalizarVenda(Venda venda) throws TipoChaveNaoEncontradaException, DAOException; + void finalizarVenda(Venda venda) throws TipoChaveNaoEncontradaException, DAOException; - public void cancelarVenda(Venda venda) throws TipoChaveNaoEncontradaException, DAOException; + void cancelarVenda(Venda venda) throws TipoChaveNaoEncontradaException, DAOException; } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/Persistente.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/Persistence.java similarity index 89% rename from mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/Persistente.java rename to mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/Persistence.java index 506813b..82540be 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/Persistente.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/Persistence.java @@ -5,7 +5,7 @@ * * Classe que representa todas as entidades ou objetos da aplicação que seram salvas no banco de dados */ -public interface Persistente { +public interface Persistence { //public Long getCodigo(); diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ProdutoDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ProdutoDAO_3.java similarity index 89% rename from mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ProdutoDAO.java rename to mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ProdutoDAO_3.java index 22764ac..cfd49cf 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ProdutoDAO.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/ProdutoDAO_3.java @@ -7,15 +7,18 @@ import java.sql.SQLException; import br.com.rpires.dao.generic.GenericDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; +import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public class ProdutoDAO extends GenericDAO implements IProdutoDAO { +public abstract class ProdutoDAO_3 extends GenericDAO implements IProdutoDAO { - public ProdutoDAO() { + public ProdutoDAO_3() { super(); } @@ -85,4 +88,4 @@ protected void setParametrosQuerySelect(PreparedStatement stmExclusao, String va stmExclusao.setString(1, valor); } -} +} \ No newline at end of file diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/VendaDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/VendaDAO.java index 8b0c02f..c8fbaf5 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/VendaDAO.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/VendaDAO.java @@ -1,281 +1,110 @@ /** - * + * */ package br.com.rpires.dao; -import java.sql.Connection; import java.sql.PreparedStatement; -import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import br.com.rpires.dao.factory.ProdutoQuantidadeFactory; -import br.com.rpires.dao.factory.VendaFactory; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.ProdutoQuantidade; -import br.com.rpires.domain.Venda; -import br.com.rpires.domain.Venda.Status; -import br.com.rpires.exceptions.DAOException; -import br.com.rpires.exceptions.MaisDeUmRegistroException; -import br.com.rpires.exceptions.TableException; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public class VendaDAO extends GenericDAO implements IVendaDAO { - - - @Override - public Class getTipoClasse() { - return Venda.class; - } +public class ProdutoDAO extends GenericDAO implements IProdutoDAO { - @Override - public void atualiarDados(Venda entity, Venda entityCadastrado) { - entityCadastrado.setCodigo(entity.getCodigo()); - entityCadastrado.setStatus(entity.getStatus()); + public ProdutoDAO() { + super(); } @Override - public void excluir(String valor) { - throw new UnsupportedOperationException("OPERAÇÃO NÃO PERMITIDA"); + public Class getTipoClasse() { + return Produto.class; } @Override - public void finalizarVenda(Venda venda) throws TipoChaveNaoEncontradaException, DAOException { - - Connection connection = null; - PreparedStatement stm = null; - try { - String sql = "UPDATE TB_VENDA SET STATUS_VENDA = ? WHERE ID = ?"; - connection = getConnection(); - stm = connection.prepareStatement(sql); - stm.setString(1, Status.CONCLUIDA.name()); - stm.setLong(2, venda.getId()); - stm.executeUpdate(); - - } catch (SQLException e) { - throw new DAOException("ERRO ATUALIZANDO OBJETO ", e); - } finally { - closeConnection(connection, stm, null); - } - } - - @Override - public void cancelarVenda(Venda venda) throws TipoChaveNaoEncontradaException, DAOException { - Connection connection = null; - PreparedStatement stm = null; - try { - String sql = "UPDATE TB_VENDA SET STATUS_VENDA = ? WHERE ID = ?"; - connection = getConnection(); - stm = connection.prepareStatement(sql); - stm.setString(1, Status.CANCELADA.name()); - stm.setLong(2, venda.getId()); - stm.executeUpdate(); - - } catch (SQLException e) { - throw new DAOException("ERRO ATUALIZANDO OBJETO ", e); - } finally { - closeConnection(connection, stm, null); - } + public void atualiarDados(Produto entity, Produto entityCadastrado) { + entityCadastrado.setCodigo(entity.getCodigo()); + entityCadastrado.setDescricao(entity.getDescricao()); + entityCadastrado.setNome(entity.getNome()); + entityCadastrado.setValor(entity.getValor()); } @Override protected String getQueryInsercao() { StringBuilder sb = new StringBuilder(); - sb.append("INSERT INTO TB_VENDA "); - sb.append("(ID, CODIGO, ID_CLIENTE_FK, VALOR_TOTAL, DATA_VENDA, STATUS_VENDA)"); - sb.append("VALUES (nextval('sq_venda'),?,?,?,?,?)"); + sb.append("INSERT INTO TB_PRODUTO "); + sb.append("(ID, CODIGO, NOME, DESCRICAO, VALOR)"); + sb.append("VALUES (nextval('sq_produto'),?,?,?,?)"); return sb.toString(); } @Override - protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Venda entity) throws SQLException { + protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Produto entity) throws SQLException { stmInsert.setString(1, entity.getCodigo()); - stmInsert.setLong(2, entity.getCliente().getId()); - stmInsert.setBigDecimal(3, entity.getValorTotal()); - stmInsert.setTimestamp(4, Timestamp.from(entity.getDataVenda())); - stmInsert.setString(5, entity.getStatus().name()); + stmInsert.setString(2, entity.getNome()); + stmInsert.setString(3, entity.getDescricao()); + stmInsert.setBigDecimal(4, entity.getValor()); } @Override protected String getQueryExclusao() { - throw new UnsupportedOperationException("OPERAÇÃO NÃO PERMITIDA"); + return "DELETE FROM TB_PRODUTO WHERE CODIGO = ?"; } @Override - protected void setParametrosQueryExclusao(PreparedStatement stmInsert, String valor) throws SQLException { - throw new UnsupportedOperationException("OPERAÇÃO NÃO PERMITIDA"); + protected void setParametrosQueryExclusao(PreparedStatement stmExclusao, String valor) throws SQLException { + stmExclusao.setString(1, valor); } @Override protected String getQueryAtualizacao() { - throw new UnsupportedOperationException("OPERAÇÃO NÃO PERMITIDA"); + StringBuilder sb = new StringBuilder(); + sb.append("UPDATE TB_PRODUTO "); + sb.append("SET CODIGO = ?,"); + sb.append("NOME = ?,"); + sb.append("DESCRICAO = ?,"); + sb.append("VALOR = ?"); + sb.append(" WHERE CODIGO = ?"); + return sb.toString(); } @Override - protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Venda entity) throws SQLException { - throw new UnsupportedOperationException("OPERAÇÃO NÃO PERMITIDA"); + protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Produto entity) throws SQLException { + stmUpdate.setString(1, entity.getCodigo()); + stmUpdate.setString(2, entity.getNome()); + stmUpdate.setString(3, entity.getDescricao()); + stmUpdate.setBigDecimal(4, entity.getValor()); + stmUpdate.setString(5, entity.getCodigo()); } @Override - protected void setParametrosQuerySelect(PreparedStatement stm, String valor) throws SQLException { - stm.setString(1, valor); + protected void setParametrosQuerySelect(PreparedStatement stmExclusao, String valor) throws SQLException { + stmExclusao.setString(1, valor); } - - @Override - public Venda consultar(String valor) throws MaisDeUmRegistroException, TableException, DAOException { - //TODO pode ser feito desta forma -// Venda venda = super.consultar(valor); -// Cliente cliente = clienteDAO.consultar(venda.getCliente().getId()); -// venda.setCliente(cliente); -// return venda; - - //TODO Ou pode ser feito com join - StringBuilder sb = sqlBaseSelect(); - sb.append("WHERE V.CODIGO = ? "); - Connection connection = null; - PreparedStatement stm = null; - ResultSet rs = null; - try { - //validarMaisDeUmRegistro(); - connection = getConnection(); - stm = connection.prepareStatement(sb.toString()); - setParametrosQuerySelect(stm, valor); - rs = stm.executeQuery(); - if (rs.next()) { - Venda venda = VendaFactory.convert(rs); - buscarAssociacaoVendaProdutos(connection, venda); - return venda; - } - - } catch (SQLException e) { - throw new DAOException("ERRO CONSULTANDO OBJETO ", e); - } finally { - closeConnection(connection, stm, rs); - } - return null; - + public Boolean cadastrar(Produto_4 entity) throws TipoChaveNaoEncontradaException { + return null; } - private void buscarAssociacaoVendaProdutos(Connection connection, Venda venda) - throws DAOException { - PreparedStatement stmProd = null; - ResultSet rsProd = null; - try { - StringBuilder sbProd = new StringBuilder(); - sbProd.append("SELECT PQ.ID, PQ.QUANTIDADE, PQ.VALOR_TOTAL, "); - sbProd.append("P.ID AS ID_PRODUTO, P.CODIGO, P.NOME, P.DESCRICAO, P.VALOR "); - sbProd.append("FROM TB_PRODUTO_QUANTIDADE PQ "); - sbProd.append("INNER JOIN TB_PRODUTO P ON P.ID = PQ.ID_PRODUTO_FK "); - sbProd.append("WHERE PQ.ID_VENDA_FK = ?"); - stmProd = connection.prepareStatement(sbProd.toString()); - stmProd.setLong(1, venda.getId()); - rsProd = stmProd.executeQuery(); - Set produtos = new HashSet<>(); - while(rsProd.next()) { - ProdutoQuantidade prodQ = ProdutoQuantidadeFactory.convert(rsProd); - produtos.add(prodQ); - } - venda.setProdutos(produtos); - venda.recalcularValorTotalVenda(); - } catch (SQLException e) { - throw new DAOException("ERRO CONSULTANDO OBJETO ", e); - } finally { - closeConnection(connection, stmProd, rsProd); - } - } - - - @Override - public Collection buscarTodos() throws DAOException { - List lista = new ArrayList<>(); - StringBuilder sb = sqlBaseSelect(); - - try { - Connection connection = getConnection(); - PreparedStatement stm = connection.prepareStatement(sb.toString()); - ResultSet rs = stm.executeQuery(); - while (rs.next()) { - Venda venda = VendaFactory.convert(rs); - buscarAssociacaoVendaProdutos(connection, venda); - lista.add(venda); - } - - } catch (SQLException e) { - throw new DAOException("ERRO CONSULTANDO OBJETO ", e); - } - return lista; - } + public void alterar(Produto_4 entity) throws TipoChaveNaoEncontradaException { - private StringBuilder sqlBaseSelect() { - StringBuilder sb = new StringBuilder(); - sb.append("SELECT V.ID AS ID_VENDA, V.CODIGO, V.VALOR_TOTAL, V.DATA_VENDA, V.STATUS_VENDA, "); - sb.append("C.ID AS ID_CLIENTE, C.NOME, C.CPF, C.TEL, C.ENDERECO, C.NUMERO, C.CIDADE, C.ESTADO "); - sb.append("FROM TB_VENDA V "); - sb.append("INNER JOIN TB_CLIENTE C ON V.ID_CLIENTE_FK = C.ID "); - return sb; } @Override - public Boolean cadastrar(Venda entity) throws TipoChaveNaoEncontradaException, DAOException { - Connection connection = null; - PreparedStatement stm = null; - try { - connection = getConnection(); - stm = connection.prepareStatement(getQueryInsercao(), Statement.RETURN_GENERATED_KEYS); - setParametrosQueryInsercao(stm, entity); - int rowsAffected = stm.executeUpdate(); + public void atualiarDados(Cliente_2 entity, Cliente_2 entityCadastrado) { - if(rowsAffected > 0) { - try (ResultSet rs = stm.getGeneratedKeys()){ - if (rs.next()) { - entity.setId(rs.getLong(1)); - } - } - - for (ProdutoQuantidade prod : entity.getProdutos()) { - stm = connection.prepareStatement(getQueryInsercaoProdQuant()); - setParametrosQueryInsercaoProdQuant(stm, entity, prod); - rowsAffected = stm.executeUpdate(); - } - - - return true; - } - - } catch (SQLException e) { - throw new DAOException("ERRO CADASTRANDO OBJETO ", e); - } finally { - closeConnection(connection, stm, null); - } - return false; } - private String getQueryInsercaoProdQuant() { - StringBuilder sb = new StringBuilder(); - sb.append("INSERT INTO TB_PRODUTO_QUANTIDADE "); - sb.append("(ID, ID_PRODUTO_FK, ID_VENDA_FK, QUANTIDADE, VALOR_TOTAL)"); - sb.append("VALUES (nextval('sq_produto_quantidade'),?,?,?,?)"); - return sb.toString(); - } - - private void setParametrosQueryInsercaoProdQuant(PreparedStatement stm, Venda venda, ProdutoQuantidade prod) throws SQLException { - stm.setLong(1, prod.getProduto().getId()); - stm.setLong(2, venda.getId()); - stm.setInt(3, prod.getQuantidade()); - stm.setBigDecimal(4, prod.getValorTotal()); - } + @Override + public void alterar(Object entity) { + } } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java index 58f8019..64c5f8a 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires @@ -14,8 +14,8 @@ */ public class ClienteFactory { - public static Cliente convert(ResultSet rs) throws SQLException { - Cliente cliente = new Cliente(); + public static Cliente_2 convert(ResultSet rs) throws SQLException { + Cliente_2 cliente = new Cliente_2(); cliente.setId(rs.getLong("ID_CLIENTE")); cliente.setNome(rs.getString(("NOME"))); cliente.setCpf(rs.getLong(("CPF"))); diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java index f0633c5..ecf4162 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires @@ -15,8 +15,8 @@ public class ProdutoFactory { - public static Produto convert(ResultSet rs) throws SQLException { - Produto prod = new Produto(); + public static Produto_4 convert(ResultSet rs) throws SQLException { + Produto_4 prod = new Produto_4(); prod.setId(rs.getLong("ID_PRODUTO")); prod.setCodigo(rs.getString("CODIGO")); prod.setNome(rs.getString("NOME")); diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java index 1b25e5e..1716025 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.domain.ProdutoQuantidade; /** @@ -16,7 +16,7 @@ public class ProdutoQuantidadeFactory { public static ProdutoQuantidade convert(ResultSet rs) throws SQLException { - Produto prod = ProdutoFactory.convert(rs); + Produto_4 prod = ProdutoFactory.convert(rs); ProdutoQuantidade prodQ = new ProdutoQuantidade(); prodQ.setProduto(prod); prodQ.setId(rs.getLong("ID")); diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/VendaFactory.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/VendaFactory.java index 6b4d52a..8e13fe1 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/VendaFactory.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/factory/VendaFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; @@ -17,7 +17,7 @@ public class VendaFactory { public static Venda convert(ResultSet rs) throws SQLException { - Cliente cliente = ClienteFactory.convert(rs); + Cliente_2 cliente = ClienteFactory.convert(rs); Venda venda = new Venda(); venda.setCliente(cliente); venda.setId(rs.getLong("ID_VENDA")); diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/GenericDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/GenericDAO.java index 07386af..ff3200e 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/GenericDAO.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/GenericDAO.java @@ -17,7 +17,7 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.dao.generic.jdbc.ConnectionFactory; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; @@ -30,7 +30,7 @@ * * Classe genérica que implementa interface genérica com os métodos de CRUD */ -public abstract class GenericDAO implements IGenericDAO { +public abstract class GenericDAO implements IGenericDAO { public abstract Class getTipoClasse(); @@ -94,7 +94,7 @@ public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException, DAOEx if(rowsAffected > 0) { try (ResultSet rs = stm.getGeneratedKeys()){ if (rs.next()) { - Persistente per = (Persistente) entity; + Persistence per = (Persistence) entity; per.setId(rs.getLong(1)); } } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java index b163ff4..d4d3a86 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java @@ -1,6 +1,6 @@ package br.com.rpires.dao.generic; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -14,7 +14,7 @@ * * Interface genérica para métodos de CRUD(Create, Read, Update and Delete) */ -public interface IGenericDAO { +public interface IGenericDAO { /** * Método para cadastrar novos registro no banco de dados diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Cliente.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Cliente.java index bdfd234..4d98682 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Cliente.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Cliente.java @@ -6,14 +6,14 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ @Tabela("TB_CLIENTE") -public class Cliente implements Persistente { +public class Cliente implements Persistence { @ColunaTabela(dbName = "id", setJavaName = "setId") private Long id; diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java index 09c75a5..df1455f 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java @@ -19,7 +19,7 @@ public class ProdutoQuantidade { private Long id; //@ColunaTabela(dbName = "id", setJavaName = "setId") - private Produto produto; + private Produto_4 produto; @ColunaTabela(dbName = "quantidade", setJavaName = "setQuantidade") private Integer quantidade; @@ -32,11 +32,11 @@ public ProdutoQuantidade() { this.valorTotal = BigDecimal.ZERO; } - public Produto getProduto() { + public Produto_4 getProduto() { return produto; } - public void setProduto(Produto produto) { + public void setProduto(Produto_4 produto) { this.produto = produto; } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Produto.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Produto_4.java similarity index 80% rename from mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Produto.java rename to mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Produto_4.java index d6f61f1..99aeab8 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Produto.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Produto_4.java @@ -8,14 +8,14 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ @Tabela("TB_PRODUTO") -public class Produto implements Persistente { +public abstract class Produto_4 implements Persistence { @ColunaTabela(dbName = "id", setJavaName = "setId") private Long id; @@ -33,6 +33,9 @@ public class Produto implements Persistente { @ColunaTabela(dbName = "valor", setJavaName = "setValor") private BigDecimal valor; + public Produto_4(int ignoredCodigo, String ignoredNome, int ignoredEstoque, float ignoredValor) { + } + public String getCodigo() { return codigo; } @@ -72,5 +75,11 @@ public Long getId() { public void setId(Long id) { this.id = id; } - + + public int getEstoque() { + return 0; + } + + public void saidaEstoque(int ignoredQtdeItem) { + } } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Venda.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Venda.java index 60922d0..971d421 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Venda.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/domain/Venda.java @@ -12,14 +12,14 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ @Tabela("TB_VENDA") -public class Venda implements Persistente { +public class Venda implements Persistence { public enum Status { INICIADA, CONCLUIDA, CANCELADA; @@ -42,7 +42,7 @@ public static Status getByName(String value) { private String codigo; @ColunaTabela(dbName = "id_cliente_fk", setJavaName = "setIdClienteFk") - private Cliente cliente; + private Cliente_2 cliente; //@ColunaTabela(dbName = "id", setJavaName = "setId") private Set produtos; @@ -68,11 +68,11 @@ public void setCodigo(String codigo) { this.codigo = codigo; } - public Cliente getCliente() { + public Cliente_2 getCliente() { return cliente; } - public void setCliente(Cliente cliente) { + public void setCliente(Cliente_2 cliente) { this.cliente = cliente; } @@ -80,7 +80,7 @@ public Set getProdutos() { return produtos; } - public void adicionarProduto(Produto produto, Integer quantidade) { + public void adicionarProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); @@ -103,7 +103,7 @@ private void validarStatus() { } } - public void removerProduto(Produto produto, Integer quantidade) { + public void removerProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ClienteService.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ClienteService.java index 737f472..02bf5b8 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ClienteService.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ClienteService.java @@ -3,23 +3,22 @@ */ package br.com.rpires.services; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; -import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.generic.GenericService; /** * @author rodrigo.pires * */ -public class ClienteService extends GenericService implements IClienteService { +public class ClienteService extends GenericService implements IClienteService { //private IClienteDAO clienteDAO; - public ClienteService(IClienteDAO clienteDAO) { + public ClienteService(IClientDAO clienteDAO) { super(clienteDAO); //this.clienteDAO = clienteDAO; } @@ -30,7 +29,7 @@ public ClienteService(IClienteDAO clienteDAO) { // } @Override - public Cliente buscarPorCPF(Long cpf) throws DAOException { + public Cliente_2 buscarPorCPF(Long cpf) throws DAOException { try { return this.dao.consultar(cpf); } catch (MaisDeUmRegistroException | TableException e) { diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IClienteService.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IClienteService.java index 87b862e..4e2cc77 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IClienteService.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IClienteService.java @@ -3,20 +3,19 @@ */ package br.com.rpires.services; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; -import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.generic.IGenericService; /** * @author rodrigo.pires * */ -public interface IClienteService extends IGenericService { +public interface IClienteService extends IGenericService { // Boolean cadastrar(Cliente cliente) throws TipoChaveNaoEncontradaException; // - Cliente buscarPorCPF(Long cpf) throws DAOException; + Cliente_2 buscarPorCPF(Long cpf) throws DAOException; // // void excluir(Long cpf); // diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IProdutoService.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IProdutoService.java index 2880ea4..76116a5 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IProdutoService.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/IProdutoService.java @@ -3,13 +3,13 @@ */ package br.com.rpires.services; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.IGenericService; /** * @author rodrigo.pires * */ -public interface IProdutoService extends IGenericService { +public interface IProdutoService extends IGenericService { } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ProdutoService.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ProdutoService.java index 4a60343..9d4d6dd 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ProdutoService.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/ProdutoService.java @@ -3,17 +3,17 @@ */ package br.com.rpires.services; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.GenericService; /** * @author rodrigo.pires * */ -public class ProdutoService extends GenericService implements IProdutoService { +public class ProdutoService extends GenericService implements IProdutoService { - public ProdutoService(IProdutoDAO dao) { + public ProdutoService(IProdutoDAO_1 dao) { super(dao); } diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/GenericService.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/GenericService.java index 1af8415..c8703c3 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/GenericService.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/GenericService.java @@ -6,8 +6,9 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.dao.generic.IGenericDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -17,7 +18,7 @@ * @author rodrigo.pires * */ -public abstract class GenericService +public abstract class GenericService implements IGenericService { protected IGenericDAO dao; diff --git a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/IGenericService.java b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/IGenericService.java index 77dc550..8a80e1f 100644 --- a/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/IGenericService.java +++ b/mod30/ExemploVendasMod30/src/main/java/br/com/rpires/services/generic/IGenericService.java @@ -6,7 +6,7 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; @@ -14,7 +14,7 @@ * @author rodrigo.pires * */ -public interface IGenericService { +public interface IGenericService { /** * Método para cadastrar novos registro no banco de dados diff --git a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteDAOTest.java b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteDAOTest.java index 5c88cf0..8bd9643 100644 --- a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteDAOTest.java +++ b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteDAOTest.java @@ -12,8 +12,8 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -25,7 +25,7 @@ */ public class ClienteDAOTest { - private IClienteDAO clienteDao; + private IClientDAO clienteDao; public ClienteDAOTest() { clienteDao = new ClienteDAO(); @@ -33,7 +33,7 @@ public ClienteDAOTest() { @After public void end() throws DAOException { - Collection list = clienteDao.buscarTodos(); + Collection list = clienteDao.buscarTodos(); list.forEach(cli -> { try { clienteDao.excluir(cli.getCpf()); @@ -46,7 +46,7 @@ public void end() throws DAOException { @Test public void pesquisarCliente() throws MaisDeUmRegistroException, TableException, TipoChaveNaoEncontradaException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -56,7 +56,7 @@ public void pesquisarCliente() throws MaisDeUmRegistroException, TableException, cliente.setTel(1199999999L); clienteDao.cadastrar(cliente); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteDao.excluir(cliente.getCpf()); @@ -64,7 +64,7 @@ public void pesquisarCliente() throws MaisDeUmRegistroException, TableException, @Test public void salvarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -75,7 +75,7 @@ public void salvarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegi Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteDao.excluir(cliente.getCpf()); @@ -84,7 +84,7 @@ public void salvarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegi @Test public void excluirCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -95,7 +95,7 @@ public void excluirCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteDao.excluir(cliente.getCpf()); @@ -105,7 +105,7 @@ public void excluirCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg @Test public void alterarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -116,13 +116,13 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteConsultado.setNome("Rodrigo Pires"); clienteDao.alterar(clienteConsultado); - Cliente clienteAlterado = clienteDao.consultar(clienteConsultado.getCpf()); + Cliente_2 clienteAlterado = clienteDao.consultar(clienteConsultado.getCpf()); Assert.assertNotNull(clienteAlterado); Assert.assertEquals("Rodrigo Pires", clienteAlterado.getNome()); @@ -133,7 +133,7 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg @Test public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -144,7 +144,7 @@ public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente cliente1 = new Cliente(); + Cliente_2 cliente1 = new Cliente_2(); cliente1.setCpf(56565656569L); cliente1.setNome("Rodrigo"); cliente1.setCidade("São Paulo"); @@ -155,7 +155,7 @@ public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { Boolean retorno1 = clienteDao.cadastrar(cliente1); Assert.assertTrue(retorno1); - Collection list = clienteDao.buscarTodos(); + Collection list = clienteDao.buscarTodos(); assertTrue(list != null); assertTrue(list.size() == 2); @@ -168,7 +168,7 @@ public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { } }); - Collection list1 = clienteDao.buscarTodos(); + Collection list1 = clienteDao.buscarTodos(); assertTrue(list1 != null); assertTrue(list1.size() == 0); } diff --git a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteServiceTest.java b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteServiceTest.java index cf82c89..8fe4251 100644 --- a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteServiceTest.java +++ b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ClienteServiceTest.java @@ -8,8 +8,8 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDaoMock; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.ClienteService; @@ -23,16 +23,16 @@ public class ClienteServiceTest { private IClienteService clienteService; - private Cliente cliente; + private Cliente_2 cliente; public ClienteServiceTest() { - IClienteDAO dao = new ClienteDaoMock(); + IClientDAO dao = new ClienteDaoMock(); clienteService = new ClienteService(dao); } @Before public void init() { - cliente = new Cliente(); + cliente = new Cliente_2(); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -45,7 +45,7 @@ public void init() { @Test public void pesquisarCliente() throws DAOException { - Cliente clienteConsultado = clienteService.buscarPorCPF(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteService.buscarPorCPF(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); } diff --git a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoDAOTest.java b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoDAOTest.java index aafd907..e03c80b 100644 --- a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoDAOTest.java +++ b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoDAOTest.java @@ -14,9 +14,9 @@ import org.junit.Assert; import org.junit.Test; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.dao.ProdutoDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.dao.ProdutoDAO_3; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -28,27 +28,22 @@ */ public class ProdutoDAOTest { - private IProdutoDAO produtoDao; + private IProdutoDAO_1 produtoDao; public ProdutoDAOTest() { - produtoDao = new ProdutoDAO(); + produtoDao = new ProdutoDAO_3(); } @After public void end() throws DAOException { - Collection list = produtoDao.buscarTodos(); + Collection list = produtoDao.buscarTodos(); list.forEach(prod -> { - try { - produtoDao.excluir(prod.getCodigo()); - } catch (DAOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + produtoDao.excluir(prod.getCodigo()); }); } - private Produto criarProduto(String codigo) throws TipoChaveNaoEncontradaException, DAOException { - Produto produto = new Produto(); + private Produto_4 criarProduto(String codigo) throws TipoChaveNaoEncontradaException, DAOException { + Produto_4 produto = new Produto_4(); produto.setCodigo(codigo); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -63,40 +58,40 @@ private void excluir(String valor) throws DAOException { @Test public void pesquisar() throws MaisDeUmRegistroException, TableException, DAOException, TipoChaveNaoEncontradaException { - Produto produto = criarProduto("A1"); + Produto_4 produto = criarProduto("A1"); Assert.assertNotNull(produto); - Produto produtoDB = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoDB = this.produtoDao.consultar(produto.getCodigo()); Assert.assertNotNull(produtoDB); excluir(produtoDB.getCodigo()); } @Test public void salvar() throws TipoChaveNaoEncontradaException, DAOException { - Produto produto = criarProduto("A2"); + Produto_4 produto = criarProduto("A2"); Assert.assertNotNull(produto); excluir(produto.getCodigo()); } @Test public void excluir() throws DAOException, TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException { - Produto produto = criarProduto("A3"); + Produto_4 produto = criarProduto("A3"); Assert.assertNotNull(produto); excluir(produto.getCodigo()); - Produto produtoBD = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoBD = this.produtoDao.consultar(produto.getCodigo()); assertNull(produtoBD); } @Test public void alterarCliente() throws TipoChaveNaoEncontradaException, DAOException, MaisDeUmRegistroException, TableException { - Produto produto = criarProduto("A4"); + Produto_4 produto = criarProduto("A4"); produto.setNome("Rodrigo Pires"); produtoDao.alterar(produto); - Produto produtoBD = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoBD = this.produtoDao.consultar(produto.getCodigo()); assertNotNull(produtoBD); Assert.assertEquals("Rodrigo Pires", produtoBD.getNome()); excluir(produto.getCodigo()); - Produto produtoBD1 = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoBD1 = this.produtoDao.consultar(produto.getCodigo()); assertNull(produtoBD1); } @@ -104,11 +99,11 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException, DAOExceptio public void buscarTodos() throws DAOException, TipoChaveNaoEncontradaException { criarProduto("A5"); criarProduto("A6"); - Collection list = produtoDao.buscarTodos(); + Collection list = produtoDao.buscarTodos(); assertTrue(list != null); assertTrue(list.size() == 2); - for (Produto prod : list) { + for (Produto_4 prod : list) { excluir(prod.getCodigo()); } diff --git a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoServiceTest.java b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoServiceTest.java index 180d446..4e3897f 100644 --- a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoServiceTest.java +++ b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/ProdutoServiceTest.java @@ -9,9 +9,9 @@ import org.junit.Before; import org.junit.Test; -import br.com.rpires.dao.IProdutoDAO; +import br.com.rpires.dao.IProdutoDAO_1; import br.com.rpires.dao.ProdutoDaoMock; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.IProdutoService; @@ -25,16 +25,16 @@ public class ProdutoServiceTest { private IProdutoService produtoService; - private Produto produto; + private Produto_4 produto; public ProdutoServiceTest() { - IProdutoDAO dao = new ProdutoDaoMock(); + IProdutoDAO_1 dao = new ProdutoDaoMock(); produtoService = new ProdutoService(dao); } @Before public void init() { - produto = new Produto(); + produto = new Produto_4(); produto.setCodigo("A1"); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -43,7 +43,7 @@ public void init() { @Test public void pesquisar() throws DAOException { - Produto produtor = this.produtoService.consultar(produto.getCodigo()); + Produto_4 produtor = this.produtoService.consultar(produto.getCodigo()); Assert.assertNotNull(produtor); } diff --git a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/VendaDAOTest.java b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/VendaDAOTest.java index 8f93b37..6e7c1a7 100644 --- a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/VendaDAOTest.java +++ b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/VendaDAOTest.java @@ -22,14 +22,14 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.dao.IVendaDAO; -import br.com.rpires.dao.ProdutoDAO; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.dao.IVendaDAO_1; +import br.com.rpires.dao.ProdutoDAO_3; import br.com.rpires.dao.VendaDAO; import br.com.rpires.dao.generic.jdbc.ConnectionFactory; -import br.com.rpires.domain.Cliente; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; import br.com.rpires.exceptions.DAOException; @@ -43,20 +43,20 @@ */ public class VendaDAOTest { - private IVendaDAO vendaDao; + private IVendaDAO_1 vendaDao; - private IClienteDAO clienteDao; + private IClientDAO clienteDao; - private IProdutoDAO produtoDao; + private IProdutoDAO_1 produtoDao; - private Cliente cliente; + private Cliente_2 cliente; - private Produto produto; + private Produto_4 produto; public VendaDAOTest() { vendaDao = new VendaDAO(); clienteDao = new ClienteDAO(); - produtoDao = new ProdutoDAO(); + produtoDao = new ProdutoDAO_3(); } @Before @@ -74,8 +74,8 @@ public void end() throws DAOException { private void excluirProdutos() throws DAOException { - Collection list = this.produtoDao.buscarTodos(); - for (Produto prod : list) { + Collection list = this.produtoDao.buscarTodos(); + for (Produto_4 prod : list) { this.produtoDao.excluir(prod.getCodigo()); } } @@ -148,7 +148,7 @@ public void adicionarMaisProdutosDiferentes() throws TipoChaveNaoEncontradaExcep assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -181,7 +181,7 @@ public void removerProduto() throws TipoChaveNaoEncontradaException, MaisDeUmReg assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -208,7 +208,7 @@ public void removerApenasUmProduto() throws TipoChaveNaoEncontradaException, Mai assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -235,7 +235,7 @@ public void removerTodosProdutos() throws TipoChaveNaoEncontradaException, MaisD assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -286,8 +286,8 @@ public void tentarAdicionarProdutosVendaFinalizada() throws TipoChaveNaoEncontra } - private Produto cadastrarProduto(String codigo, BigDecimal valor) throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Produto produto = new Produto(); + private Produto_4 cadastrarProduto(String codigo, BigDecimal valor) throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { + Produto_4 produto = new Produto_4(); produto.setCodigo(codigo); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -296,8 +296,8 @@ private Produto cadastrarProduto(String codigo, BigDecimal valor) throws TipoCha return produto; } - private Cliente cadastrarCliente() throws TipoChaveNaoEncontradaException, DAOException { - Cliente cliente = new Cliente(); + private Cliente_2 cadastrarCliente() throws TipoChaveNaoEncontradaException, DAOException { + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); diff --git a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ClienteDaoMock.java b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ClienteDaoMock.java index 10e2604..ea2b037 100644 --- a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ClienteDaoMock.java +++ b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ClienteDaoMock.java @@ -2,13 +2,13 @@ import java.util.Collection; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; -public class ClienteDaoMock implements IClienteDAO { +public class ClienteDaoMock implements IClientDAO { @Override - public Boolean cadastrar(Cliente entity) throws TipoChaveNaoEncontradaException { + public Boolean cadastrar(Cliente_2 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub return true; } @@ -20,20 +20,20 @@ public void excluir(Long valor) { } @Override - public void alterar(Cliente entity) throws TipoChaveNaoEncontradaException { + public void alterar(Cliente_2 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub } @Override - public Cliente consultar(Long valor) { - Cliente cliente = new Cliente(); + public Cliente_2 consultar(Long valor) { + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(valor); return cliente; } @Override - public Collection buscarTodos() { + public Collection buscarTodos() { // TODO Auto-generated method stub return null; } diff --git a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java index 207975b..003cdd4 100644 --- a/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java +++ b/mod30/ExemploVendasMod30/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java @@ -5,17 +5,17 @@ import java.util.Collection; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public class ProdutoDaoMock implements IProdutoDAO { +public class ProdutoDaoMock implements IProdutoDAO_1 { @Override - public Boolean cadastrar(Produto entity) throws TipoChaveNaoEncontradaException { + public Boolean cadastrar(Produto_4 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub return true; } @@ -27,20 +27,20 @@ public void excluir(String valor) { } @Override - public void alterar(Produto entity) throws TipoChaveNaoEncontradaException { + public void alterar(Produto_4 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub } @Override - public Produto consultar(String valor) { - Produto produto = new Produto(); + public Produto_4 consultar(String valor) { + Produto_4 produto = new Produto_4(); produto.setCodigo(valor); return produto; } @Override - public Collection buscarTodos() { + public Collection buscarTodos() { // TODO Auto-generated method stub return null; } diff --git a/mod30/exercise_mod30/db.properties b/mod30/exercise_mod30/db.properties new file mode 100644 index 0000000..053dc32 --- /dev/null +++ b/mod30/exercise_mod30/db.properties @@ -0,0 +1,4 @@ +user=developer +password=1234567 +dburl=jdbc:mysql://localhost:3306/Test_JDBC +useSSL=false \ No newline at end of file diff --git a/mod30/exercise_mod30/exemplos.sql b/mod30/exercise_mod30/exemplos.sql new file mode 100644 index 0000000..c6428a9 --- /dev/null +++ b/mod30/exercise_mod30/exemplos.sql @@ -0,0 +1,40 @@ +USE test_jdbc; + +-- Comando para adicionar a coluna 'Qualidades' à tabela 'seller' +ALTER TABLE seller +ADD COLUMN Qualidades VARCHAR(100) NOT NULL; + +-- Comando para criar a tabela department +CREATE TABLE department ( + Id int(11) NOT NULL AUTO_INCREMENT, + Name varchar(60) DEFAULT NULL, + PRIMARY KEY (Id) +); + +-- Comando para criar a tabela seller +CREATE TABLE seller ( + Id int(11) NOT NULL AUTO_INCREMENT, + Name varchar(60) NOT NULL, + Email varchar(100) NOT NULL, + BirthDate datetime NOT NULL, + BaseSalary double NOT NULL, + DepartmentId int(11) NOT NULL, + Qualidades varchar(100) NOT NULL, + PRIMARY KEY (Id), + FOREIGN KEY (DepartmentId) REFERENCES department (Id) +); + +-- Comandos para inserir dados nas tabelas +INSERT INTO department (Name) VALUES + ('Computers'), + ('Electronics'), + ('Fashion'), + ('Books'); + +INSERT INTO seller (Name, Email, BirthDate, BaseSalary, DepartmentId, Qualidades) VALUES + ('Bob Brown','bob@gmail.com','1998-04-21 00:00:00',1000,1, 'É bom em eletrônica'), + ('Maria Green','maria@gmail.com','1979-12-31 00:00:00',3500,2, 'Fala bem em público'), + ('Alex Grey','alex@gmail.com','1988-01-15 00:00:00',2200,1, 'É um excelente administrador'), + ('Martha Red','martha@gmail.com','1993-11-30 00:00:00',3000,4, 'Muito criativa'), + ('Donald Blue','donald@gmail.com','2000-01-09 00:00:00',4000,3, 'Fala Japonês fluente'), + ('Steve Vaz','Steve@gmail.com','2000-03-04 00:00:00',3000,2, 'Cientista da computação'); diff --git a/mod30/exercise_mod30/src/application/Program.java b/mod30/exercise_mod30/src/application/Program.java new file mode 100644 index 0000000..6a4ee91 --- /dev/null +++ b/mod30/exercise_mod30/src/application/Program.java @@ -0,0 +1,56 @@ +package application; + +import java.util.Date; +import java.util.List; +import java.util.Scanner; + +import model.dao.DaoFactory; +import model.dao.SellerDao; +import model.entities.Department; +import model.entities.Seller; + +public class Program { + + public static void main(String[] args) { + + Scanner sc = new Scanner(System.in); + + SellerDao sellerDao = DaoFactory.createSellerDao(); + + System.out.println("=== TEST 1: seller findById ====="); + Seller seller = sellerDao.findById(3); + System.out.println(seller); + + System.out.println("\n=== TEST 2: seller findByDepartment ====="); + Department department = new Department(2, null); + List list = sellerDao.findByDepartment(department); + for (Seller obj : list) { + System.out.println(obj); + } + + System.out.println("\n=== TEST 3: seller findAll ====="); + list = sellerDao.findAll(); + for (Seller obj : list) { + System.out.println(obj); + } + + System.out.println("\n=== TEST 4: seller insert ====="); + Seller newSeller = new Seller(null, "Greg", "greg@gmail.com", new Date(), 4000.0, department, "É bom em eletrônica"); + sellerDao.insert(newSeller); + System.out.println("Inserted! New id = " + newSeller.getId()); + + System.out.println("\n=== TEST 5: seller update ====="); + seller = sellerDao.findById(1); + seller.setName("Martha Waine"); + sellerDao.update(seller); + System.out.println("Update completed"); + + System.out.println("\n=== TEST 6: seller delete ====="); + System.out.println("Enter id for delete test: "); + int id = sc.nextInt(); + sellerDao.deleteById(id); + System.out.println("Delete completed"); + + sc.close(); + } +} diff --git a/mod30/exercise_mod30/src/db/DB.java b/mod30/exercise_mod30/src/db/DB.java new file mode 100644 index 0000000..b0b5fd5 --- /dev/null +++ b/mod30/exercise_mod30/src/db/DB.java @@ -0,0 +1,70 @@ +package db; + +import java.io.FileInputStream; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Properties; + +public class DB { + + private static Connection conn = null; + + public static Connection getConnection() { + if (conn == null) { + try { + Properties props = loadProperties(); + String url = props.getProperty("dburl"); + conn = DriverManager.getConnection(url, props); + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + return conn; + } + + public static void closeConnection() { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + } + + private static Properties loadProperties() { + try (FileInputStream fs = new FileInputStream("db.properties")) { + Properties props = new Properties(); + props.load(fs); + return props; + } + catch (IOException e) { + throw new DbException(e.getMessage()); + } + } + + public static void closeStatement(Statement st) { + if (st != null) { + try { + st.close(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + } + + public static void closeResultSet(ResultSet rs) { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } + } + } +} diff --git a/mod30/exercise_mod30/src/db/DbException.java b/mod30/exercise_mod30/src/db/DbException.java new file mode 100644 index 0000000..e37deb4 --- /dev/null +++ b/mod30/exercise_mod30/src/db/DbException.java @@ -0,0 +1,9 @@ +package db; + +public class DbException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public DbException(String msg) { + super(msg); + } +} diff --git a/mod30/exercise_mod30/src/db/DbIntegrityException.java b/mod30/exercise_mod30/src/db/DbIntegrityException.java new file mode 100644 index 0000000..fea711e --- /dev/null +++ b/mod30/exercise_mod30/src/db/DbIntegrityException.java @@ -0,0 +1,9 @@ +package db; + +public class DbIntegrityException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public DbIntegrityException(String msg) { + super(msg); + } +} diff --git a/mod30/exercise_mod30/src/model/dao/DaoFactory.java b/mod30/exercise_mod30/src/model/dao/DaoFactory.java new file mode 100644 index 0000000..d2aa1f0 --- /dev/null +++ b/mod30/exercise_mod30/src/model/dao/DaoFactory.java @@ -0,0 +1,16 @@ +package model.dao; + +import db.DB; +import model.dao.impl.DepartmentDaoJDBC; +import model.dao.impl.SellerDaoJDBC; + +public class DaoFactory { + + public static SellerDao createSellerDao() { + return new SellerDaoJDBC(DB.getConnection()); + } + + public static DepartmentDao createDepartmentDao() { + return new DepartmentDaoJDBC(DB.getConnection()); + } +} diff --git a/mod30/exercise_mod30/src/model/dao/DepartmentDao.java b/mod30/exercise_mod30/src/model/dao/DepartmentDao.java new file mode 100644 index 0000000..27b0816 --- /dev/null +++ b/mod30/exercise_mod30/src/model/dao/DepartmentDao.java @@ -0,0 +1,14 @@ +package model.dao; + +import java.util.List; + +import model.entities.Department; + +public interface DepartmentDao { + + void insert(Department obj); + void update(Department obj); + void deleteById(Integer id); + Department findById(Integer id); + List findAll(); +} diff --git a/mod30/exercise_mod30/src/model/dao/SellerDao.java b/mod30/exercise_mod30/src/model/dao/SellerDao.java new file mode 100644 index 0000000..44c129c --- /dev/null +++ b/mod30/exercise_mod30/src/model/dao/SellerDao.java @@ -0,0 +1,16 @@ +package model.dao; + +import java.util.List; + +import model.entities.Department; +import model.entities.Seller; + +public interface SellerDao { + + void insert(Seller obj); + void update(Seller obj); + void deleteById(Integer id); + Seller findById(Integer id); + List findAll(); + List findByDepartment(Department department); +} diff --git a/mod30/exercise_mod30/src/model/dao/impl/DepartmentDaoJDBC.java b/mod30/exercise_mod30/src/model/dao/impl/DepartmentDaoJDBC.java new file mode 100644 index 0000000..b134d17 --- /dev/null +++ b/mod30/exercise_mod30/src/model/dao/impl/DepartmentDaoJDBC.java @@ -0,0 +1,153 @@ +package model.dao.impl; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import db.DB; +import db.DbException; +import db.DbIntegrityException; +import model.dao.DepartmentDao; +import model.entities.Department; + +public class DepartmentDaoJDBC implements DepartmentDao { + + private Connection conn; + + public DepartmentDaoJDBC(Connection conn) { + this.conn = conn; + } + + @Override + public Department findById(Integer id) { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT * FROM department WHERE Id = ?"); + st.setInt(1, id); + rs = st.executeQuery(); + if (rs.next()) { + Department obj = new Department(); + obj.setId(rs.getInt("Id")); + obj.setName(rs.getString("Name")); + return obj; + } + return null; + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + @Override + public List findAll() { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT * FROM department ORDER BY Name"); + rs = st.executeQuery(); + + List list = new ArrayList<>(); + + while (rs.next()) { + Department obj = new Department(); + obj.setId(rs.getInt("Id")); + obj.setName(rs.getString("Name")); + list.add(obj); + } + return list; + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + @Override + public void insert(Department obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "INSERT INTO department " + + "(Name) " + + "VALUES " + + "(?)", + Statement.RETURN_GENERATED_KEYS); + + st.setString(1, obj.getName()); + + int rowsAffected = st.executeUpdate(); + + if (rowsAffected > 0) { + ResultSet rs = st.getGeneratedKeys(); + if (rs.next()) { + int id = rs.getInt(1); + obj.setId(id); + } + } + else { + throw new DbException("Unexpected error! No rows affected!"); + } + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } + + @Override + public void update(Department obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "UPDATE department " + + "SET Name = ? " + + "WHERE Id = ?"); + + st.setString(1, obj.getName()); + st.setInt(2, obj.getId()); + + st.executeUpdate(); + } + catch (SQLException e) { + throw new DbException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } + + @Override + public void deleteById(Integer id) { + PreparedStatement st = null; + try { + st = conn.prepareStatement( + "DELETE FROM department WHERE Id = ?"); + + st.setInt(1, id); + + st.executeUpdate(); + } + catch (SQLException e) { + throw new DbIntegrityException(e.getMessage()); + } + finally { + DB.closeStatement(st); + } + } +} diff --git a/mod30/exercise_mod30/src/model/dao/impl/SellerDaoJDBC.java b/mod30/exercise_mod30/src/model/dao/impl/SellerDaoJDBC.java new file mode 100644 index 0000000..dccaba6 --- /dev/null +++ b/mod30/exercise_mod30/src/model/dao/impl/SellerDaoJDBC.java @@ -0,0 +1,219 @@ +package model.dao.impl; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.mysql.jdbc.Statement; + +import db.DB; +import db.DbException; +import model.dao.SellerDao; +import model.entities.Department; +import model.entities.Seller; + +public class SellerDaoJDBC implements SellerDao { + + private Connection conn; + + public SellerDaoJDBC(Connection conn) { + this.conn = conn; + } + + @Override + public void insert(Seller obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement("INSERT INTO seller " + + "(Name, Email, BirthDate, BaseSalary, DepartmentId, Qualidades) " + + "VALUES (?, ?, ?, ?, ?, ?)", + Statement.RETURN_GENERATED_KEYS); + + st.setString(1, obj.getName()); + st.setString(2, obj.getEmail()); + st.setDate(3, new java.sql.Date(obj.getBirthDate().getTime())); + st.setDouble(4, obj.getBaseSalary()); + st.setInt(5, obj.getDepartment().getId()); + st.setString(6, obj.getQualidade()); // Adiciona Qualidades + + int rowsAffected = st.executeUpdate(); + + if (rowsAffected > 0) { + ResultSet rs = st.getGeneratedKeys(); + if (rs.next()) { + int id = rs.getInt(1); + obj.setId(id); + } + DB.closeResultSet(rs); + } else { + throw new DbException("Unexpected error! No rows affected!"); + } + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } finally { + DB.closeStatement(st); + } + } + + @Override + public void update(Seller obj) { + PreparedStatement st = null; + try { + st = conn.prepareStatement("UPDATE seller " + + "SET Name = ?, Email = ?, BirthDate = ?, BaseSalary = ?, DepartmentId = ?, Qualidades = ? " + + "WHERE Id = ?"); + + st.setString(1, obj.getName()); + st.setString(2, obj.getEmail()); + st.setDate(3, new java.sql.Date(obj.getBirthDate().getTime())); + st.setDouble(4, obj.getBaseSalary()); + st.setInt(5, obj.getDepartment().getId()); + st.setString(6, obj.getQualidade()); // Adiciona Qualidades + st.setInt(7, obj.getId()); + + st.executeUpdate(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } finally { + DB.closeStatement(st); + } + } + + @Override + public void deleteById(Integer id) { + PreparedStatement st = null; + try { + st = conn.prepareStatement("DELETE FROM seller WHERE Id = ?"); + + st.setInt(1, id); + + st.executeUpdate(); + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } finally { + DB.closeStatement(st); + } + } + + @Override + public Seller findById(Integer id) { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT seller.*, department.Name as DepName, seller.Qualidades " + "FROM seller INNER JOIN department " + + "ON seller.DepartmentId = department.Id " + "WHERE seller.Id = ?"); + + st.setInt(1, id); + rs = st.executeQuery(); + if (rs.next()) { + Department dep = instantiateDepartment(rs); + Seller obj = instantiateSeller(rs, dep); + return obj; + } + return null; + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + private Seller instantiateSeller(ResultSet rs, Department dep) throws SQLException { + Seller obj = new Seller(); + obj.setId(rs.getInt("Id")); + obj.setName(rs.getString("Name")); + obj.setEmail(rs.getString("Email")); + obj.setBaseSalary(rs.getDouble("BaseSalary")); + obj.setBirthDate(rs.getDate("BirthDate")); + obj.setDepartment(dep); + obj.setQualidade(rs.getString("Qualidades")); // Altera para obter a coluna Qualidades + return obj; + } + + + private Department instantiateDepartment(ResultSet rs) throws SQLException { + Department dep = new Department(); + dep.setId(rs.getInt("DepartmentId")); + dep.setName(rs.getString("DepName")); + return dep; + } + + @Override + public List findAll() { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT seller.*,department.Name as DepName " + "FROM seller INNER JOIN department " + + "ON seller.DepartmentId = department.Id " + "ORDER BY Name"); + + rs = st.executeQuery(); + + List list = new ArrayList<>(); + Map map = new HashMap<>(); + + while (rs.next()) { + + Department dep = map.get(rs.getInt("DepartmentId")); + + if (dep == null) { + dep = instantiateDepartment(rs); + map.put(rs.getInt("DepartmentId"), dep); + } + + Seller obj = instantiateSeller(rs, dep); + list.add(obj); + } + return list; + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } + + @Override + public List findByDepartment(Department department) { + PreparedStatement st = null; + ResultSet rs = null; + try { + st = conn.prepareStatement( + "SELECT seller.*,department.Name as DepName " + "FROM seller INNER JOIN department " + + "ON seller.DepartmentId = department.Id " + "WHERE DepartmentId = ? " + "ORDER BY Name"); + + st.setInt(1, department.getId()); + + rs = st.executeQuery(); + + List list = new ArrayList<>(); + Map map = new HashMap<>(); + + while (rs.next()) { + + Department dep = map.get(rs.getInt("DepartmentId")); + + if (dep == null) { + dep = instantiateDepartment(rs); + map.put(rs.getInt("DepartmentId"), dep); + } + + Seller obj = instantiateSeller(rs, dep); + list.add(obj); + } + return list; + } catch (SQLException e) { + throw new DbException(e.getMessage()); + } finally { + DB.closeStatement(st); + DB.closeResultSet(rs); + } + } +} diff --git a/mod30/exercise_mod30/src/model/entities/Department.java b/mod30/exercise_mod30/src/model/entities/Department.java new file mode 100644 index 0000000..d94c058 --- /dev/null +++ b/mod30/exercise_mod30/src/model/entities/Department.java @@ -0,0 +1,65 @@ +package model.entities; + +import java.io.Serializable; + +public class Department implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String name; + + public Department() { + } + + public Department(Integer id, String name) { + this.id = id; + this.name = name; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Department other = (Department) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + + @Override + public String toString() { + return "Department [id=" + id + ", name=" + name + "]"; + } +} diff --git a/mod30/exercise_mod30/src/model/entities/Seller.java b/mod30/exercise_mod30/src/model/entities/Seller.java new file mode 100644 index 0000000..357a96e --- /dev/null +++ b/mod30/exercise_mod30/src/model/entities/Seller.java @@ -0,0 +1,118 @@ +package model.entities; + +import java.io.Serializable; +import java.util.Date; + +public class Seller implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String name; + private String email; + private Date birthDate; + private Double baseSalary; + private String qualidade; + + private Department department; + + public Seller() { + } + + public Seller(Integer id, String name, String email, Date birthDate, Double baseSalary, Department department, String qualidade) { + this.id = id; + this.name = name; + this.email = email; + this.birthDate = birthDate; + this.baseSalary = baseSalary; + this.department = department; + this.qualidade = qualidade; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + + public Double getBaseSalary() { + return baseSalary; + } + + public void setBaseSalary(Double baseSalary) { + this.baseSalary = baseSalary; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } + + public String getQualidade() { + return qualidade; + } + + public void setQualidade(String qualidade) { + this.qualidade = qualidade; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Seller other = (Seller) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + + @Override + public String toString() { + return "Seller [id=" + id + ", name=" + name + ", email=" + email + ", birthDate=" + birthDate + ", baseSalary=" + + baseSalary + ", department=" + department + ", qualidade=" + qualidade +"]"; + } +} diff --git a/mod31/ExemploJPA/src/main/java/META-INF/persistence.xml b/mod31/ExemploJPA/src/main/java/META-INF/persistence.xml index 7792c6e..3a41a46 100644 --- a/mod31/ExemploJPA/src/main/java/META-INF/persistence.xml +++ b/mod31/ExemploJPA/src/main/java/META-INF/persistence.xml @@ -7,7 +7,7 @@ org.hibernate.ejb.HibernatePersistence - br.com.rpires.domain.Cliente + br.com.rpires.domain.Cliente_2 br.com.rpires.domain.Pessoa br.com.rpires.domain.Endereco br.com.rpires.domain.Curso diff --git a/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/ClienteDAO.java b/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/ClienteDAO.java index 8ce4bde..24ee172 100644 --- a/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/ClienteDAO.java +++ b/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/ClienteDAO.java @@ -9,16 +9,16 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public class ClienteDAO implements IClienteDAO { +public class ClienteDAO implements IClientDAO { @Override - public Cliente cadastrar(Cliente cliente) { + public Cliente_2 cadastrar(Cliente_2 cliente) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ExemploJPA"); EntityManager entityManager = entityManagerFactory.createEntityManager(); @@ -34,13 +34,13 @@ public Cliente cadastrar(Cliente cliente) { } @Override - public Cliente buscarPorID(Long id) { + public Cliente_2 buscarPorID(Long id) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ExemploJPA"); EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); - Cliente cliente = entityManager.find(Cliente.class, id); + Cliente_2 cliente = entityManager.find(Cliente_2.class, id); entityManager.getTransaction().commit(); entityManager.close(); @@ -50,7 +50,7 @@ public Cliente buscarPorID(Long id) { } @Override - public void excluir(Cliente cliente) { + public void excluir(Cliente_2 cliente) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ExemploJPA"); EntityManager entityManager = entityManagerFactory.createEntityManager(); @@ -65,7 +65,7 @@ public void excluir(Cliente cliente) { } @Override - public Cliente alterar(Cliente cliente) { + public Cliente_2 alterar(Cliente_2 cliente) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ExemploJPA"); EntityManager entityManager = entityManagerFactory.createEntityManager(); @@ -80,14 +80,14 @@ public Cliente alterar(Cliente cliente) { } @Override - public List buscarTodos() { + public List buscarTodos() { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ExemploJPA"); EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); - List list = - entityManager.createQuery("SELECT c FROM Cliente c", Cliente.class).getResultList(); + List list = + entityManager.createQuery("SELECT c FROM Cliente c", Cliente_2.class).getResultList(); entityManager.getTransaction().commit(); entityManager.close(); diff --git a/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/IClienteDAO.java b/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/IClienteDAO.java index a3b9b63..3ea4d69 100644 --- a/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/IClienteDAO.java +++ b/mod31/ExemploJPA/src/main/java/br/com/rpires/dao/IClienteDAO.java @@ -5,7 +5,7 @@ import java.util.List; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires @@ -13,13 +13,13 @@ */ public interface IClienteDAO { - public Cliente cadastrar(Cliente cliente); + public Cliente_2 cadastrar(Cliente_2 cliente); - public Cliente buscarPorID(Long id); + public Cliente_2 buscarPorID(Long id); - public void excluir(Cliente cliente); + public void excluir(Cliente_2 cliente); - public Cliente alterar(Cliente cliente); + public Cliente_2 alterar(Cliente_2 cliente); - public List buscarTodos(); + public List buscarTodos(); } diff --git a/mod31/ExemploJPA/src/test/java/br/com/rpires/ClienteDAOTest.java b/mod31/ExemploJPA/src/test/java/br/com/rpires/ClienteDAOTest.java index ce6ffca..d48c707 100644 --- a/mod31/ExemploJPA/src/test/java/br/com/rpires/ClienteDAOTest.java +++ b/mod31/ExemploJPA/src/test/java/br/com/rpires/ClienteDAOTest.java @@ -12,8 +12,8 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires @@ -21,7 +21,7 @@ */ public class ClienteDAOTest { - IClienteDAO clienteDAO; + IClientDAO clienteDAO; public ClienteDAOTest() { clienteDAO = new ClienteDAO(); @@ -29,16 +29,16 @@ public ClienteDAOTest() { @After public void end() { - List list = clienteDAO.buscarTodos(); + List list = clienteDAO.buscarTodos(); list.forEach(cli -> clienteDAO.excluir(cli)); } @Test public void cadastrar() { - Cliente cliente = criarCliente(); + Cliente_2 cliente = criarCliente(); assertNotNull(cliente); - Cliente clienteDB = clienteDAO.buscarPorID(cliente.getId()); + Cliente_2 clienteDB = clienteDAO.buscarPorID(cliente.getId()); assertNotNull(clienteDB); assertEquals(cliente.getId(), clienteDB.getId()); assertEquals(cliente.getNome(), clienteDB.getNome()); @@ -50,16 +50,16 @@ public void cadastrar() { @Test public void alterar() { - Cliente cliente = criarCliente(); + Cliente_2 cliente = criarCliente(); assertNotNull(cliente); - Cliente clienteDB = clienteDAO.buscarPorID(cliente.getId()); + Cliente_2 clienteDB = clienteDAO.buscarPorID(cliente.getId()); assertNotNull(clienteDB); assertEquals(cliente.getId(), clienteDB.getId()); assertEquals(cliente.getNome(), clienteDB.getNome()); clienteDB.setNome("Rodrigo Pires"); - Cliente clienteUp = clienteDAO.alterar(clienteDB); + Cliente_2 clienteUp = clienteDAO.alterar(clienteDB); assertEquals("Rodrigo Pires", clienteUp.getNome()); // clienteDAO.excluir(cliente); @@ -68,8 +68,8 @@ public void alterar() { } - private Cliente criarCliente() { - Cliente cliente = new Cliente(); + private Cliente_2 criarCliente() { + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); diff --git a/mod32/exercisejpamaven/pom.xml b/mod32/exercisejpamaven/pom.xml new file mode 100644 index 0000000..36c37f2 --- /dev/null +++ b/mod32/exercisejpamaven/pom.xml @@ -0,0 +1,42 @@ + + 4.0.0 + com.educando.web + exercisejpamaven + 0.0.1-SNAPSHOT + + + 17 + 17 + + + + + + org.hibernate + hibernate-core + 5.4.12.Final + + + org.hibernate + hibernate-entitymanager + 5.4.12.Final + + + + + mysql + mysql-connector-java + 8.0.19 + + + + + junit + junit + 4.13.1 + test + + + diff --git a/mod32/exercisejpamaven/src/main/java/application/ProdutoService.java b/mod32/exercisejpamaven/src/main/java/application/ProdutoService.java new file mode 100644 index 0000000..46e1525 --- /dev/null +++ b/mod32/exercisejpamaven/src/main/java/application/ProdutoService.java @@ -0,0 +1,144 @@ +package application; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.EntityTransaction; +import javax.persistence.Persistence; +import dominio.DepartamentoVendas; +import dominio.Produto; +import java.util.List; + +public class ProdutoService { + + private EntityManagerFactory entityManagerFactory; + + public ProdutoService() { + this.entityManagerFactory = Persistence.createEntityManagerFactory("jpa"); + } + + public void cadastrarProduto(Produto produto) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + entityManager.persist(produto); + transaction.commit(); + System.out.println("Produto cadastrado com sucesso."); + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public void cadastrarDepartamento(DepartamentoVendas departamento) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + entityManager.persist(departamento); + transaction.commit(); + System.out.println("Departamento cadastrado com sucesso."); + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public void excluirProdutoPorId(long produtoId) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + Produto produto = entityManager.find(Produto.class, produtoId); + + if (produto != null) { + entityManager.remove(produto); + transaction.commit(); + System.out.println("Produto excluído com sucesso."); + } else { + System.out.println("Produto não encontrado."); + } + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public void atualizarProduto(Produto produto) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + Produto produtoExistente = entityManager.find(Produto.class, produto.getId()); + + if (produtoExistente != null) { + // Atualiza os campos desejados + produtoExistente.setNome(produto.getNome()); + produtoExistente.setPreco(produto.getPreco()); + produtoExistente.setDepartamento(produto.getDepartamento()); + + entityManager.merge(produtoExistente); + transaction.commit(); + System.out.println("Produto atualizado com sucesso."); + } else { + System.out.println("Produto não encontrado."); + } + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public List buscarProdutosPorDepartamento(long departamentoId) { + EntityManager entityManager = criarEntityManager(); + + try { + return entityManager + .createQuery("SELECT p FROM Produto p WHERE p.departamento.id = :departamentoId", Produto.class) + .setParameter("departamentoId", departamentoId) + .getResultList(); + } finally { + entityManager.close(); + } + } + + public DepartamentoVendas buscarDepartamentoPorId(long id) { + EntityManager entityManager = criarEntityManager(); + + try { + return entityManager.find(DepartamentoVendas.class, id); + } finally { + entityManager.close(); + } + } + + public void fecharConexao() { + if (entityManagerFactory != null && entityManagerFactory.isOpen()) { + entityManagerFactory.close(); + } + } + + private EntityManager criarEntityManager() { + return entityManagerFactory.createEntityManager(); + } +} \ No newline at end of file diff --git a/mod32/exercisejpamaven/src/main/java/application/ProdutoServiceTest.java b/mod32/exercisejpamaven/src/main/java/application/ProdutoServiceTest.java new file mode 100644 index 0000000..1df6d21 --- /dev/null +++ b/mod32/exercisejpamaven/src/main/java/application/ProdutoServiceTest.java @@ -0,0 +1,70 @@ +package application; + +import dominio.DepartamentoVendas; +import dominio.Produto; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; +import java.util.Scanner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class ProdutoServiceTest { + + private ProdutoService produtoService; + private Scanner scanner; + + @Before + public void setUp() { + produtoService = new ProdutoService(); + scanner = new Scanner(System.in); + } + + @After + public void tearDown() { + produtoService.fecharConexao(); + scanner.close(); + } + + @Test + public void testCRUDOperations() { + // Simulando a entrada do usuário para criar um departamento + System.out.print("Digite o nome do departamento: "); + String nomeDepartamento = scanner.nextLine(); + + DepartamentoVendas departamento = new DepartamentoVendas(); + departamento.setNome(nomeDepartamento); + + produtoService.cadastrarDepartamento(departamento); + + // Simulando a entrada do usuário para criar um produto + System.out.print("Digite o nome do produto: "); + String nomeProduto = scanner.nextLine(); + + System.out.print("Digite o preço do produto: "); + double precoProduto = scanner.nextDouble(); + + Produto produto = new Produto(); + produto.setNome(nomeProduto); + produto.setPreco(precoProduto); + produto.setDepartamento(departamento); + + // Agora está cadastrando o produto, não o departamento + produtoService.cadastrarProduto(produto); + + // Simule a busca de produtos por departamento + List produtosDoDepartamento = produtoService.buscarProdutosPorDepartamento(departamento.getId()); + + // Verificações + assertNotNull(produtosDoDepartamento); + assertEquals(1, produtosDoDepartamento.size()); + Produto produtoEncontrado = produtosDoDepartamento.get(0); + + assertEquals(nomeProduto, produtoEncontrado.getNome()); + assertEquals(precoProduto, produtoEncontrado.getPreco(), 0.01); + assertEquals(departamento.getId(), produtoEncontrado.getDepartamento().getId()); + } +} \ No newline at end of file diff --git a/mod32/exercisejpamaven/src/main/java/dominio/DepartamentoVendas.java b/mod32/exercisejpamaven/src/main/java/dominio/DepartamentoVendas.java new file mode 100644 index 0000000..ef5978f --- /dev/null +++ b/mod32/exercisejpamaven/src/main/java/dominio/DepartamentoVendas.java @@ -0,0 +1,44 @@ +package dominio; + +import javax.persistence.*; +import java.util.List; + +@Entity +@Table(name = "departamento_vendas") +public class DepartamentoVendas { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String nome; + + @OneToMany(mappedBy = "departamento", cascade = CascadeType.ALL) + private List produtos; + + // getters e setters + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public List getProdutos() { + return produtos; + } + + public void setProdutos(List produtos) { + this.produtos = produtos; + } +} diff --git a/mod32/exercisejpamaven/src/main/java/dominio/Produto.java b/mod32/exercisejpamaven/src/main/java/dominio/Produto.java new file mode 100644 index 0000000..adda1a8 --- /dev/null +++ b/mod32/exercisejpamaven/src/main/java/dominio/Produto.java @@ -0,0 +1,60 @@ +package dominio; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "produto") +public class Produto { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String nome; + + private double preco; + + @ManyToOne + @JoinColumn(name = "departamento_id") + private DepartamentoVendas departamento; + + // getters e setters + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public double getPreco() { + return preco; + } + + public void setPreco(double preco) { + this.preco = preco; + } + + public DepartamentoVendas getDepartamento() { + return departamento; + } + + public void setDepartamento(DepartamentoVendas departamento) { + this.departamento = departamento; + } +} diff --git a/mod32/exercisejpamaven/src/main/resources/META-INF/persistence.xml b/mod32/exercisejpamaven/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..bc997cc --- /dev/null +++ b/mod32/exercisejpamaven/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/AlunoDao.java b/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/AlunoDao.java index bbb7608..f6d13f8 100644 --- a/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/AlunoDao.java +++ b/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/AlunoDao.java @@ -7,7 +7,7 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; /** * @author rodrigo.pires @@ -16,7 +16,7 @@ public class AlunoDao implements IAlunoDao{ @Override - public Aluno cadastrar(Aluno aluno) { + public Aluno1 cadastrar(Aluno1 aluno) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ExemploJPA"); EntityManager entityManager = entityManagerFactory.createEntityManager(); diff --git a/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/IAlunoDao.java b/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/IAlunoDao.java index cdc6ffd..4f090b9 100644 --- a/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/IAlunoDao.java +++ b/mod33/ExemplosMod33/src/main/java/br/com/rpires/dao/IAlunoDao.java @@ -3,7 +3,7 @@ */ package br.com.rpires.dao; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; /** * @author rodrigo.pires @@ -11,5 +11,5 @@ */ public interface IAlunoDao { - public Aluno cadastrar(Aluno aluno); + public Aluno1 cadastrar(Aluno1 aluno); } diff --git a/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Computador.java b/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Computador.java index 8b33e57..242fc34 100644 --- a/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Computador.java +++ b/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Computador.java @@ -35,7 +35,7 @@ public class Computador { private String descricao; @ManyToMany(mappedBy = "computadores") - private List alunos; + private List alunos; public Computador() { this.alunos = new ArrayList<>(); @@ -65,15 +65,15 @@ public void setDescricao(String descricao) { this.descricao = descricao; } - public List getAlunos() { + public List getAlunos() { return alunos; } - public void setAlunos(List alunos) { + public void setAlunos(List alunos) { this.alunos = alunos; } - public void add(Aluno aluno) { + public void add(Aluno1 aluno) { this.alunos.add(aluno); } diff --git a/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Matricula.java b/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Matricula.java index 3772d94..48536a2 100644 --- a/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Matricula.java +++ b/mod33/ExemplosMod33/src/main/java/br/com/rpires/domain/Matricula.java @@ -51,7 +51,7 @@ public class Matricula { foreignKey = @ForeignKey(name = "fk_aluno_matricula"), referencedColumnName = "id", nullable = false ) - private Aluno aluno; + private Aluno1 aluno; public Long getId() { return id; @@ -101,11 +101,11 @@ public void setCurso(Curso curso) { this.curso = curso; } - public Aluno getAluno() { + public Aluno1 getAluno() { return aluno; } - public void setAluno(Aluno aluno) { + public void setAluno(Aluno1 aluno) { this.aluno = aluno; } diff --git a/mod33/ExemplosMod33/src/test/java/br/com/rpires/MatriculaTest.java b/mod33/ExemplosMod33/src/test/java/br/com/rpires/MatriculaTest.java index d146efa..349b95d 100644 --- a/mod33/ExemplosMod33/src/test/java/br/com/rpires/MatriculaTest.java +++ b/mod33/ExemplosMod33/src/test/java/br/com/rpires/MatriculaTest.java @@ -18,7 +18,7 @@ import br.com.rpires.dao.ICursoDao; import br.com.rpires.dao.IMatriculaDao; import br.com.rpires.dao.MatriculaDao; -import br.com.rpires.domain.Aluno; +import br.com.rpires.domain.Aluno1; import br.com.rpires.domain.Computador; import br.com.rpires.domain.Curso; import br.com.rpires.domain.Matricula; @@ -47,7 +47,7 @@ public MatriculaTest() { @Test public void cadastrar() { Curso curso = criarCurso("A1"); - Aluno aluno = criarAluno("A1"); + Aluno1 aluno = criarAluno("A1"); Matricula mat = new Matricula(); mat.setCodigo("A1"); @@ -80,10 +80,10 @@ private Computador criarComputador(String codigo) { //return computadorDao.cadastrar(comp); } - private Aluno criarAluno(String codigo) { + private Aluno1 criarAluno(String codigo) { Computador comp = criarComputador("A1"); Computador comp2 = criarComputador("A2"); - Aluno aluno = new Aluno(); + Aluno1 aluno = new Aluno1(); aluno.setCodigo(codigo); aluno.setNome("Rodrigo"); aluno.add(comp); diff --git a/mod33/exercise_mod33/userdept/.gitignore b/mod33/exercise_mod33/userdept/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/mod33/exercise_mod33/userdept/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/mod33/exercise_mod33/userdept/mvnw b/mod33/exercise_mod33/userdept/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/mod33/exercise_mod33/userdept/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mod33/exercise_mod33/userdept/mvnw.cmd b/mod33/exercise_mod33/userdept/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/mod33/exercise_mod33/userdept/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/mod33/exercise_mod33/userdept/pom.xml b/mod33/exercise_mod33/userdept/pom.xml new file mode 100644 index 0000000..e57990f --- /dev/null +++ b/mod33/exercise_mod33/userdept/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.1 + + + com.devsuperior + userdept + 0.0.1-SNAPSHOT + userdept + Project exercise for Spring Boot with Maven EBAC + + 17 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-web + + + + com.h2database + h2 + runtime + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-resources-plugin + 3.1.0 + + + + \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/main/java/META-INF/MANIFEST.MF b/mod33/exercise_mod33/userdept/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java new file mode 100644 index 0000000..2f423fc --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java @@ -0,0 +1,12 @@ +package com.devsuperior.userdept; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UserdeptApplication { + + public static void main(String[] args) { + SpringApplication.run(UserdeptApplication.class, args); + } +} \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java new file mode 100644 index 0000000..f6ba3ba --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java @@ -0,0 +1,37 @@ +package com.devsuperior.userdept.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.devsuperior.userdept.entities.User; +import com.devsuperior.userdept.repositories.UserRepository; + +@RestController +@RequestMapping(value = "/users") +public class UserController { + + @Autowired + private UserRepository repository; + + @GetMapping + public List findAll() { + return repository.findAll(); + } + + @GetMapping(value = "/{id}") + public User findAll(@PathVariable Long id) { + return repository.findById(id).get(); + } + + @PostMapping + public User insert(@RequestBody User user) { + return repository.save(user); + } +} \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java new file mode 100644 index 0000000..a680d7c --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java @@ -0,0 +1,36 @@ +package com.devsuperior.userdept.entities; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "tb_department") +public class Department { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + + public Department() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/entities/User.java b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/entities/User.java new file mode 100644 index 0000000..013e91a --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/entities/User.java @@ -0,0 +1,59 @@ +package com.devsuperior.userdept.entities; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Table(name = "tb_user") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String email; + + @ManyToOne + @JoinColumn(name = "department_id") + private Department department; + + public User() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } +} \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java new file mode 100644 index 0000000..028cca0 --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java @@ -0,0 +1,9 @@ +package com.devsuperior.userdept.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.devsuperior.userdept.entities.User; + +public interface UserRepository extends JpaRepository { + +} \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/main/resources/application.properties b/mod33/exercise_mod33/userdept/src/main/resources/application.properties new file mode 100644 index 0000000..b406a73 --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/resources/application.properties @@ -0,0 +1,12 @@ +# Dados de conexo com o banco H2 +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.username=sa +spring.datasource.password= + +# Configurao do cliente web do banco H2 +spring.h2.console.enabled=true +spring.h2.console.path=/h2-console + +# Configurao para mostrar o SQL no console +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/main/resources/import.sql b/mod33/exercise_mod33/userdept/src/main/resources/import.sql new file mode 100644 index 0000000..9d34d04 --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/main/resources/import.sql @@ -0,0 +1,7 @@ +INSERT INTO tb_department(name) VALUES ('Gestão'); +INSERT INTO tb_department(name) VALUES ('Informática'); + +INSERT INTO tb_user(department_id, name, email) VALUES (1, 'Maria', 'maria@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (1, 'Bob', 'bob@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (2, 'Alex', 'alex@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (2, 'Ana', 'ana@gmail.com'); \ No newline at end of file diff --git a/mod33/exercise_mod33/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java b/mod33/exercise_mod33/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java new file mode 100644 index 0000000..7094f7b --- /dev/null +++ b/mod33/exercise_mod33/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java @@ -0,0 +1,13 @@ +package com.devsuperior.userdept; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class UserdeptApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/mod34/ExemploJPAHibernateOGMMongoDB/.factorypath b/mod34/ExemploJPAHibernateOGMMongoDB/.factorypath new file mode 100644 index 0000000..686acad --- /dev/null +++ b/mod34/ExemploJPAHibernateOGMMongoDB/.factorypath @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mod34/ExemploJPAHibernateOGMMongoDB/src/main/java/br/com/rpires/dao/MatriculaDao.java b/mod34/ExemploJPAHibernateOGMMongoDB/src/main/java/br/com/rpires/dao/MatriculaDao.java index a25cfea..22310ff 100644 --- a/mod34/ExemploJPAHibernateOGMMongoDB/src/main/java/br/com/rpires/dao/MatriculaDao.java +++ b/mod34/ExemploJPAHibernateOGMMongoDB/src/main/java/br/com/rpires/dao/MatriculaDao.java @@ -15,8 +15,6 @@ import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Root; -import org.hibernate.Criteria; - import br.com.rpires.domain.Curso; import br.com.rpires.domain.Matricula; diff --git a/mod34/ExemploJPAMongoDBMorphia/src/test/java/br/com/rpires/CursoTest.java b/mod34/ExemploJPAMongoDBMorphia/src/test/java/br/com/rpires/CursoTest.java index 4c6c426..eea2462 100644 --- a/mod34/ExemploJPAMongoDBMorphia/src/test/java/br/com/rpires/CursoTest.java +++ b/mod34/ExemploJPAMongoDBMorphia/src/test/java/br/com/rpires/CursoTest.java @@ -7,7 +7,6 @@ import java.time.Instant; -import org.bson.types.ObjectId; import org.junit.Test; import br.com.rpires.dao.CursoDao; diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ClienteDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ClienteDAO.java index 1a3aacd..ab4f12d 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ClienteDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ClienteDAO.java @@ -7,25 +7,25 @@ import java.sql.SQLException; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public class ClienteDAO extends GenericDAO implements IClienteDAO { +public abstract class ClienteDAO extends GenericDAO implements IClientDAO { public ClienteDAO() { super(); } @Override - public Class getTipoClasse() { - return Cliente.class; + public Class getTipoClasse() { + return Cliente_2.class; } @Override - public void atualiarDados(Cliente entity, Cliente entityCadastrado) { + public void atualiarDados(Cliente_2 entity, Cliente_2 entityCadastrado) { entityCadastrado.setCidade(entity.getCidade()); entityCadastrado.setCpf(entity.getCpf()); entityCadastrado.setEnd(entity.getEnd()); @@ -46,7 +46,7 @@ protected String getQueryInsercao() { } @Override - protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Cliente entity) throws SQLException { + protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Cliente_2 entity) throws SQLException { stmInsert.setString(1, entity.getNome()); stmInsert.setLong(2, entity.getCpf()); stmInsert.setLong(3, entity.getTel()); @@ -82,7 +82,7 @@ protected String getQueryAtualizacao() { } @Override - protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Cliente entity) throws SQLException { + protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Cliente_2 entity) throws SQLException { stmUpdate.setString(1, entity.getNome()); stmUpdate.setLong(2, entity.getTel()); stmUpdate.setString(3, entity.getEnd()); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IClienteDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IClienteDAO.java index 42b1cea..47c985d 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IClienteDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IClienteDAO.java @@ -4,13 +4,13 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public interface IClienteDAO extends IGenericDAO { +public interface IClienteDAO extends IGenericDAO { } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IProdutoDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IProdutoDAO.java index 83321b7..1ccc41c 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IProdutoDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/IProdutoDAO.java @@ -4,12 +4,12 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ -public interface IProdutoDAO extends IGenericDAO{ +public interface IProdutoDAO extends IGenericDAO{ } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ProdutoDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ProdutoDAO.java index 7eff4e1..3f372d2 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ProdutoDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/ProdutoDAO.java @@ -7,25 +7,26 @@ import java.sql.SQLException; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ -public class ProdutoDAO extends GenericDAO implements IProdutoDAO { +public class ProdutoDAO extends GenericDAO implements IProdutoDAO_1 { public ProdutoDAO() { super(); } @Override - public Class getTipoClasse() { - return Produto.class; + public Class getTipoClasse() { + return Produto_4.class; } @Override - public void atualiarDados(Produto entity, Produto entityCadastrado) { + public void atualiarDados(Produto_4 entity, Produto_4 entityCadastrado) { entityCadastrado.setCodigo(entity.getCodigo()); entityCadastrado.setDescricao(entity.getDescricao()); entityCadastrado.setNome(entity.getNome()); @@ -42,7 +43,7 @@ protected String getQueryInsercao() { } @Override - protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Produto entity) throws SQLException { + protected void setParametrosQueryInsercao(PreparedStatement stmInsert, Produto_4 entity) throws SQLException { stmInsert.setString(1, entity.getCodigo()); stmInsert.setString(2, entity.getNome()); stmInsert.setString(3, entity.getDescricao()); @@ -72,7 +73,7 @@ protected String getQueryAtualizacao() { } @Override - protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Produto entity) throws SQLException { + protected void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, Produto_4 entity) throws SQLException { stmUpdate.setString(1, entity.getCodigo()); stmUpdate.setString(2, entity.getNome()); stmUpdate.setString(3, entity.getDescricao()); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/VendaDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/VendaDAO.java index 8b0c02f..857ab34 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/VendaDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/VendaDAO.java @@ -18,6 +18,7 @@ import br.com.rpires.dao.factory.ProdutoQuantidadeFactory; import br.com.rpires.dao.factory.VendaFactory; import br.com.rpires.dao.generic.GenericDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.domain.ProdutoQuantidade; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; @@ -30,11 +31,11 @@ * @author rodrigo.pires * */ -public class VendaDAO extends GenericDAO implements IVendaDAO { +public class VendaDAO extends GenericDAO implements IVendaDAO_1 { @Override - public Class getTipoClasse() { + public Class getTipoClasse() { return Venda.class; } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java index 58f8019..64c5f8a 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ClienteFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires @@ -14,8 +14,8 @@ */ public class ClienteFactory { - public static Cliente convert(ResultSet rs) throws SQLException { - Cliente cliente = new Cliente(); + public static Cliente_2 convert(ResultSet rs) throws SQLException { + Cliente_2 cliente = new Cliente_2(); cliente.setId(rs.getLong("ID_CLIENTE")); cliente.setNome(rs.getString(("NOME"))); cliente.setCpf(rs.getLong(("CPF"))); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java index f0633c5..ecf4162 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires @@ -15,8 +15,8 @@ public class ProdutoFactory { - public static Produto convert(ResultSet rs) throws SQLException { - Produto prod = new Produto(); + public static Produto_4 convert(ResultSet rs) throws SQLException { + Produto_4 prod = new Produto_4(); prod.setId(rs.getLong("ID_PRODUTO")); prod.setCodigo(rs.getString("CODIGO")); prod.setNome(rs.getString("NOME")); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java index 1b25e5e..1716025 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/ProdutoQuantidadeFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.domain.ProdutoQuantidade; /** @@ -16,7 +16,7 @@ public class ProdutoQuantidadeFactory { public static ProdutoQuantidade convert(ResultSet rs) throws SQLException { - Produto prod = ProdutoFactory.convert(rs); + Produto_4 prod = ProdutoFactory.convert(rs); ProdutoQuantidade prodQ = new ProdutoQuantidade(); prodQ.setProduto(prod); prodQ.setId(rs.getLong("ID")); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/VendaFactory.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/VendaFactory.java index 6b4d52a..8e13fe1 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/VendaFactory.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/factory/VendaFactory.java @@ -6,7 +6,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; @@ -17,7 +17,7 @@ public class VendaFactory { public static Venda convert(ResultSet rs) throws SQLException { - Cliente cliente = ClienteFactory.convert(rs); + Cliente_2 cliente = ClienteFactory.convert(rs); Venda venda = new Venda(); venda.setCliente(cliente); venda.setId(rs.getLong("ID_VENDA")); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/GenericDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/GenericDAO.java index 07386af..7cf6da6 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/GenericDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/GenericDAO.java @@ -17,7 +17,7 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.dao.generic.jdbc.ConnectionFactory; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; @@ -28,109 +28,109 @@ /** * @author rodrigo.pires * - * Classe genérica que implementa interface genérica com os métodos de CRUD + * Classe genérica que implementa interface genérica com os métodos de + * CRUD */ -public abstract class GenericDAO implements IGenericDAO { - - - public abstract Class getTipoClasse(); - - public abstract void atualiarDados(T entity, T entityCadastrado); - - protected abstract String getQueryInsercao(); - - protected abstract String getQueryExclusao(); - - protected abstract String getQueryAtualizacao(); - - protected abstract void setParametrosQueryInsercao(PreparedStatement stmInsert, T entity) throws SQLException; - - protected abstract void setParametrosQueryExclusao(PreparedStatement stmDelete, E valor) throws SQLException; - - protected abstract void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, T entity) throws SQLException; - - protected abstract void setParametrosQuerySelect(PreparedStatement stmUpdate, E valor) throws SQLException; - - public GenericDAO() { - - } - - public E getChave(T entity) throws TipoChaveNaoEncontradaException { - Field[] fields = entity.getClass().getDeclaredFields(); - E returnValue = null; - for (Field field : fields) { - if (field.isAnnotationPresent(TipoChave.class)) { - TipoChave tipoChave = field.getAnnotation(TipoChave.class); - String nomeMetodo = tipoChave.value(); - try { - Method method = entity.getClass().getMethod(nomeMetodo); - returnValue = (E) method.invoke(entity); - return returnValue; - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - //Criar exception de negócio TipoChaveNaoEncontradaException - e.printStackTrace(); - throw new TipoChaveNaoEncontradaException("Chave principal do objeto " + entity.getClass() + " não encontrada", e); - } - } - } - if (returnValue == null) { - String msg = "Chave principal do objeto " + entity.getClass() + " não encontrada"; - System.out.println("**** ERRO ****" + msg); - throw new TipoChaveNaoEncontradaException(msg); - } - return null; - } - - @Override - public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException, DAOException { - Connection connection = null; - PreparedStatement stm = null; - try { - connection = getConnection(); +public abstract class GenericDAO implements IGenericDAO { + + public abstract Class getTipoClasse(); + + public abstract void atualiarDados(T entity, T entityCadastrado); + + protected abstract String getQueryInsercao(); + + protected abstract String getQueryExclusao(); + + protected abstract String getQueryAtualizacao(); + + protected abstract void setParametrosQueryInsercao(PreparedStatement stmInsert, T entity) throws SQLException; + + protected abstract void setParametrosQueryExclusao(PreparedStatement stmDelete, E valor) throws SQLException; + + protected abstract void setParametrosQueryAtualizacao(PreparedStatement stmUpdate, T entity) throws SQLException; + + protected abstract void setParametrosQuerySelect(PreparedStatement stmUpdate, E valor) throws SQLException; + + public GenericDAO() { + + } + + public E getChave(T entity) throws TipoChaveNaoEncontradaException { + Field[] fields = entity.getClass().getDeclaredFields(); + E returnValue = null; + for (Field field : fields) { + if (field.isAnnotationPresent(TipoChave.class)) { + TipoChave tipoChave = field.getAnnotation(TipoChave.class); + String nomeMetodo = tipoChave.value(); + try { + Method method = entity.getClass().getMethod(nomeMetodo); + returnValue = (E) method.invoke(entity); + return returnValue; + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + // Criar exception de negócio TipoChaveNaoEncontradaException + e.printStackTrace(); + throw new TipoChaveNaoEncontradaException( + "Chave principal do objeto " + entity.getClass() + " não encontrada", e); + } + } + } + if (returnValue == null) { + String msg = "Chave principal do objeto " + entity.getClass() + " não encontrada"; + System.out.println("**** ERRO ****" + msg); + throw new TipoChaveNaoEncontradaException(msg); + } + return null; + } + + @Override + public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException, DAOException { + Connection connection = null; + PreparedStatement stm = null; + try { + connection = getConnection(); stm = connection.prepareStatement(getQueryInsercao(), Statement.RETURN_GENERATED_KEYS); setParametrosQueryInsercao(stm, entity); int rowsAffected = stm.executeUpdate(); - if(rowsAffected > 0) { - try (ResultSet rs = stm.getGeneratedKeys()){ + if (rowsAffected > 0) { + try (ResultSet rs = stm.getGeneratedKeys()) { if (rs.next()) { - Persistente per = (Persistente) entity; + Persistence per = (Persistence) entity; per.setId(rs.getLong(1)); } } return true; } - + } catch (SQLException e) { throw new DAOException("ERRO CADASTRANDO OBJETO ", e); } finally { closeConnection(connection, stm, null); } return false; - } - + } - @Override - public void excluir(E valor) throws DAOException { - Connection connection = getConnection(); + @Override + public void excluir(E valor) throws DAOException { + Connection connection = getConnection(); PreparedStatement stm = null; try { stm = connection.prepareStatement(getQueryExclusao()); setParametrosQueryExclusao(stm, valor); int rowsAffected = stm.executeUpdate(); - + } catch (SQLException e) { throw new DAOException("ERRO EXCLUINDO OBJETO ", e); } finally { closeConnection(connection, stm, null); } - - } - @Override - public void alterar(T entity) throws TipoChaveNaoEncontradaException, DAOException { + } + + @Override + public void alterar(T entity) throws TipoChaveNaoEncontradaException, DAOException { - Connection connection = getConnection(); + Connection connection = getConnection(); PreparedStatement stm = null; try { stm = connection.prepareStatement(getQueryAtualizacao()); @@ -141,86 +141,91 @@ public void alterar(T entity) throws TipoChaveNaoEncontradaException, DAOExcepti } finally { closeConnection(connection, stm, null); } - - } - - @Override - public T consultar(E valor) throws MaisDeUmRegistroException, TableException, DAOException { - try { - validarMaisDeUmRegistro(valor); - Connection connection = getConnection(); - PreparedStatement stm = connection.prepareStatement("SELECT * FROM " + getTableName() + " WHERE " + getNomeCampoChave(getTipoClasse()) + " = ?"); + + } + + @Override + public T consultar(E valor) throws MaisDeUmRegistroException, TableException, DAOException { + try { + validarMaisDeUmRegistro(valor); + Connection connection = getConnection(); + PreparedStatement stm = connection.prepareStatement( + "SELECT * FROM " + getTableName() + " WHERE " + getNomeCampoChave(getTipoClasse()) + " = ?"); setParametrosQuerySelect(stm, valor); ResultSet rs = stm.executeQuery(); - if (rs.next()) { - T entity = getTipoClasse().getConstructor(null).newInstance(null); - Field[] fields = entity.getClass().getDeclaredFields(); - for (Field field : fields) { - if (field.isAnnotationPresent(ColunaTabela.class)) { - ColunaTabela coluna = field.getAnnotation(ColunaTabela.class); - String dbName = coluna.dbName(); - String javaSetName = coluna.setJavaName(); - Class classField = field.getType(); - try { - Method method = entity.getClass().getMethod(javaSetName, classField); - setValueByType(entity, method, classField, rs, dbName); - - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new DAOException("ERRO CONSULTANDO OBJETO ", e); - } catch (TipoElementoNaoConhecidoException e) { - throw new DAOException("ERRO CONSULTANDO OBJETO ", e); + if (rs.next()) { + T entity = getTipoClasse().getConstructor(null).newInstance(null); + Field[] fields = entity.getClass().getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(ColunaTabela.class)) { + ColunaTabela coluna = field.getAnnotation(ColunaTabela.class); + String dbName = coluna.dbName(); + String javaSetName = coluna.setJavaName(); + Class classField = field.getType(); + try { + Method method = entity.getClass().getMethod(javaSetName, classField); + setValueByType(entity, method, classField, rs, dbName); + + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new DAOException("ERRO CONSULTANDO OBJETO ", e); + } catch (TipoElementoNaoConhecidoException e) { + throw new DAOException("ERRO CONSULTANDO OBJETO ", e); } - } - } - return entity; - } - - } catch (SQLException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | TipoChaveNaoEncontradaException e) { + } + } + return entity; + } + + } catch (SQLException | InstantiationException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException | NoSuchMethodException | SecurityException + | TipoChaveNaoEncontradaException e) { throw new DAOException("ERRO CONSULTANDO OBJETO ", e); - } - return null; - } - - public String getNomeCampoChave(Class clazz) throws TipoChaveNaoEncontradaException { - Field[] fields = clazz.getDeclaredFields(); - for (Field field : fields) { - if (field.isAnnotationPresent(TipoChave.class) - && field.isAnnotationPresent(ColunaTabela.class)) { - ColunaTabela coluna = field.getAnnotation(ColunaTabela.class); - return coluna.dbName(); - } - } - - return null; - } - - private void setValueByType(T entity, Method method, Class classField, ResultSet rs, String fieldName) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, SQLException, TipoElementoNaoConhecidoException { - - if (classField.equals(Integer.class)) { + } + return null; + } + + public String getNomeCampoChave(Class clazz) throws TipoChaveNaoEncontradaException { + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(TipoChave.class) && field.isAnnotationPresent(ColunaTabela.class)) { + ColunaTabela coluna = field.getAnnotation(ColunaTabela.class); + return coluna.dbName(); + } + } + + return null; + } + + private void setValueByType(T entity, Method method, Class classField, ResultSet rs, String fieldName) + throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, SQLException, + TipoElementoNaoConhecidoException { + + if (classField.equals(Integer.class)) { Integer val = rs.getInt(fieldName); method.invoke(entity, val); } else if (classField.equals(Long.class)) { Long val = rs.getLong(fieldName); method.invoke(entity, val); } else if (classField.equals(Double.class)) { - Double val = rs.getDouble(fieldName); + Double val = rs.getDouble(fieldName); method.invoke(entity, val); } else if (classField.equals(Short.class)) { - Short val = rs.getShort(fieldName); + Short val = rs.getShort(fieldName); method.invoke(entity, val); } else if (classField.equals(BigDecimal.class)) { - BigDecimal val = rs.getBigDecimal(fieldName); + BigDecimal val = rs.getBigDecimal(fieldName); method.invoke(entity, val); } else if (classField.equals(String.class)) { - String val = rs.getString(fieldName); + String val = rs.getString(fieldName); method.invoke(entity, val); } else { throw new TipoElementoNaoConhecidoException("TIPO DE CLASSE NÃO CONHECIDO: " + classField); } - + } - private Object getValueByType(Class typeField, ResultSet rs, String fieldName) throws SQLException, TipoElementoNaoConhecidoException { + private Object getValueByType(Class typeField, ResultSet rs, String fieldName) + throws SQLException, TipoElementoNaoConhecidoException { if (typeField.equals(Integer.TYPE)) { return rs.getInt(fieldName); } else if (typeField.equals(Long.TYPE)) { @@ -238,13 +243,15 @@ private Object getValueByType(Class typeField, ResultSet rs, String fieldName } } - private Long validarMaisDeUmRegistro(E valor) throws MaisDeUmRegistroException, TableException, TipoChaveNaoEncontradaException, DAOException { - Connection connection = getConnection(); + private Long validarMaisDeUmRegistro(E valor) + throws MaisDeUmRegistroException, TableException, TipoChaveNaoEncontradaException, DAOException { + Connection connection = getConnection(); PreparedStatement stm = null; ResultSet rs = null; Long count = null; try { - stm = connection.prepareStatement("SELECT count(*) FROM " + getTableName() + " WHERE " + getNomeCampoChave(getTipoClasse()) + " = ?"); + stm = connection.prepareStatement( + "SELECT count(*) FROM " + getTableName() + " WHERE " + getNomeCampoChave(getTipoClasse()) + " = ?"); setParametrosQuerySelect(stm, valor); rs = stm.executeQuery(); if (rs.next()) { @@ -253,7 +260,7 @@ private Long validarMaisDeUmRegistro(E valor) throws MaisDeUmRegistroException, throw new MaisDeUmRegistroException("ENCONTRADO MAIS DE UM REGISTRO DE " + getTableName()); } } - + return count; } catch (SQLException e) { e.printStackTrace(); @@ -261,7 +268,7 @@ private Long validarMaisDeUmRegistro(E valor) throws MaisDeUmRegistroException, closeConnection(connection, stm, rs); } return count; - } + } protected void closeConnection(Connection connection, PreparedStatement stm, ResultSet rs) { try { @@ -280,58 +287,59 @@ protected void closeConnection(Connection connection, PreparedStatement stm, Res } } - private String getTableName() throws TableException { - if (getTipoClasse().isAnnotationPresent(Tabela.class)) { - Tabela table = getTipoClasse().getAnnotation(Tabela.class); - return table.value(); - }else { - throw new TableException("TABELA NO TIPO " + getTipoClasse().getName() + " NÃO FOI ENCONTRADA"); - } + private String getTableName() throws TableException { + if (getTipoClasse().isAnnotationPresent(Tabela.class)) { + Tabela table = getTipoClasse().getAnnotation(Tabela.class); + return table.value(); + } else { + throw new TableException("TABELA NO TIPO " + getTipoClasse().getName() + " NÃO FOI ENCONTRADA"); + } } @Override - public Collection buscarTodos() throws DAOException { + public Collection buscarTodos() throws DAOException { List list = new ArrayList<>(); Connection connection = null; PreparedStatement stm = null; ResultSet rs = null; - try { - + try { + connection = getConnection(); stm = connection.prepareStatement("SELECT * FROM " + getTableName()); rs = stm.executeQuery(); - while (rs.next()) { - T entity = getTipoClasse().getConstructor(null).newInstance(null); - Field[] fields = entity.getClass().getDeclaredFields(); - for (Field field : fields) { - if (field.isAnnotationPresent(ColunaTabela.class)) { - ColunaTabela coluna = field.getAnnotation(ColunaTabela.class); - String dbName = coluna.dbName(); - String javaSetName = coluna.setJavaName(); - Class classField = field.getType(); - try { - Method method = entity.getClass().getMethod(javaSetName, classField); - setValueByType(entity, method, classField, rs, dbName); - - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new DAOException("ERRO LISTANDO OBJETOS ", e); - } catch (TipoElementoNaoConhecidoException e) { - throw new DAOException("ERRO LISTANDO OBJETOS ", e); + while (rs.next()) { + T entity = getTipoClasse().getConstructor(null).newInstance(null); + Field[] fields = entity.getClass().getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(ColunaTabela.class)) { + ColunaTabela coluna = field.getAnnotation(ColunaTabela.class); + String dbName = coluna.dbName(); + String javaSetName = coluna.setJavaName(); + Class classField = field.getType(); + try { + Method method = entity.getClass().getMethod(javaSetName, classField); + setValueByType(entity, method, classField, rs, dbName); + + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new DAOException("ERRO LISTANDO OBJETOS ", e); + } catch (TipoElementoNaoConhecidoException e) { + throw new DAOException("ERRO LISTANDO OBJETOS ", e); } - } - } - list.add(entity); - - } - - } catch (SQLException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | TableException e) { + } + } + list.add(entity); + + } + + } catch (SQLException | InstantiationException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException | NoSuchMethodException | SecurityException | TableException e) { throw new DAOException("ERRO LISTANDO OBJETOS ", e); } finally { closeConnection(connection, stm, rs); } return list; - } - + } + protected Connection getConnection() throws DAOException { try { return ConnectionFactory.getConnection(); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java index b163ff4..2cfe6d6 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/IGenericDAO.java @@ -1,6 +1,6 @@ package br.com.rpires.dao.generic; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -12,47 +12,49 @@ /** * @author rodrigo.pires * - * Interface genérica para métodos de CRUD(Create, Read, Update and Delete) + * Interface genérica para métodos de CRUD(Create, Read, Update and + * Delete) */ -public interface IGenericDAO { - - /** - * Método para cadastrar novos registro no banco de dados - * - * @param entity a ser cadastrado - * @return retorna verdadeiro para cadastrado e falso para não cadastrado - */ - public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException, DAOException; - - /** - * Método para excluir um registro do banco de dados - * - * @param valor chave única do dado a ser excluído - */ - public void excluir(E valor) throws DAOException; - - /** - *Método para alterar um registro no bando de dados. - * - * @param entity a ser atualizado - */ - public void alterar(T entity) throws TipoChaveNaoEncontradaException, DAOException; - - /** - * Método para consultar um registro no banco de dados - * - * @param valor chave única do dado a ser consultado - * @return - * @throws MaisDeUmRegistroException - * @throws TableException - */ - public T consultar(E valor) throws MaisDeUmRegistroException, TableException, DAOException; - - /** - * Método que irá retornar todos os registros do banco de dados de uma determinado dado ou tabela - * - * @return Registros encontrados - * @throws DAOException - */ - public Collection buscarTodos() throws DAOException; +public interface IGenericDAO { + + /** + * Método para cadastrar novos registro no banco de dados + * + * @param entity a ser cadastrado + * @return retorna verdadeiro para cadastrado e falso para não cadastrado + */ + public Boolean cadastrar(T entity) throws TipoChaveNaoEncontradaException, DAOException; + + /** + * Método para excluir um registro do banco de dados + * + * @param valor chave única do dado a ser excluído + */ + public void excluir(E valor) throws DAOException; + + /** + * Método para alterar um registro no bando de dados. + * + * @param entity a ser atualizado + */ + public void alterar(T entity) throws TipoChaveNaoEncontradaException, DAOException; + + /** + * Método para consultar um registro no banco de dados + * + * @param valor chave única do dado a ser consultado + * @return + * @throws MaisDeUmRegistroException + * @throws TableException + */ + public T consultar(E valor) throws MaisDeUmRegistroException, TableException, DAOException; + + /** + * Método que irá retornar todos os registros do banco de dados de uma + * determinado dado ou tabela + * + * @return Registros encontrados + * @throws DAOException + */ + public Collection buscarTodos() throws DAOException; } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/SingletonMap.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/SingletonMap.java index ff37ce1..726d72e 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/SingletonMap.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/SingletonMap.java @@ -6,36 +6,36 @@ /** * @author rodrigo.pires * - * Classe Singleton que garante que o map será único em toda a vita da aplicação. + * Classe Singleton que garante que o map será único em + * toda a vita da aplicação. * */ public class SingletonMap { - private static SingletonMap singletonMap; + private static SingletonMap singletonMap; - /** - * Contém todos os registros da aplicação. - * Simula o banco de dados - */ - protected Map> map; + /** + * Contém todos os registros da aplicação. Simula o banco de dados + */ + protected Map> map; - private SingletonMap() { - map = new HashMap<>(); - } + private SingletonMap() { + map = new HashMap<>(); + } - /** - * Método que garante o retorno de apenas uma instância desse objeto - * - * @return SingletonMap - */ - public static SingletonMap getInstance() { - if (singletonMap == null) { - singletonMap = new SingletonMap(); - } - return singletonMap; - } + /** + * Método que garante o retorno de apenas uma instância desse objeto + * + * @return SingletonMap + */ + public static SingletonMap getInstance() { + if (singletonMap == null) { + singletonMap = new SingletonMap(); + } + return singletonMap; + } - public Map> getMap() { - return this.map; - } + public Map> getMap() { + return this.map; + } } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java index cd83946..592017d 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jdbc/ConnectionFactory.java @@ -12,13 +12,13 @@ * */ public class ConnectionFactory { - + private static Connection connection; - + private ConnectionFactory(Connection connection) { - + } - + public static Connection getConnection() throws SQLException { if (connection == null) { connection = initConnection(); @@ -30,14 +30,14 @@ public static Connection getConnection() throws SQLException { return connection; } } - + private static Connection initConnection() { - try { - return DriverManager.getConnection( - "jdbc:postgresql://localhost:15432/vendas_online_2", "postgres", "admin"); - } catch (SQLException e) { - throw new RuntimeException(e); - } - } - + try { + return DriverManager.getConnection("jdbc:postgresql://localhost:15432/vendas_online_2", "postgres", + "admin"); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/GenericJpaDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/GenericJpaDAO.java index 742d343..c66b1f9 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/GenericJpaDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/GenericJpaDAO.java @@ -11,7 +11,7 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -21,7 +21,7 @@ * @author rodrigo.pires * */ -public class GenericJpaDAO implements IGenericJapDAO { +public class GenericJpaDAO implements IGenericJapDAO { protected EntityManagerFactory entityManagerFactory; diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/IGenericJapDAO.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/IGenericJapDAO.java index 49344a6..6b9953f 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/IGenericJapDAO.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/dao/generic/jpa/IGenericJapDAO.java @@ -6,7 +6,7 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -17,7 +17,7 @@ * * Interface genérica para métodos de CRUD(Create, Read, Update and Delete) */ -public interface IGenericJapDAO { +public interface IGenericJapDAO { /** * Método para cadastrar novos registro no banco de dados diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Cliente.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Cliente.java index bdfd234..4d98682 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Cliente.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Cliente.java @@ -6,14 +6,14 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ @Tabela("TB_CLIENTE") -public class Cliente implements Persistente { +public class Cliente implements Persistence { @ColunaTabela(dbName = "id", setJavaName = "setId") private Long id; diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Produto.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Produto.java index d6f61f1..9b6992a 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Produto.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Produto.java @@ -8,14 +8,14 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ @Tabela("TB_PRODUTO") -public class Produto implements Persistente { +public class Produto implements Persistence { @ColunaTabela(dbName = "id", setJavaName = "setId") private Long id; diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java index 09c75a5..df1455f 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java @@ -19,7 +19,7 @@ public class ProdutoQuantidade { private Long id; //@ColunaTabela(dbName = "id", setJavaName = "setId") - private Produto produto; + private Produto_4 produto; @ColunaTabela(dbName = "quantidade", setJavaName = "setQuantidade") private Integer quantidade; @@ -32,11 +32,11 @@ public ProdutoQuantidade() { this.valorTotal = BigDecimal.ZERO; } - public Produto getProduto() { + public Produto_4 getProduto() { return produto; } - public void setProduto(Produto produto) { + public void setProduto(Produto_4 produto) { this.produto = produto; } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Venda.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Venda.java index 60922d0..971d421 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Venda.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/Venda.java @@ -12,14 +12,14 @@ import anotacao.ColunaTabela; import anotacao.Tabela; import anotacao.TipoChave; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires * */ @Tabela("TB_VENDA") -public class Venda implements Persistente { +public class Venda implements Persistence { public enum Status { INICIADA, CONCLUIDA, CANCELADA; @@ -42,7 +42,7 @@ public static Status getByName(String value) { private String codigo; @ColunaTabela(dbName = "id_cliente_fk", setJavaName = "setIdClienteFk") - private Cliente cliente; + private Cliente_2 cliente; //@ColunaTabela(dbName = "id", setJavaName = "setId") private Set produtos; @@ -68,11 +68,11 @@ public void setCodigo(String codigo) { this.codigo = codigo; } - public Cliente getCliente() { + public Cliente_2 getCliente() { return cliente; } - public void setCliente(Cliente cliente) { + public void setCliente(Cliente_2 cliente) { this.cliente = cliente; } @@ -80,7 +80,7 @@ public Set getProdutos() { return produtos; } - public void adicionarProduto(Produto produto, Integer quantidade) { + public void adicionarProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); @@ -103,7 +103,7 @@ private void validarStatus() { } } - public void removerProduto(Produto produto, Integer quantidade) { + public void removerProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ClienteJpa.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ClienteJpa.java index 48bf9db..082a37e 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ClienteJpa.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ClienteJpa.java @@ -11,7 +11,7 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires @@ -19,7 +19,7 @@ */ @Entity @Table(name = "TB_CLIENTE") -public class ClienteJpa implements Persistente { +public class ClienteJpa implements Persistence { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="cliente_seq") diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ProdutoJpa.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ProdutoJpa.java index 8e08e4e..f602e22 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ProdutoJpa.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/ProdutoJpa.java @@ -13,7 +13,7 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires @@ -21,7 +21,7 @@ */ @Entity @Table(name = "TB_PRODUTO") -public class ProdutoJpa implements Persistente { +public class ProdutoJpa implements Persistence { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="prod_seq") diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/VendaJpa.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/VendaJpa.java index 318f3b8..fcf867e 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/VendaJpa.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/domain/jpa/VendaJpa.java @@ -24,7 +24,7 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; /** * @author rodrigo.pires @@ -32,7 +32,7 @@ */ @Entity @Table(name = "TB_VENDA") -public class VendaJpa implements Persistente { +public class VendaJpa implements Persistence { public enum Status { INICIADA, CONCLUIDA, CANCELADA; diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ClienteService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ClienteService.java index 3326009..02bf5b8 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ClienteService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ClienteService.java @@ -3,8 +3,8 @@ */ package br.com.rpires.services; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -14,11 +14,11 @@ * @author rodrigo.pires * */ -public class ClienteService extends GenericService implements IClienteService { +public class ClienteService extends GenericService implements IClienteService { //private IClienteDAO clienteDAO; - public ClienteService(IClienteDAO clienteDAO) { + public ClienteService(IClientDAO clienteDAO) { super(clienteDAO); //this.clienteDAO = clienteDAO; } @@ -29,7 +29,7 @@ public ClienteService(IClienteDAO clienteDAO) { // } @Override - public Cliente buscarPorCPF(Long cpf) throws DAOException { + public Cliente_2 buscarPorCPF(Long cpf) throws DAOException { try { return this.dao.consultar(cpf); } catch (MaisDeUmRegistroException | TableException e) { diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IClienteService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IClienteService.java index eb77369..4e2cc77 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IClienteService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IClienteService.java @@ -3,7 +3,7 @@ */ package br.com.rpires.services; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.services.generic.IGenericService; @@ -11,11 +11,11 @@ * @author rodrigo.pires * */ -public interface IClienteService extends IGenericService { +public interface IClienteService extends IGenericService { // Boolean cadastrar(Cliente cliente) throws TipoChaveNaoEncontradaException; // - Cliente buscarPorCPF(Long cpf) throws DAOException; + Cliente_2 buscarPorCPF(Long cpf) throws DAOException; // // void excluir(Long cpf); // diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IProdutoService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IProdutoService.java index 2880ea4..76116a5 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IProdutoService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/IProdutoService.java @@ -3,13 +3,13 @@ */ package br.com.rpires.services; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.IGenericService; /** * @author rodrigo.pires * */ -public interface IProdutoService extends IGenericService { +public interface IProdutoService extends IGenericService { } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ProdutoService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ProdutoService.java index 4a60343..9d4d6dd 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ProdutoService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/ProdutoService.java @@ -3,17 +3,17 @@ */ package br.com.rpires.services; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.GenericService; /** * @author rodrigo.pires * */ -public class ProdutoService extends GenericService implements IProdutoService { +public class ProdutoService extends GenericService implements IProdutoService { - public ProdutoService(IProdutoDAO dao) { + public ProdutoService(IProdutoDAO_1 dao) { super(dao); } diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/GenericService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/GenericService.java index 1af8415..217ce9a 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/GenericService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/GenericService.java @@ -6,7 +6,7 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.dao.generic.IGenericDAO; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; @@ -17,7 +17,7 @@ * @author rodrigo.pires * */ -public abstract class GenericService +public abstract class GenericService implements IGenericService { protected IGenericDAO dao; diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/IGenericService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/IGenericService.java index 77dc550..8a80e1f 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/IGenericService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/IGenericService.java @@ -6,7 +6,7 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; @@ -14,7 +14,7 @@ * @author rodrigo.pires * */ -public interface IGenericService { +public interface IGenericService { /** * Método para cadastrar novos registro no banco de dados diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/GenericJpaService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/GenericJpaService.java index 7567dbc..655f83c 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/GenericJpaService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/GenericJpaService.java @@ -6,8 +6,7 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; -import br.com.rpires.dao.generic.IGenericDAO; +import br.com.rpires.dao.Persistence; import br.com.rpires.dao.generic.jpa.IGenericJapDAO; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; @@ -18,7 +17,7 @@ * @author rodrigo.pires * */ -public abstract class GenericJpaService +public abstract class GenericJpaService implements IGenericJpaService { protected IGenericJapDAO dao; diff --git a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/IGenericJpaService.java b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/IGenericJpaService.java index 71cd2c7..fbff16e 100644 --- a/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/IGenericJpaService.java +++ b/mod35/ExemploVendasMod35/src/main/java/br/com/rpires/services/generic/jpa/IGenericJpaService.java @@ -6,7 +6,7 @@ import java.io.Serializable; import java.util.Collection; -import br.com.rpires.dao.Persistente; +import br.com.rpires.dao.Persistence; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -16,7 +16,7 @@ * @author rodrigo.pires * */ -public interface IGenericJpaService { +public interface IGenericJpaService { /** * Método para cadastrar novos registro no banco de dados diff --git a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteDAOTest.java b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteDAOTest.java index 5c88cf0..8bd9643 100644 --- a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteDAOTest.java +++ b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteDAOTest.java @@ -12,8 +12,8 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -25,7 +25,7 @@ */ public class ClienteDAOTest { - private IClienteDAO clienteDao; + private IClientDAO clienteDao; public ClienteDAOTest() { clienteDao = new ClienteDAO(); @@ -33,7 +33,7 @@ public ClienteDAOTest() { @After public void end() throws DAOException { - Collection list = clienteDao.buscarTodos(); + Collection list = clienteDao.buscarTodos(); list.forEach(cli -> { try { clienteDao.excluir(cli.getCpf()); @@ -46,7 +46,7 @@ public void end() throws DAOException { @Test public void pesquisarCliente() throws MaisDeUmRegistroException, TableException, TipoChaveNaoEncontradaException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -56,7 +56,7 @@ public void pesquisarCliente() throws MaisDeUmRegistroException, TableException, cliente.setTel(1199999999L); clienteDao.cadastrar(cliente); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteDao.excluir(cliente.getCpf()); @@ -64,7 +64,7 @@ public void pesquisarCliente() throws MaisDeUmRegistroException, TableException, @Test public void salvarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -75,7 +75,7 @@ public void salvarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegi Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteDao.excluir(cliente.getCpf()); @@ -84,7 +84,7 @@ public void salvarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegi @Test public void excluirCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -95,7 +95,7 @@ public void excluirCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteDao.excluir(cliente.getCpf()); @@ -105,7 +105,7 @@ public void excluirCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg @Test public void alterarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -116,13 +116,13 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente clienteConsultado = clienteDao.consultar(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteDao.consultar(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); clienteConsultado.setNome("Rodrigo Pires"); clienteDao.alterar(clienteConsultado); - Cliente clienteAlterado = clienteDao.consultar(clienteConsultado.getCpf()); + Cliente_2 clienteAlterado = clienteDao.consultar(clienteConsultado.getCpf()); Assert.assertNotNull(clienteAlterado); Assert.assertEquals("Rodrigo Pires", clienteAlterado.getNome()); @@ -133,7 +133,7 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException, MaisDeUmReg @Test public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { - Cliente cliente = new Cliente(); + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(56565656565L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -144,7 +144,7 @@ public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { Boolean retorno = clienteDao.cadastrar(cliente); Assert.assertTrue(retorno); - Cliente cliente1 = new Cliente(); + Cliente_2 cliente1 = new Cliente_2(); cliente1.setCpf(56565656569L); cliente1.setNome("Rodrigo"); cliente1.setCidade("São Paulo"); @@ -155,7 +155,7 @@ public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { Boolean retorno1 = clienteDao.cadastrar(cliente1); Assert.assertTrue(retorno1); - Collection list = clienteDao.buscarTodos(); + Collection list = clienteDao.buscarTodos(); assertTrue(list != null); assertTrue(list.size() == 2); @@ -168,7 +168,7 @@ public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { } }); - Collection list1 = clienteDao.buscarTodos(); + Collection list1 = clienteDao.buscarTodos(); assertTrue(list1 != null); assertTrue(list1.size() == 0); } diff --git a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteServiceTest.java b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteServiceTest.java index cf82c89..8fe4251 100644 --- a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteServiceTest.java +++ b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ClienteServiceTest.java @@ -8,8 +8,8 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDaoMock; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.ClienteService; @@ -23,16 +23,16 @@ public class ClienteServiceTest { private IClienteService clienteService; - private Cliente cliente; + private Cliente_2 cliente; public ClienteServiceTest() { - IClienteDAO dao = new ClienteDaoMock(); + IClientDAO dao = new ClienteDaoMock(); clienteService = new ClienteService(dao); } @Before public void init() { - cliente = new Cliente(); + cliente = new Cliente_2(); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); @@ -45,7 +45,7 @@ public void init() { @Test public void pesquisarCliente() throws DAOException { - Cliente clienteConsultado = clienteService.buscarPorCPF(cliente.getCpf()); + Cliente_2 clienteConsultado = clienteService.buscarPorCPF(cliente.getCpf()); Assert.assertNotNull(clienteConsultado); } diff --git a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoDAOTest.java b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoDAOTest.java index aafd907..1b70bbf 100644 --- a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoDAOTest.java +++ b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoDAOTest.java @@ -14,9 +14,9 @@ import org.junit.Assert; import org.junit.Test; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.dao.ProdutoDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.dao.ProdutoDAO_3; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -28,15 +28,15 @@ */ public class ProdutoDAOTest { - private IProdutoDAO produtoDao; + private IProdutoDAO_1 produtoDao; public ProdutoDAOTest() { - produtoDao = new ProdutoDAO(); + produtoDao = new ProdutoDAO_3(); } @After public void end() throws DAOException { - Collection list = produtoDao.buscarTodos(); + Collection list = produtoDao.buscarTodos(); list.forEach(prod -> { try { produtoDao.excluir(prod.getCodigo()); @@ -47,8 +47,8 @@ public void end() throws DAOException { }); } - private Produto criarProduto(String codigo) throws TipoChaveNaoEncontradaException, DAOException { - Produto produto = new Produto(); + private Produto_4 criarProduto(String codigo) throws TipoChaveNaoEncontradaException, DAOException { + Produto_4 produto = new Produto_4(); produto.setCodigo(codigo); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -63,40 +63,40 @@ private void excluir(String valor) throws DAOException { @Test public void pesquisar() throws MaisDeUmRegistroException, TableException, DAOException, TipoChaveNaoEncontradaException { - Produto produto = criarProduto("A1"); + Produto_4 produto = criarProduto("A1"); Assert.assertNotNull(produto); - Produto produtoDB = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoDB = this.produtoDao.consultar(produto.getCodigo()); Assert.assertNotNull(produtoDB); excluir(produtoDB.getCodigo()); } @Test public void salvar() throws TipoChaveNaoEncontradaException, DAOException { - Produto produto = criarProduto("A2"); + Produto_4 produto = criarProduto("A2"); Assert.assertNotNull(produto); excluir(produto.getCodigo()); } @Test public void excluir() throws DAOException, TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException { - Produto produto = criarProduto("A3"); + Produto_4 produto = criarProduto("A3"); Assert.assertNotNull(produto); excluir(produto.getCodigo()); - Produto produtoBD = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoBD = this.produtoDao.consultar(produto.getCodigo()); assertNull(produtoBD); } @Test public void alterarCliente() throws TipoChaveNaoEncontradaException, DAOException, MaisDeUmRegistroException, TableException { - Produto produto = criarProduto("A4"); + Produto_4 produto = criarProduto("A4"); produto.setNome("Rodrigo Pires"); produtoDao.alterar(produto); - Produto produtoBD = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoBD = this.produtoDao.consultar(produto.getCodigo()); assertNotNull(produtoBD); Assert.assertEquals("Rodrigo Pires", produtoBD.getNome()); excluir(produto.getCodigo()); - Produto produtoBD1 = this.produtoDao.consultar(produto.getCodigo()); + Produto_4 produtoBD1 = this.produtoDao.consultar(produto.getCodigo()); assertNull(produtoBD1); } @@ -104,11 +104,11 @@ public void alterarCliente() throws TipoChaveNaoEncontradaException, DAOExceptio public void buscarTodos() throws DAOException, TipoChaveNaoEncontradaException { criarProduto("A5"); criarProduto("A6"); - Collection list = produtoDao.buscarTodos(); + Collection list = produtoDao.buscarTodos(); assertTrue(list != null); assertTrue(list.size() == 2); - for (Produto prod : list) { + for (Produto_4 prod : list) { excluir(prod.getCodigo()); } diff --git a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoServiceTest.java b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoServiceTest.java index 180d446..4e3897f 100644 --- a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoServiceTest.java +++ b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/ProdutoServiceTest.java @@ -9,9 +9,9 @@ import org.junit.Before; import org.junit.Test; -import br.com.rpires.dao.IProdutoDAO; +import br.com.rpires.dao.IProdutoDAO_1; import br.com.rpires.dao.ProdutoDaoMock; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; import br.com.rpires.services.IProdutoService; @@ -25,16 +25,16 @@ public class ProdutoServiceTest { private IProdutoService produtoService; - private Produto produto; + private Produto_4 produto; public ProdutoServiceTest() { - IProdutoDAO dao = new ProdutoDaoMock(); + IProdutoDAO_1 dao = new ProdutoDaoMock(); produtoService = new ProdutoService(dao); } @Before public void init() { - produto = new Produto(); + produto = new Produto_4(); produto.setCodigo("A1"); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -43,7 +43,7 @@ public void init() { @Test public void pesquisar() throws DAOException { - Produto produtor = this.produtoService.consultar(produto.getCodigo()); + Produto_4 produtor = this.produtoService.consultar(produto.getCodigo()); Assert.assertNotNull(produtor); } diff --git a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/VendaDAOTest.java b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/VendaDAOTest.java index 8f93b37..6e7c1a7 100644 --- a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/VendaDAOTest.java +++ b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/VendaDAOTest.java @@ -22,14 +22,14 @@ import org.junit.Test; import br.com.rpires.dao.ClienteDAO; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.dao.IVendaDAO; -import br.com.rpires.dao.ProdutoDAO; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.dao.IVendaDAO_1; +import br.com.rpires.dao.ProdutoDAO_3; import br.com.rpires.dao.VendaDAO; import br.com.rpires.dao.generic.jdbc.ConnectionFactory; -import br.com.rpires.domain.Cliente; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; import br.com.rpires.exceptions.DAOException; @@ -43,20 +43,20 @@ */ public class VendaDAOTest { - private IVendaDAO vendaDao; + private IVendaDAO_1 vendaDao; - private IClienteDAO clienteDao; + private IClientDAO clienteDao; - private IProdutoDAO produtoDao; + private IProdutoDAO_1 produtoDao; - private Cliente cliente; + private Cliente_2 cliente; - private Produto produto; + private Produto_4 produto; public VendaDAOTest() { vendaDao = new VendaDAO(); clienteDao = new ClienteDAO(); - produtoDao = new ProdutoDAO(); + produtoDao = new ProdutoDAO_3(); } @Before @@ -74,8 +74,8 @@ public void end() throws DAOException { private void excluirProdutos() throws DAOException { - Collection list = this.produtoDao.buscarTodos(); - for (Produto prod : list) { + Collection list = this.produtoDao.buscarTodos(); + for (Produto_4 prod : list) { this.produtoDao.excluir(prod.getCodigo()); } } @@ -148,7 +148,7 @@ public void adicionarMaisProdutosDiferentes() throws TipoChaveNaoEncontradaExcep assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -181,7 +181,7 @@ public void removerProduto() throws TipoChaveNaoEncontradaException, MaisDeUmReg assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -208,7 +208,7 @@ public void removerApenasUmProduto() throws TipoChaveNaoEncontradaException, Mai assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -235,7 +235,7 @@ public void removerTodosProdutos() throws TipoChaveNaoEncontradaException, MaisD assertNotNull(venda); assertEquals(codigoVenda, venda.getCodigo()); - Produto prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); + Produto_4 prod = cadastrarProduto(codigoVenda, BigDecimal.valueOf(50)); assertNotNull(prod); assertEquals(codigoVenda, prod.getCodigo()); @@ -286,8 +286,8 @@ public void tentarAdicionarProdutosVendaFinalizada() throws TipoChaveNaoEncontra } - private Produto cadastrarProduto(String codigo, BigDecimal valor) throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { - Produto produto = new Produto(); + private Produto_4 cadastrarProduto(String codigo, BigDecimal valor) throws TipoChaveNaoEncontradaException, MaisDeUmRegistroException, TableException, DAOException { + Produto_4 produto = new Produto_4(); produto.setCodigo(codigo); produto.setDescricao("Produto 1"); produto.setNome("Produto 1"); @@ -296,8 +296,8 @@ private Produto cadastrarProduto(String codigo, BigDecimal valor) throws TipoCha return produto; } - private Cliente cadastrarCliente() throws TipoChaveNaoEncontradaException, DAOException { - Cliente cliente = new Cliente(); + private Cliente_2 cadastrarCliente() throws TipoChaveNaoEncontradaException, DAOException { + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(12312312312L); cliente.setNome("Rodrigo"); cliente.setCidade("São Paulo"); diff --git a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ClienteDaoMock.java b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ClienteDaoMock.java index 10e2604..ea2b037 100644 --- a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ClienteDaoMock.java +++ b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ClienteDaoMock.java @@ -2,13 +2,13 @@ import java.util.Collection; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; -public class ClienteDaoMock implements IClienteDAO { +public class ClienteDaoMock implements IClientDAO { @Override - public Boolean cadastrar(Cliente entity) throws TipoChaveNaoEncontradaException { + public Boolean cadastrar(Cliente_2 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub return true; } @@ -20,20 +20,20 @@ public void excluir(Long valor) { } @Override - public void alterar(Cliente entity) throws TipoChaveNaoEncontradaException { + public void alterar(Cliente_2 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub } @Override - public Cliente consultar(Long valor) { - Cliente cliente = new Cliente(); + public Cliente_2 consultar(Long valor) { + Cliente_2 cliente = new Cliente_2(); cliente.setCpf(valor); return cliente; } @Override - public Collection buscarTodos() { + public Collection buscarTodos() { // TODO Auto-generated method stub return null; } diff --git a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java index 207975b..003cdd4 100644 --- a/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java +++ b/mod35/ExemploVendasMod35/src/test/java/br/com/rpires/dao/ProdutoDaoMock.java @@ -5,17 +5,17 @@ import java.util.Collection; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; /** * @author rodrigo.pires * */ -public class ProdutoDaoMock implements IProdutoDAO { +public class ProdutoDaoMock implements IProdutoDAO_1 { @Override - public Boolean cadastrar(Produto entity) throws TipoChaveNaoEncontradaException { + public Boolean cadastrar(Produto_4 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub return true; } @@ -27,20 +27,20 @@ public void excluir(String valor) { } @Override - public void alterar(Produto entity) throws TipoChaveNaoEncontradaException { + public void alterar(Produto_4 entity) throws TipoChaveNaoEncontradaException { // TODO Auto-generated method stub } @Override - public Produto consultar(String valor) { - Produto produto = new Produto(); + public Produto_4 consultar(String valor) { + Produto_4 produto = new Produto_4(); produto.setCodigo(valor); return produto; } @Override - public Collection buscarTodos() { + public Collection buscarTodos() { // TODO Auto-generated method stub return null; } diff --git a/mod36-1/ExemploVendasMod36/src/test/java/br/com/rpires/jpa/ClienteJpaDao3BancosTest.java b/mod36-1/ExemploVendasMod36/src/test/java/br/com/rpires/jpa/ClienteJpaDao3BancosTest.java index 0a2e028..8003abd 100644 --- a/mod36-1/ExemploVendasMod36/src/test/java/br/com/rpires/jpa/ClienteJpaDao3BancosTest.java +++ b/mod36-1/ExemploVendasMod36/src/test/java/br/com/rpires/jpa/ClienteJpaDao3BancosTest.java @@ -29,17 +29,17 @@ */ public class ClienteJpaDao3BancosTest { - private IClienteJpaDAO clienteDao; + private IClienteJpaDAO clienteDao; - private IClienteJpaDAO clienteDB2Dao; + private IClienteJpaDAO clienteDB2Dao; - private IClienteJpaDAO clienteDB3Dao; + private ClienteJpaDB3DAO clienteDB3Dao; private Random rd; public ClienteJpaDao3BancosTest() { this.clienteDao = new ClienteJpaDAO(); - this.clienteDB2Dao = new ClienteJpaDB2DAO(); + this.clienteDB2Dao = (IClienteJpaDAO) new ClienteJpaDB2DAO(); this.clienteDB3Dao = new ClienteJpaDB3DAO(); rd = new Random(); } @@ -56,7 +56,12 @@ public void end() throws DAOException { excluir3(list3); } - private void excluir(Collection list, IClienteJpaDAO clienteDao) { + private void excluir(Collection list, IClienteJpaDAO clienteDao2) { + // TODO Auto-generated method stub + + } + + private void excluir1(Collection list, IClienteJpaDAO clienteDao) { list.forEach(cli -> { try { clienteDao.excluir(cli); @@ -178,6 +183,11 @@ public void buscarTodos() throws TipoChaveNaoEncontradaException, DAOException { assertTrue(list1.size() == 0); } + private void assertTrue(boolean b) { + // TODO Auto-generated method stub + + } + private ClienteJpa criarCliente() { ClienteJpa cliente = new ClienteJpa(); cliente.setCpf(rd.nextLong()); diff --git a/mod36-1/exemplos_internet/spring-data-examples/multi-store/.factorypath b/mod36-1/exemplos_internet/spring-data-examples/multi-store/.factorypath new file mode 100644 index 0000000..4377857 --- /dev/null +++ b/mod36-1/exemplos_internet/spring-data-examples/multi-store/.factorypath @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/ApplicationConfiguration.java b/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/ApplicationConfiguration.java index a8ae7ef..0a88479 100644 --- a/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/ApplicationConfiguration.java +++ b/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/ApplicationConfiguration.java @@ -15,8 +15,7 @@ */ package example.springdata.multistore; -import org.springframework.boot.autoconfigure.SpringBootApplication; - +import br.com.rpires.TesteAPI.SpringBootApplication; /** * Test configuration to connect to a MongoDB named "test" and using a {@code MongoClient}. Also enables Spring Data diff --git a/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/shop/OrderRepository.java b/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/shop/OrderRepository.java index ebc6c7c..8e78f25 100644 --- a/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/shop/OrderRepository.java +++ b/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/shop/OrderRepository.java @@ -15,8 +15,9 @@ */ package example.springdata.multistore.shop; -import org.springframework.data.repository.CrudRepository; -import org.springframework.stereotype.Repository; +import javax.management.loading.ClassLoaderRepository; + +import net.springboot.javaguides.entity.Student; /** * A repository interface assembling CRUD functionality as well as the API to invoke the methods implemented manually. @@ -25,4 +26,10 @@ * @author Oliver Gierke */ @Repository -public interface OrderRepository extends CrudRepository {} +public interface OrderRepository extends ClassLoaderRepository { + + Object findAll(); + + Object findById(long id); + + void save(Student student);} diff --git a/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/shop/Repository.java b/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/shop/Repository.java new file mode 100644 index 0000000..ec6fa0d --- /dev/null +++ b/mod36-1/exemplos_internet/spring-data-examples/multi-store/src/main/java/example/springdata/multistore/shop/Repository.java @@ -0,0 +1,5 @@ +package example.springdata.multistore.shop; + +public @interface Repository { + +} diff --git a/mod37/exercisejpamaven/pom.xml b/mod37/exercisejpamaven/pom.xml new file mode 100644 index 0000000..36c37f2 --- /dev/null +++ b/mod37/exercisejpamaven/pom.xml @@ -0,0 +1,42 @@ + + 4.0.0 + com.educando.web + exercisejpamaven + 0.0.1-SNAPSHOT + + + 17 + 17 + + + + + + org.hibernate + hibernate-core + 5.4.12.Final + + + org.hibernate + hibernate-entitymanager + 5.4.12.Final + + + + + mysql + mysql-connector-java + 8.0.19 + + + + + junit + junit + 4.13.1 + test + + + diff --git a/mod37/exercisejpamaven/src/main/java/application/ProdutoService.java b/mod37/exercisejpamaven/src/main/java/application/ProdutoService.java new file mode 100644 index 0000000..46e1525 --- /dev/null +++ b/mod37/exercisejpamaven/src/main/java/application/ProdutoService.java @@ -0,0 +1,144 @@ +package application; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.EntityTransaction; +import javax.persistence.Persistence; +import dominio.DepartamentoVendas; +import dominio.Produto; +import java.util.List; + +public class ProdutoService { + + private EntityManagerFactory entityManagerFactory; + + public ProdutoService() { + this.entityManagerFactory = Persistence.createEntityManagerFactory("jpa"); + } + + public void cadastrarProduto(Produto produto) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + entityManager.persist(produto); + transaction.commit(); + System.out.println("Produto cadastrado com sucesso."); + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public void cadastrarDepartamento(DepartamentoVendas departamento) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + entityManager.persist(departamento); + transaction.commit(); + System.out.println("Departamento cadastrado com sucesso."); + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public void excluirProdutoPorId(long produtoId) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + Produto produto = entityManager.find(Produto.class, produtoId); + + if (produto != null) { + entityManager.remove(produto); + transaction.commit(); + System.out.println("Produto excluído com sucesso."); + } else { + System.out.println("Produto não encontrado."); + } + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public void atualizarProduto(Produto produto) { + EntityManager entityManager = criarEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + + try { + transaction.begin(); + Produto produtoExistente = entityManager.find(Produto.class, produto.getId()); + + if (produtoExistente != null) { + // Atualiza os campos desejados + produtoExistente.setNome(produto.getNome()); + produtoExistente.setPreco(produto.getPreco()); + produtoExistente.setDepartamento(produto.getDepartamento()); + + entityManager.merge(produtoExistente); + transaction.commit(); + System.out.println("Produto atualizado com sucesso."); + } else { + System.out.println("Produto não encontrado."); + } + } catch (Exception e) { + if (transaction.isActive()) { + transaction.rollback(); + } + e.printStackTrace(); + } finally { + entityManager.close(); + } + } + + public List buscarProdutosPorDepartamento(long departamentoId) { + EntityManager entityManager = criarEntityManager(); + + try { + return entityManager + .createQuery("SELECT p FROM Produto p WHERE p.departamento.id = :departamentoId", Produto.class) + .setParameter("departamentoId", departamentoId) + .getResultList(); + } finally { + entityManager.close(); + } + } + + public DepartamentoVendas buscarDepartamentoPorId(long id) { + EntityManager entityManager = criarEntityManager(); + + try { + return entityManager.find(DepartamentoVendas.class, id); + } finally { + entityManager.close(); + } + } + + public void fecharConexao() { + if (entityManagerFactory != null && entityManagerFactory.isOpen()) { + entityManagerFactory.close(); + } + } + + private EntityManager criarEntityManager() { + return entityManagerFactory.createEntityManager(); + } +} \ No newline at end of file diff --git a/mod37/exercisejpamaven/src/main/java/application/ProdutoServiceTest.java b/mod37/exercisejpamaven/src/main/java/application/ProdutoServiceTest.java new file mode 100644 index 0000000..1df6d21 --- /dev/null +++ b/mod37/exercisejpamaven/src/main/java/application/ProdutoServiceTest.java @@ -0,0 +1,70 @@ +package application; + +import dominio.DepartamentoVendas; +import dominio.Produto; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; +import java.util.Scanner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class ProdutoServiceTest { + + private ProdutoService produtoService; + private Scanner scanner; + + @Before + public void setUp() { + produtoService = new ProdutoService(); + scanner = new Scanner(System.in); + } + + @After + public void tearDown() { + produtoService.fecharConexao(); + scanner.close(); + } + + @Test + public void testCRUDOperations() { + // Simulando a entrada do usuário para criar um departamento + System.out.print("Digite o nome do departamento: "); + String nomeDepartamento = scanner.nextLine(); + + DepartamentoVendas departamento = new DepartamentoVendas(); + departamento.setNome(nomeDepartamento); + + produtoService.cadastrarDepartamento(departamento); + + // Simulando a entrada do usuário para criar um produto + System.out.print("Digite o nome do produto: "); + String nomeProduto = scanner.nextLine(); + + System.out.print("Digite o preço do produto: "); + double precoProduto = scanner.nextDouble(); + + Produto produto = new Produto(); + produto.setNome(nomeProduto); + produto.setPreco(precoProduto); + produto.setDepartamento(departamento); + + // Agora está cadastrando o produto, não o departamento + produtoService.cadastrarProduto(produto); + + // Simule a busca de produtos por departamento + List produtosDoDepartamento = produtoService.buscarProdutosPorDepartamento(departamento.getId()); + + // Verificações + assertNotNull(produtosDoDepartamento); + assertEquals(1, produtosDoDepartamento.size()); + Produto produtoEncontrado = produtosDoDepartamento.get(0); + + assertEquals(nomeProduto, produtoEncontrado.getNome()); + assertEquals(precoProduto, produtoEncontrado.getPreco(), 0.01); + assertEquals(departamento.getId(), produtoEncontrado.getDepartamento().getId()); + } +} \ No newline at end of file diff --git a/mod37/exercisejpamaven/src/main/java/dominio/DepartamentoVendas.java b/mod37/exercisejpamaven/src/main/java/dominio/DepartamentoVendas.java new file mode 100644 index 0000000..ef5978f --- /dev/null +++ b/mod37/exercisejpamaven/src/main/java/dominio/DepartamentoVendas.java @@ -0,0 +1,44 @@ +package dominio; + +import javax.persistence.*; +import java.util.List; + +@Entity +@Table(name = "departamento_vendas") +public class DepartamentoVendas { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String nome; + + @OneToMany(mappedBy = "departamento", cascade = CascadeType.ALL) + private List produtos; + + // getters e setters + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public List getProdutos() { + return produtos; + } + + public void setProdutos(List produtos) { + this.produtos = produtos; + } +} diff --git a/mod37/exercisejpamaven/src/main/java/dominio/Produto.java b/mod37/exercisejpamaven/src/main/java/dominio/Produto.java new file mode 100644 index 0000000..adda1a8 --- /dev/null +++ b/mod37/exercisejpamaven/src/main/java/dominio/Produto.java @@ -0,0 +1,60 @@ +package dominio; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "produto") +public class Produto { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String nome; + + private double preco; + + @ManyToOne + @JoinColumn(name = "departamento_id") + private DepartamentoVendas departamento; + + // getters e setters + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public double getPreco() { + return preco; + } + + public void setPreco(double preco) { + this.preco = preco; + } + + public DepartamentoVendas getDepartamento() { + return departamento; + } + + public void setDepartamento(DepartamentoVendas departamento) { + this.departamento = departamento; + } +} diff --git a/mod37/exercisejpamaven/src/main/resources/META-INF/persistence.xml b/mod37/exercisejpamaven/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..bc997cc --- /dev/null +++ b/mod37/exercisejpamaven/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/controller/ClienteController.java b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/controller/ClienteController.java index 4fcd0ed..e5d0225 100644 --- a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/controller/ClienteController.java +++ b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/controller/ClienteController.java @@ -13,7 +13,9 @@ import javax.inject.Inject; import javax.inject.Named; -import br.com.rpires.domain.Cliente; +import org.graalvm.compiler.lir.asm.FrameContext; + +import br.com.rpires.domain.Cliente_2; import br.com.rpires.service.IClienteService; /** @@ -26,9 +28,9 @@ public class ClienteController implements Serializable { private static final long serialVersionUID = 8030245985235567808L; - private Cliente cliente; + private Cliente_2 cliente; - private Collection clientes; + private Collection clientes; @Inject private IClienteService clienteService; @@ -39,7 +41,7 @@ public class ClienteController implements Serializable { public void init() { try { this.isUpdate = false; - this.cliente = new Cliente(); + this.cliente = new Cliente_2(); this.clientes = clienteService.buscarTodos(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar listar os clientes")); @@ -49,14 +51,14 @@ public void init() { public void cancel() { try { this.isUpdate = false; - this.cliente = new Cliente(); + this.cliente = new Cliente_2(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar cancelar ação")); } } - public void edit(Cliente cliente) { + public void edit(Cliente_2 cliente) { try { this.isUpdate = true; this.cliente = cliente; @@ -66,12 +68,12 @@ public void edit(Cliente cliente) { } - public void delete(Cliente cliente) { + public void delete(Cliente_2 cliente) { try { clienteService.excluir(cliente); clientes.remove(cliente); } catch (Exception e) { - FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar excluir o cliente")); + FrameContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar excluir o cliente")); } } @@ -80,9 +82,9 @@ public void add() { try { clienteService.cadastrar(cliente); this.clientes = clienteService.buscarTodos(); - this.cliente = new Cliente(); + this.cliente = new Cliente_2(); } catch (Exception e) { - FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar criar o cliente")); + FrameContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar criar o cliente")); } @@ -92,26 +94,26 @@ public void update() { try { clienteService.alterar(this.cliente); cancel(); - FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Cliente Atualiado com sucesso")); + FrameContext.getCurrentInstance().addMessage("growl", new FacesMessage("Cliente Atualiado com sucesso")); } catch (Exception e) { - FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar atualizar o cliente")); + FrameContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar atualizar o cliente")); } } - public Collection getClientes() { + public Collection getClientes() { return clientes; } - public void setClientes(Collection clientes) { + public void setClientes(Collection clientes) { this.clientes = clientes; } - public Cliente getCliente() { + public Cliente_2 getCliente() { return cliente; } - public void setCliente(Cliente cliente) { + public void setCliente(Cliente_2 cliente) { this.cliente = cliente; } @@ -122,7 +124,4 @@ public Boolean getIsUpdate() { public void setIsUpdate(Boolean isUpdate) { this.isUpdate = isUpdate; } - - - } diff --git a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/ClienteDAO.java b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/ClienteDAO.java index 8515b8e..d39e9c3 100644 --- a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/ClienteDAO.java +++ b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/ClienteDAO.java @@ -4,16 +4,16 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public class ClienteDAO extends GenericDAO implements IClienteDAO { +public class ClienteDAO extends GenericDAO implements IClientDAO { public ClienteDAO() { - super(Cliente.class); + super(Cliente_2.class); } } diff --git a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/IClienteDAO.java b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/IClienteDAO.java index 71a459f..1a010b6 100644 --- a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/IClienteDAO.java +++ b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/dao/IClienteDAO.java @@ -4,12 +4,12 @@ package br.com.rpires.dao; import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public interface IClienteDAO extends IGenericDAO{ +public interface IClienteDAO extends IGenericDAO{ } diff --git a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/domain/Cliente.java b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/domain/Cliente.java index b82b1a2..0c9932d 100644 --- a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/domain/Cliente.java +++ b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/domain/Cliente.java @@ -102,9 +102,4 @@ public String getEmail() { public void setEmail(String email) { this.email = email; } - - - - - } diff --git a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/ClienteService.java b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/ClienteService.java index 355d48b..45eb1a1 100644 --- a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/ClienteService.java +++ b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/ClienteService.java @@ -6,8 +6,8 @@ import javax.ejb.Stateless; import javax.inject.Inject; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClienteDAO2; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -18,15 +18,15 @@ * */ @Stateless -public class ClienteService extends GenericService implements IClienteService { +public class ClienteService extends GenericService implements IClienteService { @Inject - public ClienteService(IClienteDAO clienteDAO) { + public ClienteService(IClienteDAO2 clienteDAO) { super(clienteDAO); } @Override - public Cliente buscarPorCPF(Long cpf) throws DAOException { + public Cliente_2 buscarPorCPF(Long cpf) throws DAOException { try { return this.dao.consultar(cpf); } catch (MaisDeUmRegistroException | TableException e) { diff --git a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/IClienteService.java b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/IClienteService.java index ec2043b..c25c520 100644 --- a/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/IClienteService.java +++ b/mod38/ExemploJSFProfessor/src/main/java/br/com/rpires/service/IClienteService.java @@ -3,7 +3,7 @@ */ package br.com.rpires.service; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.services.generic.IGenericService; @@ -11,8 +11,8 @@ * @author rodrigo.pires * */ -public interface IClienteService extends IGenericService { +public interface IClienteService extends IGenericService { - Cliente buscarPorCPF(Long cpf) throws DAOException; + Cliente_2 buscarPorCPF(Long cpf) throws DAOException; } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ClienteController.java b/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ClienteController.java index 9c98b96..3ea070b 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ClienteController.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ClienteController.java @@ -13,7 +13,7 @@ import javax.inject.Inject; import javax.inject.Named; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.service.IClienteService; import br.com.rpires.utils.ReplaceUtils; @@ -27,9 +27,9 @@ public class ClienteController implements Serializable { private static final long serialVersionUID = 8030245985235567808L; - private Cliente cliente; + private Cliente_2 cliente; - private Collection clientes; + private Collection clientes; @Inject private IClienteService clienteService; @@ -44,7 +44,7 @@ public class ClienteController implements Serializable { public void init() { try { this.isUpdate = false; - this.cliente = new Cliente(); + this.cliente = new Cliente_2(); this.clientes = clienteService.buscarTodos(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar listar os clientes")); @@ -54,14 +54,14 @@ public void init() { public void cancel() { try { this.isUpdate = false; - this.cliente = new Cliente(); + this.cliente = new Cliente_2(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar cancelar ação")); } } - public void edit(Cliente cliente) { + public void edit(Cliente_2 cliente) { try { this.isUpdate = true; this.cliente = cliente; @@ -71,7 +71,7 @@ public void edit(Cliente cliente) { } - public void delete(Cliente cliente) { + public void delete(Cliente_2 cliente) { try { clienteService.excluir(cliente); clientes.remove(cliente); @@ -87,7 +87,7 @@ public void add() { limparCampos(); clienteService.cadastrar(cliente); this.clientes = clienteService.buscarTodos(); - this.cliente = new Cliente(); + this.cliente = new Cliente_2(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar criar o cliente")); } @@ -124,19 +124,19 @@ public String voltarTelaInicial() { return "/index.xhtml"; } - public Cliente getCliente() { + public Cliente_2 getCliente() { return cliente; } - public void setCliente(Cliente cliente) { + public void setCliente(Cliente_2 cliente) { this.cliente = cliente; } - public Collection getClientes() { + public Collection getClientes() { return clientes; } - public void setClientes(Collection clientes) { + public void setClientes(Collection clientes) { this.clientes = clientes; } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ProdutoController.java b/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ProdutoController.java index efd7b34..3e4a6c8 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ProdutoController.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/controller/ProdutoController.java @@ -13,7 +13,7 @@ import javax.inject.Inject; import javax.inject.Named; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.service.IProdutoService; /** @@ -26,9 +26,9 @@ public class ProdutoController implements Serializable { private static final long serialVersionUID = 367088063926303823L; - private Produto produto; + private Produto_4 produto; - private Collection produtos; + private Collection produtos; @Inject private IProdutoService produtoService; @@ -39,7 +39,7 @@ public class ProdutoController implements Serializable { public void init() { try { this.isUpdate = false; - this.produto = new Produto(); + this.produto = new Produto_4(); this.produtos = produtoService.buscarTodos(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar listar os produtos")); @@ -49,14 +49,14 @@ public void init() { public void cancel() { try { this.isUpdate = false; - this.produto = new Produto(); + this.produto = new Produto_4(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar cancelar ação")); } } - public void edit(Produto produto) { + public void edit(Produto_4 produto) { try { this.isUpdate = true; this.produto = produto; @@ -66,7 +66,7 @@ public void edit(Produto produto) { } - public void delete(Produto produto) { + public void delete(Produto_4 produto) { try { produtoService.excluir(produto); produtos.remove(produto); @@ -80,7 +80,7 @@ public void add() { try { produtoService.cadastrar(produto); this.produtos = produtoService.buscarTodos(); - this.produto = new Produto(); + this.produto = new Produto_4(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage("Erro ao tentar criar o produto")); } @@ -103,19 +103,19 @@ public String voltarTelaInicial() { return "/index.xhtml"; } - public Produto getProduto() { + public Produto_4 getProduto() { return produto; } - public void setProduto(Produto produto) { + public void setProduto(Produto_4 produto) { this.produto = produto; } - public Collection getProdutos() { + public Collection getProdutos() { return produtos; } - public void setProdutos(Collection produtos) { + public void setProdutos(Collection produtos) { this.produtos = produtos; } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/controller/VendaController.java b/mod38/VendasOnline/src/main/java/br/com/rpires/controller/VendaController.java index 12da76f..4cb6a44 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/controller/VendaController.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/controller/VendaController.java @@ -22,8 +22,8 @@ import org.primefaces.event.RowEditEvent; -import br.com.rpires.domain.Cliente; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; import br.com.rpires.domain.ProdutoQuantidade; import br.com.rpires.domain.Venda; import br.com.rpires.service.IClienteService; @@ -61,7 +61,7 @@ public class VendaController implements Serializable { private Set produtos; - private Produto produtoSelecionado; + private Produto_4 produtoSelecionado; private BigDecimal valorTotal; @@ -217,11 +217,11 @@ public void adicionarOuRemoverProduto(ProdutoQuantidade prod) { } } - public List filtrarClientes(String query) { + public List filtrarClientes(String query) { return this.clienteService.filtrarClientes(query); } - public List filtrarProdutos(String query) { + public List filtrarProdutos(String query) { return this.produtoService.filtrarProdutos(query); } @@ -277,11 +277,11 @@ public void setQuantidadeProduto(Integer quantidadeProduto) { this.quantidadeProduto = quantidadeProduto; } - public Produto getProdutoSelecionado() { + public Produto_4 getProdutoSelecionado() { return produtoSelecionado; } - public void setProdutoSelecionado(Produto produtoSelecionado) { + public void setProdutoSelecionado(Produto_4 produtoSelecionado) { this.produtoSelecionado = produtoSelecionado; } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ClienteConverter.java b/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ClienteConverter.java index b75ecc5..c596422 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ClienteConverter.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ClienteConverter.java @@ -12,14 +12,14 @@ import javax.faces.convert.FacesConverter; import javax.inject.Named; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ @Named -@FacesConverter(value = "clienteConverter", forClass = Cliente.class) +@FacesConverter(value = "clienteConverter", forClass = Cliente_2.class) public class ClienteConverter implements Converter { private static final String key = "br.com.rpires.converter.ClienteConverter"; @@ -34,7 +34,7 @@ public Object getAsObject(FacesContext context, UIComponent component, String va @Override public String getAsString(FacesContext context, UIComponent component, Object cliente) { - String id = ((Cliente)cliente).getId().toString(); + String id = ((Cliente_2)cliente).getId().toString(); getViewMap(context).put(id, cliente); return id; } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ProdutoConverter.java b/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ProdutoConverter.java index 0b1c32f..9ed93df 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ProdutoConverter.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/converter/ProdutoConverter.java @@ -12,14 +12,14 @@ import javax.faces.convert.FacesConverter; import javax.inject.Named; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ @Named -@FacesConverter(value = "produtoConverter", forClass = Produto.class) +@FacesConverter(value = "produtoConverter", forClass = Produto_4.class) public class ProdutoConverter implements Converter { private static final String key = "br.com.rpires.converter.ProdutoConverter"; @@ -34,7 +34,7 @@ public Object getAsObject(FacesContext context, UIComponent component, String va @Override public String getAsString(FacesContext context, UIComponent component, Object produto) { - String id = ((Produto)produto).getId().toString(); + String id = ((Produto_4)produto).getId().toString(); getViewMap(context).put(id, produto); return id; } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ClienteDAO.java b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ClienteDAO.java index f95effe..9fb0d7b 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ClienteDAO.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ClienteDAO.java @@ -8,21 +8,21 @@ import javax.persistence.TypedQuery; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public class ClienteDAO extends GenericDAO implements IClienteDAO { +public class ClienteDAO extends GenericDAO implements IClientDAO { public ClienteDAO() { - super(Cliente.class); + super(Cliente_2.class); } @Override - public List filtrarClientes(String query) { - TypedQuery tpQuery = + public List filtrarClientes(String query) { + TypedQuery tpQuery = this.entityManager.createNamedQuery("Cliente.findByNome", this.persistenteClass); tpQuery.setParameter("nome", "%" + query + "%"); return tpQuery.getResultList(); diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IClienteDAO.java b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IClienteDAO.java index 5f44580..8c3b3e4 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IClienteDAO.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IClienteDAO.java @@ -6,14 +6,14 @@ import java.util.List; import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ -public interface IClienteDAO extends IGenericDAO{ +public interface IClienteDAO extends IGenericDAO{ - List filtrarClientes(String query); + List filtrarClientes(String query); } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IProdutoDAO.java b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IProdutoDAO.java index 48b45ec..5f0056e 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IProdutoDAO.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/IProdutoDAO.java @@ -6,14 +6,14 @@ import java.util.List; import br.com.rpires.dao.generic.IGenericDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ -public interface IProdutoDAO extends IGenericDAO{ +public interface IProdutoDAO extends IGenericDAO{ - List filtrarProdutos(String query); + List filtrarProdutos(String query); } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ProdutoDAO.java b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ProdutoDAO.java index a83b33d..5a7f6c2 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ProdutoDAO.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/ProdutoDAO.java @@ -8,21 +8,21 @@ import javax.persistence.TypedQuery; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; /** * @author rodrigo.pires * */ -public class ProdutoDAO extends GenericDAO implements IProdutoDAO { +public class ProdutoDAO extends GenericDAO implements IProdutoDAO_1 { public ProdutoDAO() { - super(Produto.class); + super(Produto_4.class); } @Override - public List filtrarProdutos(String query) { - TypedQuery tpQuery = + public List filtrarProdutos(String query) { + TypedQuery tpQuery = this.entityManager.createNamedQuery("Produto.findByNome", this.persistenteClass); tpQuery.setParameter("nome", "%" + query + "%"); return tpQuery.getResultList(); diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/VendaDAO.java b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/VendaDAO.java index 3ae2891..a1f65ab 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/VendaDAO.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/VendaDAO.java @@ -9,8 +9,8 @@ import javax.persistence.criteria.Root; import br.com.rpires.dao.generic.GenericDAO; -import br.com.rpires.domain.Cliente; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Cliente_2; +import br.com.rpires.domain.Produto_4; import br.com.rpires.domain.Venda; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.TipoChaveNaoEncontradaException; @@ -19,7 +19,7 @@ * @author rodrigo.pires * */ -public class VendaDAO extends GenericDAO implements IVendaDAO { +public class VendaDAO extends GenericDAO implements IVendaDAO_1 { public VendaDAO() { super(Venda.class); @@ -44,10 +44,10 @@ public void excluir(Venda entity) throws DAOException { public Venda cadastrar(Venda entity) throws TipoChaveNaoEncontradaException, DAOException { try { entity.getProdutos().forEach(prod -> { - Produto prodJpa = entityManager.merge(prod.getProduto()); + Produto_4 prodJpa = entityManager.merge(prod.getProduto()); prod.setProduto(prodJpa); }); - Cliente cliente = entityManager.merge(entity.getCliente()); + Cliente_2 cliente = entityManager.merge(entity.getCliente()); entity.setCliente(cliente); entityManager.persist(entity); // entityManager.getTransaction().commit(); diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/generic/GenericDAO.java b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/generic/GenericDAO.java index f973e38..ce45b5b 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/dao/generic/GenericDAO.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/dao/generic/GenericDAO.java @@ -52,7 +52,6 @@ public void excluir(T entity) throws DAOException { entityManager.remove(managedCustomer); } } - } @Override @@ -83,6 +82,4 @@ private String getSelectSql() { sb.append(" obj"); return sb.toString(); } - - -} +} \ No newline at end of file diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java b/mod38/VendasOnline/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java index 3bfd4e1..f6c8e75 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/domain/ProdutoQuantidade.java @@ -31,7 +31,7 @@ public class ProdutoQuantidade { private Long id; @ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) - private Produto produto; + private Produto_4 produto; @Column(name = "quantidade", nullable = false) private Integer quantidade; @@ -51,11 +51,11 @@ public ProdutoQuantidade() { this.valorTotal = BigDecimal.ZERO; } - public Produto getProduto() { + public Produto_4 getProduto() { return produto; } - public void setProduto(Produto produto) { + public void setProduto(Produto_4 produto) { this.produto = produto; } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/domain/Venda.java b/mod38/VendasOnline/src/main/java/br/com/rpires/domain/Venda.java index 6cc0634..0e66067 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/domain/Venda.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/domain/Venda.java @@ -58,7 +58,7 @@ public static Status getByName(String value) { foreignKey = @ForeignKey(name = "fk_venda_cliente"), referencedColumnName = "id", nullable = false ) - private Cliente cliente; + private Cliente_2 cliente; /* * OBS: Não é uma boa prática utiliar FetchType.EAGER pois ele sempre irá trazer todos os objetos da collection @@ -91,11 +91,11 @@ public void setCodigo(String codigo) { this.codigo = codigo; } - public Cliente getCliente() { + public Cliente_2 getCliente() { return cliente; } - public void setCliente(Cliente cliente) { + public void setCliente(Cliente_2 cliente) { this.cliente = cliente; } @@ -103,7 +103,7 @@ public Set getProdutos() { return produtos; } - public void adicionarProduto(Produto produto, Integer quantidade) { + public void adicionarProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); @@ -127,7 +127,7 @@ private void validarStatus() { } } - public void removerProduto(Produto produto, Integer quantidade) { + public void removerProduto(Produto_4 produto, Integer quantidade) { validarStatus(); Optional op = produtos.stream().filter(filter -> filter.getProduto().getCodigo().equals(produto.getCodigo())).findAny(); diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/service/ClienteService.java b/mod38/VendasOnline/src/main/java/br/com/rpires/service/ClienteService.java index 0cfb501..b2c1c90 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/service/ClienteService.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/service/ClienteService.java @@ -8,8 +8,8 @@ import javax.ejb.Stateless; import javax.inject.Inject; -import br.com.rpires.dao.IClienteDAO; -import br.com.rpires.domain.Cliente; +import br.com.rpires.dao.IClientDAO; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.exceptions.MaisDeUmRegistroException; import br.com.rpires.exceptions.TableException; @@ -20,18 +20,18 @@ * */ @Stateless -public class ClienteService extends GenericService implements IClienteService { +public class ClienteService extends GenericService implements IClienteService { - private IClienteDAO clienteDAO; + private IClientDAO clienteDAO; @Inject - public ClienteService(IClienteDAO clienteDAO) { + public ClienteService(IClientDAO clienteDAO) { super(clienteDAO); this.clienteDAO = clienteDAO; } @Override - public Cliente buscarPorCPF(Long cpf) throws DAOException { + public Cliente_2 buscarPorCPF(Long cpf) throws DAOException { try { return this.dao.consultar(cpf); } catch (MaisDeUmRegistroException | TableException e) { @@ -42,7 +42,7 @@ public Cliente buscarPorCPF(Long cpf) throws DAOException { } @Override - public List filtrarClientes(String query) { + public List filtrarClientes(String query) { return clienteDAO.filtrarClientes(query); } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/service/IClienteService.java b/mod38/VendasOnline/src/main/java/br/com/rpires/service/IClienteService.java index 3cc897a..4c49eaf 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/service/IClienteService.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/service/IClienteService.java @@ -5,7 +5,7 @@ import java.util.List; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.exceptions.DAOException; import br.com.rpires.services.generic.IGenericService; @@ -13,10 +13,10 @@ * @author rodrigo.pires * */ -public interface IClienteService extends IGenericService { +public interface IClienteService extends IGenericService { - Cliente buscarPorCPF(Long cpf) throws DAOException; + Cliente_2 buscarPorCPF(Long cpf) throws DAOException; - List filtrarClientes(String query); + List filtrarClientes(String query); } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/service/IProdutoService.java b/mod38/VendasOnline/src/main/java/br/com/rpires/service/IProdutoService.java index 98fbd05..c8830d1 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/service/IProdutoService.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/service/IProdutoService.java @@ -5,15 +5,15 @@ import java.util.List; -import br.com.rpires.domain.Produto; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.IGenericService; /** * @author rodrigo.pires * */ -public interface IProdutoService extends IGenericService { +public interface IProdutoService extends IGenericService { - List filtrarProdutos(String query); + List filtrarProdutos(String query); } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/service/ProdutoService.java b/mod38/VendasOnline/src/main/java/br/com/rpires/service/ProdutoService.java index fda4fa1..055cefb 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/service/ProdutoService.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/service/ProdutoService.java @@ -8,8 +8,8 @@ import javax.ejb.Stateless; import javax.inject.Inject; -import br.com.rpires.dao.IProdutoDAO; -import br.com.rpires.domain.Produto; +import br.com.rpires.dao.IProdutoDAO_1; +import br.com.rpires.domain.Produto_4; import br.com.rpires.services.generic.GenericService; /** @@ -17,18 +17,18 @@ * */ @Stateless -public class ProdutoService extends GenericService implements IProdutoService { +public class ProdutoService extends GenericService implements IProdutoService { - private IProdutoDAO produtoDao; + private IProdutoDAO_1 produtoDao; @Inject - public ProdutoService(IProdutoDAO produtoDao) { + public ProdutoService(IProdutoDAO_1 produtoDao) { super(produtoDao); this.produtoDao = produtoDao; } @Override - public List filtrarProdutos(String query) { + public List filtrarProdutos(String query) { return produtoDao.filtrarProdutos(query); } diff --git a/mod38/VendasOnline/src/main/java/br/com/rpires/service/VendaService.java b/mod38/VendasOnline/src/main/java/br/com/rpires/service/VendaService.java index 880e4b4..131e5c9 100644 --- a/mod38/VendasOnline/src/main/java/br/com/rpires/service/VendaService.java +++ b/mod38/VendasOnline/src/main/java/br/com/rpires/service/VendaService.java @@ -6,7 +6,7 @@ import javax.ejb.Stateless; import javax.inject.Inject; -import br.com.rpires.dao.IVendaDAO; +import br.com.rpires.dao.IVendaDAO_1; import br.com.rpires.domain.Venda; import br.com.rpires.domain.Venda.Status; import br.com.rpires.exceptions.DAOException; @@ -20,10 +20,10 @@ @Stateless public class VendaService extends GenericService implements IVendaService { - IVendaDAO dao; + IVendaDAO_1 dao; @Inject - public VendaService(IVendaDAO dao) { + public VendaService(IVendaDAO_1 dao) { super(dao); this.dao = dao; } diff --git a/mod38/exercise_mod38/userdept/.gitignore b/mod38/exercise_mod38/userdept/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/mod38/exercise_mod38/userdept/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/mod38/exercise_mod38/userdept/mvnw b/mod38/exercise_mod38/userdept/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/mod38/exercise_mod38/userdept/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mod38/exercise_mod38/userdept/mvnw.cmd b/mod38/exercise_mod38/userdept/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/mod38/exercise_mod38/userdept/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/mod38/exercise_mod38/userdept/pom.xml b/mod38/exercise_mod38/userdept/pom.xml new file mode 100644 index 0000000..e57990f --- /dev/null +++ b/mod38/exercise_mod38/userdept/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.1 + + + com.devsuperior + userdept + 0.0.1-SNAPSHOT + userdept + Project exercise for Spring Boot with Maven EBAC + + 17 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-web + + + + com.h2database + h2 + runtime + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-resources-plugin + 3.1.0 + + + + \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/main/java/META-INF/MANIFEST.MF b/mod38/exercise_mod38/userdept/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java new file mode 100644 index 0000000..2f423fc --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java @@ -0,0 +1,12 @@ +package com.devsuperior.userdept; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UserdeptApplication { + + public static void main(String[] args) { + SpringApplication.run(UserdeptApplication.class, args); + } +} \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java new file mode 100644 index 0000000..f6ba3ba --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java @@ -0,0 +1,37 @@ +package com.devsuperior.userdept.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.devsuperior.userdept.entities.User; +import com.devsuperior.userdept.repositories.UserRepository; + +@RestController +@RequestMapping(value = "/users") +public class UserController { + + @Autowired + private UserRepository repository; + + @GetMapping + public List findAll() { + return repository.findAll(); + } + + @GetMapping(value = "/{id}") + public User findAll(@PathVariable Long id) { + return repository.findById(id).get(); + } + + @PostMapping + public User insert(@RequestBody User user) { + return repository.save(user); + } +} \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java new file mode 100644 index 0000000..a680d7c --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java @@ -0,0 +1,36 @@ +package com.devsuperior.userdept.entities; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "tb_department") +public class Department { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + + public Department() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/entities/User.java b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/entities/User.java new file mode 100644 index 0000000..013e91a --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/entities/User.java @@ -0,0 +1,59 @@ +package com.devsuperior.userdept.entities; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Table(name = "tb_user") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String email; + + @ManyToOne + @JoinColumn(name = "department_id") + private Department department; + + public User() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } +} \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java new file mode 100644 index 0000000..028cca0 --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java @@ -0,0 +1,9 @@ +package com.devsuperior.userdept.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.devsuperior.userdept.entities.User; + +public interface UserRepository extends JpaRepository { + +} \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/main/resources/application.properties b/mod38/exercise_mod38/userdept/src/main/resources/application.properties new file mode 100644 index 0000000..b406a73 --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/resources/application.properties @@ -0,0 +1,12 @@ +# Dados de conexo com o banco H2 +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.username=sa +spring.datasource.password= + +# Configurao do cliente web do banco H2 +spring.h2.console.enabled=true +spring.h2.console.path=/h2-console + +# Configurao para mostrar o SQL no console +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/main/resources/import.sql b/mod38/exercise_mod38/userdept/src/main/resources/import.sql new file mode 100644 index 0000000..9d34d04 --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/main/resources/import.sql @@ -0,0 +1,7 @@ +INSERT INTO tb_department(name) VALUES ('Gestão'); +INSERT INTO tb_department(name) VALUES ('Informática'); + +INSERT INTO tb_user(department_id, name, email) VALUES (1, 'Maria', 'maria@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (1, 'Bob', 'bob@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (2, 'Alex', 'alex@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (2, 'Ana', 'ana@gmail.com'); \ No newline at end of file diff --git a/mod38/exercise_mod38/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java b/mod38/exercise_mod38/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java new file mode 100644 index 0000000..7094f7b --- /dev/null +++ b/mod38/exercise_mod38/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java @@ -0,0 +1,13 @@ +package com.devsuperior.userdept; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class UserdeptApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/mod39/exercise_mod39/meetapp/pom.xml b/mod39/exercise_mod39/meetapp/pom.xml new file mode 100644 index 0000000..a80190a --- /dev/null +++ b/mod39/exercise_mod39/meetapp/pom.xml @@ -0,0 +1,95 @@ + + 4.0.0 + + com.example + meetapp + 1.0-SNAPSHOT + war + + + 1.8 + 1.8 + + + + + + org.glassfish + javax.faces + 2.3.9 + + + + + javax.inject + javax.inject + 1 + + + + + + org.primefaces + primefaces + 13.0.0-RC1 + + + + + com.googlecode.owasp-java-html-sanitizer + owasp-java-html-sanitizer + 20220608.1 + + + + + org.hibernate + hibernate-core + 5.4.12.Final + + + org.hibernate + hibernate-entitymanager + 5.4.12.Final + + + + + mysql + mysql-connector-java + 8.0.19 + + + + + javax.enterprise + cdi-api + 2.0.SP1 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-war-plugin + 3.2.2 + + false + + + + + \ No newline at end of file diff --git a/mod39/exercise_mod39/meetapp/src/main/resources/META_INF/persistence.xml b/mod39/exercise_mod39/meetapp/src/main/resources/META_INF/persistence.xml new file mode 100644 index 0000000..ddec24e --- /dev/null +++ b/mod39/exercise_mod39/meetapp/src/main/resources/META_INF/persistence.xml @@ -0,0 +1,23 @@ + + + + + com.example.entidades.MinhaEntidade + + + + + + + + + + + + + diff --git a/mod39/exercise_mod39/meetapp/src/main/webapp/MyPage.xhtml b/mod39/exercise_mod39/meetapp/src/main/webapp/MyPage.xhtml new file mode 100644 index 0000000..2ae268b --- /dev/null +++ b/mod39/exercise_mod39/meetapp/src/main/webapp/MyPage.xhtml @@ -0,0 +1,42 @@ + + + + + + + Hello Tomcat! + + + +

Use this form in a way that can transcend literary ideals or even be able to write poetry and mathematical formulas.

+ +
+ +

Basic

+ + +

Custom Toolbar

+ + + + + + + + + + + + + + + +
+
+
+ diff --git a/mod39/exercise_mod39/meetapp/src/main/webapp/WEB-INF/faces-config.xml b/mod39/exercise_mod39/meetapp/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000..e5deaf7 --- /dev/null +++ b/mod39/exercise_mod39/meetapp/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,8 @@ + + + + diff --git a/mod39/exercise_mod39/meetapp/src/main/webapp/WEB-INF/web.xml b/mod39/exercise_mod39/meetapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..522d2b3 --- /dev/null +++ b/mod39/exercise_mod39/meetapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,13 @@ + + + meetapp + + Faces Servlet + javax.faces.webapp.FacesServlet + 1 + + + Faces Servlet + *.xhtml + + \ No newline at end of file diff --git a/mod40/DemoSpringBoot/src/main/java/br/com/rpires/DemoSpringBoot/DemoSpringBootApplication.java b/mod40/DemoSpringBoot/src/main/java/br/com/rpires/DemoSpringBoot/DemoSpringBootApplication.java index b414935..e2dd5fd 100644 --- a/mod40/DemoSpringBoot/src/main/java/br/com/rpires/DemoSpringBoot/DemoSpringBootApplication.java +++ b/mod40/DemoSpringBoot/src/main/java/br/com/rpires/DemoSpringBoot/DemoSpringBootApplication.java @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.repository.IClienteRepository; @SpringBootApplication @@ -33,12 +33,12 @@ public static void main(String[] args) { @Override public void run(String... args) throws Exception { log.info("StartApplication..."); - Cliente cliente = createCliente(); + Cliente_2 cliente = createCliente(); repository.save(cliente); } - private Cliente createCliente() { - return Cliente.builder() + private Cliente_2 createCliente() { + return Cliente_2.builder() .cidade("SP") .cpf(12312312310L) .email("Teste@teste.com") diff --git a/mod40/DemoSpringBoot/src/main/java/br/com/rpires/repository/IClienteRepository.java b/mod40/DemoSpringBoot/src/main/java/br/com/rpires/repository/IClienteRepository.java index 45a5076..16072e4 100644 --- a/mod40/DemoSpringBoot/src/main/java/br/com/rpires/repository/IClienteRepository.java +++ b/mod40/DemoSpringBoot/src/main/java/br/com/rpires/repository/IClienteRepository.java @@ -6,13 +6,13 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ @Repository -public interface IClienteRepository extends CrudRepository{ +public interface IClienteRepository extends CrudRepository{ } diff --git a/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/SpringBootPrimeiroExemplo/SpringBootPrimeiroExemploApplication.java b/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/SpringBootPrimeiroExemplo/SpringBootPrimeiroExemploApplication.java index 5caa451..f088631 100644 --- a/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/SpringBootPrimeiroExemplo/SpringBootPrimeiroExemploApplication.java +++ b/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/SpringBootPrimeiroExemplo/SpringBootPrimeiroExemploApplication.java @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; import br.com.rpires.repository.IClienteRepository; @SpringBootApplication @@ -33,12 +33,12 @@ public static void main(String[] args) { @Override public void run(String... args) throws Exception { log.info("StartApplication..."); - Cliente cliente = createCliente(); + Cliente_2 cliente = createCliente(); repository.save(cliente); } - private Cliente createCliente() { - return Cliente.builder() + private Cliente_2 createCliente() { + return Cliente_2.builder() .cidade("SP") .cpf(12312312310L) .email("Teste@teste.com") diff --git a/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/repository/IClienteRepository.java b/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/repository/IClienteRepository.java index 45a5076..16072e4 100644 --- a/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/repository/IClienteRepository.java +++ b/mod40/SpringBootPrimeiroExemplo/src/main/java/br/com/rpires/repository/IClienteRepository.java @@ -6,13 +6,13 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; -import br.com.rpires.domain.Cliente; +import br.com.rpires.domain.Cliente_2; /** * @author rodrigo.pires * */ @Repository -public interface IClienteRepository extends CrudRepository{ +public interface IClienteRepository extends CrudRepository{ } diff --git a/mod40/exercise_mod40/userdept/.gitignore b/mod40/exercise_mod40/userdept/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/mod40/exercise_mod40/userdept/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/mod40/exercise_mod40/userdept/mvnw b/mod40/exercise_mod40/userdept/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/mod40/exercise_mod40/userdept/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mod40/exercise_mod40/userdept/mvnw.cmd b/mod40/exercise_mod40/userdept/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/mod40/exercise_mod40/userdept/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/mod40/exercise_mod40/userdept/pom.xml b/mod40/exercise_mod40/userdept/pom.xml new file mode 100644 index 0000000..e57990f --- /dev/null +++ b/mod40/exercise_mod40/userdept/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.1 + + + com.devsuperior + userdept + 0.0.1-SNAPSHOT + userdept + Project exercise for Spring Boot with Maven EBAC + + 17 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-web + + + + com.h2database + h2 + runtime + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-resources-plugin + 3.1.0 + + + + \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/main/java/META-INF/MANIFEST.MF b/mod40/exercise_mod40/userdept/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java new file mode 100644 index 0000000..2f423fc --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/UserdeptApplication.java @@ -0,0 +1,12 @@ +package com.devsuperior.userdept; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UserdeptApplication { + + public static void main(String[] args) { + SpringApplication.run(UserdeptApplication.class, args); + } +} \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java new file mode 100644 index 0000000..f6ba3ba --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/controllers/UserController.java @@ -0,0 +1,37 @@ +package com.devsuperior.userdept.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.devsuperior.userdept.entities.User; +import com.devsuperior.userdept.repositories.UserRepository; + +@RestController +@RequestMapping(value = "/users") +public class UserController { + + @Autowired + private UserRepository repository; + + @GetMapping + public List findAll() { + return repository.findAll(); + } + + @GetMapping(value = "/{id}") + public User findAll(@PathVariable Long id) { + return repository.findById(id).get(); + } + + @PostMapping + public User insert(@RequestBody User user) { + return repository.save(user); + } +} \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java new file mode 100644 index 0000000..a680d7c --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/entities/Department.java @@ -0,0 +1,36 @@ +package com.devsuperior.userdept.entities; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "tb_department") +public class Department { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + + public Department() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/entities/User.java b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/entities/User.java new file mode 100644 index 0000000..013e91a --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/entities/User.java @@ -0,0 +1,59 @@ +package com.devsuperior.userdept.entities; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Table(name = "tb_user") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String email; + + @ManyToOne + @JoinColumn(name = "department_id") + private Department department; + + public User() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } +} \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java new file mode 100644 index 0000000..028cca0 --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/java/com/devsuperior/userdept/repositories/UserRepository.java @@ -0,0 +1,9 @@ +package com.devsuperior.userdept.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.devsuperior.userdept.entities.User; + +public interface UserRepository extends JpaRepository { + +} \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/main/resources/application.properties b/mod40/exercise_mod40/userdept/src/main/resources/application.properties new file mode 100644 index 0000000..b406a73 --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/resources/application.properties @@ -0,0 +1,12 @@ +# Dados de conexo com o banco H2 +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.username=sa +spring.datasource.password= + +# Configurao do cliente web do banco H2 +spring.h2.console.enabled=true +spring.h2.console.path=/h2-console + +# Configurao para mostrar o SQL no console +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/main/resources/import.sql b/mod40/exercise_mod40/userdept/src/main/resources/import.sql new file mode 100644 index 0000000..9d34d04 --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/main/resources/import.sql @@ -0,0 +1,7 @@ +INSERT INTO tb_department(name) VALUES ('Gestão'); +INSERT INTO tb_department(name) VALUES ('Informática'); + +INSERT INTO tb_user(department_id, name, email) VALUES (1, 'Maria', 'maria@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (1, 'Bob', 'bob@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (2, 'Alex', 'alex@gmail.com'); +INSERT INTO tb_user(department_id, name, email) VALUES (2, 'Ana', 'ana@gmail.com'); \ No newline at end of file diff --git a/mod40/exercise_mod40/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java b/mod40/exercise_mod40/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java new file mode 100644 index 0000000..7094f7b --- /dev/null +++ b/mod40/exercise_mod40/userdept/src/test/java/com/devsuperior/userdept/UserdeptApplicationTests.java @@ -0,0 +1,13 @@ +package com.devsuperior.userdept; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class UserdeptApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/ClienteServiceProfessorApplication.java b/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/ClienteServiceProfessorApplication.java index de1d199..86255ea 100644 --- a/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/ClienteServiceProfessorApplication.java +++ b/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/ClienteServiceProfessorApplication.java @@ -6,13 +6,15 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.cloud.context.config.annotation.RefreshScope; +import br.com.rpires.ebac.Springbootjsp.SpringbootJspApplication; + @SpringBootApplication @RefreshScope @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class ClienteServiceProfessorApplication { public static void main(String[] args) { - SpringApplication.run(ClienteServiceProfessorApplication.class, args); + SpringbootJspApplication.run(ClienteServiceProfessorApplication.class, args); } } diff --git a/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/exception/RestExceptionHandler.java b/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/exception/RestExceptionHandler.java index ca51531..f58dd1c 100644 --- a/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/exception/RestExceptionHandler.java +++ b/mod41/ClienteServiceProfessor/src/main/java/br/com/rpires/ClienteServiceProfessor/exception/RestExceptionHandler.java @@ -65,7 +65,6 @@ protected ResponseEntity handleMissingServletRequestParameter( * @param request WebRequest * @return the ApiError object */ - @Override protected ResponseEntity handleHttpMediaTypeNotSupported( HttpMediaTypeNotSupportedException ex, HttpHeaders headers, diff --git a/mod42/ClienteServiceAlunos/pom.xml b/mod42/ClienteServiceAlunos/pom.xml index c2843d4..58d83bd 100644 --- a/mod42/ClienteServiceAlunos/pom.xml +++ b/mod42/ClienteServiceAlunos/pom.xml @@ -78,6 +78,13 @@ pom import + + + org.springframework.boot + spring-boot-devtools + runtime + true + diff --git a/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java b/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java index 0cc021b..c65f84d 100644 --- a/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java +++ b/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java @@ -20,10 +20,8 @@ @Setter public class ApiError { - private HttpStatus status; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss") private LocalDateTime timestamp; - private String message; private String debugMessage; private List subErrors; @@ -33,21 +31,16 @@ private ApiError() { public ApiError(HttpStatus status) { this(); - this.status = status; } public ApiError(HttpStatus status, Throwable ex) { this(); - this.status = status; - this.message = "Unexpected error"; - this.debugMessage = ex.getLocalizedMessage(); + this.setDebugMessage(ex.getLocalizedMessage()); } public ApiError(HttpStatus status, String message, Throwable ex) { this(); - this.status = status; - this.message = message; - this.debugMessage = ex.getLocalizedMessage(); + this.setDebugMessage(ex.getLocalizedMessage()); } private void addSubError(ApiSubError subError) { @@ -57,8 +50,8 @@ private void addSubError(ApiSubError subError) { subErrors.add(subError); } - private void addValidationError(String object, String field, Object rejectedValue, String message) { - addSubError(new ApiValidationError(object, field, rejectedValue, message)); + private void addValidationError1(String object, String field) { + addSubError(new ApiValidationError(object, field)); } private void addValidationError(String object, String message) { @@ -66,11 +59,9 @@ private void addValidationError(String object, String message) { } private void addValidationError(FieldError fieldError) { - this.addValidationError( + this.addValidationError1( fieldError.getObjectName(), - fieldError.getField(), - fieldError.getRejectedValue(), - fieldError.getDefaultMessage()); + fieldError.getField()); } public void addValidationErrors(List fieldErrors) { @@ -93,14 +84,20 @@ public void addValidationError(List globalErrors) { * @param cv the ConstraintViolation */ private void addValidationError(ConstraintViolation cv) { - this.addValidationError( + this.addValidationError1( cv.getRootBeanClass().getSimpleName(), - "", - cv.getInvalidValue(), - cv.getMessage()); + ""); } public void addValidationErrors(Set> constraintViolations) { constraintViolations.forEach(this::addValidationError); } + + public String getDebugMessage() { + return debugMessage; + } + + public void setDebugMessage(String debugMessage) { + this.debugMessage = debugMessage; + } } \ No newline at end of file diff --git a/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiValidationError.java b/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiValidationError.java index b9e53d5..9d52688 100644 --- a/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiValidationError.java +++ b/mod42/ClienteServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiValidationError.java @@ -12,8 +12,68 @@ public class ApiValidationError extends ApiSubError { private String field; private Object rejectedValue; private String message; + + - ApiValidationError(String object, String message) { + public ApiValidationError(String object, String field, Object rejectedValue, String message) { + super(); + this.object = object; + this.field = field; + this.rejectedValue = rejectedValue; + this.message = message; + } + + + + public String getObject() { + return object; + } + + + + public void setObject(String object) { + this.object = object; + } + + + + public String getField() { + return field; + } + + + + public void setField(String field) { + this.field = field; + } + + + + public Object getRejectedValue() { + return rejectedValue; + } + + + + public void setRejectedValue(Object rejectedValue) { + this.rejectedValue = rejectedValue; + } + + + + public String getMessage() { + return message; + } + + + + public void setMessage(String message) { + this.message = message; + } + + + + ApiValidationError(String object, String message) { this.object = object; this.message = message; } diff --git a/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/config/ValidatorConfig.java b/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/config/ValidatorConfig.java index 61ddeb5..6ccc6c6 100644 --- a/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/config/ValidatorConfig.java +++ b/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/config/ValidatorConfig.java @@ -5,10 +5,8 @@ import javax.validation.Validator; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; /** @@ -17,12 +15,12 @@ */ @Configuration public class ValidatorConfig { - + // @Autowired // ResourceBundleMessageSource messageSource; - @Bean - public Validator validatorFactory () { + @Bean + Validator validatorFactory() { LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean(); // bean.setValidationMessageSource(messageSource); return bean; diff --git a/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/domain/Produto.java b/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/domain/Produto.java index 48fa225..0d0a0c1 100644 --- a/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/domain/Produto.java +++ b/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/domain/Produto.java @@ -41,5 +41,12 @@ public class Produto { @NotNull private BigDecimal valor; - -} + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} \ No newline at end of file diff --git a/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java b/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java index 0cc021b..7ecf6f6 100644 --- a/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java +++ b/mod42/VendaServiceAlunos/src/main/java/br/com/rpires/vendas/online/errorhandling/ApiError.java @@ -58,7 +58,7 @@ private void addSubError(ApiSubError subError) { } private void addValidationError(String object, String field, Object rejectedValue, String message) { - addSubError(new ApiValidationError(object, field, rejectedValue, message)); + addSubError(new ApiValidationError(object, field)); } private void addValidationError(String object, String message) { diff --git a/mod42/exercise_mod42/ClientServiceTest/.gitignore b/mod42/exercise_mod42/ClientServiceTest/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/mod42/exercise_mod42/ClientServiceTest/mvnw b/mod42/exercise_mod42/ClientServiceTest/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mod42/exercise_mod42/ClientServiceTest/mvnw.cmd b/mod42/exercise_mod42/ClientServiceTest/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/mod42/exercise_mod42/ClientServiceTest/pom.xml b/mod42/exercise_mod42/ClientServiceTest/pom.xml new file mode 100644 index 0000000..a538719 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/pom.xml @@ -0,0 +1,97 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.2 + + + com.example + ClientServiceTest + 0.0.1-SNAPSHOT + ClientServiceTest + Demo project for Spring Boot + + 17 + 2023.0.0 + + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-starter-config + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + com.example + ProductServiceTest + 0.0.1-SNAPSHOT + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/com/example/ClientServiceTest/ClientServiceTestApplication.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/com/example/ClientServiceTest/ClientServiceTestApplication.java new file mode 100644 index 0000000..cf3eff7 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/com/example/ClientServiceTest/ClientServiceTestApplication.java @@ -0,0 +1,13 @@ +package com.example.ClientServiceTest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ClientServiceTestApplication { + + public static void main(String[] args) { + SpringApplication.run(ClientServiceTestApplication.class, args); + } + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/javax/validation/ConstraintViolationException.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/javax/validation/ConstraintViolationException.java new file mode 100644 index 0000000..e37db90 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/javax/validation/ConstraintViolationException.java @@ -0,0 +1,14 @@ +package javax.validation; + +import java.util.List; + +import org.springframework.validation.FieldError; + +public class ConstraintViolationException { + + public List getConstraintViolations() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/ClienteServiceAlunosApplication.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/ClienteServiceAlunosApplication.java new file mode 100644 index 0000000..2d7b2ee --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/ClienteServiceAlunosApplication.java @@ -0,0 +1,18 @@ +package online; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.context.config.annotation.RefreshScope; + +@SpringBootApplication +@RefreshScope +@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) +public class ClienteServiceAlunosApplication { + + public static void main(String[] args) { + SpringApplication.run(ClienteServiceAlunosApplication.class, args); + } + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/domain/Cliente.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/domain/Cliente.java new file mode 100644 index 0000000..465da2a --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/domain/Cliente.java @@ -0,0 +1,77 @@ +/** + * + */ +package online.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.index.Indexed; +import org.springframework.data.mongodb.core.mapping.Document; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** + * @author rodrigo.pires + * + */ +@Document(collection = "cliente") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "Cliente", description = "Cliente") +public class Cliente { + + @Id + @Schema(description = "Identificador único") + private String id; + + @NotNull + @Size(min = 1, max = 50) + @Schema(description = "Nome", minLength = 1, maxLength = 50, nullable = false) + private String nome; + + @NotNull + @Indexed(unique = true, background = true) + @Schema(description = "CPF", nullable = false) + private Long cpf; + + @NotNull + @Schema(description = "Telefone", nullable = false) + private Long tel; + + @NotNull + @Size(min = 1, max = 50) + @Indexed(unique = true, background = true) + @Schema(description = "Email", minLength = 1, maxLength = 50, nullable = false) + @Pattern(regexp = ".+@.+\\..+", message = "Email inválido") + private String email; + + @NotNull + @Size(min = 1, max = 50) + @Schema(description = "Endereço", minLength = 1, maxLength = 50, nullable = false) + private String end; + + @NotNull + @Schema(description = "Numero residencial", nullable = false) + private Integer numero; + + @NotNull + @Size(min = 1, max = 50) + @Schema(description = "Cidade", minLength = 1, maxLength = 50, nullable = false) + private String cidade; + + @NotNull + @Size(min = 1, max = 50) + @Schema(description = "Estado", minLength = 1, maxLength = 50, nullable = false) + private String estado; + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiError.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiError.java new file mode 100644 index 0000000..67fd92b --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiError.java @@ -0,0 +1,107 @@ +package online.errorhandling; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import org.springframework.http.HttpStatus; +import org.springframework.validation.FieldError; +import org.springframework.validation.ObjectError; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import jakarta.validation.ConstraintViolation; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ApiError { + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss") + private LocalDateTime timestamp; + private String debugMessage; + private List subErrors; + + private ApiError() { + timestamp = LocalDateTime.now(); + } + + public ApiError(HttpStatus status) { + this(); + } + + public ApiError(HttpStatus status, Throwable ex) { + this(); + this.setDebugMessage(ex.getLocalizedMessage()); + } + + public ApiError(HttpStatus status, String message, Throwable ex) { + this(); + this.setDebugMessage(ex.getLocalizedMessage()); + } + + private void addSubError(ApiSubError subError) { + if (subErrors == null) { + subErrors = new ArrayList<>(); + } + subErrors.add(subError); + } + + private void addValidationError1(String object, String field) { + addSubError(new ApiValidationError(object, field)); + } + + private void addValidationError(String object, String message) { + addSubError(new ApiValidationError(object, message)); + } + + private void addValidationError(FieldError fieldError) { + this.addValidationError1( + fieldError.getObjectName(), + fieldError.getField()); + } + + public void addValidationErrors(List fieldErrors) { + fieldErrors.forEach(this::addValidationError); + } + + private void addValidationError(ObjectError objectError) { + this.addValidationError( + objectError.getObjectName(), + objectError.getDefaultMessage()); + } + + public void addValidationError(List globalErrors) { + globalErrors.forEach(this::addValidationError); + } + + /** + * Utility method for adding error of ConstraintViolation. Usually when a @Validated validation fails. + * + * @param cv the ConstraintViolation + */ + private void addValidationError(ConstraintViolation cv) { + this.addValidationError1( + cv.getRootBeanClass().getSimpleName(), + ""); + } + + public void addValidationErrors(Set> constraintViolations) { + constraintViolations.forEach(this::addValidationError); + } + + public String getDebugMessage() { + return debugMessage; + } + + public void setDebugMessage(String debugMessage) { + this.debugMessage = debugMessage; + } + + public Object getStatus() { + // TODO Auto-generated method stub + return null; + } +} \ No newline at end of file diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiSubError.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiSubError.java new file mode 100644 index 0000000..064c5d7 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiSubError.java @@ -0,0 +1,4 @@ +package online.errorhandling; + +abstract class ApiSubError { +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiValidationError.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiValidationError.java new file mode 100644 index 0000000..b887fcf --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/errorhandling/ApiValidationError.java @@ -0,0 +1,80 @@ +package online.errorhandling; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +@AllArgsConstructor +public class ApiValidationError extends ApiSubError { + private String object; + private String field; + private Object rejectedValue; + private String message; + + + + public ApiValidationError(String object, String field, Object rejectedValue, String message) { + super(); + this.object = object; + this.field = field; + this.rejectedValue = rejectedValue; + this.message = message; + } + + + + public String getObject() { + return object; + } + + + + public void setObject(String object) { + this.object = object; + } + + + + public String getField() { + return field; + } + + + + public void setField(String field) { + this.field = field; + } + + + + public Object getRejectedValue() { + return rejectedValue; + } + + + + public void setRejectedValue(Object rejectedValue) { + this.rejectedValue = rejectedValue; + } + + + + public String getMessage() { + return message; + } + + + + public void setMessage(String message) { + this.message = message; + } + + + + ApiValidationError(String object, String message) { + this.object = object; + this.message = message; + } +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/BadRequestException.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/BadRequestException.java new file mode 100644 index 0000000..68860b0 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/BadRequestException.java @@ -0,0 +1,11 @@ +package online.exception; + +public class BadRequestException extends RuntimeException { + + private static final long serialVersionUID = -7339546357706827674L; + + public BadRequestException(String message) { + super(message); + } + +} \ No newline at end of file diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/EntityNotFoundException.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/EntityNotFoundException.java new file mode 100644 index 0000000..d0db8f5 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/EntityNotFoundException.java @@ -0,0 +1,33 @@ +package online.exception; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.IntStream; + +import org.springframework.util.StringUtils; + +public class EntityNotFoundException extends RuntimeException { + + private static final long serialVersionUID = -5576150444545521612L; + + public EntityNotFoundException(Class clazz, String... searchParamsMap) { + super(EntityNotFoundException.generateMessage(clazz.getSimpleName(), toMap(String.class, String.class, searchParamsMap))); + } + + private static String generateMessage(String entity, Map searchParams) { + return StringUtils.capitalize(entity) + + " was not found for parameters " + + searchParams; + } + + private static Map toMap( + Class keyType, Class valueType, Object... entries) { + if (entries.length % 2 == 1) + throw new IllegalArgumentException("Invalid entries"); + return IntStream.range(0, entries.length / 2).map(i -> i * 2) + .collect(HashMap::new, + (m, i) -> m.put(keyType.cast(entries[i]), valueType.cast(entries[i + 1])), + Map::putAll); + } + +} \ No newline at end of file diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/RestExceptionHandler.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/RestExceptionHandler.java new file mode 100644 index 0000000..584d7be --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/exception/RestExceptionHandler.java @@ -0,0 +1,185 @@ +/** + * + */ +package online.exception; + +import static org.springframework.http.HttpStatus.BAD_REQUEST; +import static org.springframework.http.HttpStatus.NOT_FOUND; + +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.dao.DuplicateKeyException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.BindException; +import org.springframework.web.HttpMediaTypeNotSupportedException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingServletRequestParameterException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.client.HttpClientErrorException.BadRequest; +import org.springframework.web.client.HttpClientErrorException.NotFound; +import org.springframework.web.client.HttpClientErrorException.UnprocessableEntity; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +import lombok.extern.slf4j.Slf4j; +import online.errorhandling.ApiError; + +/** + * @author rodrigo.pires + * + */ +@Order(Ordered.HIGHEST_PRECEDENCE) +@ControllerAdvice +@Slf4j +public class RestExceptionHandler extends ResponseEntityExceptionHandler { + + /** + * Handle MissingServletRequestParameterException. Triggered when a 'required' request parameter is missing. + * + * @param ex MissingServletRequestParameterException + * @param headers HttpHeaders + * @param status HttpStatus + * @param request WebRequest + * @return the ApiError object + */ + protected ResponseEntity handleMissingServletRequestParameter( + MissingServletRequestParameterException ex, HttpHeaders headers, + HttpStatus status, WebRequest request) { + String error = ex.getParameterName() + " parameter is missing"; + ApiError apiError = new ApiError(BAD_REQUEST); + apiError.setDebugMessage(error); + return buildResponseEntity(apiError); + } + + + /** + * Handle HttpMediaTypeNotSupportedException. This one triggers when JSON is invalid as well. + * + * @param ex HttpMediaTypeNotSupportedException + * @param headers HttpHeaders + * @param status HttpStatus + * @param request WebRequest + * @return the ApiError object + */ + protected ResponseEntity handleHttpMediaTypeNotSupported( + HttpMediaTypeNotSupportedException ex, + HttpHeaders headers, + HttpStatus status, + WebRequest request) { + StringBuilder builder = new StringBuilder(); + builder.append(ex.getContentType()); + builder.append(" media type is not supported. Supported media types are "); + ex.getSupportedMediaTypes().forEach(t -> builder.append(t).append(", ")); + ApiError apiError = new ApiError(HttpStatus.UNSUPPORTED_MEDIA_TYPE); + apiError.setDebugMessage(builder.substring(0, builder.length() - 2)); + return buildResponseEntity(apiError); + } + + /** + * Handle MethodArgumentNotValidException. Triggered when an object fails @Valid validation. + * + * @param ex the MethodArgumentNotValidException that is thrown when @Valid validation fails + * @param headers HttpHeaders + * @param status HttpStatus + * @param request WebRequest + * @return the ApiError object + */ + @Override + protected ResponseEntity handleMethodArgumentNotValid( + MethodArgumentNotValidException ex, + HttpHeaders headers, + HttpStatus status, + WebRequest request) { + ApiError apiError = new ApiError(BAD_REQUEST); + apiError.setDebugMessage("Validation error"); + apiError.addValidationErrors(ex.getBindingResult().getFieldErrors()); + apiError.addValidationError(ex.getBindingResult().getGlobalErrors()); + return buildResponseEntity(apiError); + } + + @Override + protected ResponseEntity handleBindException(BindException ex, HttpHeaders headers, HttpStatus status, + WebRequest request) { + ApiError apiError = new ApiError(BAD_REQUEST); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + + /** + * Handles javax.validation.ConstraintViolationException. Thrown when @Validated fails. + * + * @param ex the ConstraintViolationException + * @return the ApiError object + */ + @ExceptionHandler(javax.validation.ConstraintViolationException.class) + protected ResponseEntity handleConstraintViolation( + javax.validation.ConstraintViolationException ex) { + ApiError apiError = new ApiError(BAD_REQUEST); + apiError.setDebugMessage("Validation error"); + apiError.addValidationErrors(ex.getConstraintViolations()); + return buildResponseEntity(apiError); + } + + /** + * Handles EntityNotFoundException. Created to encapsulate errors with more detail than javax.persistence.EntityNotFoundException. + * + * @param ex the EntityNotFoundException + * @return the ApiError object + */ + @ExceptionHandler(EntityNotFoundException.class) + protected ResponseEntity handleEntityNotFound(EntityNotFoundException ex) { + ApiError apiError = new ApiError(NOT_FOUND); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + @ExceptionHandler(BadRequestException.class) + protected ResponseEntity handleBadRequest(BadRequestException ex) { + ApiError apiError = new ApiError(BAD_REQUEST); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + @ExceptionHandler(UnsupportedOperationException.class) + protected ResponseEntity handleUnsupportedOperationException(UnsupportedOperationException ex) { + ApiError apiError = new ApiError(HttpStatus.UNPROCESSABLE_ENTITY); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + @ExceptionHandler(DuplicateKeyException.class) + protected ResponseEntity handleDuplicateKeyException(DuplicateKeyException ex) { + ApiError apiError = new ApiError(BAD_REQUEST); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + @ExceptionHandler(NotFound.class) + protected ResponseEntity handleNotFound(NotFound ex) { + ApiError apiError = new ApiError(NOT_FOUND); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + @ExceptionHandler(BadRequest.class) + protected ResponseEntity handleBadRequest(BadRequest ex) { + ApiError apiError = new ApiError(BAD_REQUEST); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + @ExceptionHandler(UnprocessableEntity.class) + protected ResponseEntity handleUnprocessableEntity(UnprocessableEntity ex) { + ApiError apiError = new ApiError(HttpStatus.UNPROCESSABLE_ENTITY); + apiError.setDebugMessage(ex.getMessage()); + return buildResponseEntity(apiError); + } + + private ResponseEntity buildResponseEntity(ApiError apiError) { + return new ResponseEntity<>(apiError, apiError.getStatus()); + } +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/reources/ClienteResource.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/reources/ClienteResource.java new file mode 100644 index 0000000..fc8857c --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/reources/ClienteResource.java @@ -0,0 +1,84 @@ +/** + * + */ +package br.com.rpires.vendas.online.reources; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +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.RestController; + +import br.com.rpires.vendas.online.domain.Cliente; +import br.com.rpires.vendas.online.usecase.BuscaCliente; +import br.com.rpires.vendas.online.usecase.CadastroCliente; +import io.swagger.v3.oas.annotations.Operation; + +/** + * @author rodrigo.pires + * + */ +@RestController +@RequestMapping(value = "/cliente") +public class ClienteResource { + + private BuscaCliente buscaCliente; + private CadastroCliente cadastroCliente; + + @Autowired + public ClienteResource(BuscaCliente buscaCliente, + CadastroCliente cadastroCliente) { + this.buscaCliente = buscaCliente; + this.cadastroCliente = cadastroCliente; + } + + @GetMapping + public ResponseEntity> buscar(Pageable pageable) { + return ResponseEntity.ok(buscaCliente.buscar(pageable)); + } + + @GetMapping(value = "/{id}") + @Operation(summary = "Busca um cliente pelo id") + public ResponseEntity buscarPorId(@PathVariable(value = "id", required = true) String id) { + return ResponseEntity.ok(buscaCliente.buscarPorId(id)); + } + + @GetMapping(value = "isCadastrado/{id}") + public ResponseEntity isCadastrado(@PathVariable(value = "id", required = true) String id) { + return ResponseEntity.ok(buscaCliente.isCadastrado(id)); + } + + @PostMapping + public ResponseEntity cadastar(@RequestBody @Valid Cliente cliente) { + return ResponseEntity.ok(cadastroCliente.cadastrar(cliente)); + } + + @GetMapping(value = "/cpf/{cpf}") + @Operation(summary = "Busca um cliente pelo cpf") + public ResponseEntity buscarPorCpf(@PathVariable(value = "cpf", required = true) Long cpf) { + return ResponseEntity.ok(buscaCliente.buscarPorCpf(cpf)); + } + + @PutMapping + @Operation(summary = "Atualiza um cliente") + public ResponseEntity atualizar(@RequestBody @Valid Cliente cliente) { + return ResponseEntity.ok(cadastroCliente.atualizar(cliente)); + } + + @DeleteMapping(value = "/{id}") + @Operation(summary = "Remove um cliente pelo seu identificador único") + public ResponseEntity remover(@PathVariable(value = "id") String id) { + cadastroCliente.remover(id); + return ResponseEntity.ok("Removido com sucesso"); + } + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/repository/IClienteRepository.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/repository/IClienteRepository.java new file mode 100644 index 0000000..45c3236 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/repository/IClienteRepository.java @@ -0,0 +1,21 @@ +/** + * + */ +package br.com.rpires.vendas.online.repository; + +import java.util.Optional; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import br.com.rpires.vendas.online.domain.Cliente; + +/** + * @author rodrigo.pires + * + */ +@Repository +public interface IClienteRepository extends MongoRepository{ + + Optional findByCpf(Long cpf); +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/usecase/BuscaCliente.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/usecase/BuscaCliente.java new file mode 100644 index 0000000..a89bfe0 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/usecase/BuscaCliente.java @@ -0,0 +1,51 @@ +/** + * + */ +package br.com.rpires.vendas.online.usecase; + +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import br.com.rpires.vendas.online.domain.Cliente; +import br.com.rpires.vendas.online.exception.EntityNotFoundException; +import br.com.rpires.vendas.online.repository.IClienteRepository; + +/** + * @author rodrigo.pires + * + */ +@Service +public class BuscaCliente { + + private IClienteRepository clienteRepository; + + @Autowired + public BuscaCliente(IClienteRepository clienteRepository) { + this.clienteRepository = clienteRepository; + } + + public Page buscar(Pageable pageable) { + return clienteRepository.findAll(pageable); + } + + public Cliente buscarPorId(String id) { + return clienteRepository.findById(id) + .orElseThrow(() -> new EntityNotFoundException(Cliente.class, "id", id)); + } + + public Boolean isCadastrado(String id) { + Optional cliente = clienteRepository.findById(id); + return cliente.isPresent() ? true : false; + } + + public Cliente buscarPorCpf(Long cpf) { + return clienteRepository.findByCpf(cpf) + .orElseThrow(() -> new EntityNotFoundException(Cliente.class, "cpf", String.valueOf(cpf))); + } + + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/usecase/CadastroCliente.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/usecase/CadastroCliente.java new file mode 100644 index 0000000..91d3175 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/online/usecase/CadastroCliente.java @@ -0,0 +1,40 @@ +/** + * + */ +package br.com.rpires.vendas.online.usecase; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.rpires.vendas.online.domain.Cliente; +import br.com.rpires.vendas.online.repository.IClienteRepository; + +/** + * @author rodrigo.pires + * + */ +@Service +public class CadastroCliente { + + private IClienteRepository clienteRepository; + + @Autowired + public CadastroCliente(IClienteRepository clienteRepository) { + this.clienteRepository = clienteRepository; + } + + public Cliente cadastrar(@Valid Cliente cliente) { + return this.clienteRepository.insert(cliente); + } + + public Cliente atualizar(@Valid Cliente cliente) { + return this.clienteRepository.save(cliente); + } + + public void remover(String id) { + this.clienteRepository.deleteById(id); + } + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/MongoConfig.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/MongoConfig.java new file mode 100644 index 0000000..211f715 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/MongoConfig.java @@ -0,0 +1,17 @@ +/** + * + */ +package br.com.rpires.vendas.onlineconfig; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; + +/** + * @author rodrigo.pires + * + */ +@Configuration +@EnableMongoRepositories(basePackages = "br.com.rpires.vendas.online.repository") +public class MongoConfig { + +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/OpenAPIConfig.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/OpenAPIConfig.java new file mode 100644 index 0000000..7bb55da --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/OpenAPIConfig.java @@ -0,0 +1,33 @@ +/** + * + */ +package br.com.rpires.vendas.onlineconfig; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; + +/** + * @author rodrigo.pires + * + */ +@Configuration +public class OpenAPIConfig { + + @Bean + public OpenAPI customOpenAPI(@Value("${application-version}") String appVersion) { + return new OpenAPI() + .info(new Info() + .title("Serviço de clientes") + .version(appVersion) + .description("Serviço para gerenciamento de clientes") + .termsOfService("http://swagger.io/terms/") + .license(new License().name("Apache 2.0").url("http://springdoc.org")) + .contact(new Contact().name("Rodrigo Pires").email("rodrigo@rodrigo.com"))); + } +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/ValidatorConfig.java b/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/ValidatorConfig.java new file mode 100644 index 0000000..79b2af0 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/java/onlineconfig/ValidatorConfig.java @@ -0,0 +1,30 @@ +/** + * + */ +package br.com.rpires.vendas.onlineconfig; + +import javax.validation.Validator; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; + +/** + * @author rodrigo.pires + * + */ +@Configuration +public class ValidatorConfig { + +// @Autowired +// ResourceBundleMessageSource messageSource; + + @Bean + public Validator validatorFactory () { + LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean(); +// bean.setValidationMessageSource(messageSource); + return bean; + } +} diff --git a/mod42/exercise_mod42/ClientServiceTest/src/main/resources/application.properties b/mod42/exercise_mod42/ClientServiceTest/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/mod42/exercise_mod42/ClientServiceTest/src/test/java/com/example/ClientServiceTest/ClientServiceTestApplicationTests.java b/mod42/exercise_mod42/ClientServiceTest/src/test/java/com/example/ClientServiceTest/ClientServiceTestApplicationTests.java new file mode 100644 index 0000000..7589736 --- /dev/null +++ b/mod42/exercise_mod42/ClientServiceTest/src/test/java/com/example/ClientServiceTest/ClientServiceTestApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.ClientServiceTest; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ClientServiceTestApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/mod42/exercise_mod42/ConfigServiceTest/.gitignore b/mod42/exercise_mod42/ConfigServiceTest/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/mod42/exercise_mod42/ConfigServiceTest/mvnw b/mod42/exercise_mod42/ConfigServiceTest/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mod42/exercise_mod42/ConfigServiceTest/mvnw.cmd b/mod42/exercise_mod42/ConfigServiceTest/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/mod42/exercise_mod42/ConfigServiceTest/pom.xml b/mod42/exercise_mod42/ConfigServiceTest/pom.xml new file mode 100644 index 0000000..bc2ea29 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.2 + + + com.example + ConfigServiceTest + 0.0.1-SNAPSHOT + ConfigServiceTest + Demo project for Spring Boot + + 17 + 2023.0.0 + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-config-server + + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/mod42/exercise_mod42/ConfigServiceTest/src/main/java/META-INF/MANIFEST.MF b/mod42/exercise_mod42/ConfigServiceTest/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/mod42/exercise_mod42/ConfigServiceTest/src/main/java/com/example/ConfigServiceTest/ConfigServiceTestApplication.java b/mod42/exercise_mod42/ConfigServiceTest/src/main/java/com/example/ConfigServiceTest/ConfigServiceTestApplication.java new file mode 100644 index 0000000..ec27358 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/src/main/java/com/example/ConfigServiceTest/ConfigServiceTestApplication.java @@ -0,0 +1,15 @@ +package com.example.ConfigServiceTest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.config.server.EnableConfigServer; + +@EnableConfigServer +@SpringBootApplication +public class ConfigServiceTestApplication { + + public static void main(String[] args) { + SpringApplication.run(ConfigServiceTestApplication.class, args); + } + +} diff --git a/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/application.properties b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/application.properties new file mode 100644 index 0000000..541c653 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/application.properties @@ -0,0 +1,6 @@ +server.port=8888 +spring.application.name=config-server-alunos +spring.profiles.active=native +spring.cloud.config.server.native.search-locations=classpath:/config +spring.security.user.name=root +spring.security.user.password=root diff --git a/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/cliente-service-alunos.yml b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/cliente-service-alunos.yml new file mode 100644 index 0000000..d7ec207 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/cliente-service-alunos.yml @@ -0,0 +1,15 @@ +server: + port: 8081 + wait-time-in-ms-when-sync-empty: 3000 + +spring: + spring: + profiles: + active: native + data: + mongodb: + uri: mongodb://admin:admin@127.0.0.1:27017/ebac?authSource=admin&retryWrites=true&w=majority + database: cliente + auto-index-creation: true + +application-version: 1.0 diff --git a/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/produto-service-alunos.yml b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/produto-service-alunos.yml new file mode 100644 index 0000000..272841e --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/produto-service-alunos.yml @@ -0,0 +1,13 @@ +server: + port: 8082 + wait-time-in-ms-when-sync-empty: 3000 + +spring: + spring: + profiles: + active: native + data: + mongodb: + uri: mongodb://admin:admin@127.0.0.1:27017/ebac?authSource=admin&retryWrites=true&w=majority + database: produto + auto-index-creation: true diff --git a/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/venda-service-alunos.yml b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/venda-service-alunos.yml new file mode 100644 index 0000000..da5f875 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/src/main/resources/config/venda-service-alunos.yml @@ -0,0 +1,22 @@ +server: + port: 8083 + wait-time-in-ms-when-sync-empty: 3000 + +spring: + spring: + profiles: + active: native + data: + mongodb: + uri: mongodb://admin:admin@127.0.0.1:27017/ebac?authSource=admin&retryWrites=true&w=majority + database: venda + auto-index-creation: true + +application: + produtoService: + url: http://localhost:8082 + endpointConsultarProduto: ${application.produtoService.url}/produto + clienteService: + url: http://localhost:8081 + endpointConsultarCliente: ${application.clienteService.url}/cliente/isCadastrado/{id} +application-version: 2.0 \ No newline at end of file diff --git a/mod42/exercise_mod42/ConfigServiceTest/src/test/java/com/example/ConfigServiceTest/ConfigServiceTestApplicationTests.java b/mod42/exercise_mod42/ConfigServiceTest/src/test/java/com/example/ConfigServiceTest/ConfigServiceTestApplicationTests.java new file mode 100644 index 0000000..cd327b3 --- /dev/null +++ b/mod42/exercise_mod42/ConfigServiceTest/src/test/java/com/example/ConfigServiceTest/ConfigServiceTestApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.ConfigServiceTest; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ConfigServiceTestApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/mod42/exercise_mod42/ProductServiceTest/.gitignore b/mod42/exercise_mod42/ProductServiceTest/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/mod42/exercise_mod42/ProductServiceTest/mvnw b/mod42/exercise_mod42/ProductServiceTest/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mod42/exercise_mod42/ProductServiceTest/mvnw.cmd b/mod42/exercise_mod42/ProductServiceTest/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/mod42/exercise_mod42/ProductServiceTest/pom.xml b/mod42/exercise_mod42/ProductServiceTest/pom.xml new file mode 100644 index 0000000..a589c6d --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/pom.xml @@ -0,0 +1,96 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.2 + + + com.example + ProductServiceTest + 0.0.1-SNAPSHOT + ProductServiceTest + Demo project for Spring Boot + + 17 + 2023.0.0 + + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-starter-config + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springdoc + springdoc-openapi-ui + 1.6.4 + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/mod42/exercise_mod42/ProductServiceTest/src/main/java/META-INF/MANIFEST.MF b/mod42/exercise_mod42/ProductServiceTest/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/mod42/exercise_mod42/ProductServiceTest/src/main/java/com/example/ProductServiceTest/ProductServiceTestApplication.java b/mod42/exercise_mod42/ProductServiceTest/src/main/java/com/example/ProductServiceTest/ProductServiceTestApplication.java new file mode 100644 index 0000000..9d5da15 --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/src/main/java/com/example/ProductServiceTest/ProductServiceTestApplication.java @@ -0,0 +1,13 @@ +package com.example.ProductServiceTest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ProductServiceTestApplication { + + public static void main(String[] args) { + SpringApplication.run(ProductServiceTestApplication.class, args); + } + +} diff --git a/mod42/exercise_mod42/ProductServiceTest/src/main/resources/application.properties b/mod42/exercise_mod42/ProductServiceTest/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/mod42/exercise_mod42/ProductServiceTest/src/test/java/com/example/ProductServiceTest/ProductServiceTestApplicationTests.java b/mod42/exercise_mod42/ProductServiceTest/src/test/java/com/example/ProductServiceTest/ProductServiceTestApplicationTests.java new file mode 100644 index 0000000..a7d623d --- /dev/null +++ b/mod42/exercise_mod42/ProductServiceTest/src/test/java/com/example/ProductServiceTest/ProductServiceTestApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.ProductServiceTest; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ProductServiceTestApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/mod6/ProjetoVersaoEstruturada/src/br/com/rpires/Programa1.java b/mod6/ProjetoVersaoEstruturada/src/br/com/rpires/Programa1.java index 3dcf05a..0afb27b 100644 --- a/mod6/ProjetoVersaoEstruturada/src/br/com/rpires/Programa1.java +++ b/mod6/ProjetoVersaoEstruturada/src/br/com/rpires/Programa1.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Programa1 { diff --git a/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/ItemVenda.java b/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/ItemVenda.java index d0a5868..74f3641 100644 --- a/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/ItemVenda.java +++ b/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/ItemVenda.java @@ -6,9 +6,9 @@ public class ItemVenda { private int quantidade; - private Produto produto; + private Produto_4 produto; - public ItemVenda(int quantidade, Produto produto) { + public ItemVenda(int quantidade, Produto_4 produto) { this.quantidade = quantidade; this.produto = produto; } @@ -21,11 +21,11 @@ public void setQuantidade(int quantidade) { this.quantidade = quantidade; } - public Produto getProduto() { + public Produto_4 getProduto() { return produto; } - public void setProduto(Produto produto) { + public void setProduto(Produto_4 produto) { this.produto = produto; } diff --git a/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Pedido.java b/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Pedido.java index e9858fe..ebad89e 100644 --- a/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Pedido.java +++ b/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Pedido.java @@ -1,25 +1,27 @@ package br.com.rpires.domain; +import java.math.BigDecimal; + /** * @author rodrigo.pires */ public class Pedido { - private Cliente cliente; - private Vendedor vendedor; - private ItemVenda[] itens; + private Cliente_2 cliente; + private final Vendedor vendedor; + private final ItemVenda[] itens; - public Pedido(Cliente cliente, Vendedor vendedor, ItemVenda[] itens) { + public Pedido(Cliente_2 cliente, Vendedor vendedor, ItemVenda[] itens) { this.cliente = cliente; this.vendedor = vendedor; this.itens = itens; } - public Cliente getCliente() { + public Cliente_2 getCliente() { return cliente; } - public void setCliente(Cliente cliente) { + public void setCliente(Cliente_2 cliente) { this.cliente = cliente; } @@ -27,18 +29,10 @@ public Vendedor getVendedor() { return vendedor; } - public void setVendedor(Vendedor vendedor) { - this.vendedor = vendedor; - } - public ItemVenda[] getItens() { return itens; } - public void setItens(ItemVenda[] itens) { - this.itens = itens; - } - public float calcularValorTotalPedido() { float valorTotal = 0; for (ItemVenda item : itens) { @@ -55,9 +49,9 @@ public void realizarVenda() { // Remove os produtos vendidos do estoque: for (ItemVenda itemVenda : getItens()) { - Produto produto = itemVenda.getProduto(); + Produto_4 produto = itemVenda.getProduto(); String nomeProduto = produto.getNome(); - float valorProduto = produto.getValor(); + BigDecimal valorProduto = produto.getValor(); int estoqueProduto = produto.getEstoque(); int qtdeItem = itemVenda.getQuantidade(); float totalItem = itemVenda.calcularValorTotalItem(); diff --git a/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Programa1.java b/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Programa1.java index b75ffb2..b88fa42 100644 --- a/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Programa1.java +++ b/mod6/ProjetoVersaoOO/src/br/com/rpires/domain/Programa1.java @@ -28,47 +28,46 @@ private static List criarPedidos() { } private static Pedido criarPedido1() { - Produto produtoMesa = cadastrarProduto(1, "Mesa", 10, 500); + Produto_4 produtoMesa = cadastrarProduto(1, "Mesa", 10, 500); ItemVenda[] item1 = {new ItemVenda(1, produtoMesa)}; - Cliente cliente1 = cadastrarCliente(1,"João", "Rua X, 100"); - Vendedor vendedor1 = cadastrarVendedor(1, "Vendedor 1", 0.1f); - Pedido pedido = new Pedido(cliente1, vendedor1, item1); - return pedido; + Cliente_2 cliente1 = cadastrarCliente(1,"João", "Rua X, 100"); + Vendedor vendedor1 = cadastrarVendedor(1, "Vendedor 1"); + return new Pedido(cliente1, vendedor1, item1); } private static Pedido criarPedido2() { - Produto produtoCadeira = cadastrarProduto(2, "Cadeira", 20, 150); - Cliente cliente2 = cadastrarCliente(2,"Carlos", "Rua Y, 200"); - Vendedor vendedor2 = cadastrarVendedor(2, "Vendedor 2", 0.1f); + Produto_4 produtoCadeira = cadastrarProduto(2, "Cadeira", 20, 150); + Cliente_2 cliente2 = cadastrarCliente(2,"Carlos", "Rua Y, 200"); + Vendedor vendedor2 = cadastrarVendedor(2, "Vendedor 2"); ItemVenda[] item2 = {new ItemVenda(2, produtoCadeira)}; return new Pedido(cliente2, vendedor2, item2); } private static Pedido criarPedido3() { - Produto produtoFogao = cadastrarProduto(3, "Fogão", 5, 1000); - Cliente cliente3 = cadastrarCliente(3,"Carina", "Rua Z, 400"); - Vendedor vendedor3 = cadastrarVendedor(3, "Vendedor 3", 0.1f); + Produto_4 produtoFogao = cadastrarProduto(3, "Fogão", 5, 1000); + Cliente_2 cliente3 = cadastrarCliente(3,"Carina", "Rua Z, 400"); + Vendedor vendedor3 = cadastrarVendedor(3, "Vendedor 3"); ItemVenda[] item3 = {new ItemVenda(3, produtoFogao)}; return new Pedido(cliente3, vendedor3, item3); } private static Pedido criarPedido4() { - Produto produtoSofa = cadastrarProduto(4, "Sofá", 5, 2000); - Cliente cliente4 = cadastrarCliente(4,"Paula", "Rua A, 500"); - Vendedor vendedor4 = cadastrarVendedor(4, "Vendedor 4", 0.1f); + Produto_4 produtoSofa = cadastrarProduto(4, "Sofá", 5, 2000); + Cliente_2 cliente4 = cadastrarCliente(4,"Paula", "Rua A, 500"); + Vendedor vendedor4 = cadastrarVendedor(4, "Vendedor 4"); ItemVenda[] item4 = {new ItemVenda(4, produtoSofa)}; return new Pedido(cliente4, vendedor4, item4); } - private static Vendedor cadastrarVendedor(int codigo, String nome, float percentualComissao) { - return new Vendedor(codigo, nome, percentualComissao); + private static Vendedor cadastrarVendedor(int codigo, String nome) { + return new Vendedor(codigo, nome, (float) 0.1); } - private static Cliente cadastrarCliente(int codigo, String nome, String endereco) { - return new Cliente(codigo,nome, endereco); + private static Cliente_2 cadastrarCliente(int codigo, String nome, String endereco) { + return new Cliente_2(codigo,nome, endereco); } - private static Produto cadastrarProduto(int codigo, String nome, int estoque, float valor) { - return new Produto(codigo, nome, estoque, valor); + private static Produto_4 cadastrarProduto(int codigo, String nome, int estoque, float valor) { + return new Produto_4(codigo, nome, estoque, valor); } } diff --git a/mod7/.gitignore b/mod7/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/mod7/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/mod7/ExemplosMod7/src/Exercise_module7/racingParticles_application.java b/mod7/ExemplosMod7/src/Exercise_module7/racingParticles_application.java new file mode 100644 index 0000000..4d22bb0 --- /dev/null +++ b/mod7/ExemplosMod7/src/Exercise_module7/racingParticles_application.java @@ -0,0 +1,65 @@ +package Exercise_module7; + +import java.util.Locale; +import java.util.Scanner; + +import util.racingParticles_mod7; + +/* +* Author: Steve Vaz +*/ + +public class racingParticles_application { + + public static void main(String[] args) { + + Locale.setDefault(Locale.US); + Scanner sc = new Scanner(System.in); + + racingParticles_mod7 values = new racingParticles_mod7(); + + // Informing the user to enter the particle velocity value. + System.out.println("Digite a velocidade da primeira partícula (em metros por segundo m/s): "); + + // The user enters the value of particleVelocity1 + values.particleVelocity1 = Double.valueOf(sc.nextDouble()); + + // Another instruction. + System.out.println("Digite a velocidade da segunda partícula (em metros por segundo m/s):"); + + // The user enters the value of the velocity of the particle2. + values.particleVelocity2 = Double.valueOf(sc.nextDouble()); + + // Another instruction. + System.out.println("Informe o tempo da primeira particula em (metros por segundo m/s): "); + + // The user enters the value of the time in which the velocity of particle1 travels + values.time1 = Double.valueOf(sc.nextDouble()); + + // Another instruction. + System.out.println("Informe o tempo da segunda particula em (metros por segundo m/s): "); + + // The user enters the value of the time in which the velocity of particle2 travels + values.time2 = Double.valueOf(sc.nextDouble()); + + // To find out which travels the greatest distance, multiply the speed * time, which gives you the distance between the two. + values.particle1Ofdistance = values.particleVelocity1 * values.time1; + values.particle2Ofdistance = values.particleVelocity2 * values.time2; + + // Condition to know which travels the greatest distance. + if (values.particleVelocity1 > values.particleVelocity2) { + System.out.println("A primeira percorrerá uma distância maior que a segunda."); + } else if (values.particleVelocity2 > values.particleVelocity1) { + System.out.println("A segunda percorrerá uma distância maior que a primeira."); + } else if(values.time1 > values.time2){ + System.out.println("A primeira percorrerá uma distância maior eu um curto espaço de tempo."); + } else if (values.time2 > values.time1) { + System.out.println("A segunda percorrerá uma distância maior em um curto espaço de tempo."); + } else { + System.out.println("Ambos estão percorrendo a mesma distância lado a lado."); + } + + sc.close(); + } + +} diff --git a/mod7/ExemplosMod7/src/br/com/rpires/Cliente.java b/mod7/ExemplosMod7/src/br/com/rpires/Cliente.java index 40c2867..c6db68e 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/Cliente.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/Cliente.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz * * @class br.com.rpires.Cliente * @see br.com.rpires.Venda diff --git a/mod7/ExemplosMod7/src/br/com/rpires/Funcionario.java b/mod7/ExemplosMod7/src/br/com/rpires/Funcionario.java index 863a624..7952aea 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/Funcionario.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/Funcionario.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Funcionario { @@ -10,4 +10,28 @@ public class Funcionario { private String nome; private String endereco; + + public int getCodigo() { + return codigo; + } + + public void setCodigo(int codigo) { + this.codigo = codigo; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public String getEndereco() { + return endereco; + } + + public void setEndereco(String endereco) { + this.endereco = endereco; + } } diff --git a/mod7/ExemplosMod7/src/br/com/rpires/ItemVenda.java b/mod7/ExemplosMod7/src/br/com/rpires/ItemVenda.java index f0eebda..2486b1b 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/ItemVenda.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/ItemVenda.java @@ -3,9 +3,17 @@ /** * Classe responsável para controlar a quantidade de itens. * - * @author rodrigo.pires + * @author Steve.Vaz */ public class ItemVenda { private int quantidade; + + public int getQuantidade() { + return quantidade; + } + + public void setQuantidade(int quantidade) { + this.quantidade = quantidade; + } } diff --git a/mod7/ExemplosMod7/src/br/com/rpires/PrimeiraClasse.java b/mod7/ExemplosMod7/src/br/com/rpires/PrimeiraClasse.java index 3c89db4..c09c356 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/PrimeiraClasse.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/PrimeiraClasse.java @@ -1,13 +1,16 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class PrimeiraClasse { - public static void main(String args[]) { - System.out.println("Olá Rodrigo"); - Cliente cliente = new Cliente(); + @SuppressWarnings("deprecation") + public void cadastrarEndereco(String[] args) { + + System.out.println("Olá Rodrigo"); + + Cliente cliente = new Cliente(); cliente.cadastrarEndereco("Rua 1"); cliente.setCodigo(1); System.out.println(cliente.getCodigo()); diff --git a/mod7/ExemplosMod7/src/br/com/rpires/Produto.java b/mod7/ExemplosMod7/src/br/com/rpires/Produto.java index 5cb8ec5..88fc1b3 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/Produto.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/Produto.java @@ -1,11 +1,27 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Produto { private int codigo; private String nome; + + public int getCodigo() { + return codigo; + } + + public void setCodigo(int codigo) { + this.codigo = codigo; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } } diff --git a/mod7/ExemplosMod7/src/br/com/rpires/Venda.java b/mod7/ExemplosMod7/src/br/com/rpires/Venda.java index 9f305c8..5f7e74a 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/Venda.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/Venda.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Venda { } diff --git a/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe1.java b/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe1.java index 8661309..a2be5c9 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe1.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe1.java @@ -1,14 +1,14 @@ package br.com.rpires.pacote1; /** - * @author rodrigo.pires + * @author Steve.Vaz * * */ public class Classe1 { - private String prorpiedadePrivada; + private String propriedadePrivada; public String prorpiedadePublica; @@ -20,4 +20,12 @@ public void testeRodrigo() { } + public String getPropriedadePrivada() { + return propriedadePrivada; + } + + public void setPropriedadePrivada(String propriedadePrivada) { + this.propriedadePrivada = propriedadePrivada; + } + } diff --git a/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe2.java b/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe2.java index 71ab82b..3799f26 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe2.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/pacote1/Classe2.java @@ -1,11 +1,11 @@ package br.com.rpires.pacote1; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Classe2 { - private String prorpiedadePrivada; + private String propriedadePrivada; public String propriedadePublica; @@ -13,8 +13,17 @@ public class Classe2 { protected String propriedadeProtected; + public String getPropriedadePrivada() { + return propriedadePrivada; + } + + public void setPropriedadePrivada(String propriedadePrivada) { + this.propriedadePrivada = propriedadePrivada; + } + public static void main(String args[]) { - Classe1 classe1 = new Classe1(); + @SuppressWarnings("unused") + Classe1 classe1 = new Classe1(); //classe1.propriedadeDefaul } diff --git a/mod7/ExemplosMod7/src/br/com/rpires/pacote2/Classe3.java b/mod7/ExemplosMod7/src/br/com/rpires/pacote2/Classe3.java index 47c3a37..257edff 100644 --- a/mod7/ExemplosMod7/src/br/com/rpires/pacote2/Classe3.java +++ b/mod7/ExemplosMod7/src/br/com/rpires/pacote2/Classe3.java @@ -1,14 +1,14 @@ package br.com.rpires.pacote2; + import br.com.rpires.Cliente; import br.com.rpires.ItemVenda; import br.com.rpires.pacote1.Classe1; import br.com.rpires.pacote1.Classe2; -import java.util.Iterator; /** - * @author rodrigo.pires + * @author Steve.Vaz * * */ @@ -19,13 +19,14 @@ public class Classe3 extends Classe2 { * * @param args asdsada */ - public static void main(String args[]) { - Classe1 class1 = new Classe1(); + @SuppressWarnings("deprecation") + public static void main(String args[]) { + new Classe1(); Cliente cliente = new Cliente(); cliente.retornarNomeCliente(); cliente.getValorTotal(); - ItemVenda item = new ItemVenda(); + new ItemVenda(); } diff --git a/mod7/ExemplosMod7/src/util/racingParticles_mod7.java b/mod7/ExemplosMod7/src/util/racingParticles_mod7.java new file mode 100644 index 0000000..6de33be --- /dev/null +++ b/mod7/ExemplosMod7/src/util/racingParticles_mod7.java @@ -0,0 +1,10 @@ +package util; + +public class racingParticles_mod7 { + public double particleVelocity1; + public double particleVelocity2; + public double time1; + public double time2; + public double particle1Ofdistance = particleVelocity1 * time1; + public double particle2Ofdistance = particleVelocity2 * time2; +} diff --git a/mod8/ExemplosMod8/src/br/com/rpires/Exemplo2.java b/mod8/ExemplosMod8/src/br/com/rpires/Exemplo2.java index 55fb7d1..22e16f5 100644 --- a/mod8/ExemplosMod8/src/br/com/rpires/Exemplo2.java +++ b/mod8/ExemplosMod8/src/br/com/rpires/Exemplo2.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Exemplo2 { diff --git a/mod8/ExemplosMod8/src/br/com/rpires/Exemplos.java b/mod8/ExemplosMod8/src/br/com/rpires/Exemplos.java index 6a58db4..2e1537c 100644 --- a/mod8/ExemplosMod8/src/br/com/rpires/Exemplos.java +++ b/mod8/ExemplosMod8/src/br/com/rpires/Exemplos.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Exemplos { diff --git a/mod8/ExemplosMod8/src/br/com/rpires/Operadores.java b/mod8/ExemplosMod8/src/br/com/rpires/Operadores.java index 65483c1..e1e3cd2 100644 --- a/mod8/ExemplosMod8/src/br/com/rpires/Operadores.java +++ b/mod8/ExemplosMod8/src/br/com/rpires/Operadores.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Operadores { diff --git a/mod8/ExemplosMod8/src/br/com/rpires/applicationGrades.java b/mod8/ExemplosMod8/src/br/com/rpires/applicationGrades.java new file mode 100644 index 0000000..db76192 --- /dev/null +++ b/mod8/ExemplosMod8/src/br/com/rpires/applicationGrades.java @@ -0,0 +1,37 @@ +package exercise_module8; + +import java.util.Locale; +import java.util.Scanner; + +import entities.Grades; + +/* +* @author: Steve.Vaz +*/ +public class applicationGrades { + + public static void main(String[] args) { + + Locale.setDefault(Locale.US); + Scanner sc = new Scanner(System.in); + + Grades student = new Grades(); + + student.name = sc.nextLine(); + student.grade1 = sc.nextDouble(); + student.grade2 = sc.nextDouble(); + student.grade3 = sc.nextDouble(); + student.grade4 = sc.nextDouble(); + + System.out.printf("Final Grade: %.2f%n", student.finalGrade()); + System.out.printf("Grade average: %.2f%n", student.mediaOfGrades()); + + if (student.finalGrade() < 32.00) { + System.out.println("Disapproved"); + } else { + System.out.println("Mission complete"); + } + + sc.close(); + } +} diff --git a/mod8/ExemplosMod8/src/br/com/rpires/entities/Grades.java b/mod8/ExemplosMod8/src/br/com/rpires/entities/Grades.java new file mode 100644 index 0000000..8567b3d --- /dev/null +++ b/mod8/ExemplosMod8/src/br/com/rpires/entities/Grades.java @@ -0,0 +1,17 @@ +package entities; + +public class Grades { + public String name; + public double grade1; + public double grade2; + public double grade3; + public double grade4; + + public double finalGrade() { + return grade1 + grade2 + grade3 + grade4; + } + + public double mediaOfGrades() { + return (grade1 + grade2 + grade3 + grade4) / 4; + } +} diff --git a/mod9/ExemplosMod9/src/br/com/rpires/Cliente.java b/mod9/ExemplosMod9/src/br/com/rpires/Cliente.java index d892516..43022d8 100644 --- a/mod9/ExemplosMod9/src/br/com/rpires/Cliente.java +++ b/mod9/ExemplosMod9/src/br/com/rpires/Cliente.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Cliente { diff --git a/mod9/ExemplosMod9/src/br/com/rpires/Exemplo1.java b/mod9/ExemplosMod9/src/br/com/rpires/Exemplo1.java index bab59c9..68acc70 100644 --- a/mod9/ExemplosMod9/src/br/com/rpires/Exemplo1.java +++ b/mod9/ExemplosMod9/src/br/com/rpires/Exemplo1.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Exemplo1 { diff --git a/mod9/ExemplosMod9/src/br/com/rpires/Exemplo2.java b/mod9/ExemplosMod9/src/br/com/rpires/Exemplo2.java index 5dd3d13..6410689 100644 --- a/mod9/ExemplosMod9/src/br/com/rpires/Exemplo2.java +++ b/mod9/ExemplosMod9/src/br/com/rpires/Exemplo2.java @@ -1,7 +1,7 @@ package br.com.rpires; /** - * @author rodrigo.pires + * @author Steve.Vaz */ public class Exemplo2 { diff --git a/mod9/ExemplosMod9/src/br/com/rpires/Exercise_mod9/Probabilidade.java b/mod9/ExemplosMod9/src/br/com/rpires/Exercise_mod9/Probabilidade.java new file mode 100644 index 0000000..2f1421f --- /dev/null +++ b/mod9/ExemplosMod9/src/br/com/rpires/Exercise_mod9/Probabilidade.java @@ -0,0 +1,27 @@ +package Tests_java_bySteve; + +/* + * + * @author Steve.Vaz + * + * +*/ + +public class Probabilidade { + public static void main(String[] args) { + int totalNumeros = Integer.valueOf(25); + int numerosParaAcertar = Integer.valueOf(15); + + double probabilidadeDeNaoAcertar = Math.pow(Double.valueOf(totalNumeros - 1) / totalNumeros, numerosParaAcertar); + + double probabilidadeDeAcertarPeloMenosUm = Double.valueOf(1 - probabilidadeDeNaoAcertar); + + // Imprimindo a variável probabilidadeDeAcertarPeloMenosUm no tipo primitivo double + System.out.println("Primitivo double: Probabilidade de pelo menos uma pessoa acertar os 15 números: " + probabilidadeDeAcertarPeloMenosUm); + + System.out.println(); + + // Imprimindo a variável probabilidadeDeAcertarPeloMenosUm no tipo wrapper Double + System.out.println("Wrapper Double: Probabilidade de pelo menos uma pessoa acertar os 15 números: " + Double.valueOf(probabilidadeDeAcertarPeloMenosUm)); + } +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e2ed0c1 --- /dev/null +++ b/pom.xml @@ -0,0 +1,33 @@ + + 4.0.0 + + com.example + backend-java-EBAC + 1.0-SNAPSHOT + + + 1.8 + 1.8 + + + + + + junit + junit + 4.13.2 + test + + + + + org.postgresql + postgresql + 42.2.23 + + + + +