fixing adding new visits

This commit is contained in:
Denis Rosa 2021-04-13 17:41:01 +02:00
parent 31c0604753
commit c6afe22fd1
6 changed files with 25 additions and 41 deletions

View file

@ -103,13 +103,3 @@ For pull requests, editor preferences are available in the [editor config](.edit
The Spring PetClinic sample application is released under version 2.0 of the [Apache License](https://www.apache.org/licenses/LICENSE-2.0).
[spring-petclinic]: https://github.com/spring-projects/spring-petclinic
[spring-framework-petclinic]: https://github.com/spring-petclinic/spring-framework-petclinic
[spring-petclinic-angularjs]: https://github.com/spring-petclinic/spring-petclinic-angularjs
[javaconfig branch]: https://github.com/spring-petclinic/spring-framework-petclinic/tree/javaconfig
[spring-petclinic-angular]: https://github.com/spring-petclinic/spring-petclinic-angular
[spring-petclinic-microservices]: https://github.com/spring-petclinic/spring-petclinic-microservices
[spring-petclinic-reactjs]: https://github.com/spring-petclinic/spring-petclinic-reactjs
[spring-petclinic-graphql]: https://github.com/spring-petclinic/spring-petclinic-graphql
[spring-petclinic-kotlin]: https://github.com/spring-petclinic/spring-petclinic-kotlin
[spring-petclinic-rest]: https://github.com/spring-petclinic/spring-petclinic-rest

View file

@ -90,12 +90,10 @@ public class IndexCMDRunner implements CommandLineRunner {
petRepository.save(new Pet("pet-4", "Jewel", "2010-03-07", "dog", "owner-3", new ArrayList()));
petRepository.save(new Pet("pet-5", "Iggy", "2010-11-30", "lizard", "owner-4", new ArrayList()));
petRepository.save(new Pet("pet-6", "George", "2010-01-20", "snake", "owner-5", new ArrayList()));
petRepository.save(new Pet("pet-7", "Samantha", "2012-09-04", "cat", "owner-6",
Arrays.asList(new Visit("visit-1", toMilliseconds("2013-01-01"), "rabies shot"),
new Visit("visit-4", toMilliseconds("2013-01-04"), "spayed"))));
petRepository.save(new Pet("pet-8", "Max", "2012-09-04", "cat", "owner-6",
Arrays.asList(new Visit("visit-2", toMilliseconds("2013-01-02"), "rabies shot"),
new Visit("visit-3", toMilliseconds("2013-01-03"), "neutered"))));
petRepository.save(new Pet("pet-7", "Samantha", "2012-09-04", "cat", "owner-6", Arrays.asList(
new Visit("visit-1", "2013-01-01", "rabies shot"), new Visit("visit-4", "2013-01-04", "spayed"))));
petRepository.save(new Pet("pet-8", "Max", "2012-09-04", "cat", "owner-6", Arrays.asList(
new Visit("visit-2", "2013-01-02", "rabies shot"), new Visit("visit-3", "2013-01-03", "neutered"))));
petRepository.save(new Pet("pet-9", "Lucky", "2011-08-06", "bird", "owner-7", new ArrayList()));
petRepository.save(new Pet("pet-10", "Mulligan", "2007-02-24", "dog", "owner-8", new ArrayList()));
@ -104,10 +102,4 @@ public class IndexCMDRunner implements CommandLineRunner {
petRepository.save(new Pet("pet-13", "Sly", "2012-06-08", "cat", "owner-10", new ArrayList()));
}
private long toMilliseconds(String targetDate) throws Exception {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
Date d = f.parse(targetDate);
return d.getTime();
}
}

View file

@ -42,8 +42,11 @@ class VisitController {
private final PetRepository petRepository;
public VisitController(PetRepository petRepository) {
private final OwnerRepository ownerRepository;
public VisitController(PetRepository petRepository, OwnerRepository ownerRepository) {
this.petRepository = petRepository;
this.ownerRepository = ownerRepository;
}
@InitBinder
@ -62,6 +65,7 @@ class VisitController {
public Visit loadPetWithVisit(@PathVariable("petId") String petId, Map<String, Object> model) {
Pet pet = this.petRepository.findById(petId).get();
model.put("pet", pet);
model.put("owner", this.ownerRepository.findById(pet.getOwnerId()).get());
Visit visit = new Visit();
return visit;
}
@ -69,8 +73,6 @@ class VisitController {
// Spring MVC calls method loadPetWithVisit(...) before initNewVisitForm is called
@GetMapping("/owners/*/pets/{petId}/visits/new")
public String initNewVisitForm(@PathVariable("petId") String petId, Map<String, Object> model) {
Pet pet = this.petRepository.findById(petId).get();
model.put("pet", pet);
return "pets/createOrUpdateVisitForm";
}
@ -78,6 +80,7 @@ class VisitController {
@PostMapping("/owners/{ownerId}/pets/{petId}/visits/new")
public String processNewVisitForm(@PathVariable("petId") String petId, @Valid Visit visit, BindingResult result) {
if (result.hasErrors()) {
System.out.println(result.getAllErrors());
return "pets/createOrUpdateVisitForm";
}
else {

View file

@ -15,14 +15,14 @@
*/
package org.springframework.samples.petclinic.visit;
import java.time.LocalDate;
import java.time.temporal.TemporalField;
import org.springframework.data.couchbase.core.mapping.id.GeneratedValue;
import org.springframework.data.couchbase.core.mapping.id.GenerationStrategy;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.validation.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;
/**
* Simple JavaBean domain object representing a visit.
*
@ -31,15 +31,14 @@ import org.springframework.format.annotation.DateTimeFormat;
*/
public class Visit {
@NotEmpty
private String id;
private Long visitDate;
private String visitDate;
@NotEmpty
private String description;
public Visit(@NotEmpty String id, Long visitDate, @NotEmpty String description) {
public Visit(@NotEmpty String id, String visitDate, @NotEmpty String description) {
this.id = id;
this.visitDate = visitDate;
this.description = description;
@ -49,7 +48,8 @@ public class Visit {
* Creates a new instance of Visit for the current date
*/
public Visit() {
this.visitDate = new Date().getTime();
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
this.visitDate = f.format(new Date());
}
public String getId() {
@ -60,11 +60,11 @@ public class Visit {
this.id = id;
}
public Long getVisitDate() {
public String getVisitDate() {
return visitDate;
}
public void setVisitDate(Long visitDate) {
public void setVisitDate(String visitDate) {
this.visitDate = visitDate;
}

View file

@ -61,7 +61,7 @@
</tr>
</thead>
<tr th:each="visit : ${pet.visits}">
<td th:text="${#dates.format(new java.util.Date(visit.visitDate), 'yyyy-MM-dd')}"></td>
<td th:text="${visit.visitDate}"></td>
<td th:text="${visit?.description}"></td>
</tr>
<tr>

View file

@ -4,8 +4,7 @@
<body>
<h2>
<th:block th:if="${visit['new']}">New </th:block>
Visit
</h2>
<b>Pet</b>
@ -31,7 +30,7 @@
<form th:object="${visit}" class="form-horizontal" method="post">
<div class="form-group has-feedback">
<input
th:replace="~{fragments/inputField :: input ('Date', 'visitDate', 'text')}" />
th:replace="~{fragments/inputField :: input ('Date', 'visitDate', 'date')}" />
<input
th:replace="~{fragments/inputField :: input ('Description', 'description', 'text')}" />
</div>
@ -51,8 +50,8 @@
<th>Date</th>
<th>Description</th>
</tr>
<tr th:if="${!visit['new']}" th:each="visit : ${pet.visits}">
<td th:text="${#dates.format(new java.util.Date(visit.visitDate), 'yyyy-MM-dd')}"></td>
<tr th:each="visit : ${pet.visits}">
<td th:text="${visit.visitDate}"></td>
<td th:text=" ${visit.description}"></td>
</tr>
</table>