restbasics1/src/main/java/de/lusiardi/testprojekt/controller/RestController.java

77 lines
2.5 KiB
Java

package de.lusiardi.testprojekt.controller;
import de.lusiardi.testprojekt.dto.PersonCreateDto;
import de.lusiardi.testprojekt.dto.PersonDto;
import de.lusiardi.testprojekt.exceptions.ResourceNotFoundException;
import java.util.ArrayList;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
public class RestController {
private List<PersonDto> persons = new ArrayList<PersonDto>();
@RequestMapping(value = "persons", method = RequestMethod.GET)
@ResponseBody
public List<PersonDto> getPersons() {
return persons;
}
@RequestMapping(value = "persons", method = RequestMethod.POST)
@ResponseBody
@ResponseStatus(HttpStatus.CREATED)
public PersonDto createPerson(@RequestBody PersonCreateDto in) {
PersonDto person = new PersonDto(in.getName(), in.getEmail());
persons.add(person);
return person;
}
@RequestMapping(value = "persons/{id}", method = RequestMethod.GET)
@ResponseBody
public PersonDto getPerson(@PathVariable(value = "id") int id) {
for (PersonDto person : persons) {
if (id == person.getId()) {
return person;
}
}
throw new ResourceNotFoundException();
}
@RequestMapping(value = "persons/{id}", method = RequestMethod.DELETE)
@ResponseBody
@ResponseStatus(HttpStatus.GONE)
public boolean deletePerson(@PathVariable(value = "id") int id) {
PersonDto toDelete = null;
for (PersonDto person : persons) {
if (id == person.getId()) {
toDelete = person;
}
}
if (toDelete != null) {
return persons.remove(toDelete);
} else {
throw new ResourceNotFoundException();
}
}
@RequestMapping(value = "persons/{id}", method = RequestMethod.PUT)
@ResponseBody
public PersonDto updatePerson(@PathVariable(value = "id") int id, @RequestBody PersonCreateDto in) {
PersonDto toUpdate = null;
for (PersonDto person : persons) {
if (id == person.getId()) {
toUpdate = person;
}
}
if (toUpdate != null) {
toUpdate.setEmail(in.getEmail());
toUpdate.setName(in.getName());
return toUpdate;
} else {
throw new ResourceNotFoundException();
}
}
}