This commit is contained in:
Nishchay 2025-07-17 05:13:12 +00:00 committed by GitHub
commit 5c0174a07d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 50 additions and 109 deletions

View file

@ -57,6 +57,10 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>

View file

@ -21,6 +21,8 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.MappedSuperclass; import jakarta.persistence.MappedSuperclass;
import lombok.Getter;
import lombok.Setter;
/** /**
* Simple JavaBean domain object with an id property. Used as a base class for objects * Simple JavaBean domain object with an id property. Used as a base class for objects
@ -30,19 +32,14 @@ import jakarta.persistence.MappedSuperclass;
* @author Juergen Hoeller * @author Juergen Hoeller
*/ */
@MappedSuperclass @MappedSuperclass
@Getter
@Setter
public class BaseEntity implements Serializable { public class BaseEntity implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public boolean isNew() { public boolean isNew() {
return this.id == null; return this.id == null;

View file

@ -18,6 +18,9 @@ package org.springframework.samples.petclinic.model;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.MappedSuperclass; import jakarta.persistence.MappedSuperclass;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/** /**
* Simple JavaBean domain object adds a name property to <code>BaseEntity</code>. Used as * Simple JavaBean domain object adds a name property to <code>BaseEntity</code>. Used as
@ -28,23 +31,13 @@ import jakarta.validation.constraints.NotBlank;
* @author Wick Dynex * @author Wick Dynex
*/ */
@MappedSuperclass @MappedSuperclass
@Getter
@Setter
@ToString
public class NamedEntity extends BaseEntity { public class NamedEntity extends BaseEntity {
@Column(name = "name") @Column(name = "name")
@NotBlank @NotBlank
private String name; private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.getName();
}
} }

View file

@ -18,6 +18,8 @@ package org.springframework.samples.petclinic.model;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.MappedSuperclass; import jakarta.persistence.MappedSuperclass;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
/** /**
* Simple JavaBean domain object representing an person. * Simple JavaBean domain object representing an person.
@ -25,6 +27,8 @@ import jakarta.validation.constraints.NotBlank;
* @author Ken Krebs * @author Ken Krebs
*/ */
@MappedSuperclass @MappedSuperclass
@Getter
@Setter
public class Person extends BaseEntity { public class Person extends BaseEntity {
@Column(name = "first_name") @Column(name = "first_name")
@ -35,20 +39,6 @@ public class Person extends BaseEntity {
@NotBlank @NotBlank
private String lastName; 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;
}
} }

View file

@ -31,6 +31,8 @@ import jakarta.persistence.OneToMany;
import jakarta.persistence.OrderBy; import jakarta.persistence.OrderBy;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import lombok.Getter;
import lombok.Setter;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
/** /**
@ -45,6 +47,8 @@ import jakarta.validation.constraints.NotBlank;
*/ */
@Entity @Entity
@Table(name = "owners") @Table(name = "owners")
@Getter
@Setter
public class Owner extends Person { public class Owner extends Person {
@Column(name = "address") @Column(name = "address")
@ -65,33 +69,7 @@ public class Owner extends Person {
@OrderBy("name") @OrderBy("name")
private final List<Pet> pets = new ArrayList<>(); private final List<Pet> pets = new ArrayList<>();
public String getAddress() {
return this.address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return this.city;
}
public void setCity(String city) {
this.city = city;
}
public String getTelephone() {
return this.telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public List<Pet> getPets() {
return this.pets;
}
public void addPet(Pet pet) { public void addPet(Pet pet) {
if (pet.isNew()) { if (pet.isNew()) {

View file

@ -34,6 +34,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.mvc.support.RedirectAttributes;
/** /**
@ -44,15 +46,14 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
* @author Wick Dynex * @author Wick Dynex
*/ */
@Controller @Controller
@RequiredArgsConstructor
class OwnerController { class OwnerController {
private static final String VIEWS_OWNER_CREATE_OR_UPDATE_FORM = "owners/createOrUpdateOwnerForm"; private static final String VIEWS_OWNER_CREATE_OR_UPDATE_FORM = "owners/createOrUpdateOwnerForm";
private final OwnerRepository owners; private final OwnerRepository owners;
public OwnerController(OwnerRepository owners) {
this.owners = owners;
}
@InitBinder @InitBinder
public void setAllowedFields(WebDataBinder dataBinder) { public void setAllowedFields(WebDataBinder dataBinder) {

View file

@ -32,6 +32,8 @@ import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany; import jakarta.persistence.OneToMany;
import jakarta.persistence.OrderBy; import jakarta.persistence.OrderBy;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;
/** /**
* Simple business object representing a pet. * Simple business object representing a pet.
@ -43,6 +45,8 @@ import jakarta.persistence.Table;
*/ */
@Entity @Entity
@Table(name = "pets") @Table(name = "pets")
@Getter
@Setter
public class Pet extends NamedEntity { public class Pet extends NamedEntity {
@Column(name = "birth_date") @Column(name = "birth_date")
@ -58,21 +62,7 @@ public class Pet extends NamedEntity {
@OrderBy("date ASC") @OrderBy("date ASC")
private final Set<Visit> visits = new LinkedHashSet<>(); private final Set<Visit> 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 Collection<Visit> getVisits() { public Collection<Visit> getVisits() {
return this.visits; return this.visits;

View file

@ -32,6 +32,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.mvc.support.RedirectAttributes;
/** /**
@ -42,6 +44,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
*/ */
@Controller @Controller
@RequestMapping("/owners/{ownerId}") @RequestMapping("/owners/{ownerId}")
@RequiredArgsConstructor
class PetController { class PetController {
private static final String VIEWS_PETS_CREATE_OR_UPDATE_FORM = "pets/createOrUpdatePetForm"; private static final String VIEWS_PETS_CREATE_OR_UPDATE_FORM = "pets/createOrUpdatePetForm";
@ -50,11 +53,6 @@ class PetController {
private final PetTypeRepository types; private final PetTypeRepository types;
public PetController(OwnerRepository owners, PetTypeRepository types) {
this.owners = owners;
this.types = types;
}
@ModelAttribute("types") @ModelAttribute("types")
public Collection<PetType> populatePetTypes() { public Collection<PetType> populatePetTypes() {
return this.types.findPetTypes(); return this.types.findPetTypes();

View file

@ -18,6 +18,8 @@ package org.springframework.samples.petclinic.owner;
import org.springframework.format.Formatter; import org.springframework.format.Formatter;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import lombok.RequiredArgsConstructor;
import java.text.ParseException; import java.text.ParseException;
import java.util.Collection; import java.util.Collection;
import java.util.Locale; import java.util.Locale;
@ -33,13 +35,12 @@ import java.util.Locale;
* @author Michael Isvy * @author Michael Isvy
*/ */
@Component @Component
@RequiredArgsConstructor
public class PetTypeFormatter implements Formatter<PetType> { public class PetTypeFormatter implements Formatter<PetType> {
private final PetTypeRepository types; private final PetTypeRepository types;
public PetTypeFormatter(PetTypeRepository types) {
this.types = types;
}
@Override @Override
public String print(PetType petType, Locale locale) { public String print(PetType petType, Locale locale) {

View file

@ -24,6 +24,8 @@ import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
/** /**
* Simple JavaBean domain object representing a visit. * Simple JavaBean domain object representing a visit.
@ -33,6 +35,8 @@ import jakarta.validation.constraints.NotBlank;
*/ */
@Entity @Entity
@Table(name = "visits") @Table(name = "visits")
@Getter
@Setter
public class Visit extends BaseEntity { public class Visit extends BaseEntity {
@Column(name = "visit_date") @Column(name = "visit_date")
@ -49,20 +53,6 @@ public class Visit extends BaseEntity {
this.date = LocalDate.now(); 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;
}
} }

View file

@ -28,6 +28,8 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.mvc.support.RedirectAttributes;
/** /**
@ -39,13 +41,11 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
* @author Wick Dynex * @author Wick Dynex
*/ */
@Controller @Controller
@RequiredArgsConstructor
class VisitController { class VisitController {
private final OwnerRepository owners; private final OwnerRepository owners;
public VisitController(OwnerRepository owners) {
this.owners = owners;
}
@InitBinder @InitBinder
public void setAllowedFields(WebDataBinder dataBinder) { public void setAllowedFields(WebDataBinder dataBinder) {

View file

@ -26,6 +26,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import lombok.RequiredArgsConstructor;
/** /**
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Mark Fisher * @author Mark Fisher
@ -33,13 +35,11 @@ import org.springframework.web.bind.annotation.ResponseBody;
* @author Arjen Poutsma * @author Arjen Poutsma
*/ */
@Controller @Controller
@RequiredArgsConstructor
class VetController { class VetController {
private final VetRepository vetRepository; private final VetRepository vetRepository;
public VetController(VetRepository vetRepository) {
this.vetRepository = vetRepository;
}
@GetMapping("/vets.html") @GetMapping("/vets.html")
public String showVetList(@RequestParam(defaultValue = "1") int page, Model model) { public String showVetList(@RequestParam(defaultValue = "1") int page, Model model) {

View file

@ -2,7 +2,6 @@
database=h2 database=h2
spring.sql.init.schema-locations=classpath*:db/${database}/schema.sql spring.sql.init.schema-locations=classpath*:db/${database}/schema.sql
spring.sql.init.data-locations=classpath*:db/${database}/data.sql spring.sql.init.data-locations=classpath*:db/${database}/data.sql
# Web # Web
spring.thymeleaf.mode=HTML spring.thymeleaf.mode=HTML