diff --git a/pom.xml b/pom.xml
index 3baf711..869c624 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,12 @@
runtime
+
+ com.google.code.gson
+ gson
+
+
+
diff --git a/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdmin.java b/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdmin.java
index e29bdd0..34e52a3 100644
--- a/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdmin.java
+++ b/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdmin.java
@@ -1,22 +1,21 @@
package br.com.openenade.api.categoriaadmin;
-
import com.fasterxml.jackson.annotation.JsonValue;
public enum CategoriaAdmin {
-
- PUBLICO("Publico"),PRIVADO("Privado");
-
+
+ PUBLICO("Publico"), PRIVADO("Privado");
+
private String value;
-
+
private CategoriaAdmin() {
-
+
}
-
+
private CategoriaAdmin(String value) {
this.value = value;
}
-
+
@JsonValue
public String getValue() {
return this.value;
diff --git a/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdminController.java b/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdminController.java
index af1df44..59683c4 100644
--- a/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdminController.java
+++ b/src/main/java/br/com/openenade/api/categoriaadmin/CategoriaAdminController.java
@@ -12,13 +12,13 @@
@CrossOrigin(origins = "*")
@RequestMapping(path = CategoriaAdminController.ENDPOINT)
public class CategoriaAdminController {
-
+
public static final String ENDPOINT = "/categorias-admin";
-
+
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody ResponseEntity index() {
-
+
return new ResponseEntity<>(CategoriaAdmin.values(), HttpStatus.OK);
}
-
+
}
diff --git a/src/main/java/br/com/openenade/api/curso/Curso.java b/src/main/java/br/com/openenade/api/curso/Curso.java
index 6ce93d1..3295432 100644
--- a/src/main/java/br/com/openenade/api/curso/Curso.java
+++ b/src/main/java/br/com/openenade/api/curso/Curso.java
@@ -4,27 +4,24 @@
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
-import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.NotBlank;
import br.com.openenade.api.modalidade.Modalidade;
import javax.persistence.IdClass;
-
@Entity
@IdClass(CursoId.class)
public class Curso {
- @NotBlank(message = "'nome' não pode ser vazio.")
+ @NotBlank(message = "Curso 'nome' nao pode ser vazio")
private String nome;
@Id
- @Positive(message = "'codigoArea' precisa ser positivo.")
+ @Positive(message = "Curso 'codigoArea' precisa ser positivo")
private Long codigoArea;
@Id
- @Enumerated(EnumType.STRING)
- @NotNull(message = "Você precisa especificar uma 'modalidade' de ensino.")
+ @Enumerated(EnumType.ORDINAL)
private Modalidade modalidade;
public Curso() {
diff --git a/src/main/java/br/com/openenade/api/curso/CursoController.java b/src/main/java/br/com/openenade/api/curso/CursoController.java
deleted file mode 100644
index 66e8367..0000000
--- a/src/main/java/br/com/openenade/api/curso/CursoController.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package br.com.openenade.api.curso;
-
-import java.util.List;
-import java.util.Optional;
-import javax.validation.Valid;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.CrossOrigin;
-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.ResponseBody;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import br.com.openenade.api.modalidade.Modalidade;
-
-
-@RestController
-@CrossOrigin("*")
-@RequestMapping(path = CursoController.ENDPOINT)
-public class CursoController {
-
- public static final String ENDPOINT = "cursos";
-
- @Autowired
- private CursoService service;
-
- @PostMapping
- public Curso postCurso(@Valid @RequestBody Curso newCurso) {
- return this.service.save(newCurso);
- }
-
- @GetMapping
- @ResponseBody
- public ResponseEntity> getAll() {
- return new ResponseEntity<>(this.service.getAll(), HttpStatus.OK);
- }
-
- @ResponseBody
- @GetMapping(path = "/{codigo}/{modalidade}")
- public ResponseEntity getCursoByCodigo(@PathVariable(name = "codigo") Long codigo,
- @PathVariable(name = "modalidade") Modalidade modalidade) {
- Optional optCurso = this.service.getByCodigo(codigo, modalidade);
-
- if (optCurso.isPresent()) {
- return new ResponseEntity<>(optCurso.get(), HttpStatus.OK);
- } else {
- return new ResponseEntity<>(HttpStatus.NOT_FOUND);
- }
- }
-
-
-
-}
diff --git a/src/main/java/br/com/openenade/api/curso/CursoService.java b/src/main/java/br/com/openenade/api/curso/CursoService.java
index 49653d8..a7fb2fb 100644
--- a/src/main/java/br/com/openenade/api/curso/CursoService.java
+++ b/src/main/java/br/com/openenade/api/curso/CursoService.java
@@ -4,16 +4,16 @@
import java.util.Optional;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
+import br.com.openenade.api.exceptions.ResourceNotFound;
import br.com.openenade.api.modalidade.Modalidade;
-
@Service
public class CursoService {
@Autowired
private CursoRepository repository;
- public Curso save(Curso curso) {
+ public Curso addCurso(Curso curso) {
return this.repository.save(curso);
}
@@ -21,15 +21,20 @@ public List getAll() {
return this.repository.findAll();
}
- public Optional getByCodigo(Long codigo, Modalidade modalidade) {
+ public Curso getByCodigo(Long codigo, Modalidade modalidade) {
CursoId cursoId = new CursoId(codigo, modalidade);
- return this.repository.findById(cursoId);
-
+ Optional optCurso = this.repository.findById(cursoId);
+ if (optCurso.isPresent()) {
+ return optCurso.get();
+ } else {
+ throw new ResourceNotFound("Cannot find Curso with Codigo [" + Long.toString(codigo)
+ + "] and Modalidade [" + modalidade.getValue() + "]");
+ }
}
-
- // unutilized
- public void deleteCursoById(CursoId id) {
- this.repository.deleteById(id);
+
+ public void deleteById(CursoId cursoId) {
+ this.getByCodigo(cursoId.getCodigoArea(), cursoId.getModalidade());
+ this.repository.deleteById(cursoId);
}
}
diff --git a/src/main/java/br/com/openenade/api/curso/PrivateCursoController.java b/src/main/java/br/com/openenade/api/curso/PrivateCursoController.java
new file mode 100644
index 0000000..189f21a
--- /dev/null
+++ b/src/main/java/br/com/openenade/api/curso/PrivateCursoController.java
@@ -0,0 +1,34 @@
+package br.com.openenade.api.curso;
+
+import javax.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import br.com.openenade.api.modalidade.ModalidadeService;
+
+@RestController
+@RequestMapping(path = PublicCursoController.ENDPOINT)
+public class PrivateCursoController {
+
+ @Autowired
+ private CursoService service;
+
+ @ResponseBody
+ @PostMapping
+ public Curso addCurso(@Valid @RequestBody Curso newCurso) {
+ return this.service.addCurso(newCurso);
+ }
+
+ @DeleteMapping(path = "/{codigo}/{modalidade}")
+ public void deleteCursoByCodigo(@PathVariable(name = "codigo") Long codigo,
+ @PathVariable(name = "modalidade") Integer modalidadeId) {
+ this.service
+ .deleteById(new CursoId(codigo, ModalidadeService.getModalidadeById(modalidadeId)));
+ }
+
+}
diff --git a/src/main/java/br/com/openenade/api/curso/PublicCursoController.java b/src/main/java/br/com/openenade/api/curso/PublicCursoController.java
new file mode 100644
index 0000000..a839a69
--- /dev/null
+++ b/src/main/java/br/com/openenade/api/curso/PublicCursoController.java
@@ -0,0 +1,36 @@
+package br.com.openenade.api.curso;
+
+import java.util.List;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import br.com.openenade.api.modalidade.ModalidadeService;
+
+@RestController
+@CrossOrigin("*")
+@RequestMapping(path = PublicCursoController.ENDPOINT)
+public class PublicCursoController {
+
+ public static final String ENDPOINT = "cursos";
+
+ @Autowired
+ private CursoService service;
+
+ @GetMapping
+ @ResponseBody
+ public List getAll() {
+ return this.service.getAll();
+ }
+
+ @ResponseBody
+ @GetMapping(path = "/{codigo}/{modalidade}")
+ public Curso getCursoByCodigo(@PathVariable(name = "codigo") Long codigo,
+ @PathVariable(name = "modalidade") Integer modalidadeId) {
+ return this.service.getByCodigo(codigo, ModalidadeService.getModalidadeById(modalidadeId));
+ }
+
+}
diff --git a/src/main/java/br/com/openenade/api/modalidade/Modalidade.java b/src/main/java/br/com/openenade/api/modalidade/Modalidade.java
index 84d3065..d7da8a2 100644
--- a/src/main/java/br/com/openenade/api/modalidade/Modalidade.java
+++ b/src/main/java/br/com/openenade/api/modalidade/Modalidade.java
@@ -7,20 +7,23 @@
public enum Modalidade {
@Enumerated(EnumType.ORDINAL)
- EDUCACAO_PRESENCIAL("Educação Presencial"), EDUCACAO_A_DISTANCIA("Educação à Distância");
+ EDUCACAO_PRESENCIAL("Educação Presencial", 0), EDUCACAO_A_DISTANCIA("Educação à Distância", 1);
private String value;
+ private Integer id;
private Modalidade() {
}
- private Modalidade(String value) {
+ private Modalidade(String value, Integer id) {
this.value = value;
+ this.id = id;
}
@JsonValue
public String getValue() {
- return this.value;
+ return this.value + " - " + this.id;
}
+
}
diff --git a/src/main/java/br/com/openenade/api/modalidade/ModalidadeController.java b/src/main/java/br/com/openenade/api/modalidade/ModalidadeController.java
index b448634..e53a4f0 100644
--- a/src/main/java/br/com/openenade/api/modalidade/ModalidadeController.java
+++ b/src/main/java/br/com/openenade/api/modalidade/ModalidadeController.java
@@ -16,8 +16,8 @@ public class ModalidadeController {
public static final String ENDPOINT = "/modalidades";
@RequestMapping(method = RequestMethod.GET)
- public @ResponseBody ResponseEntity index() {
+ public @ResponseBody ResponseEntity getAllModalidades() {
return new ResponseEntity<>(Modalidade.values(), HttpStatus.OK);
}
-
+
}
diff --git a/src/main/java/br/com/openenade/api/modalidade/ModalidadeService.java b/src/main/java/br/com/openenade/api/modalidade/ModalidadeService.java
new file mode 100644
index 0000000..d4b7439
--- /dev/null
+++ b/src/main/java/br/com/openenade/api/modalidade/ModalidadeService.java
@@ -0,0 +1,17 @@
+package br.com.openenade.api.modalidade;
+
+import br.com.openenade.api.exceptions.ResourceNotFound;
+
+public class ModalidadeService {
+
+ public static Modalidade getModalidadeById(Integer id) {
+ Modalidade[] modalidades = Modalidade.values();
+ if (id < 0 || id >= modalidades.length) {
+ throw new ResourceNotFound(
+ "Cannot find Modalidade with Id [" + Integer.toString(id) + "]");
+ } else {
+ return modalidades[id];
+ }
+ }
+
+}
diff --git a/src/main/java/br/com/openenade/api/universidade/UniversidadeService.java b/src/main/java/br/com/openenade/api/universidade/UniversidadeService.java
index 13611e2..693a282 100644
--- a/src/main/java/br/com/openenade/api/universidade/UniversidadeService.java
+++ b/src/main/java/br/com/openenade/api/universidade/UniversidadeService.java
@@ -39,14 +39,9 @@ public Universidade save(Universidade universidade) {
}
public Universidade addCurso2Universidade(Universidade universidade, Curso curso) {
- Optional optCurso =
- this.cursoService.getByCodigo(curso.getCodigoArea(), curso.getModalidade());
- if (optCurso.isPresent()) {
- universidade.addCurso(optCurso.get());
- return this.repository.saveAndFlush(universidade);
- } else {
- throw new ResourceNotFound(curso.toString());
- }
+ curso = this.cursoService.getByCodigo(curso.getCodigoArea(), curso.getModalidade());
+ universidade.addCurso(curso);
+ return this.repository.saveAndFlush(universidade);
}
public Collection getAll() {
diff --git a/src/test/java/br/com/openenade/api/BaseUnitTest.java b/src/test/java/br/com/openenade/api/BaseUnitTest.java
index 7ccadd0..050da4c 100644
--- a/src/test/java/br/com/openenade/api/BaseUnitTest.java
+++ b/src/test/java/br/com/openenade/api/BaseUnitTest.java
@@ -61,7 +61,7 @@ public void clean() {
for (Curso curso : this.cursoService.getAll()) {
CursoId id = new CursoId(curso.getCodigoArea(), curso.getModalidade());
- this.cursoService.deleteCursoById(id);
+ this.cursoService.deleteById(id);
}
for (Ano ano : this.anoService.getAllAnos()) {
this.anoService.deleteAno(ano.getAno());
diff --git a/src/test/java/br/com/openenade/api/curso/CursoServiceTests.java b/src/test/java/br/com/openenade/api/curso/CursoServiceTests.java
index aeb712a..a8a7232 100644
--- a/src/test/java/br/com/openenade/api/curso/CursoServiceTests.java
+++ b/src/test/java/br/com/openenade/api/curso/CursoServiceTests.java
@@ -23,7 +23,7 @@ public class CursoServiceTests extends BaseUnitTest {
@Test
public void testSaveBasic() {
- this.cursoService.save(new Curso("CC", 13, Modalidade.EDUCACAO_PRESENCIAL));
+ this.cursoService.addCurso(new Curso("CC", 13, Modalidade.EDUCACAO_PRESENCIAL));
}
@Test
@@ -35,10 +35,10 @@ public void testGetAllBasic() {
Curso e = new Curso("História", 13, Modalidade.EDUCACAO_A_DISTANCIA);
- this.cursoService.save(a);
- this.cursoService.save(b);
- this.cursoService.save(c);
- this.cursoService.save(d);
+ this.cursoService.addCurso(a);
+ this.cursoService.addCurso(b);
+ this.cursoService.addCurso(c);
+ this.cursoService.addCurso(d);
List cursos = this.cursoService.getAll();
@@ -63,13 +63,13 @@ public void testGetByCodigo() {
Curso b = new Curso(cursos[1], 5, modalidade);
Curso c = new Curso(cursos[2], 7, modalidade);
- this.cursoService.save(a);
- this.cursoService.save(b);
- this.cursoService.save(c);
+ this.cursoService.addCurso(a);
+ this.cursoService.addCurso(b);
+ this.cursoService.addCurso(c);
- Curso aa = this.cursoService.getByCodigo(3L, modalidade).get();
- Curso bb = this.cursoService.getByCodigo(5L, modalidade).get();
- Curso cc = this.cursoService.getByCodigo(7L, modalidade).get();
+ Curso aa = this.cursoService.getByCodigo(3L, modalidade);
+ Curso bb = this.cursoService.getByCodigo(5L, modalidade);
+ Curso cc = this.cursoService.getByCodigo(7L, modalidade);
assertEquals(a, aa);
assertEquals(b, bb);
diff --git a/src/test/java/br/com/openenade/api/nota/NotaControllerTests.java b/src/test/java/br/com/openenade/api/nota/NotaControllerTests.java
index 401dd3c..d4f6ef0 100644
--- a/src/test/java/br/com/openenade/api/nota/NotaControllerTests.java
+++ b/src/test/java/br/com/openenade/api/nota/NotaControllerTests.java
@@ -113,13 +113,13 @@ public void getTestBasicPlusDelete() throws Exception {
JSONAssert.assertEquals(
"{\"info\":{\"ano\":{\"ano\":2018},\"curso\":{\"nome\":"
+ "\"Ciência da Computação\",\"codigoArea\":33,\""
- + "modalidade\":\"Educação Presencial\"},\"universidade\":{\"c"
+ + "modalidade\":\"Educação Presencial - 0\"},\"universidade\":{\"c"
+ "odigoIES\":3213321,\"nome\":\"UFREI\",\"campus\":{\"codigo"
+ "\":123,\"estado\":{\"sigla\":\"GO\",\"regiao\":{\"sigla\":"
+ "\"NE\"}},\"nome\":\"Poeira Grande\"},\"categoriaAdmin\":\"P"
+ "ublico\",\"cursos\":[{\"nome\":\"Ciênc"
+ "ia da Computação\",\"codigoArea\":33,\"modalidade\":\"Educa"
- + "ção Presencial\"}]}},\"avaliacao\":{\"concluintesInscritos"
+ + "ção Presencial - 0\"}]}},\"avaliacao\":{\"concluintesInscritos"
+ "\":3,\"concluintesParticipantes\":2,\"notaBrutaFG\":0.5,\""
+ "notaPadronizadaFG\":0.0,\"notaBrutaCE\":2.1,\"notaPadroniz"
+ "adaCE\":0.0,\"enadeContinuo\":3.666,\"enadeFaixa\":1}}",
diff --git a/src/test/java/br/com/openenade/api/universidade/UniversidadeControllerTests.java b/src/test/java/br/com/openenade/api/universidade/UniversidadeControllerTests.java
index a5a0d8f..b57338f 100644
--- a/src/test/java/br/com/openenade/api/universidade/UniversidadeControllerTests.java
+++ b/src/test/java/br/com/openenade/api/universidade/UniversidadeControllerTests.java
@@ -88,9 +88,9 @@ public void deleteTests() {
private Set createCursos() {
Set cursos = new HashSet();
Curso cursoCC =
- this.cursoService.save(new Curso("CC", 13, Modalidade.EDUCACAO_PRESENCIAL));
+ this.cursoService.addCurso(new Curso("CC", 13, Modalidade.EDUCACAO_PRESENCIAL));
Curso cursoEE =
- this.cursoService.save(new Curso("EE", 14, Modalidade.EDUCACAO_PRESENCIAL));
+ this.cursoService.addCurso(new Curso("EE", 14, Modalidade.EDUCACAO_PRESENCIAL));
cursos.add(cursoCC);
cursos.add(cursoEE);
return cursos;
diff --git a/src/test/java/br/com/openenade/api/universidade/UniversidadeServiceTests.java b/src/test/java/br/com/openenade/api/universidade/UniversidadeServiceTests.java
index c24cbbf..234ab8b 100644
--- a/src/test/java/br/com/openenade/api/universidade/UniversidadeServiceTests.java
+++ b/src/test/java/br/com/openenade/api/universidade/UniversidadeServiceTests.java
@@ -111,9 +111,9 @@ public void deleteUniversidadeByCodigoIESTest() {
private Set createCursos() {
Set cursos = new HashSet();
Curso cursoCC =
- this.cursoService.save(new Curso("CC", 13, Modalidade.EDUCACAO_PRESENCIAL));
+ this.cursoService.addCurso(new Curso("CC", 13, Modalidade.EDUCACAO_PRESENCIAL));
Curso cursoEE =
- this.cursoService.save(new Curso("EE", 14, Modalidade.EDUCACAO_PRESENCIAL));
+ this.cursoService.addCurso(new Curso("EE", 14, Modalidade.EDUCACAO_PRESENCIAL));
cursos.add(cursoCC);
cursos.add(cursoEE);
return cursos;