feat: add class FileWriter to append data to file
This commit is contained in:
@@ -5,5 +5,5 @@ import ru.project.collection.MyList;
|
||||
|
||||
|
||||
public interface DataSource {
|
||||
MyList<Student> fill(int size);
|
||||
MyList<Student> create();
|
||||
}
|
||||
|
||||
@@ -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<Student> fill(int size) {
|
||||
Path path = Paths.get(fileName);
|
||||
public MyList<Student> 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;
|
||||
|
||||
@@ -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<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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<StudentBuffer> bufferMyList = new MyLinkedList<>();
|
||||
|
||||
public ManualDataSource(int size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public boolean setStudent(
|
||||
int index,
|
||||
String groupNumber,
|
||||
double averageGrade,
|
||||
int recordBookNumber
|
||||
){}
|
||||
@Override
|
||||
public MyList<Student> fill(int size) {
|
||||
MyList<Student> result = new MyList<>();
|
||||
public MyList<Student> create() {
|
||||
MyList<Student> result = new MyLinkedList<>();
|
||||
String strToParse;
|
||||
Student student;
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
|
||||
@@ -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<Student> fill(int size) {
|
||||
public MyList<Student> create() {
|
||||
if (upperBounRecordBookNumber < 0)
|
||||
throw new IllegalException("The upper bound is negative!!!");
|
||||
Random random = new Random();
|
||||
MyList<Student> result = new MyList<>();
|
||||
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(getRandomRecordBookNumber(random))
|
||||
.setRecordBookNumber(random.nextInt(upperBounRecordBookNumber + 1))
|
||||
.build());
|
||||
}
|
||||
return null;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user