From e38cb5b9d472e87cf239e0bc484125f25f22a3dc Mon Sep 17 00:00:00 2001 From: cie10 Date: Mon, 30 Dec 2024 15:45:35 +0900 Subject: [PATCH] develop model class --- .../java/com/example/model/Announcement.java | 103 +++++++++++++ src/main/java/com/example/model/Employee.java | 73 +++++---- .../com/example/model/EmployeeReview.java | 25 +++ src/main/java/com/example/model/Employer.java | 19 +++ .../java/com/example/model/GuestHouse.java | 145 ++++++++++++++++++ .../com/example/model/GuestHouseReview.java | 25 +++ src/main/java/com/example/model/Resume.java | 94 ++++++++++++ src/main/java/com/example/model/Review.java | 46 ++++++ .../java/com/example/ui/UserDisplayApp.java | 86 ----------- 9 files changed, 496 insertions(+), 120 deletions(-) create mode 100644 src/main/java/com/example/model/Announcement.java create mode 100644 src/main/java/com/example/model/EmployeeReview.java create mode 100644 src/main/java/com/example/model/GuestHouse.java create mode 100644 src/main/java/com/example/model/GuestHouseReview.java create mode 100644 src/main/java/com/example/model/Resume.java create mode 100644 src/main/java/com/example/model/Review.java delete mode 100644 src/main/java/com/example/ui/UserDisplayApp.java diff --git a/src/main/java/com/example/model/Announcement.java b/src/main/java/com/example/model/Announcement.java new file mode 100644 index 0000000..12e687c --- /dev/null +++ b/src/main/java/com/example/model/Announcement.java @@ -0,0 +1,103 @@ +package main.java.com.example.model; + +import java.util.Date; + +public class Announcement { + private Long announcementId; + private String title; + private String content; + private Date startDate; + private Date endDate; + private int employeeNumber; + private String contact; + private String[] hashtag; + + // GuestHouse와의 관계 + private GuestHouse guestHouse; + + // Getters and Setters + public Long getAnnouncementId() { + return announcementId; + } + + public void setAnnouncementId(Long announcementId) { + this.announcementId = announcementId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + public int getEmployeeNumber() { + return employeeNumber; + } + + public void setEmployeeNumber(int employeeNumber) { + this.employeeNumber = employeeNumber; + } + + public String getContact() { + return contact; + } + + public void setContact(String contact) { + this.contact = contact; + } + + public String[] getHashtag() { + return hashtag; + } + + public void setHashtag(String[] hashtag) { + this.hashtag = hashtag; + } + + public GuestHouse getGuestHouse() { + return guestHouse; + } + + public void setGuestHouse(GuestHouse guestHouse) { + this.guestHouse = guestHouse; + } + + public void displayAnnouncementDetails() { + System.out.println("Announcement Details:"); + System.out.println("ID: " + announcementId); + System.out.println("Title: " + title); + System.out.println("Content: " + content); + System.out.println("Start Date: " + startDate); + System.out.println("End Date: " + endDate); + System.out.println("Employee Number: " + employeeNumber); + System.out.println("Contact: " + contact); + System.out.println("Hashtags: " + (hashtag != null ? String.join(", ", hashtag) : "No hashtags")); + System.out.println("GuestHouse: " + (guestHouse != null ? guestHouse.getGuesthouseName() : "No GuestHouse")); + } +} diff --git a/src/main/java/com/example/model/Employee.java b/src/main/java/com/example/model/Employee.java index ac58d2d..c38c66b 100644 --- a/src/main/java/com/example/model/Employee.java +++ b/src/main/java/com/example/model/Employee.java @@ -1,12 +1,18 @@ package main.java.com.example.model; +import java.util.ArrayList; +import java.util.List; + public class Employee extends User { private String employeeName; - private int age; - private String profile; - private String mbti; - private String instagram; - private String[] hashtag; + private String position; + private String contact; + + // EmployeeReview와의 1:N 관계 + private List reviews = new ArrayList<>(); + + // Resume와의 1:N 관계 + private List resumes = new ArrayList<>(); // Getters and Setters public String getEmployeeName() { @@ -17,53 +23,52 @@ public void setEmployeeName(String employeeName) { this.employeeName = employeeName; } - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public String getProfile() { - return profile; + public String getPosition() { + return position; } - public void setProfile(String profile) { - this.profile = profile; + public void setPosition(String position) { + this.position = position; } - public String getMbti() { - return mbti; + public String getContact() { + return contact; } - public void setMbti(String mbti) { - this.mbti = mbti; + public void setContact(String contact) { + this.contact = contact; } - public String getInstagram() { - return instagram; + public List getReviews() { + return reviews; } - public void setInstagram(String instagram) { - this.instagram = instagram; + public void addReview(EmployeeReview review) { + reviews.add(review); + review.setEmployee(this); // Employee 객체 설정 } - public String[] getHashtag() { - return hashtag; + public List getResumes() { + return resumes; } - public void setHashtag(String[] hashtag) { - this.hashtag = hashtag; + public void addResume(Resume resume) { + resumes.add(resume); + resume.setEmployee(this); // Resume 객체와의 관계 설정 } @Override public void displayUserInfo() { System.out.println("Employee Name: " + employeeName); - System.out.println("Age: " + age); - System.out.println("Profile: " + profile); - System.out.println("MBTI: " + mbti); - System.out.println("Instagram: " + instagram); - System.out.println("Hashtags: " + String.join(", ", hashtag)); + System.out.println("Position: " + position); + System.out.println("Contact: " + contact); + System.out.println("Resumes:"); + for (Resume resume : resumes) { + System.out.println("- Resume ID: " + resume.getResumeId() + ", Title: " + resume.getTitle()); + } + System.out.println("Reviews:"); + for (EmployeeReview review : reviews) { + System.out.println("- Review ID: " + review.getReviewId() + ", Rating: " + review.getRating()); + } } } diff --git a/src/main/java/com/example/model/EmployeeReview.java b/src/main/java/com/example/model/EmployeeReview.java new file mode 100644 index 0000000..4756030 --- /dev/null +++ b/src/main/java/com/example/model/EmployeeReview.java @@ -0,0 +1,25 @@ +package main.java.com.example.model; + +public class EmployeeReview extends Review { + private Employee employee; // Employee 객체 참조 + + // Getters and Setters + public Employee getEmployee() { + return employee; + } + + public void setEmployee(Employee employee) { + this.employee = employee; + } + + // Override the abstract method + @Override + public void displayReviewDetails() { + System.out.println("Employee Review Details:"); + System.out.println("Review ID: " + getReviewId()); + System.out.println("Employee: " + (employee != null ? employee.getEmployeeName() : "No Employee")); + System.out.println("Rating: " + getRating()); + System.out.println("Content: " + getContent()); + System.out.println("Date: " + getDate()); + } +} diff --git a/src/main/java/com/example/model/Employer.java b/src/main/java/com/example/model/Employer.java index f7246f3..65aa11c 100644 --- a/src/main/java/com/example/model/Employer.java +++ b/src/main/java/com/example/model/Employer.java @@ -1,10 +1,16 @@ package main.java.com.example.model; +import java.util.ArrayList; +import java.util.List; + public class Employer extends User { private String employerName; private String employerPhoneNumber; private String businessLicenseNumber; + // 일대다 관계: 여러 GuestHouse를 참조 + private List guestHouses = new ArrayList<>(); + // Getters and Setters public String getEmployerName() { return employerName; @@ -30,10 +36,23 @@ public void setBusinessLicenseNumber(String businessLicenseNumber) { this.businessLicenseNumber = businessLicenseNumber; } + public List getGuestHouses() { + return guestHouses; + } + + public void addGuestHouse(GuestHouse guestHouse) { + guestHouses.add(guestHouse); + guestHouse.setEmployer(this); // Employer 객체 설정 + } + @Override public void displayUserInfo() { System.out.println("Employer Name: " + employerName); System.out.println("Phone Number: " + employerPhoneNumber); System.out.println("Business License Number: " + businessLicenseNumber); + System.out.println("GuestHouses: "); + for (GuestHouse guestHouse : guestHouses) { + System.out.println("- " + guestHouse.getGuesthouseName()); + } } } diff --git a/src/main/java/com/example/model/GuestHouse.java b/src/main/java/com/example/model/GuestHouse.java new file mode 100644 index 0000000..16fd877 --- /dev/null +++ b/src/main/java/com/example/model/GuestHouse.java @@ -0,0 +1,145 @@ +package main.java.com.example.model; + +import java.util.ArrayList; +import java.util.List; + +public class GuestHouse { + private Long guesthouseId; + private String guesthouseName; + private String location; + private String facilities; + private String contact; + private String intro; + private double averageRating; + private String[] hashtag; + private String image; + + // Employer와의 관계 + private Employer employer; + + // Announcement와의 1:N 관계 + private List announcements = new ArrayList<>(); + + // GuestHouseReview와의 1:N 관계 + private List reviews = new ArrayList<>(); + + // Getters and Setters + public Long getGuesthouseId() { + return guesthouseId; + } + + public void setGuesthouseId(Long guesthouseId) { + this.guesthouseId = guesthouseId; + } + + public String getGuesthouseName() { + return guesthouseName; + } + + public void setGuesthouseName(String guesthouseName) { + this.guesthouseName = guesthouseName; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getFacilities() { + return facilities; + } + + public void setFacilities(String facilities) { + this.facilities = facilities; + } + + public String getContact() { + return contact; + } + + public void setContact(String contact) { + this.contact = contact; + } + + public String getIntro() { + return intro; + } + + public void setIntro(String intro) { + this.intro = intro; + } + + public double getAverageRating() { + return averageRating; + } + + public void setAverageRating(double averageRating) { + this.averageRating = averageRating; + } + + public String[] getHashtag() { + return hashtag; + } + + public void setHashtag(String[] hashtag) { + this.hashtag = hashtag; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public Employer getEmployer() { + return employer; + } + + public void setEmployer(Employer employer) { + this.employer = employer; + } + + public List getAnnouncements() { + return announcements; + } + + public void addAnnouncement(Announcement announcement) { + announcements.add(announcement); + } + + public List getReviews() { + return reviews; + } + + public void addReview(GuestHouseReview review) { + reviews.add(review); + review.setGuestHouse(this); // GuestHouseReview의 GuestHouse 설정 + } + + public void displayGuestHouseDetails() { + System.out.println("GuestHouse Details:"); + System.out.println("ID: " + guesthouseId); + System.out.println("Name: " + guesthouseName); + System.out.println("Location: " + location); + System.out.println("Facilities: " + facilities); + System.out.println("Contact: " + contact); + System.out.println("Intro: " + intro); + System.out.println("Average Rating: " + averageRating); + System.out.println("Hashtags: " + (hashtag != null ? String.join(", ", hashtag) : "No hashtags")); + System.out.println("Image: " + image); + System.out.println("Employer: " + (employer != null ? employer.getEmployerName() : "No Employer")); + System.out.println("Announcements:"); + for (Announcement announcement : announcements) { + System.out.println("- " + announcement.getTitle()); + } + System.out.println("Reviews:"); + for (GuestHouseReview review : reviews) { + System.out.println("- Review ID: " + review.getReviewId() + ", Rating: " + review.getRating()); + } + } +} diff --git a/src/main/java/com/example/model/GuestHouseReview.java b/src/main/java/com/example/model/GuestHouseReview.java new file mode 100644 index 0000000..712d955 --- /dev/null +++ b/src/main/java/com/example/model/GuestHouseReview.java @@ -0,0 +1,25 @@ +package main.java.com.example.model; + +public class GuestHouseReview extends Review { + private GuestHouse guestHouse; // GuestHouse 객체 참조 + + // Getters and Setters + public GuestHouse getGuestHouse() { + return guestHouse; + } + + public void setGuestHouse(GuestHouse guestHouse) { + this.guestHouse = guestHouse; + } + + // Override the abstract method + @Override + public void displayReviewDetails() { + System.out.println("GuestHouse Review Details:"); + System.out.println("Review ID: " + getReviewId()); + System.out.println("GuestHouse: " + (guestHouse != null ? guestHouse.getGuesthouseName() : "No GuestHouse")); + System.out.println("Rating: " + getRating()); + System.out.println("Content: " + getContent()); + System.out.println("Date: " + getDate()); + } +} diff --git a/src/main/java/com/example/model/Resume.java b/src/main/java/com/example/model/Resume.java new file mode 100644 index 0000000..8c4d791 --- /dev/null +++ b/src/main/java/com/example/model/Resume.java @@ -0,0 +1,94 @@ +package main.java.com.example.model; + +import java.util.Date; + +public class Resume { + private int resumeId; + private String title; + private Date updatedAt; + private String address; + private String phoneNumber; + private String instagram; + private String mbti; + + // Employee와의 관계 + private Employee employee; + + // Getters and Setters + public int getResumeId() { + return resumeId; + } + + public void setResumeId(int resumeId) { + this.resumeId = resumeId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getInstagram() { + return instagram; + } + + public void setInstagram(String instagram) { + this.instagram = instagram; + } + + public String getMbti() { + return mbti; + } + + public void setMbti(String mbti) { + this.mbti = mbti; + } + + public Employee getEmployee() { + return employee; + } + + public void setEmployee(Employee employee) { + this.employee = employee; + } + + // Display Resume Details + public void displayResumeDetails() { + System.out.println("Resume Details:"); + System.out.println("Resume ID: " + resumeId); + System.out.println("Title: " + title); + System.out.println("Updated At: " + updatedAt); + System.out.println("Address: " + address); + System.out.println("Phone Number: " + phoneNumber); + System.out.println("Instagram: " + instagram); + System.out.println("MBTI: " + mbti); + System.out.println("Employee: " + (employee != null ? employee.getEmployeeName() : "No Employee")); + } +} diff --git a/src/main/java/com/example/model/Review.java b/src/main/java/com/example/model/Review.java new file mode 100644 index 0000000..efa6809 --- /dev/null +++ b/src/main/java/com/example/model/Review.java @@ -0,0 +1,46 @@ +package main.java.com.example.model; + +import java.util.Date; + +public abstract class Review { + private int reviewId; + private float rating; + private String content; + private Date date; + + // Getters and Setters + public int getReviewId() { + return reviewId; + } + + public void setReviewId(int reviewId) { + this.reviewId = reviewId; + } + + public float getRating() { + return rating; + } + + public void setRating(float rating) { + this.rating = rating; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + // Abstract method to be implemented by subclasses + public abstract void displayReviewDetails(); +} diff --git a/src/main/java/com/example/ui/UserDisplayApp.java b/src/main/java/com/example/ui/UserDisplayApp.java deleted file mode 100644 index cdaa883..0000000 --- a/src/main/java/com/example/ui/UserDisplayApp.java +++ /dev/null @@ -1,86 +0,0 @@ -package main.java.com.example.ui; - -import main.java.com.example.model.Employee; -import main.java.com.example.model.Employer; -import main.java.com.example.model.UserRole; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -public class UserDisplayApp { - - public static void main(String[] args) { - // 메인 프레임 생성 - JFrame frame = new JFrame("User Display Application"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setSize(500, 300); - frame.setLayout(new BorderLayout()); - - // Display 영역 - JTextArea displayArea = new JTextArea(); - displayArea.setEditable(false); // 텍스트 수정 불가 - JScrollPane scrollPane = new JScrollPane(displayArea); - - // 버튼 패널 - JPanel buttonPanel = new JPanel(new GridLayout(1, 2, 10, 10)); - - // Employer 버튼 - JButton btnEmployer = new JButton("Show Employer"); - btnEmployer.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Employer employer = new Employer(); - employer.setEmployerName("John Doe"); - employer.setEmployerPhoneNumber("123-456-7890"); - employer.setBusinessLicenseNumber("987654321"); - employer.setRole(UserRole.EMPLOYER); - - // Display employer 정보 - displayArea.setText(""); - displayArea.append("Employer Information:\n"); - displayArea.append("Name: " + employer.getEmployerName() + "\n"); - displayArea.append("Phone: " + employer.getEmployerPhoneNumber() + "\n"); - displayArea.append("Business License: " + employer.getBusinessLicenseNumber() + "\n"); - displayArea.append("Role: " + employer.getRole() + "\n"); - } - }); - - // Employee 버튼 - JButton btnEmployee = new JButton("Show Employee"); - btnEmployee.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Employee employee = new Employee(); - employee.setEmployeeName("Jane Smith"); - employee.setAge(28); - employee.setProfile("Software Engineer"); - employee.setMbti("INTJ"); - employee.setInstagram("@janesmith"); - employee.setHashtag(new String[]{"developer", "java", "swing"}); - - // Display employee 정보 - displayArea.setText(""); - displayArea.append("Employee Information:\n"); - displayArea.append("Name: " + employee.getEmployeeName() + "\n"); - displayArea.append("Age: " + employee.getAge() + "\n"); - displayArea.append("Profile: " + employee.getProfile() + "\n"); - displayArea.append("MBTI: " + employee.getMbti() + "\n"); - displayArea.append("Instagram: " + employee.getInstagram() + "\n"); - displayArea.append("Hashtags: " + String.join(", ", employee.getHashtag()) + "\n"); - } - }); - - // 버튼 패널에 버튼 추가 - buttonPanel.add(btnEmployer); - buttonPanel.add(btnEmployee); - - // 메인 프레임에 컴포넌트 추가 - frame.add(scrollPane, BorderLayout.CENTER); - frame.add(buttonPanel, BorderLayout.SOUTH); - - // 프레임 표시 - frame.setVisible(true); - } -}