diff --git a/course-info.yaml b/course-info.yaml index 40e1a40..d5df9f5 100644 --- a/course-info.yaml +++ b/course-info.yaml @@ -24,4 +24,8 @@ additional_files: - name: docs/HOW_TO_SUBMIT.md - name: docs/PROJECT_IDEAS.md - name: docs/guides/numeric-literals-simplified.md + - name: participants/olena/project-1/src/main/java/com/wcc/platform/model/Member.java + - name: participants/olena/project-1/src/main/java/com/wcc/platform/model/MemberRepository.java + - name: src/main/java/com/wcc/bootcamp/java/Main.java + - name: participants/olena/project-1/src/main/java/com/wcc/platform/model/CsvMemberRepository.java yaml_version: 5 diff --git a/participants/olena/project-1/build.gradle b/participants/olena/project-1/build.gradle index 6948bdd..0da765f 100644 --- a/participants/olena/project-1/build.gradle +++ b/participants/olena/project-1/build.gradle @@ -12,4 +12,7 @@ repositories { application { mainClass = 'com.wcc.platform.Main' } +tasks.named('run') { + standardInput = System.in +} diff --git a/participants/olena/project-1/members.csv b/participants/olena/project-1/members.csv new file mode 100644 index 0000000..f3a2a60 --- /dev/null +++ b/participants/olena/project-1/members.csv @@ -0,0 +1,2 @@ +name,email,location,joinDate +Ned,ned@gmail.com,London,2026-02-27 diff --git a/participants/olena/project-1/src/main/java/com/wcc/platform/Main.java b/participants/olena/project-1/src/main/java/com/wcc/platform/Main.java index e9f54e3..acb27ea 100644 --- a/participants/olena/project-1/src/main/java/com/wcc/platform/Main.java +++ b/participants/olena/project-1/src/main/java/com/wcc/platform/Main.java @@ -1,9 +1,48 @@ package com.wcc.platform; -public class Main { - public static void main(String[] args) { - System.out.println("WCC Member Directory started..."); +import com.wcc.platform.model.Member; +import com.wcc.platform.model.MemberRepository; +import com.wcc.platform.model.CsvMemberRepository; + +import java.io.IOException; +import java.time.LocalDate; +import java.util.List; +import java.util.Scanner; + + +public class Main { + private static final Scanner scanner = new Scanner(System.in); + private static final MemberRepository repository = new CsvMemberRepository(); + + + public static void main(String[] args) throws IOException { + repository.loadFromCsv("members.csv"); + + + System.out.println("Enter name: "); + String name = scanner.nextLine(); + + System.out.println("Enter email: "); + String email = scanner.nextLine(); + + System.out.println("Enter location: "); + String location = scanner.nextLine(); + + Member member = new Member( + name, + email, + location, + List.of(), + LocalDate.now() + ); + repository.add(member); + repository.saveToCsv("members.csv"); + System.out.println("Member added."); + viewMembers(); + } + public static void viewMembers() { + repository.findAll().forEach(System.out::println); } } diff --git a/participants/olena/project-1/src/main/java/com/wcc/platform/model/CsvMemberRepository.java b/participants/olena/project-1/src/main/java/com/wcc/platform/model/CsvMemberRepository.java new file mode 100644 index 0000000..c5a4dee --- /dev/null +++ b/participants/olena/project-1/src/main/java/com/wcc/platform/model/CsvMemberRepository.java @@ -0,0 +1,75 @@ +package com.wcc.platform.model; + +import java.io.*; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + + +public class CsvMemberRepository implements MemberRepository { + + private final List members = new ArrayList<>(); + + public void add(Member member) { + members.add(member); + } + + public List findAll() { + return members; + } + + public void saveToCsv(String filePath) throws IOException { + + File file = new File(filePath); + boolean fileExists = file.exists(); + boolean fileEmpty = !fileExists || file.length() == 0; + + FileWriter writer = new FileWriter(file); + + if(fileEmpty) { + writer.write(String.format("name,email,location,joinDate%n")); + } + + for (Member member : members) { + writer.write(String.format("%s,%s,%s,%s%n", + member.getName(), + member.getEmail(), + member.getLocation(), + member.getJoinDate() + )); + } + writer.close(); + } + + public void loadFromCsv(String filePath) throws IOException { + File file = new File(filePath); + if(!file.exists()){ + return; + } + + BufferedReader reader = new BufferedReader(new FileReader(filePath)); + + String line; + + reader.readLine(); + + while ((line = reader.readLine()) != null) { + String[] parts = line.split(","); + String name = parts[0].trim(); + String email = parts[1].trim(); + String location = parts[2].trim(); + LocalDate joinDate = LocalDate.parse(parts[3].trim()); + + Member member = new Member( + name, + email, + location, + List.of(), + joinDate + ); + members.add(member); + } + reader.close(); + } +} + diff --git a/participants/olena/project-1/src/main/java/com/wcc/platform/model/Member.java b/participants/olena/project-1/src/main/java/com/wcc/platform/model/Member.java new file mode 100644 index 0000000..62ae63c --- /dev/null +++ b/participants/olena/project-1/src/main/java/com/wcc/platform/model/Member.java @@ -0,0 +1,56 @@ +package com.wcc.platform.model; + +import java.time.LocalDate; +import java.util.List; + +public class Member { + private final String name; + private final String email; + private final String location; + private final List skills; + private final LocalDate joinDate; + + + public Member( + String name, + String email, + String location, + List skills, + LocalDate joinDate + ) { + this.name = name; + this.email = email; + this.location = location; + this.skills = skills; + this.joinDate = joinDate; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public String getLocation() { + return location; + } + + public List getSkills() { + return skills; + } + + public LocalDate getJoinDate() { + return joinDate; + } + + @Override + public String toString() { + return String.format("%s %s %s", name, email, location); + } +} + + + + diff --git a/participants/olena/project-1/src/main/java/com/wcc/platform/model/MemberRepository.java b/participants/olena/project-1/src/main/java/com/wcc/platform/model/MemberRepository.java new file mode 100644 index 0000000..423929c --- /dev/null +++ b/participants/olena/project-1/src/main/java/com/wcc/platform/model/MemberRepository.java @@ -0,0 +1,15 @@ +package com.wcc.platform.model; + +import java.io.IOException; +import java.util.List; + +public interface MemberRepository { + + void add(Member member); + + List findAll(); + + void saveToCsv(String filePath) throws IOException; + + void loadFromCsv(String filePath) throws IOException; +} \ No newline at end of file diff --git a/src/main/java/com/wcc/bootcamp/java/Task.java b/src/main/java/com/wcc/bootcamp/java/Main.java similarity index 62% rename from src/main/java/com/wcc/bootcamp/java/Task.java rename to src/main/java/com/wcc/bootcamp/java/Main.java index a065737..69783ab 100644 --- a/src/main/java/com/wcc/bootcamp/java/Task.java +++ b/src/main/java/com/wcc/bootcamp/java/Main.java @@ -1,7 +1,9 @@ +package com.wcc.bootcamp.java; + public class Main { public static void main(String[] args) { String greetings = "Hello World"; - System.out.println(greeting); + System.out.println(greetings); } }