attendance mit localdate statt date

REL-BRANCH-ClubhelperModel-0.0.1
Markus Kreth 5 years ago
parent d0f143307c
commit b020eb3a62
  1. 73
      src/main/java/de/kreth/clubhelper/model/controller/AttendanceController.java
  2. 12
      src/main/java/de/kreth/clubhelper/model/dao/AttendanceDao.java
  3. 89
      src/main/java/de/kreth/clubhelper/model/data/Attendance.java

@ -1,5 +1,6 @@
package de.kreth.clubhelper.model.controller; package de.kreth.clubhelper.model.controller;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -16,6 +17,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.kreth.clubhelper.model.dao.AttendanceDao; import de.kreth.clubhelper.model.dao.AttendanceDao;
import de.kreth.clubhelper.model.dao.PersonDao; import de.kreth.clubhelper.model.dao.PersonDao;
import de.kreth.clubhelper.model.data.Attendance; import de.kreth.clubhelper.model.data.Attendance;
@ -24,41 +28,44 @@ import de.kreth.clubhelper.model.data.Person;
@Controller @Controller
@RequestMapping("/attendance") @RequestMapping("/attendance")
@PreAuthorize("hasRole('trainer') or hasRole('admin')") @PreAuthorize("hasRole('trainer') or hasRole('admin')")
public class AttendanceController public class AttendanceController {
{
@Autowired
private AttendanceDao attendanceDao;
@Autowired @Autowired
private AttendanceDao attendanceDao; private PersonDao personDao;
@Autowired @GetMapping(value = "/{date}")
private PersonDao personDao; @ResponseBody
public List<Attendance> getAttendencesOn(@PathVariable("date") @DateTimeFormat(iso = ISO.DATE) LocalDate date) {
List<Attendance> findByOnDate = attendanceDao.findByOnDate(date);
ObjectMapper mapper = new ObjectMapper();
try {
String one = mapper.writeValueAsString(findByOnDate.get(0));
System.out.println(one);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return findByOnDate;
}
@GetMapping(value = "/on") @PostMapping(value = "/for/{id}")
@ResponseBody @ResponseBody
public List<Attendance> getAttendencesOn(@RequestBody @DateTimeFormat(iso=ISO.DATE) Date date) public Attendance post(@PathVariable("id") Long id) {
{ Attendance att = new Attendance();
if (date == null) { att.setOnDate(LocalDate.now());
date = new Date(); att.setPerson(personDao.findById(id).orElseThrow(() -> new RuntimeException("Person not found by id=" + id)));
} attendanceDao.save(att);
return attendanceDao.findByOnDate(date); return att;
} }
@PostMapping(value = "/for/{id}") @DeleteMapping("/{id}")
@ResponseBody public Attendance delete(@PathVariable("id") Long personId, @RequestBody(required = true) Date onDate) {
public Attendance post(@PathVariable("id") Long id) Person person = personDao.findById(personId)
{ .orElseThrow(() -> new RuntimeException("Person not found by id=" + personId));
Attendance att = new Attendance(); Attendance attendance = attendanceDao.findByPersonAndOnDate(person, onDate);
att.setOnDate(new Date()); attendanceDao.delete(attendance);
att.setPerson(personDao.findById(id).orElseThrow(() -> new RuntimeException("Person not found by id=" + id))); return attendance;
attendanceDao.save(att); }
return att;
}
@DeleteMapping("/{id}")
public Attendance delete(@PathVariable("id") Long personId, @RequestBody(required = true) Date onDate) {
Person person = personDao.findById(personId).orElseThrow(() -> new RuntimeException("Person not found by id=" + personId));
Attendance attendance = attendanceDao.findByPersonAndOnDate(person, onDate);
attendanceDao.delete(attendance);
return attendance;
}
} }

@ -1,5 +1,7 @@
package de.kreth.clubhelper.model.dao; package de.kreth.clubhelper.model.dao;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -10,13 +12,13 @@ import de.kreth.clubhelper.model.data.Person;
public interface AttendanceDao extends CrudRepository<Attendance, Long> { public interface AttendanceDao extends CrudRepository<Attendance, Long> {
List<Attendance> findByOnDate(Date onDate); List<Attendance> findByOnDate(LocalDate onDate);
List<Attendance> findByPerson(Person person); List<Attendance> findByPerson(Person person);
Attendance findByPersonAndOnDate(Person person, Date onDate); Attendance findByPersonAndOnDate(Person person, Date onDate);
List<Attendance> findByPersonId(long personId); List<Attendance> findByPersonId(long personId);
List<Attendance> findByChangedGreaterThan(Date date); List<Attendance> findByChangedGreaterThan(LocalDateTime date);
} }

@ -1,17 +1,14 @@
package de.kreth.clubhelper.model.data; package de.kreth.clubhelper.model.data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.time.LocalDate;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Inheritance; import javax.persistence.Inheritance;
import javax.persistence.InheritanceType; import javax.persistence.InheritanceType;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/** /**
* The persistent class for the attendance database table. * The persistent class for the attendance database table.
@ -19,57 +16,49 @@ import javax.persistence.TemporalType;
@Entity @Entity
@Table(name = "attendance") @Table(name = "attendance")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@NamedQuery(name = "Attendance.findAll", query = "SELECT a FROM Attendance a") public class Attendance extends BaseEntity implements Serializable {
public class Attendance extends BaseEntity implements Serializable
{
private static final long serialVersionUID = 2385033161272078335L;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "on_date")
private Date onDate;
// bi-directional many-to-one association to Person
@ManyToOne
private Person person;
public Date getOnDate() private static final long serialVersionUID = 2385033161272078335L;
{
return new Date(this.onDate.getTime());
}
public Person getPerson() @Column(name = "on_date")
{ private LocalDate onDate;
return person;
}
public void setPerson(Person person) @ManyToOne
{ private Person person;
this.person = person;
}
public void setOnDate(Date onDate) public LocalDate getOnDate() {
{ return this.onDate;
this.onDate = onDate; }
}
@Override public Person getPerson() {
public int hashCode() return person;
{ }
final int prime = 103;
int result = super.hashCode();
result = prime * result;
return result;
}
@Override public void setPerson(Person person) {
public boolean equals(Object obj) this.person = person;
{ }
if (this == obj)
return true;
return super.equals(obj);
}
@Override public void setOnDate(LocalDate onDate) {
public String toString() this.onDate = onDate;
{ }
return "Attendance [person=" + person + ", onDate=" + onDate + "]";
} @Override
public int hashCode() {
final int prime = 103;
int result = super.hashCode();
result = prime * result;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
return super.equals(obj);
}
@Override
public String toString() {
return "Attendance [person=" + person + ", onDate=" + onDate + "]";
}
} }

Loading…
Cancel
Save