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 {
|
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 java.util.stream.Collector;
|
||||||
import ru.project.student.Student;
|
import ru.project.student.Student;
|
||||||
import ru.project.collection.MyList;
|
import ru.project.collection.MyList;
|
||||||
|
import ru.project.collection.MyLinkedList;
|
||||||
|
|
||||||
public class FileDataSource implements DataSource{
|
public class FileDataSource implements DataSource{
|
||||||
private String fileName;
|
private String fileName;
|
||||||
@@ -22,16 +23,16 @@ public class FileDataSource implements DataSource{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MyList<Student> fill(int size) {
|
public MyList<Student> create() {
|
||||||
Path path = Paths.get(fileName);
|
Path path = Paths.of(fileName);
|
||||||
try(var lines = Files.lines(path)){
|
try(var lines = Files.lines(path)){
|
||||||
return lines.skip(1)
|
return lines
|
||||||
.limit(size)
|
//.skip(1)
|
||||||
.map(e -> StringParser.parseString(e))
|
.map(e -> StringParser.parseString(e))
|
||||||
.filter(e -> !(e == null))
|
.filter(e -> !(e == null))
|
||||||
.collect(Collector.of(MyList::new,
|
.collect(Collector.of(MyLinkedList::new,
|
||||||
MyList::add,
|
MyLinkedList::add,
|
||||||
(left, right) -> left.addAll(right)));
|
(left, right) -> left;
|
||||||
}catch(FileNotFoundException e){
|
}catch(FileNotFoundException e){
|
||||||
System.out.println("File not found.");
|
System.out.println("File not found.");
|
||||||
return null;
|
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 java.util.Scanner;
|
||||||
import ru.project.student.Student;
|
import ru.project.student.Student;
|
||||||
import ru.project.collection.MyList;
|
import ru.project.collection.MyList;
|
||||||
|
import ru.project.collection.MyLinkedList;
|
||||||
|
|
||||||
public class ManualDataSource implements DataSource{
|
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
|
@Override
|
||||||
public MyList<Student> fill(int size) {
|
public MyList<Student> create() {
|
||||||
MyList<Student> result = new MyList<>();
|
MyList<Student> result = new MyLinkedList<>();
|
||||||
String strToParse;
|
String strToParse;
|
||||||
Student student;
|
Student student;
|
||||||
Scanner scanner = new Scanner(System.in);
|
Scanner scanner = new Scanner(System.in);
|
||||||
|
|||||||
@@ -3,34 +3,46 @@ package ru.project.datasource;
|
|||||||
import ru.project.student.Student;
|
import ru.project.student.Student;
|
||||||
import ru.project.student.StudentBuilder;
|
import ru.project.student.StudentBuilder;
|
||||||
import ru.project.collection.MyList;
|
import ru.project.collection.MyList;
|
||||||
|
import ru.project.collection.MyLinkedList;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class RandomDataSource implements DataSource{
|
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){
|
private String getRandomGroupNumber(Random random){
|
||||||
StringBuilder buildRes = new StringBuilder(CHARS.charAt(random.nextInt(CHARS.length())));
|
char prefix = (char)(random.nextInt(26) + (int)'A')4
|
||||||
buildRes.append('-');
|
String result = prefix + String.format("%02d", random.nextInt(100));
|
||||||
buildRes.append(String.format("%03d", random.nextInt(999)));
|
return result;
|
||||||
return buildRes.toString();
|
|
||||||
}
|
}
|
||||||
private String getRandomRecordBookNumber(Random random){
|
/*private String getRandomRecordBookNumber(Random random){
|
||||||
StringBuilder buildRes = new StringBuilder(CHARS.charAt(random.nextInt(CHARS.length())));
|
StringBuilder buildRes = new StringBuilder(CHARS.charAt(random.nextInt(CHARS.length())));
|
||||||
buildRes.append(String.format("%08d", random.nextInt(99999999)));
|
buildRes.append(String.format("%08d", random.nextInt(99999999)));
|
||||||
return buildRes.toString();
|
return buildRes.toString();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
@Override
|
@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();
|
Random random = new Random();
|
||||||
MyList<Student> result = new MyList<>();
|
MyList<Student> result = new MyLinkedList<>();
|
||||||
for (short i = 0; i<size; i++){
|
for (short i = 0; i<size; i++){
|
||||||
result.add(new StudentBuilder()
|
result.add(new StudentBuilder()
|
||||||
.setGroupNumber(getRandomGroupNumber(random))
|
.setGroupNumber(getRandomGroupNumber(random))
|
||||||
.setAverageGrade(Math.random() * 5.0)
|
.setAverageGrade(Math.random() * 5.0)
|
||||||
.setRecordBookNumber(getRandomRecordBookNumber(random))
|
.setRecordBookNumber(random.nextInt(upperBounRecordBookNumber + 1))
|
||||||
.build());
|
.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