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/ironhack/assosiationofnurses/AssosiationOfNursesApplication.java b/src/main/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplication.java new file mode 100644 index 0000000..45d8d31 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplication.java @@ -0,0 +1,13 @@ +package com.ironhack.assosiationofnurses; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AssosiationOfNursesApplication { + + public static void main(String[] args) { + SpringApplication.run(AssosiationOfNursesApplication.class, args); + } + +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/enums/GuestStatus.java b/src/main/java/com/ironhack/assosiationofnurses/enums/GuestStatus.java new file mode 100644 index 0000000..3b2dafe --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/enums/GuestStatus.java @@ -0,0 +1,8 @@ +package com.ironhack.assosiationofnurses.enums; +//Task2 +public enum GuestStatus { + + ATTENDING, + NOT_ATTENDING, + NO_RESPONSE +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/enums/StatusType.java b/src/main/java/com/ironhack/assosiationofnurses/enums/StatusType.java new file mode 100644 index 0000000..01c9edc --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/enums/StatusType.java @@ -0,0 +1,7 @@ +package com.ironhack.assosiationofnurses.enums; +// Task1 +public enum StatusType { + + ACTIVE, + LAPSED +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/loader/DataLoader.java b/src/main/java/com/ironhack/assosiationofnurses/loader/DataLoader.java new file mode 100644 index 0000000..14bdaba --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/loader/DataLoader.java @@ -0,0 +1,247 @@ +package com.ironhack.assosiationofnurses.loader; +// Task1/Task2 + +import com.ironhack.assosiationofnurses.enums.GuestStatus; +import com.ironhack.assosiationofnurses.enums.StatusType; +import com.ironhack.assosiationofnurses.model.*; +import com.ironhack.assosiationofnurses.repository.*; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.util.HashSet; +import java.util.Set; + +@Component +@RequiredArgsConstructor +public class DataLoader implements CommandLineRunner { + + private final chapterRepository chapterRepository; + private final memberRepository memberRepository; + private final eventRepository eventRepository; + private final speakersRepository speakersRepository; + private final guestRepository guestRepository; + + + @Override + @Transactional + public void run(String... args) throws Exception { + + + Chapter chapter = new Chapter(); + chapter.setName("Chapter Alpha"); + chapter.setDistrict("North Hessen"); + chapterRepository.save(chapter); + + Chapter chapter2 = new Chapter(); + chapter2.setName("Chapter Beta"); + chapter2.setDistrict("South Hessen"); + chapterRepository.save(chapter2); + + Chapter chapter3 = new Chapter(); + chapter3.setName("Chapter Gamma"); + chapter3.setDistrict("BRE"); + chapterRepository.save(chapter3); + + Chapter chapter4 = new Chapter(); + chapter4.setName("Chapter Bryta"); + chapter4.setDistrict("FRA North"); + chapterRepository.save(chapter4); + + Member president = new Member(); + president.setName("John Smith"); + president.setRenewalDate(LocalDate.now()); + president.setStatus(StatusType.ACTIVE); + president.setChapter(chapter); + chapter.setPresident(president); + + chapterRepository.save(chapter); + memberRepository.save(president); + + Member president2 = new Member(); + president2.setName("Alba George"); + president2.setRenewalDate(LocalDate.now()); + president2.setStatus(StatusType.ACTIVE); + president2.setChapter(chapter2); + chapter2.setPresident(president2); + + chapterRepository.save(chapter2); + memberRepository.save(president2); + + + Member president3 = new Member(); + president3.setName("Pablo Rodrigez"); + president3.setRenewalDate(LocalDate.now()); + president3.setStatus(StatusType.ACTIVE); + president3.setChapter(chapter3); + chapter3.setPresident(president3); + + chapterRepository.save(chapter3); + memberRepository.save(president3); + + Member president4 = new Member(); + president4.setName("Bob Smith"); + president4.setRenewalDate(LocalDate.now()); + president4.setStatus(StatusType.ACTIVE); + president4.setChapter(chapter4); + chapter4.setPresident(president4); + + chapterRepository.save(chapter4); + memberRepository.save(president4); + + + Member member = new Member(); + member.setName("Alice Newman"); + member.setRenewalDate(LocalDate.now()); + member.setStatus(StatusType.ACTIVE); + member.setChapter(chapter); + + chapter.getMembers().add(member); + memberRepository.save(member); + + Member member2 = new Member(); + member2.setName("Teresa Kaufman"); + member2.setRenewalDate(LocalDate.now()); + member2.setStatus(StatusType.ACTIVE); + member2.setChapter(chapter2); + + chapter2.getMembers().add(member2); + memberRepository.save(member2); + + + Member member3 = new Member(); + member3.setName("Amira Ali"); + member3.setRenewalDate(LocalDate.now()); + member3.setStatus(StatusType.ACTIVE); + member3.setChapter(chapter3); + + chapter3.getMembers().add(member3); + memberRepository.save(member3); + + + Member member4 = new Member(); + member4.setName("Raul Moreno"); + member4.setRenewalDate(LocalDate.now()); + member4.setStatus(StatusType.ACTIVE); + member4.setChapter(chapter4); + + chapter4.getMembers().add(member4); + memberRepository.save(member4); + + + Member member5 = new Member(); + member5.setName("Charlie Dill"); + member5.setRenewalDate(LocalDate.now()); + member5.setStatus(StatusType.ACTIVE); + member5.setChapter(chapter); + + chapter.getMembers().add(member5); + memberRepository.save(member5); + + + Member member6 = new Member(); + member6.setName("David Moreno"); + member6.setRenewalDate(LocalDate.now()); + member6.setStatus(StatusType.ACTIVE); + member6.setChapter(chapter2); + + chapter.getMembers().add(member6); + memberRepository.save(member6); + + + Conference conference = new Conference(); + conference.setEventDate(LocalDate.now().plusDays(15)); + conference.setDuration(30); + conference.setLocation("Halle A"); + conference.setTitle("Health and wealthy"); + + Set speakersSet = new HashSet<>(); + + Speakers speaker = new Speakers(); + speaker.setName("David Walid"); + speaker.setPresentationDuration(15); + speaker.setConference(conference); + speakersSet.add(speaker); + + Speakers speaker2 = new Speakers(); + speaker2.setName("Kaya Raya"); + speaker2.setPresentationDuration(12); + speaker2.setConference(conference); + speakersSet.add(speaker2); + + conference.setSpeakers(speakersSet); + + Set guest = new HashSet<>(); + + Guest guest1 = new Guest(); + guest1.setName("Ronald Maroon"); + guest1.setStatus(GuestStatus.ATTENDING); + guest1.setEvent(conference); + conference.getGuests().add(guest1); + guestRepository.save(guest1); + + Guest guest2 = new Guest(); + guest2.setName("Gabi Ahmad"); + guest2.setStatus(GuestStatus.NOT_ATTENDING); + guest2.setEvent(conference); + conference.getGuests().add(guest2); + guestRepository.save(guest2); + + Guest guest3 = new Guest(); + guest3.setName("Tim Schreck"); + guest3.setStatus(GuestStatus.NOT_ATTENDING); + guest3.setEvent(conference); + conference.getGuests().add(guest3); + guestRepository.save(guest3); + + eventRepository.save(conference); + + Exhibition exhibition = new Exhibition(); + exhibition.setEventDate(LocalDate.now().plusDays(20)); + exhibition.setDuration(30); + exhibition.setLocation("Halle B"); + exhibition.setTitle("Art of Salvador Dali"); + + Speakers speaker3 = new Speakers(); + speaker3.setName("Romeo Carno"); + speaker3.setPresentationDuration(15); + speaker3.setExhibition(exhibition); + speakersSet.add(speaker3); + + Speakers speaker4 = new Speakers(); + speaker4.setName("Ariadna Dali"); + speaker4.setPresentationDuration(15); + speaker4.setExhibition(exhibition); + speakersSet.add(speaker4); + + exhibition.setSpeaker(speakersSet); + + Guest guest5 = new Guest(); + guest5.setName("Carlos Rodrigues"); + guest5.setStatus(GuestStatus.NOT_ATTENDING); + guest5.setEvent(exhibition); + exhibition.getGuests().add(guest5); + guestRepository.save(guest5); + + Guest guest6 = new Guest(); + guest6.setName("Doron Cabillo"); + guest6.setStatus(GuestStatus.NOT_ATTENDING); + guest6.setEvent(exhibition); + exhibition.getGuests().add(guest6); + guestRepository.save(guest6); + + Guest guest7 = new Guest(); + guest7.setName("Lara Marinova"); + guest7.setStatus(GuestStatus.NOT_ATTENDING); + guest7.setEvent(exhibition); + exhibition.getGuests().add(guest7); + guestRepository.save(guest7); + + + eventRepository.save(exhibition); + + + } +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Chapter.java b/src/main/java/com/ironhack/assosiationofnurses/model/Chapter.java new file mode 100644 index 0000000..5c9fbba --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/model/Chapter.java @@ -0,0 +1,38 @@ +package com.ironhack.assosiationofnurses.model; +// Task1 +import jakarta.persistence.*; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@Table(name = "chapter") +public class Chapter { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String district; + + + + @OneToOne + @JoinColumn(name = "president_id") + private Member president; + + @OneToMany(mappedBy = "chapter", cascade = CascadeType.ALL) + private Set members = new HashSet<>(); + +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Conference.java b/src/main/java/com/ironhack/assosiationofnurses/model/Conference.java new file mode 100644 index 0000000..89bc561 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/model/Conference.java @@ -0,0 +1,21 @@ +package com.ironhack.assosiationofnurses.model; +//Task2 +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.HashSet; +import java.util.Set; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@DiscriminatorValue("CONFERENCE") +public class Conference extends Event{ + + @OneToMany(mappedBy = "conference",cascade = CascadeType.ALL) + private Set speakers=new HashSet<>(); + +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Event.java b/src/main/java/com/ironhack/assosiationofnurses/model/Event.java new file mode 100644 index 0000000..6eafca7 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/model/Event.java @@ -0,0 +1,33 @@ +package com.ironhack.assosiationofnurses.model; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDate; +import java.util.HashSet; +import java.util.Set; +//Task2 +@Entity +@Getter +@Setter +@NoArgsConstructor +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "event_type") +public abstract class Event { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private LocalDate eventDate; + private int duration; + private String location; + private String title; + + @OneToMany(mappedBy = "event", cascade = CascadeType.ALL) + private Set guests = new HashSet<>(); + + +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Exhibition.java b/src/main/java/com/ironhack/assosiationofnurses/model/Exhibition.java new file mode 100644 index 0000000..0022742 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/model/Exhibition.java @@ -0,0 +1,20 @@ +package com.ironhack.assosiationofnurses.model; +//Task2 +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.HashSet; +import java.util.Set; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@DiscriminatorValue("Exhibition") +public class Exhibition extends Event{ + + @OneToMany(mappedBy = "exhibition", cascade = CascadeType.ALL) + private Set speaker=new HashSet<>(); +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Guest.java b/src/main/java/com/ironhack/assosiationofnurses/model/Guest.java new file mode 100644 index 0000000..842cb0c --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/model/Guest.java @@ -0,0 +1,25 @@ +package com.ironhack.assosiationofnurses.model; +//Task2 +import com.ironhack.assosiationofnurses.enums.GuestStatus; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Setter +@Getter +@NoArgsConstructor +public class Guest { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + @Enumerated(EnumType.STRING) + private GuestStatus status; + + @ManyToOne + @JoinColumn(name="event_id") + private Event event; +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Member.java b/src/main/java/com/ironhack/assosiationofnurses/model/Member.java new file mode 100644 index 0000000..303217f --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/model/Member.java @@ -0,0 +1,37 @@ +package com.ironhack.assosiationofnurses.model; +// Task1 +import ch.qos.logback.core.status.Status; +import com.ironhack.assosiationofnurses.enums.StatusType; +import jakarta.persistence.*; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +//Task1 +import java.time.LocalDate; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@Table(name = "member") +public class Member { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private LocalDate renewalDate; + + @Enumerated(EnumType.STRING) + private StatusType status; + + @OneToOne(mappedBy = "president") + private Chapter presidentOf; + + @ManyToOne + @JoinColumn(name = "chapter_id") + private Chapter chapter; + +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Speakers.java b/src/main/java/com/ironhack/assosiationofnurses/model/Speakers.java new file mode 100644 index 0000000..ea13f28 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/model/Speakers.java @@ -0,0 +1,29 @@ +package com.ironhack.assosiationofnurses.model; +//Task2 +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Getter +@Setter +@NoArgsConstructor +public class Speakers { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private int presentationDuration; + + @ManyToOne + @JoinColumn(name="conference_id") + private Conference conference; + + @ManyToOne + @JoinColumn(name="exhibition_id") + private Exhibition exhibition; + +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/chapterRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/chapterRepository.java new file mode 100644 index 0000000..afde44a --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/repository/chapterRepository.java @@ -0,0 +1,7 @@ +package com.ironhack.assosiationofnurses.repository; +//Task1 +import com.ironhack.assosiationofnurses.model.Chapter; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface chapterRepository extends JpaRepository { +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/eventRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/eventRepository.java new file mode 100644 index 0000000..1ef20e1 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/repository/eventRepository.java @@ -0,0 +1,7 @@ +package com.ironhack.assosiationofnurses.repository; +//Task2 +import com.ironhack.assosiationofnurses.model.Event; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface eventRepository extends JpaRepository { +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/guestRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/guestRepository.java new file mode 100644 index 0000000..8956f03 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/repository/guestRepository.java @@ -0,0 +1,7 @@ +package com.ironhack.assosiationofnurses.repository; +//Task2 +import com.ironhack.assosiationofnurses.model.Guest; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface guestRepository extends JpaRepository { +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/memberRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/memberRepository.java new file mode 100644 index 0000000..5cf5239 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/repository/memberRepository.java @@ -0,0 +1,7 @@ +package com.ironhack.assosiationofnurses.repository; +//Task1 +import com.ironhack.assosiationofnurses.model.Member; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface memberRepository extends JpaRepository { +} diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/speakersRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/speakersRepository.java new file mode 100644 index 0000000..aae3a99 --- /dev/null +++ b/src/main/java/com/ironhack/assosiationofnurses/repository/speakersRepository.java @@ -0,0 +1,7 @@ +package com.ironhack.assosiationofnurses.repository; +//Task2 +import com.ironhack.assosiationofnurses.model.Speakers; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface speakersRepository extends JpaRepository { +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..1cd148a --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,7 @@ +spring.application.name=AssosiationOfNurses +spring.datasource.url=jdbc:mysql://localhost:3306/association_ns +spring.datasource.username=ayordano +spring.datasource.password=aa22SS3645? + +spring.jpa.hibernate.ddl-auto=create +spring.jpa.show-sql=true diff --git a/src/test/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplicationTests.java b/src/test/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplicationTests.java new file mode 100644 index 0000000..f970e7e --- /dev/null +++ b/src/test/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplicationTests.java @@ -0,0 +1,13 @@ +package com.ironhack.assosiationofnurses; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class AssosiationOfNursesApplicationTests { + + @Test + void contextLoads() { + } + +}