fixed controllers and daos

REL-BRANCH-ClubhelperModel-0.0.1
Markus Kreth 5 years ago
parent fa352bbd32
commit db5d1cb957
  1. 30
      src/main/java/de/kreth/clubhelper/model/controller/AbstractController.java
  2. 20
      src/main/java/de/kreth/clubhelper/model/controller/AdressController.java
  3. 20
      src/main/java/de/kreth/clubhelper/model/controller/ContactController.java
  4. 20
      src/main/java/de/kreth/clubhelper/model/controller/PersonController.java
  5. 16
      src/main/java/de/kreth/clubhelper/model/controller/RelativeController.java
  6. 3
      src/main/java/de/kreth/clubhelper/model/dao/AttendanceDao.java
  7. 5
      src/main/java/de/kreth/clubhelper/model/dao/ContactDao.java
  8. 8
      src/main/java/de/kreth/clubhelper/model/dao/RelativeDao.java
  9. 65
      src/main/java/de/kreth/clubhelper/model/data/Relative.java

@ -12,6 +12,7 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@ -25,10 +26,9 @@ import de.kreth.clubhelper.model.data.BaseEntity;
/** /**
* Default Controller implementing all functionality for all {@link Data} types. * Default Controller implementing all functionality for all {@link Data} types.
* *
* @param <T> * @param <T> Data type
* Data type
*/ */
@Controller
//@PreAuthorize("hasAnyRole('ROLE_ADMIN', 'STAFF')") //@PreAuthorize("hasAnyRole('ROLE_ADMIN', 'STAFF')")
public abstract class AbstractController<T extends BaseEntity, D extends CrudRepository<T, Long>> public abstract class AbstractController<T extends BaseEntity, D extends CrudRepository<T, Long>>
implements implements
@ -38,15 +38,16 @@ public abstract class AbstractController<T extends BaseEntity, D extends CrudRep
protected D dao; protected D dao;
private Class<T> elementClass; private Class<T> elementClass;
public AbstractController(Class<T> element) { protected AbstractController(Class<T> element) {
super(); super();
this.elementClass = element; this.elementClass = element;
} }
@Override @Override
@GetMapping(value = "/{id}", produces = "application/json") @GetMapping(value = "/{id}")
public T getById(@PathVariable("id") long id) { public T getById(@PathVariable("id") long id) {
return dao.findById(id).orElseThrow(() -> new IllegalArgumentException(elementClass.getName() + " with id=" + id + " not found")); return dao.findById(id).orElseThrow(
() -> new IllegalArgumentException(elementClass.getName() + " with id=" + id + " not found"));
} }
protected List<T> iterableToList(Iterable<T> in) { protected List<T> iterableToList(Iterable<T> in) {
@ -56,8 +57,7 @@ public abstract class AbstractController<T extends BaseEntity, D extends CrudRep
} }
@Override @Override
@GetMapping(value = {"/", @GetMapping(value = { "/", "" })
""}, produces = "application/json")
public List<T> getAll() { public List<T> getAll() {
Iterable<T> findAll = dao.findAll(); Iterable<T> findAll = dao.findAll();
List<T> result = new ArrayList<>(); List<T> result = new ArrayList<>();
@ -66,7 +66,7 @@ public abstract class AbstractController<T extends BaseEntity, D extends CrudRep
} }
@Override @Override
@GetMapping(value = "/for/{id}", produces = "application/json") @GetMapping(value = "/for/{id}")
public List<T> getByParentId(@PathVariable("id") long id) { public List<T> getByParentId(@PathVariable("id") long id) {
if (dao instanceof ClubhelperDao) { if (dao instanceof ClubhelperDao) {
ClubhelperDao<T> specialDao = (ClubhelperDao<T>) dao; ClubhelperDao<T> specialDao = (ClubhelperDao<T>) dao;
@ -76,7 +76,7 @@ public abstract class AbstractController<T extends BaseEntity, D extends CrudRep
} }
@Override @Override
@GetMapping(value = "/changed/{changed}", produces = "application/json") @GetMapping(value = "/changed/{changed}")
public List<T> getChangedSince(@PathVariable("changed") long changed) { public List<T> getChangedSince(@PathVariable("changed") long changed) {
if (dao instanceof ClubhelperDao) { if (dao instanceof ClubhelperDao) {
@ -87,7 +87,7 @@ public abstract class AbstractController<T extends BaseEntity, D extends CrudRep
} }
@Override @Override
@PutMapping(value = "/{id}", produces = "application/json") @PutMapping(value = "/{id}")
public T put(@PathVariable("id") long id, @RequestBody T toUpdate) { public T put(@PathVariable("id") long id, @RequestBody T toUpdate) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
@ -109,7 +109,7 @@ public abstract class AbstractController<T extends BaseEntity, D extends CrudRep
} }
@Override @Override
@DeleteMapping(value = "/{id}", produces = "application/json") @DeleteMapping(value = "/{id}")
public ResponseEntity<T> delete(@PathVariable("id") long id) { public ResponseEntity<T> delete(@PathVariable("id") long id) {
T byId = getById(id); T byId = getById(id);
if (not(byId.isDeleted())) { if (not(byId.isDeleted())) {
@ -119,13 +119,13 @@ public abstract class AbstractController<T extends BaseEntity, D extends CrudRep
} }
@Override @Override
@PostMapping(value = "/", produces = "application/json") @PostMapping(value = "/")
public T post(@RequestBody T toCreate) { public T post(@RequestBody T toCreate) {
return post(-1L, toCreate); return post(toCreate.getId(), toCreate);
} }
@Override @Override
@PostMapping(value = "/{id}", produces = "application/json") @PostMapping(value = "/{id}")
public T post(@PathVariable("id") Long id, @RequestBody T toCreate) { public T post(@PathVariable("id") Long id, @RequestBody T toCreate) {
if (id == null) { if (id == null) {
id = -1L; id = -1L;

@ -1,33 +1,19 @@
package de.kreth.clubhelper.model.controller; package de.kreth.clubhelper.model.controller;
import java.time.LocalDateTime;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import de.kreth.clubhelper.model.dao.AdressDao; import de.kreth.clubhelper.model.dao.AdressDao;
import de.kreth.clubhelper.model.data.Adress; import de.kreth.clubhelper.model.data.Adress;
import de.kreth.clubhelper.model.data.Person;
@RestController @RestController
@RequestMapping("/adress") @RequestMapping("/adress")
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
public class AdressController public class AdressController extends AbstractController<Adress, AdressDao> {
{
@Autowired
private AdressDao adressDao;
public List<Adress> getByParent(Person person) public AdressController() {
{ super(Adress.class);
return adressDao.findByPerson(person);
} }
public void delete(Adress a)
{
a.setDeleted(LocalDateTime.now());
adressDao.save(a);
}
} }

@ -1,33 +1,19 @@
package de.kreth.clubhelper.model.controller; package de.kreth.clubhelper.model.controller;
import java.time.LocalDateTime;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import de.kreth.clubhelper.model.dao.ContactDao; import de.kreth.clubhelper.model.dao.ContactDao;
import de.kreth.clubhelper.model.data.Contact; import de.kreth.clubhelper.model.data.Contact;
import de.kreth.clubhelper.model.data.Person;
@RestController @RestController
@RequestMapping("/contact") @RequestMapping("/contact")
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
public class ContactController public class ContactController extends AbstractController<Contact, ContactDao> {
{
@Autowired
private ContactDao contactDao;
public List<Contact> getByParent(Person person) public ContactController() {
{ super(Contact.class);
return contactDao.findByPerson(person);
} }
public void delete(Contact c)
{
c.setDeleted(LocalDateTime.now());
contactDao.save(c);
}
} }

@ -21,8 +21,7 @@ import io.swagger.annotations.ApiOperation;
@Controller @Controller
@RequestMapping("/person") @RequestMapping("/person")
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
public class PersonController public class PersonController {
{
@Autowired @Autowired
private PersonDao personDao; private PersonDao personDao;
@ -35,28 +34,25 @@ public class PersonController
@GetMapping @GetMapping
@PreAuthorize("hasAnyRole('trainer', 'admin')") @PreAuthorize("hasAnyRole('trainer', 'admin')")
@ApiOperation("Get a list of all persons. Restricted to trainers and admins.") @ApiOperation("Get a list of all persons. Restricted to trainers and admins.")
public @ResponseBody Iterable<Person> getAll() public @ResponseBody Iterable<Person> getAll() {
{
return personDao.findAll(); return personDao.findAll();
} }
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public @ResponseBody Optional<Person> getById(@PathVariable("id") final long id) public @ResponseBody Optional<Person> getById(@PathVariable("id") final long id) {
{
return personDao.findById(id); return personDao.findById(id);
} }
@DeleteMapping(value = "/{id}") @DeleteMapping(value = "/{id}")
public @ResponseBody Person delete(@PathVariable("id") final long id) public @ResponseBody Person delete(@PathVariable("id") final long id) {
{
Optional<Person> optional = personDao.findById(id); Optional<Person> optional = personDao.findById(id);
if (optional.isPresent()) { if (optional.isPresent()) {
Person person = optional.get(); Person person = optional.get();
for (Contact c : contactController.getByParent(person)) { for (Contact c : contactController.getByParentId(person.getId())) {
contactController.delete(c); contactController.delete(c.getId());
} }
for (Adress a : adressController.getByParent(person)) { for (Adress a : adressController.getByParentId(person.getId())) {
adressController.delete(a); adressController.delete(a.getId());
} }
person.setDeleted(LocalDateTime.now()); person.setDeleted(LocalDateTime.now());
personDao.save(person); personDao.save(person);

@ -1,5 +1,7 @@
package de.kreth.clubhelper.model.controller; package de.kreth.clubhelper.model.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -12,16 +14,14 @@ import de.kreth.clubhelper.model.data.Relative;
public class RelativeController extends AbstractController<Relative, RelativeDao> { public class RelativeController extends AbstractController<Relative, RelativeDao> {
@Autowired @Autowired
private RelativeDao relativeDao;
public RelativeController() { public RelativeController() {
super(Relative.class); super(Relative.class);
} }
//
// @Override
// @RequestMapping(value = "/for/{id}", method = RequestMethod.GET)
// public List<Relative> getByParentId(@PathVariable("id") long id) {
// StringBuilder whereClause = new StringBuilder("person1=");
// whereClause.append(id).append(" OR person2=").append(id);
// return dao.getByWhere(whereClause.toString());
// }
@Override
public List<Relative> getByParentId(long id) {
return relativeDao.findByPerson1ORPerson2(id);
}
} }

@ -10,7 +10,7 @@ import org.springframework.data.repository.CrudRepository;
import de.kreth.clubhelper.model.data.Attendance; import de.kreth.clubhelper.model.data.Attendance;
import de.kreth.clubhelper.model.data.Person; import de.kreth.clubhelper.model.data.Person;
public interface AttendanceDao extends CrudRepository<Attendance, Long> { public interface AttendanceDao extends CrudRepository<Attendance, Long>, ClubhelperDao<Attendance> {
List<Attendance> findByOnDate(LocalDate onDate); List<Attendance> findByOnDate(LocalDate onDate);
@ -18,6 +18,7 @@ public interface AttendanceDao extends CrudRepository<Attendance, Long> {
Attendance findByPersonAndOnDate(Person person, Date onDate); Attendance findByPersonAndOnDate(Person person, Date onDate);
@Override
List<Attendance> findByPersonId(long personId); List<Attendance> findByPersonId(long personId);
List<Attendance> findByChangedGreaterThan(LocalDateTime date); List<Attendance> findByChangedGreaterThan(LocalDateTime date);

@ -7,8 +7,11 @@ import org.springframework.data.repository.CrudRepository;
import de.kreth.clubhelper.model.data.Contact; import de.kreth.clubhelper.model.data.Contact;
import de.kreth.clubhelper.model.data.Person; import de.kreth.clubhelper.model.data.Person;
public interface ContactDao extends CrudRepository<Contact, Integer> { public interface ContactDao extends CrudRepository<Contact, Long>, ClubhelperDao<Contact> {
List<Contact> findByPerson(Person person); List<Contact> findByPerson(Person person);
@Override
List<Contact> findByPersonId(long personId);
} }

@ -1,9 +1,13 @@
package de.kreth.clubhelper.model.dao; package de.kreth.clubhelper.model.dao;
import java.util.List;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import de.kreth.clubhelper.model.data.Relative; import de.kreth.clubhelper.model.data.Relative;
public interface RelativeDao extends CrudRepository<Relative, Long> public interface RelativeDao extends CrudRepository<Relative, Long> {
{
List<Relative> findByPerson1ORPerson2(long personId);
} }

@ -8,7 +8,6 @@ import javax.persistence.Inheritance;
import javax.persistence.InheritanceType; import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table; import javax.persistence.Table;
/** /**
@ -17,29 +16,31 @@ import javax.persistence.Table;
@Entity @Entity
@Table(name = "relative") @Table(name = "relative")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@NamedQuery(name = Relative.QUERY_FINDALL, query = "SELECT r FROM Relative r") public class Relative extends BaseEntity implements Serializable {
public class Relative extends BaseEntity implements Serializable
{ private static final long serialVersionUID = 1L;
public static final String QUERY_FINDALL = "Relative.findAll";
@Column(name = "TO_PERSON1_RELATION") @Column(name = "TO_PERSON1_RELATION")
private String toPerson1Relation; private String toPerson1Relation;
@Column(name = "TO_PERSON2_RELATION") @Column(name = "TO_PERSON2_RELATION")
private String toPerson2Relation; private String toPerson2Relation;
// bi-directional many-to-one association to Person // bi-directional many-to-one association to Person
@ManyToOne @ManyToOne
@JoinColumn(name = "person1") @JoinColumn(name = "person1")
private Person person1Bean; private Person person1Bean;
// bi-directional many-to-one association to Person // bi-directional many-to-one association to Person
@ManyToOne @ManyToOne
@JoinColumn(name = "person2") @JoinColumn(name = "person2")
private Person person2Bean; private Person person2Bean;
public Relative() public Relative() {
{
} }
public Relative(long id, String toPerson1Relation, String toPerson2Relation, Person person1Bean, Person person2Bean) public Relative(long id, String toPerson1Relation, String toPerson2Relation, Person person1Bean,
{ Person person2Bean) {
super(); super();
setId(id); setId(id);
this.toPerson1Relation = toPerson1Relation; this.toPerson1Relation = toPerson1Relation;
@ -48,66 +49,53 @@ public class Relative extends BaseEntity implements Serializable
this.person2Bean = person2Bean; this.person2Bean = person2Bean;
} }
public String getToPerson1Relation() {
public String getToPerson1Relation()
{
return toPerson1Relation; return toPerson1Relation;
} }
public void setToPerson1Relation(String toPerson1Relation) public void setToPerson1Relation(String toPerson1Relation) {
{
this.toPerson1Relation = toPerson1Relation; this.toPerson1Relation = toPerson1Relation;
} }
public String getToPerson2Relation() public String getToPerson2Relation() {
{
return toPerson2Relation; return toPerson2Relation;
} }
public void setToPerson2Relation(String toPerson2Relation) public void setToPerson2Relation(String toPerson2Relation) {
{
this.toPerson2Relation = toPerson2Relation; this.toPerson2Relation = toPerson2Relation;
} }
public Person getPerson1Bean() public Person getPerson1Bean() {
{
return person1Bean; return person1Bean;
} }
public void setPerson1Bean(Person person1Bean) public void setPerson1Bean(Person person1Bean) {
{
this.person1Bean = person1Bean; this.person1Bean = person1Bean;
} }
public Person getPerson2Bean() public Person getPerson2Bean() {
{
return person2Bean; return person2Bean;
} }
public void setPerson2Bean(Person person2Bean) public void setPerson2Bean(Person person2Bean) {
{
this.person2Bean = person2Bean; this.person2Bean = person2Bean;
} }
public Relation getRelationTo(Person person) public Relation getRelationTo(Person person) {
{
if (person == null) { if (person == null) {
return null; return null;
} }
if (person.equals(person1Bean)) { if (person.equals(person1Bean)) {
return new Relation(person2Bean, toPerson2Relation); return new Relation(person2Bean, toPerson2Relation);
} } else if (person.equals(person2Bean)) {
else if (person.equals(person2Bean)) {
return new Relation(person1Bean, toPerson1Relation); return new Relation(person1Bean, toPerson1Relation);
} } else {
else {
return null; return null;
} }
} }
@Override @Override
public int hashCode() public int hashCode() {
{
final int prime = 73; final int prime = 73;
int result = super.hashCode(); int result = super.hashCode();
result = prime * result; result = prime * result;
@ -115,16 +103,15 @@ public class Relative extends BaseEntity implements Serializable
} }
@Override @Override
public boolean equals(Object obj) public boolean equals(Object obj) {
{
if (this == obj) if (this == obj)
return true; return true;
return super.equals(obj); return super.equals(obj);
} }
@Override @Override
public String toString() public String toString() {
{ return "Relative [person1Bean=" + person1Bean + ", toPerson2Relation=" + toPerson2Relation + ", person2Bean="
return "Relative [person1Bean=" + person1Bean + ", toPerson2Relation=" + toPerson2Relation + ", person2Bean=" + person2Bean + "]"; + person2Bean + "]";
} }
} }

Loading…
Cancel
Save