From d554360f7dd3d76905b70448f56250c8400e93b0 Mon Sep 17 00:00:00 2001 From: raymondchishamba Date: Thu, 24 Oct 2024 00:57:07 +0200 Subject: [PATCH] Lab308 --- .idea/.gitignore | 8 ++ .idea/vcs.xml | 4 + .../com/raymond/lab308/Lab308Application.java | 13 +++ .../lab308/model/AssociationOfNurses.java | 39 ++++++++ .../com/raymond/lab308/model/Chapter.java | 75 +++++++++++++++ .../com/raymond/lab308/model/Conference.java | 48 ++++++++++ .../java/com/raymond/lab308/model/Event.java | 92 +++++++++++++++++++ .../raymond/lab308/model/EventManagement.java | 32 +++++++ .../com/raymond/lab308/model/Exposition.java | 14 +++ .../java/com/raymond/lab308/model/Guest.java | 58 ++++++++++++ .../java/com/raymond/lab308/model/Member.java | 64 +++++++++++++ .../com/raymond/lab308/model/Speaker.java | 42 +++++++++ .../AssociationOfNursesRepository.java | 9 ++ .../lab308/repository/ChapterRepository.java | 10 ++ .../repository/ConferenceRepository.java | 9 ++ .../repository/EventManagementRepository.java | 9 ++ .../lab308/repository/EventRepository.java | 9 ++ .../repository/ExpositionRepository.java | 9 ++ .../lab308/repository/GuestRepository.java | 9 ++ .../lab308/repository/MemberRepository.java | 9 ++ .../lab308/repository/SpeakerRepository.java | 9 ++ src/main/resources/application.properties | 12 +++ .../lab308/Lab308ApplicationTests.java | 13 +++ 23 files changed, 596 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/com/raymond/lab308/Lab308Application.java create mode 100644 src/main/java/com/raymond/lab308/model/AssociationOfNurses.java create mode 100644 src/main/java/com/raymond/lab308/model/Chapter.java create mode 100644 src/main/java/com/raymond/lab308/model/Conference.java create mode 100644 src/main/java/com/raymond/lab308/model/Event.java create mode 100644 src/main/java/com/raymond/lab308/model/EventManagement.java create mode 100644 src/main/java/com/raymond/lab308/model/Exposition.java create mode 100644 src/main/java/com/raymond/lab308/model/Guest.java create mode 100644 src/main/java/com/raymond/lab308/model/Member.java create mode 100644 src/main/java/com/raymond/lab308/model/Speaker.java create mode 100644 src/main/java/com/raymond/lab308/repository/AssociationOfNursesRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/ChapterRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/ConferenceRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/EventManagementRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/EventRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/ExpositionRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/GuestRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/MemberRepository.java create mode 100644 src/main/java/com/raymond/lab308/repository/SpeakerRepository.java create mode 100644 src/main/resources/application.properties create mode 100644 src/test/java/com/raymond/lab308/Lab308ApplicationTests.java 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() { + } + +}