Skip to content

Commit

Permalink
(#7) - implementação do controller e do service
Browse files Browse the repository at this point in the history
  • Loading branch information
lipeacelino committed Feb 8, 2021
1 parent 5c9bac4 commit 210ac25
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 5 deletions.
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>provided</scope>
<scope>test</scope>
<version>1.4.200</version>
</dependency>

Expand Down Expand Up @@ -98,7 +98,7 @@
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>

<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
Expand Down Expand Up @@ -130,4 +130,4 @@
</plugins>
</build>

</project>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package org.ayty.hatcher.api.v1.competence.controller;

import java.util.List;

import org.ayty.hatcher.api.v1.competence.dto.CompetenceDTO;
import org.ayty.hatcher.api.v1.competence.model.Competence;
import org.ayty.hatcher.api.v1.competence.service.CompetenceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
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.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/competence")
public class CompetenceController {

@Autowired
CompetenceService service;

@ResponseStatus(HttpStatus.OK)
@GetMapping
public List<Competence> getAll() {
return service.getAll();
}

@ResponseStatus(HttpStatus.OK)
@GetMapping("/{id}")
public Competence getById(@PathVariable Integer id) {
return service.getById(id);
}

@ResponseStatus(HttpStatus.CREATED)
@PostMapping
public Competence save(@RequestBody CompetenceDTO competenceDto) {
return service.save(competenceDto);
}

@ResponseStatus(HttpStatus.OK)
@PutMapping("/{id}")
public Competence edit(@PathVariable Integer id, @RequestBody CompetenceDTO competenceDto) {
return service.edit(id, competenceDto);
}

@ResponseStatus(HttpStatus.NO_CONTENT)
@DeleteMapping("/{id}")
public void delete(@PathVariable Integer id ) {
service.delete(id);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.ayty.hatcher.api.v1.competence.dto;

import lombok.Data;

@Data
public class CompetenceDTO {

private String name;
private String description;
private String type;

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,27 @@
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
@Entity
public class Competence {

@Id
private Long id;
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@NotEmpty(message="O campo nome não pode estar vazio.")
@Size(min=10, max=200, message="O nome deve ter entre 10 e 200 caracteres.")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.ayty.hatcher.api.v1.competence.service;

import java.util.List;
import java.util.NoSuchElementException;

import org.ayty.hatcher.api.v1.competence.dto.CompetenceDTO;
import org.ayty.hatcher.api.v1.competence.jpa.CompetenceRepository;
import org.ayty.hatcher.api.v1.competence.model.Competence;
import org.ayty.hatcher.api.v1.competence.model.Type;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class CompetenceService {

@Autowired
CompetenceRepository repository;

public List<Competence> getAll() {
return repository.findAll();
}

public Competence save(CompetenceDTO competenceDto) {
Competence competence = Competence
.builder()
.name(competenceDto.getName())
.description(competenceDto.getDescription())
.type(Type.valueOf(competenceDto.getType().toUpperCase()))
.build();

return repository.save(competence);
}

public void delete(Integer id) {
repository.deleteById(id);
}

public Competence getById(Integer id) {

Competence competence = repository.findById(id)
.orElseThrow(() -> new NoSuchElementException("Competência não encontrada"));

return competence;
}

public Competence edit(Integer id, CompetenceDTO competenceDto) {

Competence competence = (Competence) repository.findById(id)
.map(c -> {
c.setDescription(competenceDto.getDescription());
c.setName(competenceDto.getName());
c.setType(Type.valueOf(competenceDto.getType().toUpperCase()));
return c;
}).orElseThrow(() -> new NoSuchElementException("Competência não encontrada"));

return repository.save(competence);
}

}
1 change: 0 additions & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,3 @@ security:
token:
secret-key: 8xATUx4r2L52
expire-length: 604800000 #1 week

0 comments on commit 210ac25

Please sign in to comment.