From 7efd18ca7828c541a648a2a21bfcd87a1549084a Mon Sep 17 00:00:00 2001 From: Eduard Cespedes Date: Sun, 30 Apr 2017 19:08:17 +0200 Subject: [PATCH 1/4] =?UTF-8?q?Creando=20estructura=20est=C3=A1ndard=20de?= =?UTF-8?q?=20java:=20src,=20main,=20test,=20java=20y=20resources.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 + pom.xml | 160 +++++++++--------- .../java}/com/uab/dedam/API/GrupoService.java | 0 .../com/uab/dedam/API/UsuarioService.java | 0 .../dedam/API/models/CustomFieldResponse.java | 0 .../java}/com/uab/dedam/API/models/Grupo.java | 0 .../uab/dedam/API/models/GrupoUsuario.java | 0 .../com/uab/dedam/API/models/Usuario.java | 0 .../uab/dedam/API/models/UsuarioFiltered.java | 0 .../API/persistence/EnumPersistence.java | 0 .../API/persistence/IPersistenceService.java | 0 .../API/persistence/MySQLPersistence.java | 0 .../dedam/API/persistence/MySQLQueries.java | 0 .../API/persistence/PersistenceFactory.java | 0 .../dedam/API/repository/GrupoRepository.java | 0 .../API/repository/UsuarioRepository.java | 0 .../uab/dedam/API/util/GrupoValidator.java | 0 .../uab/dedam/API/util/UsuarioValidator.java | 0 .../main/webapp}/META-INF/MANIFEST.MF | 6 +- .../main/webapp}/WEB-INF/web.xml | 0 .../com/uab/dedam/API}/GrupoServiceTest.java | 2 +- .../dedam/API}/PersistenceFactoryTest.java | 2 +- .../uab/dedam/API}/UsuarioServiceTest.java | 2 +- .../uab/dedam/API}/UsuarioValidatorTest.java | 2 +- .../web-resources/META-INF/MANIFEST.MF | 5 - .../com.uab.dedam/restAPI/pom.properties | 7 - .../maven/com.uab.dedam/restAPI/pom.xml | 81 --------- target/maven-archiver/pom.properties | 4 +- .../compile/default-compile/createdFiles.lst | 9 +- .../compile/default-compile/inputFiles.lst | 29 ++-- target/rest/WEB-INF/web.xml | 4 +- 31 files changed, 120 insertions(+), 200 deletions(-) create mode 100644 .gitignore rename src/{ => main/java}/com/uab/dedam/API/GrupoService.java (100%) rename src/{ => main/java}/com/uab/dedam/API/UsuarioService.java (100%) rename src/{ => main/java}/com/uab/dedam/API/models/CustomFieldResponse.java (100%) rename src/{ => main/java}/com/uab/dedam/API/models/Grupo.java (100%) rename src/{ => main/java}/com/uab/dedam/API/models/GrupoUsuario.java (100%) rename src/{ => main/java}/com/uab/dedam/API/models/Usuario.java (100%) rename src/{ => main/java}/com/uab/dedam/API/models/UsuarioFiltered.java (100%) rename src/{ => main/java}/com/uab/dedam/API/persistence/EnumPersistence.java (100%) rename src/{ => main/java}/com/uab/dedam/API/persistence/IPersistenceService.java (100%) rename src/{ => main/java}/com/uab/dedam/API/persistence/MySQLPersistence.java (100%) rename src/{ => main/java}/com/uab/dedam/API/persistence/MySQLQueries.java (100%) rename src/{ => main/java}/com/uab/dedam/API/persistence/PersistenceFactory.java (100%) rename src/{ => main/java}/com/uab/dedam/API/repository/GrupoRepository.java (100%) rename src/{ => main/java}/com/uab/dedam/API/repository/UsuarioRepository.java (100%) rename src/{ => main/java}/com/uab/dedam/API/util/GrupoValidator.java (100%) rename src/{ => main/java}/com/uab/dedam/API/util/UsuarioValidator.java (100%) rename {WebContent => src/main/webapp}/META-INF/MANIFEST.MF (92%) rename {WebContent => src/main/webapp}/WEB-INF/web.xml (100%) rename src/{com/uab/dedam/API/test => test/java/com/uab/dedam/API}/GrupoServiceTest.java (99%) rename src/{com/uab/dedam/API/test => test/java/com/uab/dedam/API}/PersistenceFactoryTest.java (94%) rename src/{com/uab/dedam/API/test => test/java/com/uab/dedam/API}/UsuarioServiceTest.java (99%) rename src/{com/uab/dedam/API/test => test/java/com/uab/dedam/API}/UsuarioValidatorTest.java (95%) delete mode 100644 target/m2e-wtp/web-resources/META-INF/MANIFEST.MF delete mode 100644 target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.properties delete mode 100644 target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..424f992 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.iml +target/* +.idea/ +*.ipr +*.iws +*.swp +.DS_Store diff --git a/pom.xml b/pom.xml index 58b199c..ab497b2 100644 --- a/pom.xml +++ b/pom.xml @@ -1,81 +1,81 @@ - - 4.0.0 - com.uab.dedam - 0.0.1-SNAPSHOT - war - - src - rest - - - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - maven-war-plugin - 3.0.0 - - WebContent - - - - - - - asm - asm - 3.3.1 - - - com.sun.jersey - jersey-json - 1.8 - - - org.json - json - 20140107 - - - com.sun.jersey - jersey-server - 1.8 - - - com.sun.jersey - jersey-core - 1.8 - - - com.sun.jersey.contribs - jersey-multipart - 1.8 - - - mysql - mysql-connector-java - 5.1.6 - - - junit - junit - 4.12 - test - - - com.fasterxml.jackson.core - jackson-annotations - 2.8.8 - - - commons-codec - commons-codec - 1.6 - - - restAPI + + 4.0.0 + restAPI + com.uab.dedam + 0.0.1-SNAPSHOT + war + + rest + + + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + maven-war-plugin + 3.0.0 + + src/main/webapp + + + + + + + asm + asm + 3.3.1 + + + com.sun.jersey + jersey-json + 1.8 + + + org.json + json + 20140107 + + + com.sun.jersey + jersey-server + 1.8 + + + com.sun.jersey + jersey-core + 1.8 + + + com.sun.jersey.contribs + jersey-multipart + 1.8 + + + mysql + mysql-connector-java + 5.1.6 + + + junit + junit + 4.12 + test + + + com.fasterxml.jackson.core + jackson-annotations + 2.8.8 + + + commons-codec + commons-codec + 1.6 + + \ No newline at end of file diff --git a/src/com/uab/dedam/API/GrupoService.java b/src/main/java/com/uab/dedam/API/GrupoService.java similarity index 100% rename from src/com/uab/dedam/API/GrupoService.java rename to src/main/java/com/uab/dedam/API/GrupoService.java diff --git a/src/com/uab/dedam/API/UsuarioService.java b/src/main/java/com/uab/dedam/API/UsuarioService.java similarity index 100% rename from src/com/uab/dedam/API/UsuarioService.java rename to src/main/java/com/uab/dedam/API/UsuarioService.java diff --git a/src/com/uab/dedam/API/models/CustomFieldResponse.java b/src/main/java/com/uab/dedam/API/models/CustomFieldResponse.java similarity index 100% rename from src/com/uab/dedam/API/models/CustomFieldResponse.java rename to src/main/java/com/uab/dedam/API/models/CustomFieldResponse.java diff --git a/src/com/uab/dedam/API/models/Grupo.java b/src/main/java/com/uab/dedam/API/models/Grupo.java similarity index 100% rename from src/com/uab/dedam/API/models/Grupo.java rename to src/main/java/com/uab/dedam/API/models/Grupo.java diff --git a/src/com/uab/dedam/API/models/GrupoUsuario.java b/src/main/java/com/uab/dedam/API/models/GrupoUsuario.java similarity index 100% rename from src/com/uab/dedam/API/models/GrupoUsuario.java rename to src/main/java/com/uab/dedam/API/models/GrupoUsuario.java diff --git a/src/com/uab/dedam/API/models/Usuario.java b/src/main/java/com/uab/dedam/API/models/Usuario.java similarity index 100% rename from src/com/uab/dedam/API/models/Usuario.java rename to src/main/java/com/uab/dedam/API/models/Usuario.java diff --git a/src/com/uab/dedam/API/models/UsuarioFiltered.java b/src/main/java/com/uab/dedam/API/models/UsuarioFiltered.java similarity index 100% rename from src/com/uab/dedam/API/models/UsuarioFiltered.java rename to src/main/java/com/uab/dedam/API/models/UsuarioFiltered.java diff --git a/src/com/uab/dedam/API/persistence/EnumPersistence.java b/src/main/java/com/uab/dedam/API/persistence/EnumPersistence.java similarity index 100% rename from src/com/uab/dedam/API/persistence/EnumPersistence.java rename to src/main/java/com/uab/dedam/API/persistence/EnumPersistence.java diff --git a/src/com/uab/dedam/API/persistence/IPersistenceService.java b/src/main/java/com/uab/dedam/API/persistence/IPersistenceService.java similarity index 100% rename from src/com/uab/dedam/API/persistence/IPersistenceService.java rename to src/main/java/com/uab/dedam/API/persistence/IPersistenceService.java diff --git a/src/com/uab/dedam/API/persistence/MySQLPersistence.java b/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java similarity index 100% rename from src/com/uab/dedam/API/persistence/MySQLPersistence.java rename to src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java diff --git a/src/com/uab/dedam/API/persistence/MySQLQueries.java b/src/main/java/com/uab/dedam/API/persistence/MySQLQueries.java similarity index 100% rename from src/com/uab/dedam/API/persistence/MySQLQueries.java rename to src/main/java/com/uab/dedam/API/persistence/MySQLQueries.java diff --git a/src/com/uab/dedam/API/persistence/PersistenceFactory.java b/src/main/java/com/uab/dedam/API/persistence/PersistenceFactory.java similarity index 100% rename from src/com/uab/dedam/API/persistence/PersistenceFactory.java rename to src/main/java/com/uab/dedam/API/persistence/PersistenceFactory.java diff --git a/src/com/uab/dedam/API/repository/GrupoRepository.java b/src/main/java/com/uab/dedam/API/repository/GrupoRepository.java similarity index 100% rename from src/com/uab/dedam/API/repository/GrupoRepository.java rename to src/main/java/com/uab/dedam/API/repository/GrupoRepository.java diff --git a/src/com/uab/dedam/API/repository/UsuarioRepository.java b/src/main/java/com/uab/dedam/API/repository/UsuarioRepository.java similarity index 100% rename from src/com/uab/dedam/API/repository/UsuarioRepository.java rename to src/main/java/com/uab/dedam/API/repository/UsuarioRepository.java diff --git a/src/com/uab/dedam/API/util/GrupoValidator.java b/src/main/java/com/uab/dedam/API/util/GrupoValidator.java similarity index 100% rename from src/com/uab/dedam/API/util/GrupoValidator.java rename to src/main/java/com/uab/dedam/API/util/GrupoValidator.java diff --git a/src/com/uab/dedam/API/util/UsuarioValidator.java b/src/main/java/com/uab/dedam/API/util/UsuarioValidator.java similarity index 100% rename from src/com/uab/dedam/API/util/UsuarioValidator.java rename to src/main/java/com/uab/dedam/API/util/UsuarioValidator.java diff --git a/WebContent/META-INF/MANIFEST.MF b/src/main/webapp/META-INF/MANIFEST.MF similarity index 92% rename from WebContent/META-INF/MANIFEST.MF rename to src/main/webapp/META-INF/MANIFEST.MF index 5e94951..254272e 100644 --- a/WebContent/META-INF/MANIFEST.MF +++ b/src/main/webapp/META-INF/MANIFEST.MF @@ -1,3 +1,3 @@ -Manifest-Version: 1.0 -Class-Path: - +Manifest-Version: 1.0 +Class-Path: + diff --git a/WebContent/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from WebContent/WEB-INF/web.xml rename to src/main/webapp/WEB-INF/web.xml diff --git a/src/com/uab/dedam/API/test/GrupoServiceTest.java b/src/test/java/com/uab/dedam/API/GrupoServiceTest.java similarity index 99% rename from src/com/uab/dedam/API/test/GrupoServiceTest.java rename to src/test/java/com/uab/dedam/API/GrupoServiceTest.java index e2a236f..c8eca6b 100644 --- a/src/com/uab/dedam/API/test/GrupoServiceTest.java +++ b/src/test/java/com/uab/dedam/API/GrupoServiceTest.java @@ -1,4 +1,4 @@ -package com.uab.dedam.API.test; +package com.uab.dedam.API; import static org.junit.Assert.*; diff --git a/src/com/uab/dedam/API/test/PersistenceFactoryTest.java b/src/test/java/com/uab/dedam/API/PersistenceFactoryTest.java similarity index 94% rename from src/com/uab/dedam/API/test/PersistenceFactoryTest.java rename to src/test/java/com/uab/dedam/API/PersistenceFactoryTest.java index 17c83d1..48966ae 100644 --- a/src/com/uab/dedam/API/test/PersistenceFactoryTest.java +++ b/src/test/java/com/uab/dedam/API/PersistenceFactoryTest.java @@ -1,4 +1,4 @@ -package com.uab.dedam.API.test; +package com.uab.dedam.API; import static org.junit.Assert.*; diff --git a/src/com/uab/dedam/API/test/UsuarioServiceTest.java b/src/test/java/com/uab/dedam/API/UsuarioServiceTest.java similarity index 99% rename from src/com/uab/dedam/API/test/UsuarioServiceTest.java rename to src/test/java/com/uab/dedam/API/UsuarioServiceTest.java index e6a93bb..f902dc0 100644 --- a/src/com/uab/dedam/API/test/UsuarioServiceTest.java +++ b/src/test/java/com/uab/dedam/API/UsuarioServiceTest.java @@ -1,4 +1,4 @@ -package com.uab.dedam.API.test; +package com.uab.dedam.API; import static org.junit.Assert.*; diff --git a/src/com/uab/dedam/API/test/UsuarioValidatorTest.java b/src/test/java/com/uab/dedam/API/UsuarioValidatorTest.java similarity index 95% rename from src/com/uab/dedam/API/test/UsuarioValidatorTest.java rename to src/test/java/com/uab/dedam/API/UsuarioValidatorTest.java index 5ed8eca..9cddd9f 100644 --- a/src/com/uab/dedam/API/test/UsuarioValidatorTest.java +++ b/src/test/java/com/uab/dedam/API/UsuarioValidatorTest.java @@ -1,4 +1,4 @@ -package com.uab.dedam.API.test; +package com.uab.dedam.API; import static org.junit.Assert.*; diff --git a/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF b/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF deleted file mode 100644 index 646a319..0000000 --- a/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Built-By: thiago -Build-Jdk: 1.8.0_121 -Created-By: Maven Integration for Eclipse - diff --git a/target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.properties b/target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.properties deleted file mode 100644 index 07a2750..0000000 --- a/target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Generated by Maven Integration for Eclipse -#Tue Apr 18 02:25:39 CEST 2017 -version=0.0.1-SNAPSHOT -groupId=com.uab.dedam -m2e.projectName=RestAP -m2e.projectLocation=/Users/thiago/Documents/workspacePracticaAPI/RestAP -artifactId=restAPI diff --git a/target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.xml b/target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.xml deleted file mode 100644 index 58b199c..0000000 --- a/target/m2e-wtp/web-resources/META-INF/maven/com.uab.dedam/restAPI/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - 4.0.0 - com.uab.dedam - 0.0.1-SNAPSHOT - war - - src - rest - - - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - maven-war-plugin - 3.0.0 - - WebContent - - - - - - - asm - asm - 3.3.1 - - - com.sun.jersey - jersey-json - 1.8 - - - org.json - json - 20140107 - - - com.sun.jersey - jersey-server - 1.8 - - - com.sun.jersey - jersey-core - 1.8 - - - com.sun.jersey.contribs - jersey-multipart - 1.8 - - - mysql - mysql-connector-java - 5.1.6 - - - junit - junit - 4.12 - test - - - com.fasterxml.jackson.core - jackson-annotations - 2.8.8 - - - commons-codec - commons-codec - 1.6 - - - restAPI - \ No newline at end of file diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties index 204a89b..8403624 100644 --- a/target/maven-archiver/pom.properties +++ b/target/maven-archiver/pom.properties @@ -1,4 +1,4 @@ -#Created by Apache Maven 3.3.9 +#Created by Apache Maven 3.2.5 version=0.0.1-SNAPSHOT groupId=com.uab.dedam -artifactId=RestAPI +artifactId=restAPI diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 8d5028d..3b9a364 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,16 +1,19 @@ -com/uab/dedam/API/FtoCService.class +com/uab/dedam/API/util/GrupoValidator.class com/uab/dedam/API/persistence/PersistenceFactory$1.class com/uab/dedam/API/UsuarioService.class -com/uab/dedam/API/CtoFService.class com/uab/dedam/API/UsuarioService$1.class com/uab/dedam/API/persistence/IPersistenceService.class com/uab/dedam/API/persistence/MySQLPersistence.class +com/uab/dedam/API/models/GrupoUsuario.class com/uab/dedam/API/util/UsuarioValidator.class +com/uab/dedam/API/GrupoService$1.class com/uab/dedam/API/persistence/EnumPersistence.class com/uab/dedam/API/persistence/MySQLQueries.class +com/uab/dedam/API/models/UsuarioFiltered.class com/uab/dedam/API/models/Grupo.class com/uab/dedam/API/persistence/PersistenceFactory.class -com/uab/dedam/API/UsuarioService$2.class com/uab/dedam/API/repository/UsuarioRepository.class +com/uab/dedam/API/GrupoService.class com/uab/dedam/API/repository/GrupoRepository.class +com/uab/dedam/API/models/CustomFieldResponse.class com/uab/dedam/API/models/Usuario.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 818d520..72ad58b 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,13 +1,16 @@ -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/persistence/MySQLQueries.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/persistence/PersistenceFactory.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/repository/UsuarioRepository.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/FtoCService.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/UsuarioService.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/persistence/EnumPersistence.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/CtoFService.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/models/Usuario.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/repository/GrupoRepository.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/models/Grupo.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/util/UsuarioValidator.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/persistence/IPersistenceService.java -/Users/thiago/Documents/workspacePracticaAPI/RestAP/src/com/uab/dedam/API/persistence/MySQLPersistence.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/models/CustomFieldResponse.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/models/GrupoUsuario.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/models/Usuario.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/UsuarioService.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/repository/UsuarioRepository.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/util/UsuarioValidator.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/persistence/PersistenceFactory.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/persistence/IPersistenceService.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/persistence/MySQLQueries.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/repository/GrupoRepository.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/models/Grupo.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/GrupoService.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/util/GrupoValidator.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/persistence/EnumPersistence.java +/Users/haduart/Dropbox/Projects/UAB-Master/Corretgir Entregues 2016/ThiagoLori/src/main/java/com/uab/dedam/API/models/UsuarioFiltered.java diff --git a/target/rest/WEB-INF/web.xml b/target/rest/WEB-INF/web.xml index e921fd5..c34f78f 100644 --- a/target/rest/WEB-INF/web.xml +++ b/target/rest/WEB-INF/web.xml @@ -1,6 +1,6 @@ - RestAP + restAPI index.html index.htm @@ -20,6 +20,6 @@ Jersey Web Application - /* + / \ No newline at end of file From 0c73bdd9253bd6c3bbbad53420ea2f901ef1dca0 Mon Sep 17 00:00:00 2001 From: Eduard Cespedes Date: Sun, 30 Apr 2017 20:45:58 +0200 Subject: [PATCH 2/4] Fixing Dockerfile: docker run -p 8080:8080 dedam/tomcat --- Dockerfile | 86 ++---------------------------------------------------- README.md | 6 ++++ 2 files changed, 8 insertions(+), 84 deletions(-) diff --git a/Dockerfile b/Dockerfile index 40f9c79..429e689 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,87 +1,5 @@ -FROM openjdk:8-jre-alpine - -ENV CATALINA_HOME /usr/local/tomcat -ENV PATH $CATALINA_HOME/bin:$PATH -RUN mkdir -p "$CATALINA_HOME" -WORKDIR $CATALINA_HOME - -# let "Tomcat Native" live somewhere isolated -ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib -ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR - -RUN apk add --no-cache gnupg - -# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS -# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh) -ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23 -RUN set -ex; \ - for key in $GPG_KEYS; do \ - gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ - done - -ENV TOMCAT_MAJOR 9 -ENV TOMCAT_VERSION 9.0.0.M19 - -# https://issues.apache.org/jira/browse/INFRA-8753?focusedCommentId=14735394#comment-14735394 -ENV TOMCAT_TGZ_URL https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz -# not all the mirrors actually carry the .asc files :'( -ENV TOMCAT_ASC_URL https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc - -RUN set -x \ - \ - && apk add --no-cache --virtual .fetch-deps \ - ca-certificates \ - tar \ - openssl \ - && wget -O tomcat.tar.gz "$TOMCAT_TGZ_URL" \ - && wget -O tomcat.tar.gz.asc "$TOMCAT_ASC_URL" \ - && gpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz \ - && tar -xvf tomcat.tar.gz --strip-components=1 \ - && rm bin/*.bat \ - && rm tomcat.tar.gz* \ - \ - && nativeBuildDir="$(mktemp -d)" \ - && tar -xvf bin/tomcat-native.tar.gz -C "$nativeBuildDir" --strip-components=1 \ - && apk add --no-cache --virtual .native-build-deps \ - apr-dev \ - gcc \ - libc-dev \ - make \ - "openjdk${JAVA_VERSION%%[-~bu]*}"="$JAVA_ALPINE_VERSION" \ - openssl-dev \ - && ( \ - export CATALINA_HOME="$PWD" \ - && cd "$nativeBuildDir/native" \ - && ./configure \ - --libdir="$TOMCAT_NATIVE_LIBDIR" \ - --prefix="$CATALINA_HOME" \ - --with-apr="$(which apr-1-config)" \ - --with-java-home="$(docker-java-home)" \ - --with-ssl=yes \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - ) \ - && runDeps="$( \ - scanelf --needed --nobanner --recursive "$TOMCAT_NATIVE_LIBDIR" \ - | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ - | sort -u \ - | xargs -r apk info --installed \ - | sort -u \ - )" \ - && apk add --virtual .tomcat-native-rundeps $runDeps \ - && apk del .fetch-deps .native-build-deps \ - && rm -rf "$nativeBuildDir" \ - && rm bin/tomcat-native.tar.gz - -# verify Tomcat Native is working properly -RUN set -e \ - && nativeLines="$(catalina.sh configtest 2>&1)" \ - && nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')" \ - && nativeLines="$(echo "$nativeLines" | sort -u)" \ - && if ! echo "$nativeLines" | grep 'INFO: Loaded APR based Apache Tomcat Native library' >&2; then \ - echo >&2 "$nativeLines"; \ - exit 1; \ - fi +FROM tomcat:latest +MAINTAINER Thiago Herrera COPY ./target/rest.war /usr/local/tomcat/webapps/ diff --git a/README.md b/README.md index 4bdbcd3..6f1ec43 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ # restapi Practica Rest API UAB Dedam + + +# Building from Dockerfile +docker build -t dedam/tomcat . +docker run -p 8080:8080 dedam/tomcat + From 830466b7a6868ba241fe551fa595c7e73d659900 Mon Sep 17 00:00:00 2001 From: Eduard Cespedes Date: Sun, 30 Apr 2017 21:16:02 +0200 Subject: [PATCH 3/4] take a look that the PreparedStatement has auto-closing --- .../API/persistence/MySQLPersistence.java | 926 +++++++++--------- 1 file changed, 445 insertions(+), 481 deletions(-) diff --git a/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java b/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java index 74a084f..51788de 100644 --- a/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java +++ b/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java @@ -1,489 +1,453 @@ package com.uab.dedam.API.persistence; -import java.lang.reflect.Field; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - import com.uab.dedam.API.models.Grupo; import com.uab.dedam.API.models.GrupoUsuario; import com.uab.dedam.API.models.Usuario; import com.uab.dedam.API.models.UsuarioFiltered; -public class MySQLPersistence implements IPersistenceService{ - - private static String DB_DRIVER = "com.mysql.jdbc.Driver"; - private static String DB_CONNECTION = "jdbc:mysql://127.0.0.1:3306/DedamSQLDB"; - private static String DB_USER = "restapiuser"; - private static String DB_PASSWORD = "DedamRestAPIDB"; - - private static Connection getDBConnection() { - Connection dbConnection = null; - try { - Class.forName(DB_DRIVER); - } catch (ClassNotFoundException e) { - System.out.println(e.getMessage()); - } - - try { - dbConnection = DriverManager.getConnection( - DB_CONNECTION, DB_USER,DB_PASSWORD); - return dbConnection; - } catch (SQLException e) { - System.out.println(e.getMessage()); - } - return dbConnection; - } - - @Override - public List getUsuarios(Integer idUsuario) throws SQLException { - PreparedStatement statement = null; - List usuarios = new ArrayList(); - try (Connection connection = getDBConnection()) { - String sql = MySQLQueries.getSelectUserQuery(idUsuario); - statement = connection.prepareStatement(sql); - try (ResultSet queryResults = statement.executeQuery()) { - while (queryResults.next()) { - Usuario usuario = new Usuario(); - usuario.setId(queryResults.getInt(1)); - usuario.setSelf("/rest/usuario/" + usuario.getId()); - usuario.setAlias(queryResults.getString(3)); - usuario.setName(queryResults.getString(4)); - usuario.setSurname(queryResults.getString(5)); - usuario.setAge(queryResults.getInt(6)); - usuario.setPhone(queryResults.getInt(7)); - if(queryResults.getInt(8) > 0){ - GrupoUsuario grupo = new GrupoUsuario(queryResults.getInt(8), - queryResults.getString(10), - queryResults.getString(11)); - usuario.setGrupo(grupo); - } - else - usuario.setGrupo(null); - usuario.setPhoto(queryResults.getString(9)); - usuarios.add(usuario); - } - } - finally { - if (statement != null) { - statement.close(); - } - } - } catch (SQLException e) { - throw new IllegalStateException("Cannot connect the database!", e); - } - return usuarios; - } - - @Override - public Usuario getUsuarioByAlias(String alias) throws SQLException { - PreparedStatement statement = null; - Usuario usuario = null; - try (Connection connection = getDBConnection()) { - String sql = MySQLQueries.getSelectUserQueryByAlias(); - statement = connection.prepareStatement(sql); - statement.setString(1, alias); - try (ResultSet queryResults = statement.executeQuery()) { - if (queryResults.next()) { - usuario = new Usuario(); - usuario.setId(queryResults.getInt(1)); - usuario.setSelf("/rest/usuario/" + usuario.getId()); - usuario.setAlias(queryResults.getString(3)); - usuario.setName(queryResults.getString(4)); - usuario.setSurname(queryResults.getString(5)); - usuario.setAge(queryResults.getInt(6)); - usuario.setPhone(queryResults.getInt(7)); - if(queryResults.getInt(8) > 0){ - GrupoUsuario grupo = new GrupoUsuario(queryResults.getInt(8), - queryResults.getString(10), - queryResults.getString(11)); - usuario.setGrupo(grupo); - } - else - usuario.setGrupo(null); - usuario.setPhoto(queryResults.getString(9)); - - } - } - finally { - if (statement != null) { - statement.close(); - } - } - } catch (SQLException e) { - throw new IllegalStateException("Cannot connect the database!", e); - } - return usuario; - } - - @Override - public void saveUsuario(Usuario usuario) throws SQLException { - PreparedStatement statement = null; - int affectedRows = 0; - try (Connection connection = getDBConnection()) { - statement = createInsertUserPreparedStatement(connection, usuario); - affectedRows = statement.executeUpdate(); - if (affectedRows == 0) { - throw new SQLException("Creating user failed, no rows affected."); - } - try (ResultSet generatedKeys = statement.getGeneratedKeys()) { - if (generatedKeys.next()) { - usuario.setId(generatedKeys.getInt(1)); - } - else { - throw new SQLException("Creating user failed, no ID obtained."); - } - } - } finally { - if (statement != null) { - statement.close(); - } - } - } - - private PreparedStatement createInsertUserPreparedStatement( - Connection connection, - Usuario usuario) throws SQLException{ - PreparedStatement statement = null; - String sql = MySQLQueries.getInsertUserQuery(); - statement = connection.prepareStatement(sql); - statement.setString(1, usuario.getSelf()); - statement.setString(2, usuario.getAlias()); - statement.setString(3, usuario.getName()); - statement.setString(4, usuario.getSurname()); - if(usuario.getAge() == null) - statement.setNull(5, java.sql.Types.INTEGER); - else - statement.setInt(5, usuario.getAge()); - if(usuario.getPhone() == null) - statement.setNull(6, java.sql.Types.INTEGER); - else - statement.setInt(6, usuario.getPhone()); - if(usuario.getGrupo() != null) - statement.setInt(7, usuario.getGrupo().getId()); - else - statement.setNull(7, java.sql.Types.INTEGER); - statement.setString(8, usuario.getPhoto()); - return statement; - } - - @Override - public Grupo getGrupo(String groupName) throws SQLException { - return getGrupo(0, groupName); - } - - @Override - public Grupo getGrupo(Integer idGrupo) throws SQLException { - return getGrupo(idGrupo, ""); - } - - private Grupo getGrupo(Integer idGroup, String groupName) throws SQLException { - Grupo grupo = null; - PreparedStatement statement = null; - - try (Connection connection = getDBConnection()) { - statement = createSelectGroupPreparedStatement(connection, idGroup, groupName); - - try (ResultSet queryResults = statement.executeQuery()) { - if (queryResults.next()) { - grupo = new Grupo(); - grupo.setId(queryResults.getInt(1)); - grupo.setName(queryResults.getString(2)); - grupo.setSelf(queryResults.getString(3)); - } - } - } finally { - if (statement != null) { - statement.close(); - } - } - return grupo; - } - - @Override - public void saveGrupo(Grupo grupo) throws SQLException { - PreparedStatement statement = null; - int affectedRows = 0; - try (Connection connection = getDBConnection()) { - statement = createInsertGroupPreparedStatement(connection, grupo); - affectedRows = statement.executeUpdate(); - if (affectedRows == 0) { - throw new SQLException("Creating user failed, no rows affected."); - } - try (ResultSet generatedKeys = statement.getGeneratedKeys()) { - if (generatedKeys.next()) { - grupo.setId(generatedKeys.getInt(1)); - } - else { - throw new SQLException("Creating group failed, no ID obtained."); - } - } - } finally { - if (statement != null) { - statement.close(); - } - } - } - - private PreparedStatement createInsertGroupPreparedStatement( - Connection connection, - Grupo grupo) throws SQLException{ - PreparedStatement statement = null; - String sql = MySQLQueries.getInsertGroupQuery(); - statement = connection.prepareStatement(sql); - statement.setString(1, grupo.getSelf()); - statement.setString(2, grupo.getName()); - return statement; - } - - private PreparedStatement createSelectGroupPreparedStatement( - Connection connection, - Integer idGroup, - String groupName) throws SQLException{ - PreparedStatement statement = null; - Integer indiceColuna = 0; - String sql = MySQLQueries.getSelectGroupQuery(idGroup, groupName); - statement = connection.prepareStatement(sql); - if(idGroup != null && idGroup > 0) - statement.setInt(++indiceColuna, idGroup); - if(groupName != null && !groupName.isEmpty()) - statement.setString(++indiceColuna, groupName); - return statement; - } - - @Override - public void updateUser(Usuario usuario, String propriedade) throws SQLException { - PreparedStatement statement = null; - int affectedRows = 0; - try (Connection connection = getDBConnection()) { - statement = createUpdateUsuarioPreparedStatement(connection, usuario, propriedade); - affectedRows = statement.executeUpdate(); - if (affectedRows == 0) { - throw new SQLException("Update user failed, no rows affected."); - } - } finally { - if (statement != null) { - statement.close(); - } - } - } - - private PreparedStatement createUpdateUsuarioPreparedStatement( - Connection connection, - Usuario usuario, - String propriedade) - throws - SQLException { - PreparedStatement statement = null; - String sql = MySQLQueries.getUpdateUserQuery(usuario, propriedade); - statement = connection.prepareStatement(sql); - switch(propriedade){ - case "alias": - statement.setString(1, usuario.getAlias()); - break; - case "name": - statement.setString(1, usuario.getName()); - break; - case "surname": - statement.setString(1, usuario.getSurname()); - break; - case "age": - statement.setInt(1, usuario.getAge()); - break; - case "phone": - statement.setInt(1, usuario.getPhone()); - break; - case "photo": - statement.setString(1, usuario.getPhoto()); - break; - case "group": - statement.setInt(1, usuario.getGrupo().getId()); - break; - default: - break; - } - - statement.setInt(2, usuario.getId()); - - return statement; - } - - @Override - public List getUsuarioFiltered(Integer idUsuario) { - PreparedStatement statement = null; - List usuarios = new ArrayList(); - try (Connection connection = getDBConnection()) { - String sql = MySQLQueries.getSelectUserQuery(idUsuario); - statement = connection.prepareStatement(sql); - try (ResultSet queryResults = statement.executeQuery()) { - while (queryResults.next()) { - UsuarioFiltered usuario = new UsuarioFiltered(); - usuario.setId(queryResults.getInt(1)); - usuario.setSelf("/rest/usuario/" + usuario.getId()); - usuario.setAlias(queryResults.getString(3)); - usuario.setName(queryResults.getString(4)); - usuario.setSurname(queryResults.getString(5)); - usuario.setAge(queryResults.getInt(6)); - usuario.setPhone(queryResults.getInt(7)); - if(queryResults.getInt(8) > 0){ - GrupoUsuario grupo = new GrupoUsuario(queryResults.getInt(8), - queryResults.getString(10), - queryResults.getString(11)); - //usuario.setGrupo(getGrupo(queryResults.getInt(8))); - } - else - usuario.setGrupo(null); - usuario.setPhoto(queryResults.getString(9)); - usuarios.add(usuario); - } - } - finally { - if (statement != null) { - statement.close(); - } - } - } catch (SQLException e) { - throw new IllegalStateException("Cannot connect the database!", e); - } - return usuarios; - } - - @Override - public List getGrupos() throws SQLException { - Grupo grupo = null; - PreparedStatement statement = null; - List grupos = new ArrayList(); - try (Connection connection = getDBConnection()) { - statement = createSelectGroupPreparedStatement(connection, 0, ""); - - try (ResultSet queryResults = statement.executeQuery()) { - while (queryResults.next()) { - grupo = new Grupo(); - grupo.setId(queryResults.getInt(1)); - grupo.setName(queryResults.getString(2)); - grupo.setSelf(queryResults.getString(3)); - grupos.add(grupo); - } - } - } finally { - if (statement != null) { - statement.close(); - } - } - return grupos; - } - - @Override - public void deleteUser(int usuarioId) throws SQLException { - PreparedStatement statement = null; - int affectedRows = 0; - try (Connection connection = getDBConnection()) { - statement = createDeleteUsuarioPreparedStatement(connection, usuarioId); - affectedRows = statement.executeUpdate(); - if (affectedRows == 0) { - throw new SQLException("Update user failed, no rows affected."); - } - } finally { - if (statement != null) { - statement.close(); - } - } - } - - private PreparedStatement createDeleteUsuarioPreparedStatement( - Connection connection, - int usuarioId) - throws - SQLException { - PreparedStatement statement = null; - String sql = MySQLQueries.getDeleteUserQuery(); - statement = connection.prepareStatement(sql); - statement.setInt(1, usuarioId); - - return statement; - } - - @Override - public void deleteUserProperty(Usuario usuario, String propriedade) throws SQLException { - PreparedStatement statement = null; - int affectedRows = 0; - try (Connection connection = getDBConnection()) { - statement = createDeleteUsuarioPropertyPreparedStatement( - connection, - usuario, - propriedade); - affectedRows = statement.executeUpdate(); - if (affectedRows == 0) { - throw new SQLException("Delete user property failed, no rows affected."); - } - } finally { - if (statement != null) { - statement.close(); - } - } - } - - private PreparedStatement createDeleteUsuarioPropertyPreparedStatement( - Connection connection, - Usuario usuario, - String propriedade) - throws - SQLException { - PreparedStatement statement = null; - String sql = MySQLQueries.getUpdateUserQuery(usuario, propriedade); - statement = connection.prepareStatement(sql); - switch(propriedade){ - case "alias": - case "name": - case "surname": - case "photo": - statement.setNull(1, java.sql.Types.VARCHAR); - break; - case "age": - case "phone": - case "group": - statement.setNull(1, java.sql.Types.INTEGER); - break; - default: - break; - } - - statement.setInt(2, usuario.getId()); - - return statement; - } - - @Override - public void deleteGroup(Integer groupId) throws SQLException { - PreparedStatement statement = null; - int affectedRows = 0; - try (Connection connection = getDBConnection()) { - statement = createDeleteGrupoPreparedStatement(connection, groupId); - affectedRows = statement.executeUpdate(); - if (affectedRows == 0) { - throw new SQLException("Update user failed, no rows affected."); - } - } finally { - if (statement != null) { - statement.close(); - } - } - } - - private PreparedStatement createDeleteGrupoPreparedStatement( - Connection connection, - int grupoId) - throws - SQLException { - PreparedStatement statement = null; - String sql = MySQLQueries.getDeleteGroupQuery(); - statement = connection.prepareStatement(sql); - statement.setInt(1, grupoId); - - return statement; - } +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +public class MySQLPersistence implements IPersistenceService { + + private static String DB_DRIVER = "com.mysql.jdbc.Driver"; + private static String DB_CONNECTION = "jdbc:mysql://127.0.0.1:3306/DedamSQLDB"; + private static String DB_USER = "restapiuser"; + private static String DB_PASSWORD = "DedamRestAPIDB"; + + private static Connection getDBConnection() { + Connection dbConnection = null; + try { + Class.forName(DB_DRIVER); + } catch (ClassNotFoundException e) { + System.out.println(e.getMessage()); + } + + try { + dbConnection = DriverManager.getConnection( + DB_CONNECTION, DB_USER, DB_PASSWORD); + return dbConnection; + } catch (SQLException e) { + System.out.println(e.getMessage()); + } + return dbConnection; + } + + @Override + public List getUsuarios(Integer idUsuario) throws SQLException { + PreparedStatement statement = null; + List usuarios = new ArrayList(); + try (Connection connection = getDBConnection()) { + String sql = MySQLQueries.getSelectUserQuery(idUsuario); + statement = connection.prepareStatement(sql); + try (ResultSet queryResults = statement.executeQuery()) { + while (queryResults.next()) { + Usuario usuario = new Usuario(); + usuario.setId(queryResults.getInt(1)); + usuario.setSelf("/rest/usuario/" + usuario.getId()); + usuario.setAlias(queryResults.getString(3)); + usuario.setName(queryResults.getString(4)); + usuario.setSurname(queryResults.getString(5)); + usuario.setAge(queryResults.getInt(6)); + usuario.setPhone(queryResults.getInt(7)); + if (queryResults.getInt(8) > 0) { + GrupoUsuario grupo = new GrupoUsuario(queryResults.getInt(8), + queryResults.getString(10), + queryResults.getString(11)); + usuario.setGrupo(grupo); + } else + usuario.setGrupo(null); + usuario.setPhoto(queryResults.getString(9)); + usuarios.add(usuario); + } + } finally { + if (statement != null) { + statement.close(); + } + } + } catch (SQLException e) { + throw new IllegalStateException("Cannot connect the database!", e); + } + return usuarios; + } + + @Override + public Usuario getUsuarioByAlias(String alias) throws SQLException { + PreparedStatement statement = null; + Usuario usuario = null; + try (Connection connection = getDBConnection()) { + String sql = MySQLQueries.getSelectUserQueryByAlias(); + statement = connection.prepareStatement(sql); + statement.setString(1, alias); + try (ResultSet queryResults = statement.executeQuery()) { + if (queryResults.next()) { + usuario = new Usuario(); + usuario.setId(queryResults.getInt(1)); + usuario.setSelf("/rest/usuario/" + usuario.getId()); + usuario.setAlias(queryResults.getString(3)); + usuario.setName(queryResults.getString(4)); + usuario.setSurname(queryResults.getString(5)); + usuario.setAge(queryResults.getInt(6)); + usuario.setPhone(queryResults.getInt(7)); + if (queryResults.getInt(8) > 0) { + GrupoUsuario grupo = new GrupoUsuario(queryResults.getInt(8), + queryResults.getString(10), + queryResults.getString(11)); + usuario.setGrupo(grupo); + } else + usuario.setGrupo(null); + usuario.setPhoto(queryResults.getString(9)); + + } + } finally { + if (statement != null) { + statement.close(); + } + } + } catch (SQLException e) { + throw new IllegalStateException("Cannot connect the database!", e); + } + return usuario; + } + + @Override + public void saveUsuario(Usuario usuario) throws SQLException { + PreparedStatement statement = null; + int affectedRows = 0; + try (Connection connection = getDBConnection()) { + statement = createInsertUserPreparedStatement(connection, usuario); + affectedRows = statement.executeUpdate(); + if (affectedRows == 0) { + throw new SQLException("Creating user failed, no rows affected."); + } + try (ResultSet generatedKeys = statement.getGeneratedKeys()) { + if (generatedKeys.next()) { + usuario.setId(generatedKeys.getInt(1)); + } else { + throw new SQLException("Creating user failed, no ID obtained."); + } + } + } finally { + if (statement != null) { + statement.close(); + } + } + } + + private PreparedStatement createInsertUserPreparedStatement( + Connection connection, + Usuario usuario) throws SQLException { + PreparedStatement statement = null; + String sql = MySQLQueries.getInsertUserQuery(); + statement = connection.prepareStatement(sql); + statement.setString(1, usuario.getSelf()); + statement.setString(2, usuario.getAlias()); + statement.setString(3, usuario.getName()); + statement.setString(4, usuario.getSurname()); + if (usuario.getAge() == null) + statement.setNull(5, java.sql.Types.INTEGER); + else + statement.setInt(5, usuario.getAge()); + if (usuario.getPhone() == null) + statement.setNull(6, java.sql.Types.INTEGER); + else + statement.setInt(6, usuario.getPhone()); + if (usuario.getGrupo() != null) + statement.setInt(7, usuario.getGrupo().getId()); + else + statement.setNull(7, java.sql.Types.INTEGER); + statement.setString(8, usuario.getPhoto()); + return statement; + } + + @Override + public Grupo getGrupo(String groupName) throws SQLException { + return getGrupo(0, groupName); + } + + @Override + public Grupo getGrupo(Integer idGrupo) throws SQLException { + return getGrupo(idGrupo, ""); + } + + private Grupo getGrupo(Integer idGroup, String groupName) throws SQLException { + Grupo grupo = null; + PreparedStatement statement = null; + + try (Connection connection = getDBConnection()) { + statement = createSelectGroupPreparedStatement(connection, idGroup, groupName); + + try (ResultSet queryResults = statement.executeQuery()) { + if (queryResults.next()) { + grupo = new Grupo(); + grupo.setId(queryResults.getInt(1)); + grupo.setName(queryResults.getString(2)); + grupo.setSelf(queryResults.getString(3)); + } + } + } finally { + if (statement != null) { + statement.close(); + } + } + return grupo; + } + + @Override + public void saveGrupo(Grupo grupo) throws SQLException { + int affectedRows = 0; + try (Connection connection = getDBConnection(); + PreparedStatement statement = createInsertGroupPreparedStatement(connection, grupo)) { + + affectedRows = statement.executeUpdate(); + if (affectedRows == 0) { + throw new SQLException("Creating user failed, no rows affected."); + } + try (ResultSet generatedKeys = statement.getGeneratedKeys()) { + if (generatedKeys.next()) { + grupo.setId(generatedKeys.getInt(1)); + } else { + throw new SQLException("Creating group failed, no ID obtained."); + } + } + } + } + + private PreparedStatement createInsertGroupPreparedStatement( + Connection connection, + Grupo grupo) throws SQLException { + PreparedStatement statement = null; + String sql = MySQLQueries.getInsertGroupQuery(); + statement = connection.prepareStatement(sql); + statement.setString(1, grupo.getSelf()); + statement.setString(2, grupo.getName()); + return statement; + } + + private PreparedStatement createSelectGroupPreparedStatement( + Connection connection, + Integer idGroup, + String groupName) throws SQLException { + PreparedStatement statement = null; + Integer indiceColuna = 0; + String sql = MySQLQueries.getSelectGroupQuery(idGroup, groupName); + statement = connection.prepareStatement(sql); + if (idGroup != null && idGroup > 0) + statement.setInt(++indiceColuna, idGroup); + if (groupName != null && !groupName.isEmpty()) + statement.setString(++indiceColuna, groupName); + return statement; + } + + @Override + public void updateUser(Usuario usuario, String propriedade) throws SQLException { + PreparedStatement statement = null; + int affectedRows = 0; + try (Connection connection = getDBConnection()) { + statement = createUpdateUsuarioPreparedStatement(connection, usuario, propriedade); + affectedRows = statement.executeUpdate(); + if (affectedRows == 0) { + throw new SQLException("Update user failed, no rows affected."); + } + } finally { + if (statement != null) { + statement.close(); + } + } + } + + private PreparedStatement createUpdateUsuarioPreparedStatement( + Connection connection, + Usuario usuario, + String propriedade) + throws + SQLException { + PreparedStatement statement = null; + String sql = MySQLQueries.getUpdateUserQuery(usuario, propriedade); + statement = connection.prepareStatement(sql); + switch (propriedade) { + case "alias": + statement.setString(1, usuario.getAlias()); + break; + case "name": + statement.setString(1, usuario.getName()); + break; + case "surname": + statement.setString(1, usuario.getSurname()); + break; + case "age": + statement.setInt(1, usuario.getAge()); + break; + case "phone": + statement.setInt(1, usuario.getPhone()); + break; + case "photo": + statement.setString(1, usuario.getPhoto()); + break; + case "group": + statement.setInt(1, usuario.getGrupo().getId()); + break; + default: + break; + } + + statement.setInt(2, usuario.getId()); + + return statement; + } + + @Override + public List getUsuarioFiltered(Integer idUsuario) { + List usuarios = new ArrayList(); + String sql = MySQLQueries.getSelectUserQuery(idUsuario); + try (Connection connection = getDBConnection(); + PreparedStatement statement = connection.prepareStatement(sql); + ResultSet queryResults = statement.executeQuery()) { + + while (queryResults.next()) { + UsuarioFiltered usuario = new UsuarioFiltered(); + usuario.setId(queryResults.getInt(1)); + usuario.setSelf("/rest/usuario/" + usuario.getId()); + usuario.setAlias(queryResults.getString(3)); + usuario.setName(queryResults.getString(4)); + usuario.setSurname(queryResults.getString(5)); + usuario.setAge(queryResults.getInt(6)); + usuario.setPhone(queryResults.getInt(7)); + if (queryResults.getInt(8) > 0) { + GrupoUsuario grupo = new GrupoUsuario(queryResults.getInt(8), + queryResults.getString(10), + queryResults.getString(11)); + //usuario.setGrupo(getGrupo(queryResults.getInt(8))); + } else + usuario.setGrupo(null); + usuario.setPhoto(queryResults.getString(9)); + usuarios.add(usuario); + } + } catch (SQLException e) { + throw new IllegalStateException("Cannot connect the database!", e); + } + return usuarios; + } + + @Override + public List getGrupos() throws SQLException { + List grupos = new ArrayList(); + try (Connection connection = getDBConnection(); + PreparedStatement statement = createSelectGroupPreparedStatement(connection, 0, ""); + ResultSet queryResults = statement.executeQuery()) { + while (queryResults.next()) { + Grupo grupo = new Grupo(); + grupo.setId(queryResults.getInt(1)); + grupo.setName(queryResults.getString(2)); + grupo.setSelf(queryResults.getString(3)); + grupos.add(grupo); + } + } + return grupos; + } + + @Override + public void deleteUser(int usuarioId) throws SQLException { + try (Connection connection = getDBConnection(); + PreparedStatement statement = createDeleteUsuarioPreparedStatement(connection, usuarioId)) { + int affectedRows = statement.executeUpdate(); + if (affectedRows == 0) { + throw new SQLException("Update user failed, no rows affected."); + } + } + } + + private PreparedStatement createDeleteUsuarioPreparedStatement( + Connection connection, + int usuarioId) + throws + SQLException { + PreparedStatement statement = null; + String sql = MySQLQueries.getDeleteUserQuery(); + statement = connection.prepareStatement(sql); + statement.setInt(1, usuarioId); + + return statement; + } + + @Override + public void deleteUserProperty(Usuario usuario, String propriedade) throws SQLException { + PreparedStatement statement = null; + int affectedRows = 0; + try (Connection connection = getDBConnection()) { + statement = createDeleteUsuarioPropertyPreparedStatement( + connection, + usuario, + propriedade); + affectedRows = statement.executeUpdate(); + if (affectedRows == 0) { + throw new SQLException("Delete user property failed, no rows affected."); + } + } finally { + if (statement != null) { + statement.close(); + } + } + } + + private PreparedStatement createDeleteUsuarioPropertyPreparedStatement( + Connection connection, + Usuario usuario, + String propriedade) + throws + SQLException { + PreparedStatement statement = null; + String sql = MySQLQueries.getUpdateUserQuery(usuario, propriedade); + statement = connection.prepareStatement(sql); + switch (propriedade) { + case "alias": + case "name": + case "surname": + case "photo": + statement.setNull(1, java.sql.Types.VARCHAR); + break; + case "age": + case "phone": + case "group": + statement.setNull(1, java.sql.Types.INTEGER); + break; + default: + break; + } + + statement.setInt(2, usuario.getId()); + + return statement; + } + + @Override + public void deleteGroup(Integer groupId) throws SQLException { + PreparedStatement statement = null; + int affectedRows = 0; + try (Connection connection = getDBConnection()) { + statement = createDeleteGrupoPreparedStatement(connection, groupId); + affectedRows = statement.executeUpdate(); + if (affectedRows == 0) { + throw new SQLException("Update user failed, no rows affected."); + } + } finally { + if (statement != null) { + statement.close(); + } + } + } + + private PreparedStatement createDeleteGrupoPreparedStatement( + Connection connection, + int grupoId) + throws + SQLException { + PreparedStatement statement = null; + String sql = MySQLQueries.getDeleteGroupQuery(); + statement = connection.prepareStatement(sql); + statement.setInt(1, grupoId); + + return statement; + } } From 6fcfb920ffa813ab1937f1850a0d76fa3ef6a16a Mon Sep 17 00:00:00 2001 From: Eduard Cespedes Date: Sun, 30 Apr 2017 21:47:30 +0200 Subject: [PATCH 4/4] Fixed Dockerfile, and docker-compose and how to set environmental variables inside a java project --- Dockerfile | 5 ++++ docker-compose.yml | 25 +++++++++++++++++-- .../API/persistence/MySQLPersistence.java | 14 ++++++++--- .../dedam/API/util/EnvironmentVariables.java | 20 +++++++++++++++ 4 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/uab/dedam/API/util/EnvironmentVariables.java diff --git a/Dockerfile b/Dockerfile index 429e689..109742d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,11 @@ FROM tomcat:latest MAINTAINER Thiago Herrera +ENV MYSQL_URL="127.0.0.1" +ENV MYSQL_PORT="3306" +ENV MYSQL_USER="restapiuser" +ENV MYSQL_PASSWORD="DedamRestAPIDB" + COPY ./target/rest.war /usr/local/tomcat/webapps/ EXPOSE 8080 diff --git a/docker-compose.yml b/docker-compose.yml index f035ba6..6477544 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,28 @@ version: "2" services: + mysql: + image: mysql:5.7 + volumes: + - db_data:/var/lib/mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: whatever + MYSQL_DATABASE: DedamSQLDB + MYSQL_USER: restapiuser + MYSQL_PASSWORD: DedamRestAPIDB + restapi: - image: restapidedam + build: . ports: - - "8080:8080" \ No newline at end of file + - "8080:8080" + restart: always + depends_on: + - mysql + environment: + MYSQL_URL: 127.0.0.1 + MYSQL_PORT: 3306 + MYSQL_USER: restapiuser + MYSQL_PASSWORD: DedamRestAPIDB +volumes: + db_data: \ No newline at end of file diff --git a/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java b/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java index 51788de..6051ff4 100644 --- a/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java +++ b/src/main/java/com/uab/dedam/API/persistence/MySQLPersistence.java @@ -4,6 +4,7 @@ import com.uab.dedam.API.models.GrupoUsuario; import com.uab.dedam.API.models.Usuario; import com.uab.dedam.API.models.UsuarioFiltered; +import com.uab.dedam.API.util.EnvironmentVariables; import java.sql.*; import java.util.ArrayList; @@ -12,7 +13,8 @@ public class MySQLPersistence implements IPersistenceService { private static String DB_DRIVER = "com.mysql.jdbc.Driver"; - private static String DB_CONNECTION = "jdbc:mysql://127.0.0.1:3306/DedamSQLDB"; + private static String MYSQL_URL = "127.0.0.1"; + private static String MYSQL_PORT = "3306"; private static String DB_USER = "restapiuser"; private static String DB_PASSWORD = "DedamRestAPIDB"; @@ -25,8 +27,14 @@ private static Connection getDBConnection() { } try { - dbConnection = DriverManager.getConnection( - DB_CONNECTION, DB_USER, DB_PASSWORD); + String url = EnvironmentVariables.getVariableValue("MYSQL_URL", MYSQL_URL); + String port = EnvironmentVariables.getVariableValue("MYSQL_PORT", MYSQL_PORT); + String user = EnvironmentVariables.getVariableValue("MYSQL_USER", DB_USER); + String password = EnvironmentVariables.getVariableValue("MYSQL_PASSWORD", DB_PASSWORD); + + String dbConnectionString = "jdbc:mysql://" + url + ":" + port + "/DedamSQLDB"; + + dbConnection = DriverManager.getConnection(dbConnectionString, user, password); return dbConnection; } catch (SQLException e) { System.out.println(e.getMessage()); diff --git a/src/main/java/com/uab/dedam/API/util/EnvironmentVariables.java b/src/main/java/com/uab/dedam/API/util/EnvironmentVariables.java new file mode 100644 index 0000000..d00ef53 --- /dev/null +++ b/src/main/java/com/uab/dedam/API/util/EnvironmentVariables.java @@ -0,0 +1,20 @@ +package com.uab.dedam.API.util; + +import java.util.Map; + +/** + * Created by haduart on 30/04/17. + */ +public class EnvironmentVariables { + + public static String getVariableValue(String keyName, String defaultValue) { + Map env = System.getenv(); + for (String envName : env.keySet()) { + if (envName.equals(keyName)) + return env.get(envName); + } + + System.out.printf("No environment value for " + keyName + ", returning default value:" + defaultValue); + return defaultValue; + } +}