diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..d843f34
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/Lab308Application.java b/src/main/java/com/raymond/lab308/Lab308Application.java
new file mode 100644
index 0000000..c0bafb4
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/Lab308Application.java
@@ -0,0 +1,13 @@
+package com.raymond.lab308;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Lab308Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Lab308Application.class, args);
+ }
+
+}
diff --git a/src/main/java/com/raymond/lab308/model/AssociationOfNurses.java b/src/main/java/com/raymond/lab308/model/AssociationOfNurses.java
new file mode 100644
index 0000000..fb3e36a
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/AssociationOfNurses.java
@@ -0,0 +1,39 @@
+package com.raymond.lab308.model;
+
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Entity
+@NoArgsConstructor
+public class AssociationOfNurses {
+ @Id
+ private String name;
+ @OneToMany(mappedBy = "associationOfNurses")
+ private List chapters;
+
+ public AssociationOfNurses(String name, List chapters) {
+ this.name = name;
+ this.chapters = chapters;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "AssociationOfNurses{" +
+ "name='" + name + '\'' +
+ ", chapters=" + chapters +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/Chapter.java b/src/main/java/com/raymond/lab308/model/Chapter.java
new file mode 100644
index 0000000..be7abe3
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/Chapter.java
@@ -0,0 +1,75 @@
+package com.raymond.lab308.model;
+
+
+import jakarta.persistence.*;
+
+import java.util.List;
+
+@Entity
+public class Chapter {
+ @Id
+ private String name;
+ private String district;
+
+ @OneToOne
+ private Member president;
+
+ @OneToMany
+ private List listOfMembers;
+
+ @ManyToOne
+ @JoinColumn(name="association_of_nurses_id")
+ private AssociationOfNurses associationOfNurses;
+
+ public Chapter() {
+ }
+
+ public Chapter(String name, String district, Member president, List listOfMembers) {
+ this.name = name;
+ this.district = district;
+ this.president = president;
+ this.listOfMembers = listOfMembers;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDistrict() {
+ return district;
+ }
+
+ public void setDistrict(String district) {
+ this.district = district;
+ }
+
+ public Member getPresident() {
+ return president;
+ }
+
+ public void setPresident(Member president) {
+ this.president = president;
+ }
+
+ public List getListOfMembers() {
+ return listOfMembers;
+ }
+
+ public void setListOfMembers(List listOfMembers) {
+ this.listOfMembers = listOfMembers;
+ }
+
+ @Override
+ public String toString() {
+ return "Chapter{" +
+ "name='" + name + '\'' +
+ ", district='" + district + '\'' +
+ ", president=" + president +
+ ", listOfMembers=" + listOfMembers +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/Conference.java b/src/main/java/com/raymond/lab308/model/Conference.java
new file mode 100644
index 0000000..4633ae5
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/Conference.java
@@ -0,0 +1,48 @@
+package com.raymond.lab308.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+
+@Entity
+@PrimaryKeyJoinColumn(name = "title")
+public class Conference extends Event{
+
+ @OneToOne
+ private Speaker speaker;
+
+ @ManyToOne
+ private EventManagement eventManagement;
+
+ Conference() {
+ }
+
+ public Conference(Speaker speaker) {
+ this.speaker = speaker;
+ }
+
+ public Speaker getSpeaker() {
+ return speaker;
+ }
+
+ public void setSpeaker(Speaker speaker) {
+ this.speaker = speaker;
+ }
+
+ public EventManagement getEventManagement() {
+ return eventManagement;
+ }
+
+ public void setEventManagement(EventManagement eventManagement) {
+ this.eventManagement = eventManagement;
+ }
+
+ @Override
+ public String toString() {
+ return "Conference{" +
+ "speaker=" + speaker +
+ ", eventManagement=" + eventManagement +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/Event.java b/src/main/java/com/raymond/lab308/model/Event.java
new file mode 100644
index 0000000..b0f882f
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/Event.java
@@ -0,0 +1,92 @@
+package com.raymond.lab308.model;
+
+import jakarta.persistence.*;
+
+import java.util.Date;
+import java.util.List;
+
+@Entity
+@Inheritance(strategy = InheritanceType.JOINED)
+public class Event {
+ @Id
+ private String title;
+ private Date date;
+ private Integer duration;
+ private String location;
+
+ @OneToMany(mappedBy = "event")
+ private List listOfGuests;
+
+ @ManyToOne
+ private EventManagement eventManagement;
+
+ public Event() {
+ }
+
+ public Event(String title, Date date, Integer duration, String location, List listOfGuests) {
+ this.title = title;
+ this.date = date;
+ this.duration = duration;
+ this.location = location;
+ this.listOfGuests = listOfGuests;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public Integer getDuration() {
+ return duration;
+ }
+
+ public void setDuration(Integer duration) {
+ this.duration = duration;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ public List getListOfGuests() {
+ return listOfGuests;
+ }
+
+ public void setListOfGuests(List listOfGuests) {
+ this.listOfGuests = listOfGuests;
+ }
+
+ public EventManagement getEventManagement() {
+ return eventManagement;
+ }
+
+ public void setEventManagement(EventManagement eventManagement) {
+ this.eventManagement = eventManagement;
+ }
+
+ @Override
+ public String toString() {
+ return "Event{" +
+ "title='" + title + '\'' +
+ ", date=" + date +
+ ", duration=" + duration +
+ ", location='" + location + '\'' +
+ ", listOfGuests=" + listOfGuests +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/EventManagement.java b/src/main/java/com/raymond/lab308/model/EventManagement.java
new file mode 100644
index 0000000..a58fec8
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/EventManagement.java
@@ -0,0 +1,32 @@
+package com.raymond.lab308.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+public class EventManagement {
+ @Id
+ private String name;
+
+ EventManagement() {
+ }
+
+ public EventManagement(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "EventManagement{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/Exposition.java b/src/main/java/com/raymond/lab308/model/Exposition.java
new file mode 100644
index 0000000..0e4cafc
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/Exposition.java
@@ -0,0 +1,14 @@
+package com.raymond.lab308.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+
+@Entity
+@PrimaryKeyJoinColumn(name = "title")
+public class Exposition extends Event{
+
+ public Exposition() {
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/Guest.java b/src/main/java/com/raymond/lab308/model/Guest.java
new file mode 100644
index 0000000..c5eeeed
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/Guest.java
@@ -0,0 +1,58 @@
+package com.raymond.lab308.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+
+@Entity
+public class Guest {
+ @Id
+ private String name;
+ private Status status;
+
+ @ManyToOne
+ @JoinColumn(name = "event_id")
+ private Event event;
+
+ private enum Status {
+ ATTENDING, NOT_ATTENDING, NO_RESPONSE
+ }
+
+ public Guest() {
+ }
+
+ public Guest(String name){
+ this.name = name;
+ this.status = Status.ATTENDING;
+ }
+
+ public Guest(String name, Status status) {
+ this.name = name;
+ this.status = status;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Status getStatus() {
+ return status;
+ }
+
+ public void setStatus(Status status) {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return "Guest{" +
+ "name='" + name + '\'' +
+ ", status=" + status +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/Member.java b/src/main/java/com/raymond/lab308/model/Member.java
new file mode 100644
index 0000000..61e6bed
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/Member.java
@@ -0,0 +1,64 @@
+package com.raymond.lab308.model;
+
+import jakarta.persistence.*;
+
+import java.util.Date;
+
+@Entity
+public class Member {
+ @Id
+ private String name;
+ private Status status;
+
+ @Temporal(TemporalType.DATE)
+ private Date renewalDate;
+
+ @ManyToOne
+ private Chapter chapter;
+
+ public enum Status {
+ ACTIVE, LAPSED
+ }
+
+ public Member() {
+ }
+
+ public Member(String name, Status status, Date renewalDate) {
+ this.name = name;
+ this.status = status;
+ this.renewalDate = renewalDate;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Status getStatus() {
+ return status;
+ }
+
+ public void setStatus(Status status) {
+ this.status = status;
+ }
+
+ public Date getRenewalDate() {
+ return renewalDate;
+ }
+
+ public void setRenewalDate(Date renewalDate) {
+ this.renewalDate = renewalDate;
+ }
+
+ @Override
+ public String toString() {
+ return "Member{" +
+ "name='" + name + '\'' +
+ ", status=" + status +
+ ", renewalDate=" + renewalDate +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/model/Speaker.java b/src/main/java/com/raymond/lab308/model/Speaker.java
new file mode 100644
index 0000000..f070da4
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/model/Speaker.java
@@ -0,0 +1,42 @@
+package com.raymond.lab308.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.NoArgsConstructor;
+
+@Entity
+@NoArgsConstructor
+public class Speaker{
+ @Id
+ private String name;
+ private Integer presentationDuration;
+
+ public Speaker(String name, Integer presentationDuration) {
+ this.name = name;
+ this.presentationDuration = presentationDuration;
+ }
+
+ public Integer getPresentationDuration() {
+ return presentationDuration;
+ }
+
+ public void setPresentationDuration(Integer presentationDuration) {
+ this.presentationDuration = presentationDuration;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Speaker{" +
+ "name='" + name + '\'' +
+ ", presentationDuration=" + presentationDuration +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/AssociationOfNursesRepository.java b/src/main/java/com/raymond/lab308/repository/AssociationOfNursesRepository.java
new file mode 100644
index 0000000..3058b59
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/AssociationOfNursesRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+import com.raymond.lab308.model.AssociationOfNurses;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface AssociationOfNursesRepository extends JpaRepository {
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/ChapterRepository.java b/src/main/java/com/raymond/lab308/repository/ChapterRepository.java
new file mode 100644
index 0000000..b069e24
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/ChapterRepository.java
@@ -0,0 +1,10 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.Chapter;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChapterRepository extends JpaRepository{
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/ConferenceRepository.java b/src/main/java/com/raymond/lab308/repository/ConferenceRepository.java
new file mode 100644
index 0000000..00c7d99
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/ConferenceRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.Conference;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ConferenceRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/EventManagementRepository.java b/src/main/java/com/raymond/lab308/repository/EventManagementRepository.java
new file mode 100644
index 0000000..0f98cc9
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/EventManagementRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.EventManagement;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface EventManagementRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/EventRepository.java b/src/main/java/com/raymond/lab308/repository/EventRepository.java
new file mode 100644
index 0000000..666bb82
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/EventRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.Event;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface EventRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/ExpositionRepository.java b/src/main/java/com/raymond/lab308/repository/ExpositionRepository.java
new file mode 100644
index 0000000..1d12ac4
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/ExpositionRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.Exposition;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ExpositionRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/GuestRepository.java b/src/main/java/com/raymond/lab308/repository/GuestRepository.java
new file mode 100644
index 0000000..c2297d4
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/GuestRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.Guest;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface GuestRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/MemberRepository.java b/src/main/java/com/raymond/lab308/repository/MemberRepository.java
new file mode 100644
index 0000000..24dc9b0
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/MemberRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.Member;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface MemberRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/raymond/lab308/repository/SpeakerRepository.java b/src/main/java/com/raymond/lab308/repository/SpeakerRepository.java
new file mode 100644
index 0000000..5e226fc
--- /dev/null
+++ b/src/main/java/com/raymond/lab308/repository/SpeakerRepository.java
@@ -0,0 +1,9 @@
+package com.raymond.lab308.repository;
+
+import com.raymond.lab308.model.Speaker;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface SpeakerRepository extends JpaRepository {
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..3136ca8
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,12 @@
+spring.application.name=Lab308
+spring.datasource.url=jdbc:mysql://localhost:3306
+spring.datasource.username=root
+spring.datasource.password=1308Birungi!
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.show-sql=true
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
+server.error.include-stacktrace=never
+server.error.include-message=always
+server.error.include-binding-errors=always
+spring.output.ansi.enabled=ALWAYS
\ No newline at end of file
diff --git a/src/test/java/com/raymond/lab308/Lab308ApplicationTests.java b/src/test/java/com/raymond/lab308/Lab308ApplicationTests.java
new file mode 100644
index 0000000..0994986
--- /dev/null
+++ b/src/test/java/com/raymond/lab308/Lab308ApplicationTests.java
@@ -0,0 +1,13 @@
+package com.raymond.lab308;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class Lab308ApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}