refactor: remove obsolete data source infrastructure

- remove legacy DataSource implementations
- remove obsolete file and random data source classes
This commit is contained in:
2026-08-31 22:58:32 +04:00
parent 3cca9402bb
commit f1c6aa1443
6 changed files with 0 additions and 244 deletions
@@ -1,9 +0,0 @@
package ru.project.datasource;
import ru.project.student.Student;
import ru.project.collection.MyList;
public interface DataSource {
MyList<Student> create();
}
@@ -1,41 +0,0 @@
package ru.project.datasource;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
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;
public FileDataSource(String fileName) {
this.fileName = fileName;
}
@Override
public MyList<Student> create() {
MyList<Student> resultList = new MyLinkedList<>();
try {
StudentCsvReader reader = new StudentCsvReader(fileName);
while (reader.hasNext()) {
resultList.add(reader.next());
}
return resultList;
}
catch (IllegalArgumentException e){
System.out.println(e.getMessage());
return null;
}
catch (NoSuchElementException e){
System.out.println(e.getMessage() + "No such element");
return null;
}
}
}
@@ -1,36 +0,0 @@
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<Student> 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);
}
}
}
@@ -1,48 +0,0 @@
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 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){
char prefix = (char)(random.nextInt(26) + (int)'A');
String result = prefix + String.format("%02d", random.nextInt(100));
return result;
}
/*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<Student> create() {
if (upperBounRecordBookNumber < 0)
throw new IllegalArgumentException("The upper bound is negative!!!");
Random random = new Random();
MyList<Student> result = new MyLinkedList<>();
for (short i = 0; i<size; i++){
result.add(new StudentBuilder()
.setGroupNumber(getRandomGroupNumber(random))
.setAverageGrade(Math.random() * 5.0)
.setRecordBookNumber(random.nextInt(upperBounRecordBookNumber + 1))
.build());
}
return result;
}
}
@@ -1,37 +0,0 @@
package ru.project.datasource;
public class StudentBuffer {
private String groupNumber;
private double averageGrade;
private int recordBookNumber;
public StudentBuffer(String groupNumber, double averageGrade, Integer recordBookNumber) {
this.groupNumber = groupNumber;
this.averageGrade = averageGrade;
this.recordBookNumber = recordBookNumber;
}
public String getGroupNumber() {
return groupNumber;
}
public void setGroupNumber(String groupNumber) {
this.groupNumber = groupNumber;
}
public double getAverageGrade() {
return averageGrade;
}
public void setAverageGrade(double averageGrade) {
this.averageGrade = averageGrade;
}
public int getRecordBookNumber() {
return recordBookNumber;
}
public void setRecordBookNumber(int recordBookNumber) {
this.recordBookNumber = recordBookNumber;
}
}
@@ -1,73 +0,0 @@
package ru.project.datasource;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import ru.project.student.Student;
import ru.project.collection.MyList;
import ru.project.collection.MyLinkedList;
public class StudentCsvWriter{
private static final String[] HEADER = {
"groupNumber", "averageGrade", "recordBookNumber"
};
private static final DateTimeFormatter FILE_NAME_FORMAT =
DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm");
private final Path requestedPath;
private Path actualPath;
public StudentCsvWriter(String absoluteFilePath) {
Path path = Paths.get(absoluteFilePath);
if (!path.isAbsolute()) {
throw new IllegalArgumentException("File path must be absolute");
}
this.requestedPath = path;
}
public void write(Student student) throws IOException {
Path target = resolveTargetPath();
boolean fileExists = Files.exists(target);
StandardOpenOption[] options = fileExists
? new StandardOpenOption[]{StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.APPEND}
: new StandardOpenOption[]{StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE};
try (BufferedWriter writer = Files.newBufferedWriter(target, StandardCharsets.UTF_8, options);
CSVPrinter printer = new CSVPrinter(writer, CSVFormat.DEFAULT)) {
if (!fileExists) {
printer.printRecord((Object[]) HEADER);
}
printer.printRecord(
student.getGroupNumber(),
Double.toString(student.getAverageGrade()),
student.getRecordBookNumber()
);
}
}
private Path resolveTargetPath() {
if (actualPath != null) {
return actualPath;
}
if (Files.exists(requestedPath)) {
actualPath = requestedPath;
return actualPath;
}
Path parent = requestedPath.getParent();
String fileName = "students-" + LocalDateTime.now().format(FILE_NAME_FORMAT) + ".csv";
actualPath = parent == null ? Paths.get(fileName).toAbsolutePath() : parent.resolve(fileName);
return actualPath;
}
}