From 8fa66b10d2ff0553a88b881b3e90b81128d7fae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D1=80=D1=88=D0=BE=D0=B2=20=D0=92=D0=BB=D0=B0=D0=B4?= =?UTF-8?q?=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Mon, 24 Aug 2026 22:54:19 +0700 Subject: [PATCH] feat: add StringParser and reworking project structure --- app/src/main/java/ru/project/DataSource.java | 3 -- .../main/java/ru/project/FileDataSource.java | 16 --------- app/src/main/java/ru/project/Main.java | 15 -------- .../java/ru/project/ManualDataSource.java | 16 --------- app/src/main/java/ru/project/MyList.java | 2 -- app/src/main/java/ru/project/Student.java | 11 ------ .../main/java/ru/project/StudentBuilder.java | 23 ------------ .../ru/project/datasource/DataSource.java | 9 +++++ .../ru/project/datasource/FileDataSource.java | 36 ++++++++++--------- .../project/datasource/ManualDataSource.java | 29 +++++++++++++++ .../{ => datasource}/RandomDataSource.java | 5 +++ .../ru/project/datasource/StringParser.java | 20 +++++++++++ 12 files changed, 82 insertions(+), 103 deletions(-) delete mode 100644 app/src/main/java/ru/project/DataSource.java delete mode 100644 app/src/main/java/ru/project/FileDataSource.java delete mode 100644 app/src/main/java/ru/project/Main.java delete mode 100644 app/src/main/java/ru/project/ManualDataSource.java delete mode 100644 app/src/main/java/ru/project/MyList.java delete mode 100644 app/src/main/java/ru/project/Student.java delete mode 100644 app/src/main/java/ru/project/StudentBuilder.java create mode 100644 app/src/main/java/ru/project/datasource/DataSource.java create mode 100644 app/src/main/java/ru/project/datasource/ManualDataSource.java rename app/src/main/java/ru/project/{ => datasource}/RandomDataSource.java (57%) create mode 100644 app/src/main/java/ru/project/datasource/StringParser.java diff --git a/app/src/main/java/ru/project/DataSource.java b/app/src/main/java/ru/project/DataSource.java deleted file mode 100644 index 38f09f8..0000000 --- a/app/src/main/java/ru/project/DataSource.java +++ /dev/null @@ -1,3 +0,0 @@ -public interface DataSource { - MyList fill(int size); -} diff --git a/app/src/main/java/ru/project/FileDataSource.java b/app/src/main/java/ru/project/FileDataSource.java deleted file mode 100644 index 298e375..0000000 --- a/app/src/main/java/ru/project/FileDataSource.java +++ /dev/null @@ -1,16 +0,0 @@ -public class FileDataSource implements DataSource{ - private String path; - - public FileDataSource(String path) { - this.path = path; - } - - public void setPath(String path) { - this.path = path; - } - - @Override - public MyList fill(int size) { - return null; - } -} diff --git a/app/src/main/java/ru/project/Main.java b/app/src/main/java/ru/project/Main.java deleted file mode 100644 index 930198c..0000000 --- a/app/src/main/java/ru/project/Main.java +++ /dev/null @@ -1,15 +0,0 @@ -//TIP To Run code, press or -// click the icon in the gutter. -public class Main { - public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/ru/project/ManualDataSource.java b/app/src/main/java/ru/project/ManualDataSource.java deleted file mode 100644 index c373daf..0000000 --- a/app/src/main/java/ru/project/ManualDataSource.java +++ /dev/null @@ -1,16 +0,0 @@ -import java.util.Scanner; - -public class ManualDataSource implements DataSource{ - @Override - public MyList fill(int size) { - String strToParse; - Scanner scanner = new Scanner(System.in); - while(true){ - strToParse = scanner.next(); - if (strToParse.equals("0")) - break; - } - scanner.close(); - return null; - } -} diff --git a/app/src/main/java/ru/project/MyList.java b/app/src/main/java/ru/project/MyList.java deleted file mode 100644 index 153dca1..0000000 --- a/app/src/main/java/ru/project/MyList.java +++ /dev/null @@ -1,2 +0,0 @@ -public class MyList { -} diff --git a/app/src/main/java/ru/project/Student.java b/app/src/main/java/ru/project/Student.java deleted file mode 100644 index d3fc714..0000000 --- a/app/src/main/java/ru/project/Student.java +++ /dev/null @@ -1,11 +0,0 @@ -public class Student { - private final String groupNumber; - private final double averageGrade; - private final String recordBookNumber; - - public Student(String groupNumber, double averageGrade, String recordBookNumber) { - this.groupNumber = groupNumber; - this.averageGrade = averageGrade; - this.recordBookNumber = recordBookNumber; - } -} diff --git a/app/src/main/java/ru/project/StudentBuilder.java b/app/src/main/java/ru/project/StudentBuilder.java deleted file mode 100644 index 9a5146b..0000000 --- a/app/src/main/java/ru/project/StudentBuilder.java +++ /dev/null @@ -1,23 +0,0 @@ -public class StudentBuilder { - private String groupNumber; - private double averageGrade; - private String recordBookNumber; - - public void setGroupNumber(String groupNumber) { - this.groupNumber = groupNumber; - } - - public void setAverageGrade(double averageGrade) { - this.averageGrade = averageGrade; - } - - public void setRecordBookNumber(String recordBookNumber) { - this.recordBookNumber = recordBookNumber; - } - - public Student build(){ - //TODO: Реализовать проверку на корректность введенных значений - - return new Student(groupNumber,averageGrade, recordBookNumber); - } -} diff --git a/app/src/main/java/ru/project/datasource/DataSource.java b/app/src/main/java/ru/project/datasource/DataSource.java new file mode 100644 index 0000000..d8ad27f --- /dev/null +++ b/app/src/main/java/ru/project/datasource/DataSource.java @@ -0,0 +1,9 @@ +package ru.project.datasource; + +import ru.project.student.Student; +import ru.project.collection.MyList; + + +public interface DataSource { + MyList fill(int size); +} diff --git a/app/src/main/java/ru/project/datasource/FileDataSource.java b/app/src/main/java/ru/project/datasource/FileDataSource.java index b2c70d9..4b2c048 100644 --- a/app/src/main/java/ru/project/datasource/FileDataSource.java +++ b/app/src/main/java/ru/project/datasource/FileDataSource.java @@ -7,34 +7,36 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.stream.Collector; -import java.util.NoSuchElementException; import ru.project.student.Student; import ru.project.collection.MyList; -import ru.project.collection.MyLinkedList; public class FileDataSource implements DataSource{ - private final String fileName; + private String fileName; public FileDataSource(String fileName) { this.fileName = fileName; } + public void setFileName(String fileName) { + this.fileName = fileName; + } + @Override - public MyList create() { - MyList resultList = new MyLinkedList<>(); - try { - StudentCsvReader reader = new StudentCsvReader(fileName); - while reader.hasNext() { - result.append(reader.next()); - } - } - catch (IllegalArgumentException e){ - System.out.println(e.getMessage()); - return null; - } - catch (NoSuchElementException e){ - System.out.println("No such element"); + public MyList fill(int size) { + Path path = Paths.get(fileName); + try(var lines = Files.lines(path)){ + return lines.skip(1) + .limit(size) + .map(e -> StringParser.parseString(e)) + .filter(e -> !(e == null)) + .collect(Collector.of(MyList::new, + MyList::add, + (left, right) -> left.addAll(right))); + }catch(FileNotFoundException e){ + System.out.println("File not found."); return null; + } catch (IOException e) { + throw new RuntimeException(e); } } } diff --git a/app/src/main/java/ru/project/datasource/ManualDataSource.java b/app/src/main/java/ru/project/datasource/ManualDataSource.java new file mode 100644 index 0000000..f24c73a --- /dev/null +++ b/app/src/main/java/ru/project/datasource/ManualDataSource.java @@ -0,0 +1,29 @@ +package ru.project.datasource; + +import java.util.Scanner; +import ru.project.student.Student; +import ru.project.collection.MyList; + +public class ManualDataSource implements DataSource{ + @Override + public MyList fill(int size) { + MyList result = new MyList<>(); + String strToParse; + Student student; + Scanner scanner = new Scanner(System.in); + for (short i = 0; i < size; i++){ + strToParse = scanner.next(); + if (strToParse.equals("0")) + break; + student = StringParser.parseString(strToParse); + if (student == null){ + System.out.println("Oops! Invalid input"); + } + else{ + result.add(student); + } + } + scanner.close(); + return null; + } +} diff --git a/app/src/main/java/ru/project/RandomDataSource.java b/app/src/main/java/ru/project/datasource/RandomDataSource.java similarity index 57% rename from app/src/main/java/ru/project/RandomDataSource.java rename to app/src/main/java/ru/project/datasource/RandomDataSource.java index 021df21..8d5442e 100644 --- a/app/src/main/java/ru/project/RandomDataSource.java +++ b/app/src/main/java/ru/project/datasource/RandomDataSource.java @@ -1,3 +1,8 @@ +package ru.project.datasource; + +import ru.project.student.Student; +import ru.project.collection.MyList; + public class RandomDataSource implements DataSource{ @Override public MyList fill(int size) { diff --git a/app/src/main/java/ru/project/datasource/StringParser.java b/app/src/main/java/ru/project/datasource/StringParser.java new file mode 100644 index 0000000..2bfdd26 --- /dev/null +++ b/app/src/main/java/ru/project/datasource/StringParser.java @@ -0,0 +1,20 @@ +package ru.project.datasource; + +import ru.project.student.Student; +import ru.project.student.StudentBuilder; +import ru.project.collection.MyList; + +public class StringParser { + public static Student parseString(String str){ + String [] parts = str.split(";"); + try{ + return new StudentBuilder() + .setGroupNumber(parts[0]) + .setAverageGrade(Double.valueOf(parts[1])) + .setRecordBookNumber(parts[2]) + .build(); + }catch(NumberFormatException e){ + return null; + } + } +}