From b30c6968c524bca11c4e9b14415daa79aad147ec Mon Sep 17 00:00:00 2001 From: Pezcue Date: Mon, 8 Apr 2024 20:06:46 -0400 Subject: [PATCH] segunda actualizacion --- src/.DS_Store | Bin 6148 -> 6148 bytes src/main/.DS_Store | Bin 6148 -> 6148 bytes src/main/java/.DS_Store | Bin 6148 -> 6148 bytes .../example/rest/Services/ProjectService.java | 18 +++++ .../rest/Services/ProjectServiceImpl.java | 75 ++++++++++++++++++ .../rest/Services/ProjectoService.java | 9 --- .../rest/controllers/ProjectController.java | 28 ++++--- .../com/example/rest/entities/Project.java | 72 +++++++++++++++++ .../example/rest/entities/projectStatus.java | 7 ++ .../rest/repositories/ProjectRepository.java | 10 ++- 10 files changed, 198 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/example/rest/Services/ProjectService.java create mode 100644 src/main/java/com/example/rest/Services/ProjectServiceImpl.java delete mode 100644 src/main/java/com/example/rest/Services/ProjectoService.java create mode 100644 src/main/java/com/example/rest/entities/projectStatus.java diff --git a/src/.DS_Store b/src/.DS_Store index 9d6a56620545250bb9a34aa5ef87a586fdec28fa..7b0d36729e2ee777a660f9e8c6709dd97bc2fb68 100644 GIT binary patch delta 17 YcmZoMXfc@Jz{oh!QJ#@;W8z|Q04?7H`Tzg` delta 24 gcmZoMXfc@Jz{oJsQGR3MGWN;(BCMOaIezj30ARHTlK=n! diff --git a/src/main/.DS_Store b/src/main/.DS_Store index d38176301af6a9db8e9ffa5dc7916732489a254b..55c1fcbeb4ba2bef02771ea2748f3e4b0ea5c07d 100644 GIT binary patch delta 17 YcmZoMXfc@Jz{oh!QJ#@;W8z|Q04?7H`Tzg` delta 24 gcmZoMXfc@Jz{oJsQGR3MGWN;(BCMOaIezj30ARHTlK=n! diff --git a/src/main/java/.DS_Store b/src/main/java/.DS_Store index 35a54bf0595027f28217af82c3d32981e121b5e7..2b615a767f6da08a02d4f0c4241f455170fff868 100644 GIT binary patch delta 24 gcmZoMXfc>z$H*|zUVdZZGWN;3BJ7*FIezj30AOtgj{pDw delta 26 icmZoMXfc>z$H+L*UY?P0W8yOQ$$BDeo4GlD@&f>7?FW(o diff --git a/src/main/java/com/example/rest/Services/ProjectService.java b/src/main/java/com/example/rest/Services/ProjectService.java new file mode 100644 index 0000000..e8980ed --- /dev/null +++ b/src/main/java/com/example/rest/Services/ProjectService.java @@ -0,0 +1,18 @@ +package com.example.rest.Services; + +import com.example.rest.entities.Project; + +public interface ProjectService { + + // para crear projectos + Project createProject(Project project); + + // para editar projectos + Project editProject(Long id, Project project); + + // para eliminar projectos + void deleteProject(Long id); + + // para obtener projecto por id + Project getProjectById(Long id); +} diff --git a/src/main/java/com/example/rest/Services/ProjectServiceImpl.java b/src/main/java/com/example/rest/Services/ProjectServiceImpl.java new file mode 100644 index 0000000..1eb2287 --- /dev/null +++ b/src/main/java/com/example/rest/Services/ProjectServiceImpl.java @@ -0,0 +1,75 @@ +package com.example.rest.Services; + +import com.example.rest.entities.Project; +import com.example.rest.entities.projectStatus; +import com.example.rest.repositories.ProjectRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.Optional; + +@Service +public class ProjectServiceImpl implements ProjectService { + + private final ProjectRepository projectRepository; + + @Autowired + public ProjectServiceImpl(ProjectRepository projectRepository) { + this.projectRepository = projectRepository; + } + + @Override + public Project createProject(Project project) { + + // Chequear que el projecto no sea nulo y tenga un nombre + if (project == null || project.getName() == null || project.getName().isEmpty()) { + throw new IllegalArgumentException("Invalid project details"); + } + + // Aregarle los atributos por defecto + project.setStatus(projectStatus.ACTIVE); + project.setCreateDate(LocalDateTime.now()); + + // Guardar (?) Preguntar + return projectRepository.save(project); + } + + + @Override + public Project editProject(Long id, Project project) { + + Optional optionalProject = projectRepository.findById(id); + + if (optionalProject.isPresent()) { + + projectRepository.save(project); + + return project; + } else { + throw new RuntimeException("El proyecto no existe"); // Cambiar por exp personalizada + } + } + + @Override + public void deleteProject(Long id) { + Optional projectOptional = projectRepository.findById(id); + if(projectOptional.isPresent()){ + projectRepository.deleteById(id); + } else { + throw new RuntimeException("Proyecto con el id: " + id + " no existe."); + } + } + + @Override + public Project getProjectById(Long id) { + Optional projectOptional = projectRepository.findById(id); + if(projectOptional.isPresent()) { + return projectOptional.get(); + } else { + throw new RuntimeException("Proyecto con el id: " + id + " no existe."); + } + } + +} + diff --git a/src/main/java/com/example/rest/Services/ProjectoService.java b/src/main/java/com/example/rest/Services/ProjectoService.java deleted file mode 100644 index 52ced68..0000000 --- a/src/main/java/com/example/rest/Services/ProjectoService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.rest.Services; - -import org.springframework.stereotype.Service; - -@Service -public class ProjectoService { - - -} diff --git a/src/main/java/com/example/rest/controllers/ProjectController.java b/src/main/java/com/example/rest/controllers/ProjectController.java index 650e831..5857685 100644 --- a/src/main/java/com/example/rest/controllers/ProjectController.java +++ b/src/main/java/com/example/rest/controllers/ProjectController.java @@ -1,6 +1,6 @@ package com.example.rest.controllers; -import com.example.rest.Services.ProjectoService; +import com.example.rest.Services.ProjectServiceImpl; import com.example.rest.entities.Project; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @@ -8,43 +8,49 @@ import java.net.URI; + @RestController @RequestMapping("/v1/projects") public class ProjectController { // Injeccion del servicio - private final ProjectoService projectoService; + private ProjectServiceImpl projectService ; @Autowired - public ProjectController(ProjectoService projectoService) { - this.projectoService = projectoService; + public ProjectController(ProjectServiceImpl projectService) { + this.projectService = projectService; } //POST -> /v1/projects crear un Project @PostMapping - public ResponseEntity crearProjecto(@RequestBody Project project) { - Project projectoCreado = projectoService.crearProjecto(project); + public ResponseEntity createProject(@RequestBody Project project) { + Project projectoCreado = projectService.createProject(project); return ResponseEntity.created(URI.create("/v1/projects" + projectoCreado.getId())) .body(projectoCreado); } // PUT -> /v1/projects/{id} editar un Project @PutMapping("/{id}") - public ResponseEntity editarProjecto(@PathVariable("id") Long id, + public ResponseEntity editProject(@PathVariable("id") Long id, @RequestBody Project project) { - + Project proyectoEditado = projectService.editProject(id, project); + return ResponseEntity.created(URI.create("/v1/projects" + proyectoEditado.getId())) + .body(proyectoEditado); } // DELETE -> /v1/projects/{id} eliminar un Project public ResponseEntity eliminarProjecto(@PathVariable("id") Long id) { - + projectService.deleteProject(id); + return ResponseEntity.noContent() + .build(); } - // GET -> /v1/projects/{id} obtener un Project por i + // GET -> /v1/projects/{id} obtener un Project por id @GetMapping("/{id}") public ResponseEntity obtenerProjecto(@PathVariable("id") Long id) { - + Project project = projectService.getProjectById(id); + return ResponseEntity.ok(project); } diff --git a/src/main/java/com/example/rest/entities/Project.java b/src/main/java/com/example/rest/entities/Project.java index 927e1cd..c72708c 100644 --- a/src/main/java/com/example/rest/entities/Project.java +++ b/src/main/java/com/example/rest/entities/Project.java @@ -3,9 +3,11 @@ import jakarta.persistence.*; import lombok.*; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; + @Setter @Getter @Builder @@ -22,6 +24,76 @@ public class Project { @Column(name = "nombre") private String name; + @Column(name = "descripcion") + private String description; + + @Column(name = "status") + private projectStatus status; + + @Column(name = "fecha_creacion") + private LocalDateTime createDate; + + @Column(name = "fecha_actualizacion") + private LocalDateTime lastUpdatedDate; + @OneToMany(mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) private List userProyectList = new ArrayList<>(); + + + public Project(Long id, String name, String description, LocalDateTime createDate, LocalDateTime lastUpdatedDate, List userProyectList) { + this.id = id; + this.name = name; + this.description = description; + this.createDate = createDate; + this.lastUpdatedDate = lastUpdatedDate; + this.userProyectList = userProyectList; + } + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public LocalDateTime getCreateDate() { + return createDate; + } + + public LocalDateTime getLastUpdatedDate() { + return lastUpdatedDate; + } + + public List getUserProyectList() { + return userProyectList; + } + + public void setId(Long id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setDescription(String description) { + this.description = description; + } + + public void setCreateDate(LocalDateTime createDate) { + this.createDate = createDate; + } + + public void setLastUpdatedDate(LocalDateTime lastUpdatedDate) { + this.lastUpdatedDate = lastUpdatedDate; + } + + public void setUserProyectList(List userProyectList) { + this.userProyectList = userProyectList; + } } diff --git a/src/main/java/com/example/rest/entities/projectStatus.java b/src/main/java/com/example/rest/entities/projectStatus.java new file mode 100644 index 0000000..b344813 --- /dev/null +++ b/src/main/java/com/example/rest/entities/projectStatus.java @@ -0,0 +1,7 @@ +package com.example.rest.entities; + +public enum projectStatus { + ACTIVE, + INACTIVE, + PAUSED +} diff --git a/src/main/java/com/example/rest/repositories/ProjectRepository.java b/src/main/java/com/example/rest/repositories/ProjectRepository.java index 1321642..38d622b 100644 --- a/src/main/java/com/example/rest/repositories/ProjectRepository.java +++ b/src/main/java/com/example/rest/repositories/ProjectRepository.java @@ -1,4 +1,12 @@ package com.example.rest.repositories; -public interface ProjectRepository { +import com.example.rest.entities.Project; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProjectRepository extends JpaRepository { + + Project findByName(String name); + Project findProjectById(Long id); }