From de9797d3d510b91caaa6e3914c5503d5033b5717 Mon Sep 17 00:00:00 2001 From: "honggyu1233@naver.com" Date: Tue, 26 Nov 2024 22:36:08 +0900 Subject: [PATCH] new --- src/main/java/pairmatching/Application.java | 12 +++ .../controller/CrewController.java | 70 +++++++++++++++++ .../pairmatching/crewModel/BackendCrew.java | 13 ++++ .../pairmatching/crewModel/FrontendCrew.java | 13 ++++ .../pairmatching/missionModel/Course.java | 19 +++++ .../missionModel/CrewsPerBackend.java | 30 ++++++++ .../missionModel/CrewsPerFrontend.java | 30 ++++++++ .../java/pairmatching/missionModel/Level.java | 21 ++++++ .../pairmatching/missionModel/Mission.java | 48 ++++++++++++ .../pairmatching/service/CrewService.java | 75 +++++++++++++++++++ .../pairmatching/service/MissionService.java | 56 ++++++++++++++ .../java/pairmatching/view/InputView.java | 40 ++++++++++ .../java/pairmatching/view/OutputView.java | 21 ++++++ 13 files changed, 448 insertions(+) create mode 100644 src/main/java/pairmatching/controller/CrewController.java create mode 100644 src/main/java/pairmatching/crewModel/BackendCrew.java create mode 100644 src/main/java/pairmatching/crewModel/FrontendCrew.java create mode 100644 src/main/java/pairmatching/missionModel/Course.java create mode 100644 src/main/java/pairmatching/missionModel/CrewsPerBackend.java create mode 100644 src/main/java/pairmatching/missionModel/CrewsPerFrontend.java create mode 100644 src/main/java/pairmatching/missionModel/Level.java create mode 100644 src/main/java/pairmatching/missionModel/Mission.java create mode 100644 src/main/java/pairmatching/service/CrewService.java create mode 100644 src/main/java/pairmatching/service/MissionService.java create mode 100644 src/main/java/pairmatching/view/InputView.java create mode 100644 src/main/java/pairmatching/view/OutputView.java diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index 6f56e741c..c62e37059 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -1,7 +1,19 @@ package pairmatching; +import pairmatching.controller.CrewController; +import pairmatching.service.CrewService; +import pairmatching.service.MissionService; +import pairmatching.view.InputView; +import pairmatching.view.OutputView; + public class Application { public static void main(String[] args) { // TODO 구현 진행 + CrewService crewService = new CrewService(); + MissionService missionService = new MissionService(); + InputView inputView = new InputView(); + OutputView outputView = new OutputView(); + CrewController crewController = new CrewController(crewService,missionService, inputView, outputView); + crewController.run(); } } diff --git a/src/main/java/pairmatching/controller/CrewController.java b/src/main/java/pairmatching/controller/CrewController.java new file mode 100644 index 000000000..7e516f67c --- /dev/null +++ b/src/main/java/pairmatching/controller/CrewController.java @@ -0,0 +1,70 @@ +package pairmatching.controller; + +import pairmatching.missionModel.Course; +import pairmatching.missionModel.Level; +import pairmatching.missionModel.Mission; +import pairmatching.service.CrewService; +import pairmatching.service.MissionService; +import pairmatching.view.InputView; +import pairmatching.view.OutputView; + +import java.util.List; + +public class CrewController { + private final CrewService crewService; + private final MissionService missionService; + private final InputView inputView; + private final OutputView outputView; + + public CrewController(CrewService crewService, MissionService missionService, InputView inputView, OutputView outputView) { + this.crewService = crewService; + this.missionService = missionService; + this.inputView = inputView; + this.outputView = outputView; + } + + public void run() { + String userChoose = printFunctionChoose(); + + List missions = saveMission(); + setMissions(missions); + String chooseMission = inputView.printMissions(); + String[] chooseMissions = chooseMission.split(","); + Mission userChooseMission = changeToMission(chooseMissions[0],chooseMissions[1],chooseMissions[2]); + if (userChoose.equals("1")) { + fairMatching(missions, userChooseMission); + } + } + + private Mission changeToMission(String chooseMission, String chooseMission1, String chooseMission2) { + Course course = Course.valueOf(chooseMission); + Level level = Level.valueOf(chooseMission1); + return new Mission(course, level, chooseMission2); + } + + private void setMissions(List missions) { + + } + + private void fairMatching(Mission userChooseMission) { + crewService.checkPair(userChooseMission); + } + + + + + public List saveMission() { + return missionService.saveMissions(); + } + + + public String printFunctionChoose() { + return inputView.printFunctionChoose(); + } + + + public void readCrewFile() { + List backendCrews = crewService.readBackendCrewFile(); + + } +} diff --git a/src/main/java/pairmatching/crewModel/BackendCrew.java b/src/main/java/pairmatching/crewModel/BackendCrew.java new file mode 100644 index 000000000..419ed1d26 --- /dev/null +++ b/src/main/java/pairmatching/crewModel/BackendCrew.java @@ -0,0 +1,13 @@ +package pairmatching.crewModel; + +public class BackendCrew { + private final String name; + + public BackendCrew(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/pairmatching/crewModel/FrontendCrew.java b/src/main/java/pairmatching/crewModel/FrontendCrew.java new file mode 100644 index 000000000..d4f4fefc6 --- /dev/null +++ b/src/main/java/pairmatching/crewModel/FrontendCrew.java @@ -0,0 +1,13 @@ +package pairmatching.crewModel; + +public class FrontendCrew { + private final String name; + + public FrontendCrew(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/pairmatching/missionModel/Course.java b/src/main/java/pairmatching/missionModel/Course.java new file mode 100644 index 000000000..8dc33f29a --- /dev/null +++ b/src/main/java/pairmatching/missionModel/Course.java @@ -0,0 +1,19 @@ +package pairmatching.missionModel; + +public enum Course { + BACKEND("백엔드"), + FRONTEND("프론트엔드"), + ; + + private String name; + + Course(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + + // 추가 기능 구현 +} diff --git a/src/main/java/pairmatching/missionModel/CrewsPerBackend.java b/src/main/java/pairmatching/missionModel/CrewsPerBackend.java new file mode 100644 index 000000000..2b59df435 --- /dev/null +++ b/src/main/java/pairmatching/missionModel/CrewsPerBackend.java @@ -0,0 +1,30 @@ +package pairmatching.missionModel; + +import pairmatching.crewModel.BackendCrew; +import pairmatching.crewModel.FrontendCrew; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class CrewsPerBackend { + private final Map> backendCrewsPerMission; + + public CrewsPerBackend(Map> backendCrewsPerMission) { + this.backendCrewsPerMission = backendCrewsPerMission; + } + + public CrewsPerBackend() { + this.backendCrewsPerMission = new HashMap<>(); + } + + public List getBackendCrewsPerMission(Mission mission) { + return backendCrewsPerMission.getOrDefault(mission, null); + } + + public void addBackendCrewsPerMission(Mission mission, List backendCrews) { + backendCrewsPerMission.put(mission, backendCrews); + } + +} diff --git a/src/main/java/pairmatching/missionModel/CrewsPerFrontend.java b/src/main/java/pairmatching/missionModel/CrewsPerFrontend.java new file mode 100644 index 000000000..3ae75cd6a --- /dev/null +++ b/src/main/java/pairmatching/missionModel/CrewsPerFrontend.java @@ -0,0 +1,30 @@ +package pairmatching.missionModel; + +import pairmatching.crewModel.FrontendCrew; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class CrewsPerFrontend { + private final Map> frontendCrewsPerMission; + + public CrewsPerFrontend(Map> frontendCrewsPerMission) { + this.frontendCrewsPerMission = frontendCrewsPerMission; + } + + public CrewsPerFrontend() { + this.frontendCrewsPerMission = new HashMap<>(); + } + + public Map> getFrontendCrewsPerMission() { + return frontendCrewsPerMission; + } + + public void addFrontendCrewsPerMission(Mission mission, List frontendCrew) { + frontendCrewsPerMission.put(mission, frontendCrew); + } + + + +} diff --git a/src/main/java/pairmatching/missionModel/Level.java b/src/main/java/pairmatching/missionModel/Level.java new file mode 100644 index 000000000..0d98bde48 --- /dev/null +++ b/src/main/java/pairmatching/missionModel/Level.java @@ -0,0 +1,21 @@ +package pairmatching.missionModel; + +public enum Level { + LEVEL1("레벨1"), + LEVEL2("레벨2"), + LEVEL3("레벨3"), + LEVEL4("레벨4"), + LEVEL5("레벨5"); + + private String name; + + Level(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + + // 추가 기능 구현 +} diff --git a/src/main/java/pairmatching/missionModel/Mission.java b/src/main/java/pairmatching/missionModel/Mission.java new file mode 100644 index 000000000..91462afdf --- /dev/null +++ b/src/main/java/pairmatching/missionModel/Mission.java @@ -0,0 +1,48 @@ +package pairmatching.missionModel; + + + +import java.util.ArrayList; +import java.util.List; + +public class Mission { + private Course course; + private Level level; + private List tasks; + + public Mission(Course course, Level level) { + this.course = course; + this.level = level; + this.tasks = new ArrayList<>(); + } + + public Mission(Course course, Level level, String task) { + this.course = course; + this.level = level; + this.tasks = new ArrayList<>(); + this.tasks.add(task); + } + + public void addTask(String task) { + tasks.add(task); + } + + public Course getCourse() { + return course; + } + + public Level getLevel() { + return level; + } + + public List getTasks() { + return tasks; + } + + @Override + public String toString() { + return "Course: " + course.getName() + ", Level: " + level.getName() + ", Tasks: " + tasks; + } + +} + diff --git a/src/main/java/pairmatching/service/CrewService.java b/src/main/java/pairmatching/service/CrewService.java new file mode 100644 index 000000000..f32dd9658 --- /dev/null +++ b/src/main/java/pairmatching/service/CrewService.java @@ -0,0 +1,75 @@ +package pairmatching.service; + +import pairmatching.crewModel.BackendCrew; +import pairmatching.crewModel.FrontendCrew; +import pairmatching.missionModel.CrewsPerBackend; + +import pairmatching.missionModel.CrewsPerFrontend; +import pairmatching.missionModel.Mission; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; + +public class CrewService { + List frontendCrews; + List backendCrews; + + public List readFrontendCrewFile() { + String frontendFilePath = "src/main/resources/frontend-crew.md"; + List frontendCrewsNames = null; + try { + frontendCrewsNames = Files.readAllLines(Paths.get(frontendFilePath)); + } catch (Exception e) { + e.printStackTrace(); + } + return frontendCrewsNames; + } + + public List readBackendCrewFile() { + String backendFilePath = "src/main/resources/backend-crew.md"; + List backendCrewNames = null; + try { + backendCrewNames = Files.readAllLines(Paths.get(backendFilePath)); + } catch (Exception e) { + e.printStackTrace(); + } + return backendCrewNames; + } + + public List saveFrontendCrews(List frontendCrewNames) { + try { + for (String crewName : frontendCrewNames) { + frontendCrews.add(new FrontendCrew(crewName)); + } + } catch (Exception e) { + e.printStackTrace(); + } + return frontendCrews; + } + + public List saveBackendCrews(List backendCrewNames) { + try { + for (String crewName : backendCrewNames) { + backendCrews.add(new BackendCrew(crewName)); + } + } catch (Exception e) { + e.printStackTrace(); + } + return backendCrews; + } + + public List matchBackendCrew(Mission userMission) { + if (userMission.getCourse().equals("백엔드")) { + CrewsPerBackend crewsPerBackend = new CrewsPerBackend(); + List matchCrews = crewsPerBackend.getBackendCrewsPerMission(userMission); + if (matchCrews != null) { + return matchCrews; + } + } + return null; + } + + public void checkPair(Mission userChooseMission) { + } +} diff --git a/src/main/java/pairmatching/service/MissionService.java b/src/main/java/pairmatching/service/MissionService.java new file mode 100644 index 000000000..51591a728 --- /dev/null +++ b/src/main/java/pairmatching/service/MissionService.java @@ -0,0 +1,56 @@ +package pairmatching.service; + +import pairmatching.missionModel.Course; +import pairmatching.missionModel.Level; +import pairmatching.missionModel.Mission; + +import java.util.ArrayList; +import java.util.List; + +public class MissionService { + + public List saveMissions() { + List missions = new ArrayList<>(); + missions.add(addMission(Course.FRONTEND, Level.LEVEL1, new String[]{"자동차경주", "로또","숫자야구게임"})); + missions.add(addMission(Course.BACKEND, Level.LEVEL1, new String[]{"자동차경주", "로또", "숫자야구게임"})); + missions.add(addMission(Course.FRONTEND, Level.LEVEL2, new String[]{"장바구니", "결제", "지하철노선도"})); + missions.add(addMission(Course.BACKEND, Level.LEVEL2, new String[]{"장바구니", "결제", "지하철노선도"})); + missions.add(addMission(Course.FRONTEND, Level.LEVEL4, new String[]{"성능개선", "배포"})); + missions.add(addMission(Course.BACKEND, Level.LEVEL4, new String[]{"성능개선", "배포"})); + return missions; + } + + public Mission addMission(Course course, Level level, String[] tasks) { + Mission mission = new Mission(course, level); + for (String task : tasks) { + mission.addTask(task); + } + return mission; + } + + public Mission makeMission(String course, String level, String mission) { + Course course1 = Course.valueOf(course); + Level level1 = Level.valueOf(level); + if (course.equals("백엔드")) { + course1 = Course.BACKEND; + } + course1 = Course.FRONTEND; + + if (level.equals("레벨1")) { + level1 = Level.LEVEL1; + } + if (level.equals("레벨2")) { + level1 = Level.LEVEL2; + } + if (level.equals("레벨3")) { + level1 = Level.LEVEL3; + } + if (level.equals("레벨4")) { + level1 = Level.LEVEL4; + } + if (level.equals("레벨5")) { + level1 = Level.LEVEL5; + } + return new Mission(course1, level1, mission); + } +} diff --git a/src/main/java/pairmatching/view/InputView.java b/src/main/java/pairmatching/view/InputView.java new file mode 100644 index 000000000..76bcca542 --- /dev/null +++ b/src/main/java/pairmatching/view/InputView.java @@ -0,0 +1,40 @@ +package pairmatching.view; + +import camp.nextstep.edu.missionutils.Console; +import pairmatching.missionModel.Mission; + +import java.util.List; + +public class InputView { + public String printFunctionChoose() { + /*기능을 선택하세요. +1. 페어 매칭 +2. 페어 조회 +3. 페어 초기화 +Q. 종료 +1*/ + + System.out.println("기능을 선택하세요."); + System.out.println("1. 페어 매칭"); + System.out.println("2. 페어 조회"); + System.out.println("3. 페어 초기화"); + System.out.println("Q. 종료"); + String choose = Console.readLine(); + return choose; + } + + public String printMissions() { + System.out.println("#############################################"); + System.out.println("과정 "); + System.out.println("미션:\n" + + " - 레벨1: 자동차경주 | 로또 | 숫자야구게임\n" + + " - 레벨2: 장바구니 | 결제 | 지하철노선도\n" + + " - 레벨3: \n" + + " - 레벨4: 성능개선 | 배포\n" + + " - 레벨5: \n"); + System.out.println("#############################################"); + System.out.println("과정, 레벨, 미션을 선택하세요.\n" + + "ex) 백엔드, 레벨1, 자동차경주\n"); + return Console.readLine(); + } +} diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java new file mode 100644 index 000000000..cde39fd5f --- /dev/null +++ b/src/main/java/pairmatching/view/OutputView.java @@ -0,0 +1,21 @@ +package pairmatching.view; + +import java.util.List; + +public class OutputView { + + public void printFrontendCrew(List frontendCrews) { + System.out.println("프론트엔드 크루 목록"); + for (String frontendCrew : frontendCrews) { + System.out.println(frontendCrew); + } + + } + + public void printBackendCrew(List backendCrews) { + System.out.println("백엔드 크루 목록"); + for (String backendCrew : backendCrews) { + System.out.println(backendCrew); + } + } +}