Добавлено чтение и отрисовка объектов из CSV

This commit is contained in:
Victor 2013-12-02 14:14:38 +02:00
parent 76f2ca06e4
commit e5d05ef173

View File

@ -1,7 +1,11 @@
package tse.lr5;
import java.awt.Color;
import java.awt.Point;
import java.io.File;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
* @author aNNiMON
@ -20,17 +24,79 @@ public class TrianglesWindow extends JFrame {
pack();
}
public void execute() throws InterruptedException {
setVisible(true);
public void execute() {
File[] csvFiles = Utils.readFiles("lr5", ".csv");
if (csvFiles == null) {
JOptionPane.showMessageDialog(this, "CSV-файлов не обнаружено! Сворачиваемся, ребята",
"Ошибка", JOptionPane.ERROR_MESSAGE);
return;
}
System.out.println("Найдено " + csvFiles.length + " файлов.");
setVisible(true);
try {
System.out.println("3");
Thread.sleep(1000);
System.out.println("2");
Thread.sleep(1000);
System.out.println("1");
Thread.sleep(1000);
} catch (InterruptedException ex) { }
System.out.println("Понеслась!!");
for (File file : csvFiles) {
startReadInNewThread(file);
}
}
private void startReadInNewThread(final File file) {
new Thread(new Runnable() {
@Override
public void run() {
readCsvFile(file);
}
}).start();
}
private void readCsvFile(File file) {
CsvReader<TrianglePaintable> csvReader = new CsvReader<>(file);
csvReader.setReaderHandler(trianglesHandler);
try {
csvReader.readCsv();
} catch (IOException ex) {
ex.printStackTrace();
}
}
private final CsvReader.ReaderHandler<TrianglePaintable> trianglesHandler
= new CsvReader.ReaderHandler() {
@Override
public void onStartRead(File file) {
System.out.println("Читаем файл " + file.getName());
}
@Override
public TrianglePaintable createObject(String[] params) {
if (params.length != 8) throw new RuntimeException("Неверное количество параметров");
Color fill = Color.decode(params[0]);
Color stroke = Color.decode(params[1]);
Point p1 = Utils.readPoint(params[2], params[3]);
Point p2 = Utils.readPoint(params[4], params[5]);
Point p3 = Utils.readPoint(params[6], params[7]);
TrianglePaintable obj = new TrianglePaintable(fill, stroke, p1, p2, p3);
panel.addPaintable(obj);
try {
Thread.sleep(500);
} catch (InterruptedException ex) { }
return obj;
}
@Override
public void onFinishRead(File file) {
System.out.println("Чтение файла " + file.getName() + " завершено!");
}
};
}