From af0ad07acf54e0eb5bfcff1b1612c2fbe15ba7d1 Mon Sep 17 00:00:00 2001 From: elena Date: Tue, 24 Feb 2026 22:04:25 +0000 Subject: [PATCH 01/15] Local changes before syncing with upstream --- course-info.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/course-info.yaml b/course-info.yaml index 38962d8..506c6f2 100644 --- a/course-info.yaml +++ b/course-info.yaml @@ -23,4 +23,4 @@ additional_files: - name: .git/FETCH_HEAD - name: docs/HOW_TO_SUBMIT.md - name: docs/PROJECT_IDEAS.md -yaml_version: 3 +yaml_version: 5 From 033693336a13b0b35006edb733c478373febcae1 Mon Sep 17 00:00:00 2001 From: elena Date: Wed, 25 Feb 2026 18:08:20 +0000 Subject: [PATCH 02/15] fix: main class --- src/main/java/com/wcc/bootcamp/java/{Task.java => Main.java} | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename src/main/java/com/wcc/bootcamp/java/{Task.java => Main.java} (62%) 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); } } From 0f418a68618c5a83ee51914f0221ea730d2ecee5 Mon Sep 17 00:00:00 2001 From: elena Date: Wed, 25 Feb 2026 19:36:16 +0000 Subject: [PATCH 03/15] feat:declare Member class, create constructor, add getters. --- course-info.yaml | 1 + .../java/com/wcc/platform/model/Member.java | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 participants/olena/project-1/src/main/java/com/wcc/platform/model/Member.java diff --git a/course-info.yaml b/course-info.yaml index 40e1a40..e7afefc 100644 --- a/course-info.yaml +++ b/course-info.yaml @@ -24,4 +24,5 @@ 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 yaml_version: 5 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..5ce5673 --- /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, lacation); + } +} + + + + From 15318bf0bbfe1ee07b8edd7b22fc315146c81f14 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 07:55:25 +0000 Subject: [PATCH 04/15] add member storage --- course-info.yaml | 1 + .../wcc/platform/model/MemberRepository.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 participants/olena/project-1/src/main/java/com/wcc/platform/model/MemberRepository.java diff --git a/course-info.yaml b/course-info.yaml index e7afefc..5cd3a40 100644 --- a/course-info.yaml +++ b/course-info.yaml @@ -25,4 +25,5 @@ additional_files: - 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 yaml_version: 5 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..a429067 --- /dev/null +++ b/participants/olena/project-1/src/main/java/com/wcc/platform/model/MemberRepository.java @@ -0,0 +1,18 @@ +package com.wcc.platform.member; + +import java.util.ArrayList; +import java.util.List; +//repository is responsible for saving, retrieving data +public class MemberRepository { + + //create object + private final List members = new ArrayList<>(); + + public void add(Member member) { + members.add(member); + } + + public List findAll() { + return members; + } +} \ No newline at end of file From 1f8f6b299c09995eef9918e3ac4b4cb024993a7a Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 09:06:05 +0000 Subject: [PATCH 05/15] fix: package imports --- .../src/main/java/com/wcc/platform/Main.java | 31 ++++++++++++++++++- .../java/com/wcc/platform/model/Member.java | 2 +- .../wcc/platform/model/MemberRepository.java | 2 +- 3 files changed, 32 insertions(+), 3 deletions(-) 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..080ff50 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,38 @@ package com.wcc.platform; +import com.wcc.platform.model.Member; +import com.wcc.platform.model.MemberRepository; + +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 MemberRepository(); + + public static void main(String[] args) { - System.out.println("WCC Member Directory started..."); + + + System.out.println("Enter name: "); + String name = scanner.nextLine(); + + System.out.println("Enter email: "); + String email = scanner.nextLine(); + + Member member = new Member( + name, + email, + "Unknown", + List.of(), + LocalDate.now() + ); + repository.add(member); + System.out.println("Member added."); } } 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 index 5ce5673..cfb7625 100644 --- 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 @@ -47,7 +47,7 @@ public LocalDate getJoinDate() { @Override public String toString() { - return String.format("%s | %s | %s", name, email, lacation); + 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 index a429067..ca09a9e 100644 --- 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 @@ -1,4 +1,4 @@ -package com.wcc.platform.member; +package com.wcc.platform.model; import java.util.ArrayList; import java.util.List; From 95a1d09edc49a054e70ee0696a18d4c4a3211872 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 09:09:01 +0000 Subject: [PATCH 06/15] add user via CLI --- .../olena/project-1/src/main/java/com/wcc/platform/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 080ff50..8728f19 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 @@ -10,7 +10,7 @@ public class Main { - +//CLI add User private static final Scanner scanner = new Scanner(System.in); private static final MemberRepository repository = new MemberRepository(); From 1eacf540751e1f1d6d3d3cfaa3ad2ac2c8f25acf Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 09:23:00 +0000 Subject: [PATCH 07/15] add view members method --- .../olena/project-1/src/main/java/com/wcc/platform/Main.java | 4 ++++ 1 file changed, 4 insertions(+) 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 8728f19..6fc0a48 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 @@ -33,6 +33,10 @@ public static void main(String[] args) { ); repository.add(member); System.out.println("Member added."); + viewMembers(); + } + public static void viewMembers() { + repository.findAll().forEach(member -> System.out.println(member)); } } From 11020bbce39745c1981f88cbf7f1ec101527ecd6 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 09:26:30 +0000 Subject: [PATCH 08/15] refactor lambda --- .../olena/project-1/src/main/java/com/wcc/platform/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6fc0a48..3cb98e6 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 @@ -36,7 +36,7 @@ public static void main(String[] args) { viewMembers(); } public static void viewMembers() { - repository.findAll().forEach(member -> System.out.println(member)); + repository.findAll().forEach(System.out::println); } } From 4a4e56d24456bc038abf74255c1fb2121f5ccba1 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 09:47:55 +0000 Subject: [PATCH 09/15] add location input --- .../olena/project-1/src/main/java/com/wcc/platform/Main.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 3cb98e6..ead715d 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 @@ -24,10 +24,13 @@ public static void main(String[] args) { System.out.println("Enter email: "); String email = scanner.nextLine(); + System.out.println("Enter location: "); + String location = scanner.nextLine(); + Member member = new Member( name, email, - "Unknown", + location, List.of(), LocalDate.now() ); From 5638d18d3622c53a9a6b9d8043112fb9e38352e7 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 11:24:22 +0000 Subject: [PATCH 10/15] add: save members to CSV file --- participants/olena/project-1/members.csv | 9 ++++++++ .../src/main/java/com/wcc/platform/Main.java | 6 +++-- .../wcc/platform/model/MemberRepository.java | 22 ++++++++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 participants/olena/project-1/members.csv diff --git a/participants/olena/project-1/members.csv b/participants/olena/project-1/members.csv new file mode 100644 index 0000000..e206e44 --- /dev/null +++ b/participants/olena/project-1/members.csv @@ -0,0 +1,9 @@ +name,email,location,joinDate +In, kl, Dubai, 2026-02-26 +name,email,location,joinDate +Iv, h, London, 2026-02-26 +name,email,location,joinDate +д,д,д,2026-02-26 +name,email,location,joinDate +j,j\,j,2026-02-26 +name,email,location,joinDate%nz,z,z,2026-02-26 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 ead715d..8879568 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 @@ -4,18 +4,19 @@ import com.wcc.platform.model.Member; import com.wcc.platform.model.MemberRepository; +import java.io.IOException; import java.time.LocalDate; import java.util.List; import java.util.Scanner; -public class Main { +public class Main { //CLI add User private static final Scanner scanner = new Scanner(System.in); private static final MemberRepository repository = new MemberRepository(); - public static void main(String[] args) { + public static void main(String[] args) throws IOException { System.out.println("Enter name: "); @@ -35,6 +36,7 @@ public static void main(String[] args) { LocalDate.now() ); repository.add(member); + repository.saveToCsv("members.csv"); System.out.println("Member added."); viewMembers(); } 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 index ca09a9e..1c463b7 100644 --- 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 @@ -1,7 +1,10 @@ package com.wcc.platform.model; +import java.io.FileWriter; import java.util.ArrayList; import java.util.List; +import java.io.IOException; + //repository is responsible for saving, retrieving data public class MemberRepository { @@ -15,4 +18,21 @@ public void add(Member member) { public List findAll() { return members; } -} \ No newline at end of file + + public void saveToCsv(String filePath) throws IOException { + FileWriter writer = new FileWriter(filePath, true); + + writer.write("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(); + } +} + From 04f041a48254bdf56d60cc78cb8c2a16162d22e0 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 11:42:56 +0000 Subject: [PATCH 11/15] add CSV header if file is empty --- participants/olena/project-1/members.csv | 10 ++-------- .../com/wcc/platform/model/MemberRepository.java | 12 ++++++++++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/participants/olena/project-1/members.csv b/participants/olena/project-1/members.csv index e206e44..3632a4e 100644 --- a/participants/olena/project-1/members.csv +++ b/participants/olena/project-1/members.csv @@ -1,9 +1,3 @@ name,email,location,joinDate -In, kl, Dubai, 2026-02-26 -name,email,location,joinDate -Iv, h, London, 2026-02-26 -name,email,location,joinDate -д,д,д,2026-02-26 -name,email,location,joinDate -j,j\,j,2026-02-26 -name,email,location,joinDate%nz,z,z,2026-02-26 +Alex,alex@yahoo.com,London,2026-02-26 +Nat,nat@gmail.com,Paris,2026-02-26 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 index 1c463b7..a7af346 100644 --- 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 @@ -1,5 +1,6 @@ package com.wcc.platform.model; +import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import java.util.List; @@ -20,9 +21,16 @@ public List findAll() { } public void saveToCsv(String filePath) throws IOException { - FileWriter writer = new FileWriter(filePath, true); - writer.write("name,email,location,joinDate%n"); + File file = new File(filePath); + boolean fileExists = file.exists(); + boolean fileEmpty = !fileExists || file.length() == 0; + + FileWriter writer = new FileWriter(file, true); + + if(fileEmpty) { + writer.write(String.format("name,email,location,joinDate%n")); + } for (Member member : members) { writer.write(String.format("%s,%s,%s,%s%n", From cfe640b2a2f5ccf0be959f517ae76eda96df8891 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 12:44:30 +0000 Subject: [PATCH 12/15] add load members from Csv file --- participants/olena/project-1/members.csv | 9 +++++ .../src/main/java/com/wcc/platform/Main.java | 1 + .../java/com/wcc/platform/model/Member.java | 2 +- .../wcc/platform/model/MemberRepository.java | 36 +++++++++++++++++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/participants/olena/project-1/members.csv b/participants/olena/project-1/members.csv index 3632a4e..c07c5c8 100644 --- a/participants/olena/project-1/members.csv +++ b/participants/olena/project-1/members.csv @@ -1,3 +1,12 @@ name,email,location,joinDate Alex,alex@yahoo.com,London,2026-02-26 Nat,nat@gmail.com,Paris,2026-02-26 +Alex,alex@yahoo.com,London,2026-02-26 +Nat,nat@gmail.com,Paris,2026-02-26 +John,jo@yahoo.com,Spain,2026-02-26 +Alex,alex@yahoo.com,London,2026-02-26 +Nat,nat@gmail.com,Paris,2026-02-26 +Alex,alex@yahoo.com,London,2026-02-26 +Nat,nat@gmail.com,Paris,2026-02-26 +John,jo@yahoo.com,Spain,2026-02-26 +Noa,noa@gmail.com,Berlin,2026-02-26 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 8879568..7d966ee 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 @@ -17,6 +17,7 @@ public class Main { public static void main(String[] args) throws IOException { + repository.loadFromCsv("members.csv"); System.out.println("Enter name: "); 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 index cfb7625..62ae63c 100644 --- 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 @@ -47,7 +47,7 @@ public LocalDate getJoinDate() { @Override public String toString() { - return String.format("%s | %s | %s", name, email, location); + 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 index a7af346..30a76a4 100644 --- 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 @@ -1,10 +1,9 @@ package com.wcc.platform.model; -import java.io.File; -import java.io.FileWriter; +import java.io.*; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; -import java.io.IOException; //repository is responsible for saving, retrieving data public class MemberRepository { @@ -42,5 +41,36 @@ public void saveToCsv(String filePath) throws IOException { } 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(); + } } From ee3519acf80c6456559cafb41a7f436107a1c949 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 12:55:51 +0000 Subject: [PATCH 13/15] refactor Rewrite CSV file on save instead of appending. Prevent duplicate entries and insure CSV file has a current state. --- participants/olena/project-1/members.csv | 14 ++------------ .../com/wcc/platform/model/MemberRepository.java | 2 +- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/participants/olena/project-1/members.csv b/participants/olena/project-1/members.csv index c07c5c8..c73dd35 100644 --- a/participants/olena/project-1/members.csv +++ b/participants/olena/project-1/members.csv @@ -1,12 +1,2 @@ -name,email,location,joinDate -Alex,alex@yahoo.com,London,2026-02-26 -Nat,nat@gmail.com,Paris,2026-02-26 -Alex,alex@yahoo.com,London,2026-02-26 -Nat,nat@gmail.com,Paris,2026-02-26 -John,jo@yahoo.com,Spain,2026-02-26 -Alex,alex@yahoo.com,London,2026-02-26 -Nat,nat@gmail.com,Paris,2026-02-26 -Alex,alex@yahoo.com,London,2026-02-26 -Nat,nat@gmail.com,Paris,2026-02-26 -John,jo@yahoo.com,Spain,2026-02-26 -Noa,noa@gmail.com,Berlin,2026-02-26 +Ned,ned@gmail.com,Bristol,2026-02-26 +Alex,alex@gmail.com,London,2026-02-26 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 index 30a76a4..5cff58d 100644 --- 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 @@ -25,7 +25,7 @@ public void saveToCsv(String filePath) throws IOException { boolean fileExists = file.exists(); boolean fileEmpty = !fileExists || file.length() == 0; - FileWriter writer = new FileWriter(file, true); + FileWriter writer = new FileWriter(file); if(fileEmpty) { writer.write(String.format("name,email,location,joinDate%n")); From 564e7c9be4a9ca0c7de09bbedd68c1baccffb298 Mon Sep 17 00:00:00 2001 From: elena Date: Thu, 26 Feb 2026 13:15:57 +0000 Subject: [PATCH 14/15] fix incorrect main class package reference --- course-info.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/course-info.yaml b/course-info.yaml index 5cd3a40..cdb26fc 100644 --- a/course-info.yaml +++ b/course-info.yaml @@ -26,4 +26,5 @@ additional_files: - 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 yaml_version: 5 From 0434aca493d695abcad39440f7119a1f77f280a7 Mon Sep 17 00:00:00 2001 From: elena Date: Fri, 27 Feb 2026 13:23:53 +0000 Subject: [PATCH 15/15] Add CsvMemberRepository with CSV persistence logic and convert MemberRepository into an interface. Main now depends on the abstraction (interface) instead of the concrete implementation. --- course-info.yaml | 1 + participants/olena/project-1/build.gradle | 3 + participants/olena/project-1/members.csv | 4 +- .../src/main/java/com/wcc/platform/Main.java | 4 +- .../platform/model/CsvMemberRepository.java | 75 +++++++++++++++++++ .../wcc/platform/model/MemberRepository.java | 75 ++----------------- 6 files changed, 90 insertions(+), 72 deletions(-) create mode 100644 participants/olena/project-1/src/main/java/com/wcc/platform/model/CsvMemberRepository.java diff --git a/course-info.yaml b/course-info.yaml index cdb26fc..d5df9f5 100644 --- a/course-info.yaml +++ b/course-info.yaml @@ -27,4 +27,5 @@ additional_files: - 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 index c73dd35..f3a2a60 100644 --- a/participants/olena/project-1/members.csv +++ b/participants/olena/project-1/members.csv @@ -1,2 +1,2 @@ -Ned,ned@gmail.com,Bristol,2026-02-26 -Alex,alex@gmail.com,London,2026-02-26 +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 7d966ee..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 @@ -3,6 +3,7 @@ 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; @@ -11,9 +12,8 @@ public class Main { -//CLI add User private static final Scanner scanner = new Scanner(System.in); - private static final MemberRepository repository = new MemberRepository(); + private static final MemberRepository repository = new CsvMemberRepository(); public static void main(String[] args) throws IOException { 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/MemberRepository.java b/participants/olena/project-1/src/main/java/com/wcc/platform/model/MemberRepository.java index 5cff58d..423929c 100644 --- 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 @@ -1,76 +1,15 @@ package com.wcc.platform.model; -import java.io.*; -import java.time.LocalDate; -import java.util.ArrayList; +import java.io.IOException; import java.util.List; -//repository is responsible for saving, retrieving data -public class MemberRepository { +public interface MemberRepository { - //create object - private final List members = new ArrayList<>(); + void add(Member member); - public void add(Member member) { - members.add(member); - } + List findAll(); - 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(); - } -} + void saveToCsv(String filePath) throws IOException; + void loadFromCsv(String filePath) throws IOException; +} \ No newline at end of file