diff --git a/src/main/java/com/example/gimmegonghakauth/InitFileData.java b/src/main/java/com/example/gimmegonghakauth/InitFileData.java index a79fc00..424c3c9 100644 --- a/src/main/java/com/example/gimmegonghakauth/InitFileData.java +++ b/src/main/java/com/example/gimmegonghakauth/InitFileData.java @@ -9,6 +9,7 @@ import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.annotation.Profile; @@ -46,14 +47,11 @@ private void inputCoursesCsv(String csvFilePath) throws IOException { String cvsSplitBy = ","; try (BufferedReader br = new BufferedReader(new FileReader(csvFilePath))) { - // Skip the header line while ((line = br.readLine()) != null) { String[] data = line.split(cvsSplitBy); - // Create and map GonghakCoursesDomain object try { CoursesDomain course = mapToCoursesDomain(data); - // Save to repository coursesDao.save(course); } catch (Exception e) { continue; @@ -77,16 +75,15 @@ private void inputGonghakCoursesCsv(String csvFilePath) { String cvsSplitBy = ","; try (BufferedReader br = new BufferedReader(new FileReader(csvFilePath))) { - // Skip the header line br.readLine(); while ((line = br.readLine()) != null) { String[] data = line.split(cvsSplitBy); - // Create and map GonghakCoursesDomain object try { - GonghakCoursesDomain course = mapToGonghakCoursesDomain(data); - // Save to repository - gonghakCorusesDao.save(course); + Optional course = mapToGonghakCoursesDomain(data); + if (course.isPresent()) { + gonghakCorusesDao.save(course.get()); + } } catch (Exception e) { continue; } @@ -96,16 +93,39 @@ private void inputGonghakCoursesCsv(String csvFilePath) { } } - private GonghakCoursesDomain mapToGonghakCoursesDomain(String[] data) { - // Assuming data format is consistent and matches the domain structure - // Adjust indices according to your CSV file's column order - return GonghakCoursesDomain.builder() + private Optional mapToGonghakCoursesDomain(String[] data) { + + CoursesDomain courseDomain = coursesDao.findByName(data[6].replaceAll("\\s+", "")); + if (courseDomain == null) { + return Optional.empty(); + } + + // course_category_const + String courseCategory = data[4]; + + switch (courseCategory) { + case "중핵필수", "교양필수", "교양선택", "교양선택I", "교양": + courseCategory = "전문교양"; + break; + case "전공기초교양", "학문기초교양": + courseCategory = "BSM"; + break; + case "전공필수", "전공선택", "전공(설계)", "전공주제", "전공기초": + courseCategory = "전공"; + break; + default: + break; + } + + GonghakCoursesDomain gonghakCourse = GonghakCoursesDomain.builder() .year(Integer.parseInt(data[0])) .majorsDomain(majorsDao.findByMajor(data[2])) - .coursesDomain(coursesDao.findByName(data[6])) - .courseCategory(CourseCategoryConst.valueOf(data[4])) - .passCategory(data[5]) + .coursesDomain(courseDomain) + .courseCategory(CourseCategoryConst.valueOf(courseCategory)) + .passCategory(data[5].substring(0, 2)) .designCredit(Double.parseDouble(data[8])) .build(); + + return Optional.of(gonghakCourse); } } diff --git a/src/main/java/com/example/gimmegonghakauth/service/recommend/MajorName.java b/src/main/java/com/example/gimmegonghakauth/service/recommend/MajorName.java index e54662f..58a9ccb 100644 --- a/src/main/java/com/example/gimmegonghakauth/service/recommend/MajorName.java +++ b/src/main/java/com/example/gimmegonghakauth/service/recommend/MajorName.java @@ -2,7 +2,9 @@ public enum MajorName { ELEC_INFO("전자정보통신공학과"), - COMPUTER("컴퓨터공학과"); + COMPUTER("컴퓨터공학과"), + SOFTWARE("소프트웨어학과"), + DATA_SCIENCE("데이터사이언스학과"); private final String name; MajorName(String name) {