From eb4f21fd4e8c8504c68dc781e00c97165d27c221 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 6 Jan 2014 16:04:46 +0200 Subject: [PATCH] =?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(); }