diff --git a/pom.xml b/pom.xml
index 478677c3a..32883cafc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,12 @@
org.springframework.boot
spring-boot-starter-data-jpa
+
+ org.projectlombok
+ lombok
+ 1.18.12
+ provided
+
org.springframework.boot
spring-boot-starter-web
diff --git a/src/main/java/org/springframework/samples/petclinic/configuration/AppBean.java b/src/main/java/org/springframework/samples/petclinic/configuration/AppBean.java
deleted file mode 100644
index 127a287da..000000000
--- a/src/main/java/org/springframework/samples/petclinic/configuration/AppBean.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.springframework.samples.petclinic.configuration;
-
-import org.modelmapper.ModelMapper;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class AppBean {
-
- @Bean
- public ModelMapper modelMapper() {
- return new ModelMapper();
- }
-
-}
diff --git a/src/main/java/org/springframework/samples/petclinic/dto/OwnerDto.java b/src/main/java/org/springframework/samples/petclinic/dto/OwnerDto.java
deleted file mode 100644
index 8a8a7ace5..000000000
--- a/src/main/java/org/springframework/samples/petclinic/dto/OwnerDto.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.springframework.samples.petclinic.dto;
-
-public class OwnerDto {
-
- private Long id;
-
- private String firstName;
-
- private String lastName;
-
- private String address;
-
- private String city;
-
- private String telephone;
-
- public OwnerDto() {
- }
-
- public OwnerDto(Long id, String firstName, String lastName, String address, String city, String telephone) {
- this.id = id;
- this.firstName = firstName;
- this.lastName = lastName;
- this.address = address;
- this.city = city;
- this.telephone = telephone;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
- public String getCity() {
- return city;
- }
-
- public void setCity(String city) {
- this.city = city;
- }
-
- public String getTelephone() {
- return telephone;
- }
-
- public void setTelephone(String telephone) {
- this.telephone = telephone;
- }
-
-}
diff --git a/src/main/java/org/springframework/samples/petclinic/dto/PetDto.java b/src/main/java/org/springframework/samples/petclinic/dto/PetDto.java
deleted file mode 100644
index 8adf6845c..000000000
--- a/src/main/java/org/springframework/samples/petclinic/dto/PetDto.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.springframework.samples.petclinic.dto;
-
-import org.springframework.samples.petclinic.owner.Owner;
-import org.springframework.samples.petclinic.owner.PetType;
-
-import java.time.LocalDate;
-
-public class PetDto {
-
- private Long id;
-
- private LocalDate birthDate;
-
- private PetType type;
-
- private Owner owner;
-
- public PetDto() {
- }
-
- public PetDto(Long id, LocalDate birthDate, PetType type, Owner owner) {
- this.id = id;
- this.birthDate = birthDate;
- this.type = type;
- this.owner = owner;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public LocalDate getBirthDate() {
- return birthDate;
- }
-
- public void setBirthDate(LocalDate birthDate) {
- this.birthDate = birthDate;
- }
-
- public PetType getType() {
- return type;
- }
-
- public void setType(PetType type) {
- this.type = type;
- }
-
- public Owner getOwner() {
- return owner;
- }
-
- public void setOwner(Owner owner) {
- this.owner = owner;
- }
-
-}
diff --git a/src/main/java/org/springframework/samples/petclinic/dto/VisitDto.java b/src/main/java/org/springframework/samples/petclinic/dto/VisitDto.java
deleted file mode 100644
index 3830f7ecd..000000000
--- a/src/main/java/org/springframework/samples/petclinic/dto/VisitDto.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.springframework.samples.petclinic.dto;
-
-import java.time.LocalDate;
-
-public class VisitDto {
-
- private Long id;
-
- private LocalDate date;
-
- private String description;
-
- private Integer petId;
-
- public VisitDto() {
- }
-
- public VisitDto(Long id, LocalDate date, String description, Integer petId) {
- this.id = id;
- this.date = date;
- this.description = description;
- this.petId = petId;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public LocalDate getDate() {
- return date;
- }
-
- public void setDate(LocalDate date) {
- this.date = date;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Integer getPetId() {
- return petId;
- }
-
- public void setPetId(Integer petId) {
- this.petId = petId;
- }
-
-}
diff --git a/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java b/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java
index 4cb9ffc0c..09748af8f 100644
--- a/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java
+++ b/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java
@@ -15,12 +15,15 @@
*/
package org.springframework.samples.petclinic.model;
-import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
+import java.io.Serializable;
/**
* Simple JavaBean domain object with an id property. Used as a base class for objects
@@ -30,20 +33,15 @@ import javax.persistence.MappedSuperclass;
* @author Juergen Hoeller
*/
@MappedSuperclass
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
public class BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
public boolean isNew() {
return this.id == null;
}
diff --git a/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java b/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java
index 088e52e81..3bce06cf7 100644
--- a/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java
+++ b/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java
@@ -15,6 +15,11 @@
*/
package org.springframework.samples.petclinic.model;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
@@ -26,6 +31,10 @@ import javax.persistence.MappedSuperclass;
* @author Juergen Hoeller
*/
@MappedSuperclass
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
public class NamedEntity extends BaseEntity {
@Column(name = "name")
diff --git a/src/main/java/org/springframework/samples/petclinic/model/Person.java b/src/main/java/org/springframework/samples/petclinic/model/Person.java
index 15fabacc3..46e50d582 100644
--- a/src/main/java/org/springframework/samples/petclinic/model/Person.java
+++ b/src/main/java/org/springframework/samples/petclinic/model/Person.java
@@ -15,6 +15,11 @@
*/
package org.springframework.samples.petclinic.model;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotEmpty;
@@ -25,6 +30,10 @@ import javax.validation.constraints.NotEmpty;
* @author Ken Krebs
*/
@MappedSuperclass
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
public class Person extends BaseEntity {
@Column(name = "first_name")
@@ -35,20 +44,4 @@ public class Person extends BaseEntity {
@NotEmpty
private String lastName;
- public String getFirstName() {
- return this.firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return this.lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
}
diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java
index 7f8f8202e..98c2353cf 100644
--- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java
+++ b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java
@@ -15,9 +15,6 @@
*/
package org.springframework.samples.petclinic.owner;
-import org.modelmapper.ModelMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.samples.petclinic.dto.OwnerDto;
import org.springframework.samples.petclinic.visit.VisitRepository;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -48,9 +45,6 @@ class OwnerController {
private VisitRepository visits;
- @Autowired
- private ModelMapper modelMapper;
-
public OwnerController(OwnerRepository clinicService, VisitRepository visits) {
this.owners = clinicService;
this.visits = visits;
@@ -69,8 +63,7 @@ class OwnerController {
}
@PostMapping("/owners/new")
- public String processCreationForm(@Valid OwnerDto ownerDto, BindingResult result) {
- Owner owner = modelMapper.map(ownerDto, Owner.class);
+ public String processCreationForm(@Valid Owner owner, BindingResult result) {
if (result.hasErrors()) {
return VIEWS_OWNER_CREATE_OR_UPDATE_FORM;
}
@@ -87,8 +80,7 @@ class OwnerController {
}
@GetMapping("/owners")
- public String processFindForm(OwnerDto ownerDto, BindingResult result, Map model) {
- Owner owner = modelMapper.map(ownerDto, Owner.class);
+ public String processFindForm(Owner owner, BindingResult result, Map model) {
// allow parameterless GET request for /owners to return all records
if (owner.getLastName() == null) {
@@ -122,9 +114,8 @@ class OwnerController {
}
@PostMapping("/owners/{ownerId}/edit")
- public String processUpdateOwnerForm(@Valid OwnerDto ownerDto, BindingResult result,
+ public String processUpdateOwnerForm(@Valid Owner owner, BindingResult result,
@PathVariable("ownerId") int ownerId) {
- Owner owner = modelMapper.map(ownerDto, Owner.class);
if (result.hasErrors()) {
return VIEWS_OWNER_CREATE_OR_UPDATE_FORM;
diff --git a/src/main/java/org/springframework/samples/petclinic/owner/Pet.java b/src/main/java/org/springframework/samples/petclinic/owner/Pet.java
index 2b68005fd..ecfa8cc78 100755
--- a/src/main/java/org/springframework/samples/petclinic/owner/Pet.java
+++ b/src/main/java/org/springframework/samples/petclinic/owner/Pet.java
@@ -31,6 +31,10 @@ import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
import org.springframework.beans.support.MutableSortDefinition;
import org.springframework.beans.support.PropertyComparator;
import org.springframework.format.annotation.DateTimeFormat;
@@ -46,6 +50,10 @@ import org.springframework.samples.petclinic.visit.Visit;
*/
@Entity
@Table(name = "pets")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
public class Pet extends NamedEntity {
@Column(name = "birth_date")
@@ -63,30 +71,6 @@ public class Pet extends NamedEntity {
@Transient
private Set visits = new LinkedHashSet<>();
- public void setBirthDate(LocalDate birthDate) {
- this.birthDate = birthDate;
- }
-
- public LocalDate getBirthDate() {
- return this.birthDate;
- }
-
- public PetType getType() {
- return this.type;
- }
-
- public void setType(PetType type) {
- this.type = type;
- }
-
- public Owner getOwner() {
- return this.owner;
- }
-
- protected void setOwner(Owner owner) {
- this.owner = owner;
- }
-
protected Set getVisitsInternal() {
if (this.visits == null) {
this.visits = new HashSet<>();
diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java
index 078349b50..d6a7bd78c 100644
--- a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java
+++ b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java
@@ -15,10 +15,7 @@
*/
package org.springframework.samples.petclinic.owner;
-import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.samples.petclinic.dto.OwnerDto;
-import org.springframework.samples.petclinic.dto.PetDto;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
@@ -45,8 +42,6 @@ class PetController {
private final OwnerRepository owners;
@Autowired
- private ModelMapper modelMapper;
-
public PetController(PetRepository pets, OwnerRepository owners) {
this.pets = pets;
this.owners = owners;
@@ -73,8 +68,7 @@ class PetController {
}
@GetMapping("/pets/new")
- public String initCreationForm(OwnerDto ownerDto, ModelMap model) {
- Owner owner = modelMapper.map(ownerDto, Owner.class);
+ public String initCreationForm(Owner owner, ModelMap model) {
Pet pet = new Pet();
owner.addPet(pet);
model.put("pet", pet);
@@ -82,9 +76,7 @@ class PetController {
}
@PostMapping("/pets/new")
- public String processCreationForm(OwnerDto ownerDto, @Valid PetDto petDto, BindingResult result, ModelMap model) {
- Owner owner = modelMapper.map(ownerDto, Owner.class);
- Pet pet = modelMapper.map(petDto, Pet.class);
+ public String processCreationForm(Owner owner, @Valid Pet pet, BindingResult result, ModelMap model) {
if (StringUtils.hasLength(pet.getName()) && pet.isNew() && owner.getPet(pet.getName(), true) != null) {
result.rejectValue("name", "duplicate", "already exists");
@@ -108,9 +100,7 @@ class PetController {
}
@PostMapping("/pets/{petId}/edit")
- public String processUpdateForm(@Valid PetDto petDto, BindingResult result, OwnerDto ownerDto, ModelMap model) {
- Pet pet = modelMapper.map(petDto, Pet.class);
- Owner owner = modelMapper.map(ownerDto, Owner.class);
+ public String processUpdateForm(@Valid Pet pet, BindingResult result, Owner owner, ModelMap model) {
if (result.hasErrors()) {
pet.setOwner(owner);
model.put("pet", pet);
diff --git a/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java b/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java
index 6d1dae503..498fc9ce3 100644
--- a/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java
+++ b/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java
@@ -15,23 +15,16 @@
*/
package org.springframework.samples.petclinic.owner;
-import java.util.Map;
-
-import javax.validation.Valid;
-
-import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.samples.petclinic.dto.VisitDto;
import org.springframework.samples.petclinic.visit.Visit;
import org.springframework.samples.petclinic.visit.VisitRepository;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.InitBinder;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
/**
* @author Juergen Hoeller
@@ -48,8 +41,6 @@ class VisitController {
private final PetRepository pets;
@Autowired
- private ModelMapper modelMapper;
-
public VisitController(VisitRepository visits, PetRepository pets) {
this.visits = visits;
this.pets = pets;
@@ -85,9 +76,8 @@ class VisitController {
// Spring MVC calls method loadPetWithVisit(...) before processNewVisitForm is called
@PostMapping("/owners/{ownerId}/pets/{petId}/visits/new")
- public String processNewVisitForm(@Valid VisitDto visitDto, BindingResult result) {
+ public String processNewVisitForm(@Valid Visit visit, BindingResult result) {
- Visit visit = modelMapper.map(visitDto, Visit.class);
if (result.hasErrors()) {
return "pets/createOrUpdateVisitForm";
}
diff --git a/src/main/java/org/springframework/samples/petclinic/vet/Vet.java b/src/main/java/org/springframework/samples/petclinic/vet/Vet.java
index 014becfce..ca4a90c3d 100644
--- a/src/main/java/org/springframework/samples/petclinic/vet/Vet.java
+++ b/src/main/java/org/springframework/samples/petclinic/vet/Vet.java
@@ -29,6 +29,10 @@ import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlElement;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
import org.springframework.beans.support.MutableSortDefinition;
import org.springframework.beans.support.PropertyComparator;
import org.springframework.samples.petclinic.model.Person;
@@ -43,6 +47,10 @@ import org.springframework.samples.petclinic.model.Person;
*/
@Entity
@Table(name = "vets")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
public class Vet extends Person {
@ManyToMany(fetch = FetchType.EAGER)
@@ -57,10 +65,6 @@ public class Vet extends Person {
return this.specialties;
}
- protected void setSpecialtiesInternal(Set specialties) {
- this.specialties = specialties;
- }
-
@XmlElement
public List getSpecialties() {
List sortedSpecs = new ArrayList<>(getSpecialtiesInternal());
diff --git a/src/main/java/org/springframework/samples/petclinic/visit/Visit.java b/src/main/java/org/springframework/samples/petclinic/visit/Visit.java
index df9f25fe0..2c33cecfa 100755
--- a/src/main/java/org/springframework/samples/petclinic/visit/Visit.java
+++ b/src/main/java/org/springframework/samples/petclinic/visit/Visit.java
@@ -15,15 +15,18 @@
*/
package org.springframework.samples.petclinic.visit;
-import java.time.LocalDate;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.samples.petclinic.model.BaseEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.NotEmpty;
-
-import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.samples.petclinic.model.BaseEntity;
+import java.time.LocalDate;
/**
* Simple JavaBean domain object representing a visit.
@@ -33,6 +36,10 @@ import org.springframework.samples.petclinic.model.BaseEntity;
*/
@Entity
@Table(name = "visits")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
public class Visit extends BaseEntity {
@Column(name = "visit_date")
@@ -46,35 +53,4 @@ public class Visit extends BaseEntity {
@Column(name = "pet_id")
private Integer petId;
- /**
- * Creates a new instance of Visit for the current date
- */
- public Visit() {
- this.date = LocalDate.now();
- }
-
- public LocalDate getDate() {
- return this.date;
- }
-
- public void setDate(LocalDate date) {
- this.date = date;
- }
-
- public String getDescription() {
- return this.description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Integer getPetId() {
- return this.petId;
- }
-
- public void setPetId(Integer petId) {
- this.petId = petId;
- }
-
}