From a65ed01c5c407bfd62c649c7311fee72e447cf6c 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: Fri, 28 Aug 2026 22:52:52 +0700 Subject: [PATCH] feat: add class FileWriter to append data to file --- .../ru/project/datasource/DataSource.java | 2 +- .../ru/project/datasource/FileDataSource.java | 15 ++++---- .../ru/project/datasource/FileWriter.java | 36 ++++++++++++++++++ .../project/datasource/ManualDataSource.java | 18 ++++++++- .../project/datasource/RandomDataSource.java | 34 +++++++++++------ .../ru/project/datasource/StudentBuffer.java | 37 +++++++++++++++++++ 6 files changed, 121 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/ru/project/datasource/FileWriter.java create mode 100644 app/src/main/java/ru/project/datasource/StudentBuffer.java diff --git a/app/src/main/java/ru/project/datasource/DataSource.java b/app/src/main/java/ru/project/datasource/DataSource.java index d8ad27f..08530a2 100644 --- a/app/src/main/java/ru/project/datasource/DataSource.java +++ b/app/src/main/java/ru/project/datasource/DataSource.java @@ -5,5 +5,5 @@ import ru.project.collection.MyList; public interface DataSource { - MyList fill(int size); + MyList create(); } diff --git a/app/src/main/java/ru/project/datasource/FileDataSource.java b/app/src/main/java/ru/project/datasource/FileDataSource.java index 4b2c048..88de258 100644 --- a/app/src/main/java/ru/project/datasource/FileDataSource.java +++ b/app/src/main/java/ru/project/datasource/FileDataSource.java @@ -9,6 +9,7 @@ import java.nio.file.Paths; import java.util.stream.Collector; import ru.project.student.Student; import ru.project.collection.MyList; +import ru.project.collection.MyLinkedList; public class FileDataSource implements DataSource{ private String fileName; @@ -22,16 +23,16 @@ public class FileDataSource implements DataSource{ } @Override - public MyList fill(int size) { - Path path = Paths.get(fileName); + public MyList create() { + Path path = Paths.of(fileName); try(var lines = Files.lines(path)){ - return lines.skip(1) - .limit(size) + return lines + //.skip(1) .map(e -> StringParser.parseString(e)) .filter(e -> !(e == null)) - .collect(Collector.of(MyList::new, - MyList::add, - (left, right) -> left.addAll(right))); + .collect(Collector.of(MyLinkedList::new, + MyLinkedList::add, + (left, right) -> left; }catch(FileNotFoundException e){ System.out.println("File not found."); return null; diff --git a/app/src/main/java/ru/project/datasource/FileWriter.java b/app/src/main/java/ru/project/datasource/FileWriter.java new file mode 100644 index 0000000..7b2f366 --- /dev/null +++ b/app/src/main/java/ru/project/datasource/FileWriter.java @@ -0,0 +1,36 @@ +package ru.project.datasource; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import ru.project.student.Student; +import ru.project.collection.MyList; +import ru.project.collection.MyLinkedList; +import ru.project.collection.Iterator; + +public class FileWriter { + private Path path; + + public FileWriter(String absolutePath) { + this.path = Path.of(absolutePath); + } + + public void write(MyList iist){ + //int sizeOfCollection = list.size(); + try (BufferedWriter writer = Files.newBufferedWriter( + path, + StandardOpenOption.CREATE, + StandardOpenOption.APPEND + )) { + Iterator iterator = list.getIterator(); + while (iterator.hasNext()){ + writer.write(iterator.next().toFileString()); + writer.newLine(); + } + } 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 index f24c73a..d7c46e7 100644 --- a/app/src/main/java/ru/project/datasource/ManualDataSource.java +++ b/app/src/main/java/ru/project/datasource/ManualDataSource.java @@ -3,11 +3,25 @@ package ru.project.datasource; import java.util.Scanner; import ru.project.student.Student; import ru.project.collection.MyList; +import ru.project.collection.MyLinkedList; public class ManualDataSource implements DataSource{ + private int size; + private MyList bufferMyList = new MyLinkedList<>(); + + public ManualDataSource(int size) { + this.size = size; + } + + public boolean setStudent( + int index, + String groupNumber, + double averageGrade, + int recordBookNumber + ){} @Override - public MyList fill(int size) { - MyList result = new MyList<>(); + public MyList create() { + MyList result = new MyLinkedList<>(); String strToParse; Student student; Scanner scanner = new Scanner(System.in); diff --git a/app/src/main/java/ru/project/datasource/RandomDataSource.java b/app/src/main/java/ru/project/datasource/RandomDataSource.java index f81cf77..d109fa2 100644 --- a/app/src/main/java/ru/project/datasource/RandomDataSource.java +++ b/app/src/main/java/ru/project/datasource/RandomDataSource.java @@ -3,34 +3,46 @@ package ru.project.datasource; import ru.project.student.Student; import ru.project.student.StudentBuilder; import ru.project.collection.MyList; +import ru.project.collection.MyLinkedList; import java.util.Random; public class RandomDataSource implements DataSource{ - private final String CHARS = "АБВГДЕЖХИКЛМНОПРСТУФХЦЧЩЭЮЯ"; + private final int size; + //private final String CHARS = "АБВГДЕЖХИКЛМНОПРСТУФХЦЧЩЭЮЯ"; + private int upperBounRecordBookNumber; + + public RandomDataSource(int size) { + this.size = size; + } + + public void setUpperBounRecordBookNumber(int upperBounRecordBookNumber) { + this.upperBounRecordBookNumber = upperBounRecordBookNumber; + } private String getRandomGroupNumber(Random random){ - StringBuilder buildRes = new StringBuilder(CHARS.charAt(random.nextInt(CHARS.length()))); - buildRes.append('-'); - buildRes.append(String.format("%03d", random.nextInt(999))); - return buildRes.toString(); + char prefix = (char)(random.nextInt(26) + (int)'A')4 + String result = prefix + String.format("%02d", random.nextInt(100)); + return result; } - private String getRandomRecordBookNumber(Random random){ + /*private String getRandomRecordBookNumber(Random random){ StringBuilder buildRes = new StringBuilder(CHARS.charAt(random.nextInt(CHARS.length()))); buildRes.append(String.format("%08d", random.nextInt(99999999))); return buildRes.toString(); - } + }*/ @Override - public MyList fill(int size) { + public MyList create() { + if (upperBounRecordBookNumber < 0) + throw new IllegalException("The upper bound is negative!!!"); Random random = new Random(); - MyList result = new MyList<>(); + MyList result = new MyLinkedList<>(); for (short i = 0; i