From ddec6fee2d086688d0879c42fa69a25b0930b097 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 6 Jan 2014 15:34:07 +0200 Subject: [PATCH 1/4] =?UTF-8?q?CsvReader=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=D1=91=D0=BD=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/{tse/lr5 => com/annimon/io}/CsvReader.java | 2 +- src/tse/lr5/TrianglesWindow.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) rename src/{tse/lr5 => com/annimon/io}/CsvReader.java (99%) diff --git a/src/tse/lr5/CsvReader.java b/src/com/annimon/io/CsvReader.java similarity index 99% rename from src/tse/lr5/CsvReader.java rename to src/com/annimon/io/CsvReader.java index 02305cd..7ccab6d 100644 --- a/src/tse/lr5/CsvReader.java +++ b/src/com/annimon/io/CsvReader.java @@ -1,4 +1,4 @@ -package tse.lr5; +package com.annimon.io; import java.io.BufferedReader; import java.io.File; diff --git a/src/tse/lr5/TrianglesWindow.java b/src/tse/lr5/TrianglesWindow.java index 8489199..49261e9 100644 --- a/src/tse/lr5/TrianglesWindow.java +++ b/src/tse/lr5/TrianglesWindow.java @@ -1,5 +1,6 @@ package tse.lr5; +import com.annimon.io.CsvReader; import java.awt.Color; import java.awt.Point; import java.io.File; From 68823111ef1cd8f0d7844934d7567cb134055503 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 6 Jan 2014 15:53:42 +0200 Subject: [PATCH 2/4] =?UTF-8?q?=D0=98=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20CsvReader=20=D0=B2=20?= =?UTF-8?q?=D0=9B=D0=A03?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/annimon/ui/AbstractFileChooser.java | 1 - src/tse/lr3/LR_3_Tasks.java | 40 +++++++++------------ 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/com/annimon/ui/AbstractFileChooser.java b/src/com/annimon/ui/AbstractFileChooser.java index 38bd0db..29740f1 100644 --- a/src/com/annimon/ui/AbstractFileChooser.java +++ b/src/com/annimon/ui/AbstractFileChooser.java @@ -9,7 +9,6 @@ import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JPanel; -import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE; /** * diff --git a/src/tse/lr3/LR_3_Tasks.java b/src/tse/lr3/LR_3_Tasks.java index 96739b5..5ccb3fe 100644 --- a/src/tse/lr3/LR_3_Tasks.java +++ b/src/tse/lr3/LR_3_Tasks.java @@ -1,13 +1,13 @@ package tse.lr3; +import com.annimon.io.CsvReader; import tse.lr2.*; import java.awt.Point; -import java.io.BufferedReader; import java.io.BufferedWriter; +import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStreamWriter; @@ -151,31 +151,25 @@ public class LR_3_Tasks { } private List readFromCSV(String filename) throws IOException { - List list = new ArrayList<>(); - BufferedReader reader = new BufferedReader( - new InputStreamReader( new FileInputStream(filename), "UTF-8" ) - ); - reader.readLine(); // Класс,X1,Y1,X2,Y2,X3,Y3,X4,Y4 - String line; - while ( (line = reader.readLine()) != null ) { - Ellipse ellipse = null; - try { - ellipse = readFromCsvLine(line); - } catch (RuntimeException ex) { - System.out.println(ex.toString()); + CsvReader csvReader = new CsvReader<>(new File(filename)); + csvReader.setReaderHandler(new CsvReader.ReaderHandler() { + + @Override + public void onStartRead(File file) { } + + @Override + public Ellipse createObject(String[] params) { + return readFromCsvLine(params); } - if (ellipse != null) list.add(ellipse); - } - reader.close(); - return list; + + @Override + public void onFinishRead(File file) { } + }); + return csvReader.readCsvToList(true); } - private Ellipse readFromCsvLine(String line) { + private Ellipse readFromCsvLine(String[] params) { final int POINTS_COUNT = 4; - if (line.isEmpty()) throw new RuntimeException("Пустая строка"); - String[] params = line.split(","); - if (params.length < 9) throw new RuntimeException("Неверное количество параметров"); - final int[] coords = new int[POINTS_COUNT * 2]; for (int i = 0; i < coords.length; i++) { coords[i] = Integer.parseInt(params[i + 1]); From eb4f21fd4e8c8504c68dc781e00c97165d27c221 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 6 Jan 2014 16:04:46 +0200 Subject: [PATCH 3/4] =?UTF-8?q?=D0=98=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20CsvReader=20=D0=B2=20?= =?UTF-8?q?=D0=9B=D0=A04?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tse/lr4/NotePad.java | 11 +++++--- src/tse/lr4/NotePadManager.java | 48 +++++++++++++++------------------ src/tse/lr4/PadPanel.java | 4 +-- 3 files changed, 31 insertions(+), 32 deletions(-) diff --git a/src/tse/lr4/NotePad.java b/src/tse/lr4/NotePad.java index 9034194..f14bbe9 100644 --- a/src/tse/lr4/NotePad.java +++ b/src/tse/lr4/NotePad.java @@ -60,14 +60,17 @@ public class NotePad { return getName() + ". " + getDescription(); } - public static NotePad readFromCsvLine(String line) throws ParseException { - if (line.isEmpty()) throw new RuntimeException("Пустая строка"); - String[] params = line.split("\t"); + public static NotePad readFromCsvLine(String[] params) { if (params.length != 4) throw new RuntimeException("Неверное количество параметров"); String name = params[0]; String description = params[1]; - Date data = new SimpleDateFormat(DATE_PATTERN).parse(params[2]); + Date data; + try { + data = new SimpleDateFormat(DATE_PATTERN).parse(params[2]); + } catch (ParseException ex) { + data = new Date(System.currentTimeMillis()); + } boolean important = Boolean.parseBoolean(params[3]); return new NotePad(name, description, data, important); diff --git a/src/tse/lr4/NotePadManager.java b/src/tse/lr4/NotePadManager.java index a295ed3..e121a99 100644 --- a/src/tse/lr4/NotePadManager.java +++ b/src/tse/lr4/NotePadManager.java @@ -1,13 +1,11 @@ package tse.lr4; -import java.io.BufferedReader; +import com.annimon.io.CsvReader; import java.io.BufferedWriter; -import java.io.FileInputStream; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.io.OutputStreamWriter; -import java.text.ParseException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -30,14 +28,14 @@ public class NotePadManager { return instance; } - private ArrayList notepads; + private List notepads; public NotePadManager() { - notepads = (ArrayList) readFromCSV(FILENAME); + notepads = readFromCSV(FILENAME); if (notepads == null) notepads = new ArrayList<>(); } - public ArrayList getNotepads() { + public List getNotepads() { return notepads; } @@ -67,7 +65,7 @@ public class NotePadManager { createNewEntry(name, desc, date, important); } - private void saveToCSV(String filename, ArrayList list) { + private void saveToCSV(String filename, List list) { try { BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(filename), "UTF-8") @@ -84,25 +82,23 @@ public class NotePadManager { } } - private Object readFromCSV(String filename) { - try { - List list = new ArrayList<>(); - BufferedReader reader = new BufferedReader( - new InputStreamReader( new FileInputStream(filename), "UTF-8" ) - ); - reader.readLine(); // Имя,Описание,Дата,Важное - String line; - while ( (line = reader.readLine()) != null ) { - NotePad pad = null; - try { - pad = NotePad.readFromCsvLine(line); - } catch (RuntimeException | ParseException ex) { - System.out.println(ex.toString()); - } - if (pad != null) list.add(pad); + private List readFromCSV(String filename) { + CsvReader csvReader = new CsvReader<>(new File(filename)); + csvReader.setReaderHandler(new CsvReader.ReaderHandler() { + + @Override + public void onStartRead(File file) { } + + @Override + public NotePad createObject(String[] params) { + return NotePad.readFromCsvLine(params); } - reader.close(); - return list; + + @Override + public void onFinishRead(File file) { } + }); + try { + return csvReader.readCsvToList(); } catch (IOException ex) { Util.handleException(ex); } diff --git a/src/tse/lr4/PadPanel.java b/src/tse/lr4/PadPanel.java index 63a1f94..12d5644 100644 --- a/src/tse/lr4/PadPanel.java +++ b/src/tse/lr4/PadPanel.java @@ -3,9 +3,9 @@ package tse.lr4; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.List; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JCheckBox; @@ -199,7 +199,7 @@ public class PadPanel extends JPanel { return NotePadManager.getInstance().getNotepads().get(padIndex); } - private ArrayList getNotepads() { + private List getNotepads() { return NotePadManager.getInstance().getNotepads(); } From 646d8c8ad154ca3e73b20f2c7c252313b6a28564 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 6 Jan 2014 16:15:16 +0200 Subject: [PATCH 4/4] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=D0=B0=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/annimon/io/CsvReader.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/annimon/io/CsvReader.java b/src/com/annimon/io/CsvReader.java index 7ccab6d..1c82cca 100644 --- a/src/com/annimon/io/CsvReader.java +++ b/src/com/annimon/io/CsvReader.java @@ -85,11 +85,10 @@ public class CsvReader { } String line; while ( (line = reader.readLine()) != null ) { - T obj = null; try { if (!line.isEmpty()) { String[] params = line.split(separator); - obj = (T) handler.createObject(params); + handler.createObject(params); } } catch (RuntimeException ex) { Util.handleException(ex);