From 0850e35268e21b3f7f5566b82ea527ae43ae945e Mon Sep 17 00:00:00 2001 From: payamrastogi Date: Thu, 25 Jul 2019 00:59:38 -0400 Subject: [PATCH 1/3] Added Person Model --- .../school/student/model/Address.java | 17 ++++++++++++ .../school/student/model/AddressType.java | 20 ++++++++++++++ .../coddicted/school/student/model/Email.java | 12 +++++++++ .../school/student/model/EmailType.java | 21 +++++++++++++++ .../school/student/model/Gender.java | 21 +++++++++++++++ .../coddicted/school/student/model/Phone.java | 12 +++++++++ .../school/student/model/PhoneType.java | 27 +++++++++++++++++++ .../school/student/model/Student.java | 3 ++- 8 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/coddicted/school/student/model/Address.java create mode 100644 src/main/java/com/coddicted/school/student/model/AddressType.java create mode 100644 src/main/java/com/coddicted/school/student/model/Email.java create mode 100644 src/main/java/com/coddicted/school/student/model/EmailType.java create mode 100644 src/main/java/com/coddicted/school/student/model/Gender.java create mode 100644 src/main/java/com/coddicted/school/student/model/Phone.java create mode 100644 src/main/java/com/coddicted/school/student/model/PhoneType.java diff --git a/src/main/java/com/coddicted/school/student/model/Address.java b/src/main/java/com/coddicted/school/student/model/Address.java new file mode 100644 index 0000000..d2d9c9a --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/Address.java @@ -0,0 +1,17 @@ +package com.coddicted.school.student.model; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Address +{ + private AddressType type; + private String address1; + private String address2; + private String city; + private String state; + private String country; + private String zip; +} diff --git a/src/main/java/com/coddicted/school/student/model/AddressType.java b/src/main/java/com/coddicted/school/student/model/AddressType.java new file mode 100644 index 0000000..02bd6d8 --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/AddressType.java @@ -0,0 +1,20 @@ +package com.coddicted.school.student.model; + +public enum AddressType +{ + HOME("Home"), + BUSINESS("Business"), + SCHOOL("School"); + + private String name; + + AddressType(String name) + { + this.name = name; + } + + public String toString() + { + return this.name; + } +} diff --git a/src/main/java/com/coddicted/school/student/model/Email.java b/src/main/java/com/coddicted/school/student/model/Email.java new file mode 100644 index 0000000..597684f --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/Email.java @@ -0,0 +1,12 @@ +package com.coddicted.school.student.model; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Email +{ + private EmailType type; + private String value; +} diff --git a/src/main/java/com/coddicted/school/student/model/EmailType.java b/src/main/java/com/coddicted/school/student/model/EmailType.java new file mode 100644 index 0000000..03f7c5d --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/EmailType.java @@ -0,0 +1,21 @@ +package com.coddicted.school.student.model; + +public enum EmailType +{ + HOME("Home"), + WORK("Work"), + OTHER("Other"), + CUSTOM("Custom"); + + private String name; + + EmailType(String name) + { + this.name = name; + } + + public String toString() + { + return this.name; + } +} diff --git a/src/main/java/com/coddicted/school/student/model/Gender.java b/src/main/java/com/coddicted/school/student/model/Gender.java new file mode 100644 index 0000000..d165611 --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/Gender.java @@ -0,0 +1,21 @@ +package com.coddicted.school.student.model; + +public enum Gender +{ + MALE("Male"), + FEMALE("Female"), + OTHER("Other"); + + private String name; + + Gender(String name) + { + this.name = name; + } + + @Override + public String toString() + { + return this.name; + } +} diff --git a/src/main/java/com/coddicted/school/student/model/Phone.java b/src/main/java/com/coddicted/school/student/model/Phone.java new file mode 100644 index 0000000..3ee9a79 --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/Phone.java @@ -0,0 +1,12 @@ +package com.coddicted.school.student.model; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Phone +{ + private PhoneType type; + private String value; +} diff --git a/src/main/java/com/coddicted/school/student/model/PhoneType.java b/src/main/java/com/coddicted/school/student/model/PhoneType.java new file mode 100644 index 0000000..9bc2b3d --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/PhoneType.java @@ -0,0 +1,27 @@ +package com.coddicted.school.student.model; + +public enum PhoneType +{ + HOME("Home"), + WORK("Work"), + MAIN("Main"), + WORK_FAX("Work Fax"), + HOME_FAX("Home Fax"), + PAGER("Pager"), + OTHER("Other"), + CUSTOM("Custom"), + MOBILE("Mobile"); + + + private String name; + + PhoneType(String name) + { + this.name = name; + } + + public String toString() + { + return this.name; + } +} diff --git a/src/main/java/com/coddicted/school/student/model/Student.java b/src/main/java/com/coddicted/school/student/model/Student.java index fa7d05d..44e2a37 100755 --- a/src/main/java/com/coddicted/school/student/model/Student.java +++ b/src/main/java/com/coddicted/school/student/model/Student.java @@ -14,7 +14,8 @@ @Entity // This tells Hibernate to make a table out of this class @Data -public class Student { +public class Student +{ @Id @GeneratedValue(strategy = GenerationType.AUTO) @ApiModelProperty(notes = SwaggerConstant.AUTO_GENERATED_STUDENT_ID) From cc4253d4a5a751e1f4699a7ad5e5521b5f766fa1 Mon Sep 17 00:00:00 2001 From: payamrastogi Date: Thu, 25 Jul 2019 01:00:01 -0400 Subject: [PATCH 2/3] Added Person Model --- .../school/student/model/Person.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/com/coddicted/school/student/model/Person.java diff --git a/src/main/java/com/coddicted/school/student/model/Person.java b/src/main/java/com/coddicted/school/student/model/Person.java new file mode 100644 index 0000000..7e4ca56 --- /dev/null +++ b/src/main/java/com/coddicted/school/student/model/Person.java @@ -0,0 +1,31 @@ +package com.coddicted.school.student.model; + +import java.time.LocalDate; +import java.util.List; + +public interface Person +{ + String getAadharNumber(); + void setAadharNumber(String aadharNumber); + + Gender getGender(); + void setGender(Gender gender); + + String getFirstName(); + void setFirstName(String firstName); + + String getMiddleName(); + void setMiddleName(String middleName); + + String getLastName(); + void setLastName(String lastName); + + LocalDate getDateOfBirth(); + void setDateOfBirth(LocalDate dateOfBirth); + + List getEmailList(); + void setEmailList(List emailList); + + List getPhoneList(); + void setPhoneList(List phoneList); +} From 56a074ba45f4c9c9ede062f780605e2fa2fc71e4 Mon Sep 17 00:00:00 2001 From: payamrastogi Date: Fri, 26 Jul 2019 00:07:32 -0400 Subject: [PATCH 3/3] Added Methods in StudentRepository --- pom.xml | 5 ++ .../student/constants/SwaggerConstant.java | 7 +++ .../school/student/model/AddressType.java | 1 + .../school/student/model/EmailType.java | 1 + .../school/student/model/Person.java | 3 ++ .../school/student/model/Student.java | 49 +++++++++++-------- .../student/repository/StudentRepository.java | 21 +++++--- 7 files changed, 60 insertions(+), 27 deletions(-) diff --git a/pom.xml b/pom.xml index 34451f1..84e29a0 100755 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,11 @@ mysql-connector-java + + org.springframework.boot + spring-boot-starter-data-mongodb + + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/coddicted/school/student/constants/SwaggerConstant.java b/src/main/java/com/coddicted/school/student/constants/SwaggerConstant.java index e2202bc..1561a9e 100644 --- a/src/main/java/com/coddicted/school/student/constants/SwaggerConstant.java +++ b/src/main/java/com/coddicted/school/student/constants/SwaggerConstant.java @@ -8,12 +8,15 @@ public interface SwaggerConstant String AUTO_GENERATED_STUDENT_ID = "Auto-generated student ID"; String STUDENT_FIRST_NAME = "Student first name"; + String STUDENT_MIDDLE_NAME = "Student middle name"; String STUDENT_LAST_NAME = "Student last name"; + String STUDENT_GENDER = "Student's Gender"; String STUDENT_REGISTRATION_NUMBER = "Student register number"; String STUDENT_RELIGION = "Student's religion"; String STUDENT_CASTE = "Student's caste"; + String STUDENT_CATEGORY = "Student's category"; String STUDENT_FATHER_NAME = "Student's father's name"; String STUDENT_MOTHER_NAME = "Student's mother's name"; @@ -22,6 +25,10 @@ public interface SwaggerConstant String STUDENT_AADHAR_NUMBER = "Student's Aadhar (UIDAI) number"; String STUDENT_DATE_OF_BIRTH = "Student's date of birth"; + String STUDENT_ADDRESS_LIST = "Student's Address List"; + String STUDENT_EMAIL_LIST = "Student's Email List"; + String STUDENT_PHONE_LIST = "Student's Phone List"; + String STUDENT_DATE_OF_ADMISSION = "Student's date of admission at school"; } diff --git a/src/main/java/com/coddicted/school/student/model/AddressType.java b/src/main/java/com/coddicted/school/student/model/AddressType.java index 02bd6d8..d36931f 100644 --- a/src/main/java/com/coddicted/school/student/model/AddressType.java +++ b/src/main/java/com/coddicted/school/student/model/AddressType.java @@ -4,6 +4,7 @@ public enum AddressType { HOME("Home"), BUSINESS("Business"), + MAILING("Mailing"), SCHOOL("School"); private String name; diff --git a/src/main/java/com/coddicted/school/student/model/EmailType.java b/src/main/java/com/coddicted/school/student/model/EmailType.java index 03f7c5d..3c9fc1d 100644 --- a/src/main/java/com/coddicted/school/student/model/EmailType.java +++ b/src/main/java/com/coddicted/school/student/model/EmailType.java @@ -4,6 +4,7 @@ public enum EmailType { HOME("Home"), WORK("Work"), + SCHOOL("School"), OTHER("Other"), CUSTOM("Custom"); diff --git a/src/main/java/com/coddicted/school/student/model/Person.java b/src/main/java/com/coddicted/school/student/model/Person.java index 7e4ca56..c4dd652 100644 --- a/src/main/java/com/coddicted/school/student/model/Person.java +++ b/src/main/java/com/coddicted/school/student/model/Person.java @@ -28,4 +28,7 @@ public interface Person List getPhoneList(); void setPhoneList(List phoneList); + + List
getAddressList(); + void setAddressList(List
addressList); } diff --git a/src/main/java/com/coddicted/school/student/model/Student.java b/src/main/java/com/coddicted/school/student/model/Student.java index 44e2a37..4e92c4b 100755 --- a/src/main/java/com/coddicted/school/student/model/Student.java +++ b/src/main/java/com/coddicted/school/student/model/Student.java @@ -9,26 +9,44 @@ import io.swagger.annotations.ApiModelProperty; import io.swagger.models.Swagger; import lombok.Data; +import lombok.Getter; +import lombok.Setter; import java.time.LocalDate; +import java.util.List; @Entity // This tells Hibernate to make a table out of this class @Data -public class Student +@Getter +@Setter +public class Student implements Person { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @ApiModelProperty(notes = SwaggerConstant.AUTO_GENERATED_STUDENT_ID) - private Integer id; + @ApiModelProperty(notes = SwaggerConstant.STUDENT_AADHAR_NUMBER) + private String aadharNumber; @ApiModelProperty(notes = SwaggerConstant.STUDENT_FIRST_NAME) private String firstName; + @ApiModelProperty(notes = SwaggerConstant.STUDENT_MIDDLE_NAME) + private String middleName; + @ApiModelProperty(notes = SwaggerConstant.STUDENT_LAST_NAME) private String lastName; - @ApiModelProperty(notes = SwaggerConstant.STUDENT_REGISTRATION_NUMBER) - private String studentRegistrationNumber; + @ApiModelProperty(notes = SwaggerConstant.STUDENT_GENDER) + private Gender gender; + + @ApiModelProperty(notes = SwaggerConstant.STUDENT_DATE_OF_BIRTH) + private LocalDate dateOfBirth; + + @ApiModelProperty(notes = SwaggerConstant.STUDENT_PHONE_LIST) + private List phoneList; + + @ApiModelProperty(notes = SwaggerConstant.STUDENT_EMAIL_LIST) + private List emailList; + + @ApiModelProperty(notes = SwaggerConstant.STUDENT_ADDRESS_LIST) + private List
addressList; @ApiModelProperty(notes = SwaggerConstant.STUDENT_RELIGION) private String religion; @@ -40,23 +58,12 @@ public class Student private String category; @ApiModelProperty(notes = SwaggerConstant.STUDENT_FATHER_NAME) - private String fatherName; + private Person father; @ApiModelProperty(notes = SwaggerConstant.STUDENT_MOTHER_NAME) - private String motherName; + private Person mother; @ApiModelProperty(notes = SwaggerConstant.STUDENT_GUARDIAN_NAME) - private String guardianName; - - @ApiModelProperty(notes = SwaggerConstant.STUDENT_AADHAR_NUMBER) - private String aadharNumber; - // Various date fields - // TODO Need to check the data type for them - @ApiModelProperty(notes = SwaggerConstant.STUDENT_DATE_OF_BIRTH) - private LocalDate dateOfBirth; + private Person guardianName; - // TODO Need to check placement of below field. Should it be placed in some other class? - // this is because the date would change on class promotion/ school change. - @ApiModelProperty(notes = SwaggerConstant.STUDENT_DATE_OF_ADMISSION) - private LocalDate dateOfAdmission; } diff --git a/src/main/java/com/coddicted/school/student/repository/StudentRepository.java b/src/main/java/com/coddicted/school/student/repository/StudentRepository.java index 9a5dedd..bfc6737 100755 --- a/src/main/java/com/coddicted/school/student/repository/StudentRepository.java +++ b/src/main/java/com/coddicted/school/student/repository/StudentRepository.java @@ -1,14 +1,23 @@ package com.coddicted.school.student.repository; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.repository.CrudRepository; - import com.coddicted.school.student.model.Student; +import org.springframework.data.mongodb.repository.MongoRepository; -// This will be AUTO IMPLEMENTED by Spring into a Bean called StudentRepository -// CRUD refers Create, Read, Update, Delete +import java.time.LocalDate; +import java.util.List; -public interface StudentRepository extends JpaRepository +public interface StudentRepository extends MongoRepository { + List findAll(); + List findAllByFirstName(String firstName); + List findAllByLastName(String lastName); + List findAllByMiddleName(String middleName); + List findAllByFirstNameAndLastName(String firstName, String lastName); + List findAllByFirstNameAndMiddleNameAndLastName(String firstName, String middleName, String lastName); + List findAllByDateOfBirth(LocalDate dateOfBirth); + List findAllByCaste(String caste); + List findAllByCategory(String category); + List findAllByReligion(String religion); + Student findByAadharNumber(String aadharNumber); }