commit 88cfe074175a617dcd2113b57d3028b864ad402a
Author: jjirman <fajirmja@seznam.cz>
Date:   Thu Apr 18 11:59:56 2019 +0200

    Vytvořené rozhraní: IProcessable - využití: každý záznam načtených dat. Napsány základní druhy záznamů jako je: JDFCaskodyRecord, JDFLinkyRecord.
    DataReader zatím zachován - obsahuje části kódu, které můžou být vhodné v jiných třídách. Načítání dat nyní v DataLoader - metody převzány a lehce modifikovány z DataReaderu. (Re #7315)

diff --git a/src/data/DataLoader.java b/src/data/DataLoader.java
new file mode 100644
index 0000000..5c7d81a
--- /dev/null
+++ b/src/data/DataLoader.java
@@ -0,0 +1,148 @@
+package data;
+
+import java.io.*;
+import java.util.ArrayList;
+
+/**
+ *
+ * Třída pro základní čtení a parsovani zdrojových souborů
+ *
+ * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
+ * @version 1.0
+ */
+public class DataLoader {
+
+    //--------------------------------------- ATRIBUTY: -------------------------------------------------//
+    //---------------------------------------------------------------------------------------------------//
+
+    /** Jméno načteného souboru */
+    private  String fileName;
+    /** Hashmapa načtených dat */
+    private ArrayList<String[]> loadedData = new ArrayList<>();
+    /** Proměnná souboru */
+    private File file;
+    /** Proměnná root (JDF) složky */
+    private File directory;
+
+    //-------------------------------------- KONSTRUKTOR: -----------------------------------------------//
+    //---------------------------------------------------------------------------------------------------//
+
+    /**
+     * Konstruktor DataLoaderu - Inicializuje slozku se zdrojovymi soubory pro cteni
+     * @param directory
+     */
+    public DataLoader(File directory) {
+        this.directory = directory;
+        this.file = null;
+        this.fileName = "";
+    }
+
+    //------------------------------------ METODY: Get() ------------------------------------------------//
+    //---------------------------------------------------------------------------------------------------//
+
+    /**
+     * Vrací pole dat souboru
+     * @return pole dat souboru
+     */
+    public ArrayList<String[]> getLoadedData() {
+        return loadedData;
+    }
+
+    /**
+     * Vraci hodnotu atributu fileName obsahujici jmeno souboru
+     *
+     * @return jméno souboru zpracovávaného metodami
+     */
+    public String getFileName() {
+        return fileName;
+    }
+
+    /**
+     * Vrací instanci souboru
+     * @return intance souboru
+     */
+    public File getFile() {
+        return file;
+    }
+
+    /**
+     * Vrací instanci root (JDF) složky
+     * @return intance root (JDF) složka
+     */
+    public File getDirectory(){
+        return directory;
+    }
+
+    //----------------------------------------- METODY: -------------------------------------------------//
+    //---------------------------------------------------------------------------------------------------//
+
+    /**
+     * Metoda načte všechna data ze souboru
+     * @param fileName jméno souboru, ze kterého se bude číst
+     */
+    public boolean loadData(String fileName){
+        ArrayList<String[]> dataArrayList;
+        String currLine;
+
+        //soubor
+        File file = new File(directory.getAbsolutePath()+"/"+fileName);
+        if(!file.isFile()){
+            System.out.println("Soubor neexistuje");
+            return false;
+        }
+
+        //nastavení atributů
+        setAttributes(file, fileName);
+
+        //čtení souboru
+        try {
+            BufferedReader BuffReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1250"));
+            while((currLine = BuffReader.readLine()) != null) {
+                //celý záznam - jedná řádka
+                String[] record = parseLine(currLine);
+                //přídání do arraylistu loadedData
+                loadedData.add(record);
+            }
+            BuffReader.close();
+
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+    /**,
+     * Nastavení zbývajících atributů pro DataLoader
+     * @param file instance souboru
+     * @param fileName název souborů
+     */
+    private void setAttributes(File file, String fileName){
+        this.file = file;
+        this.fileName = fileName;
+    }
+
+    /**
+     * Zpracuje a vrátí jeden záznam (řádku) jako pole hodnot
+     *
+     * @param line řádka ke zpracování
+     * @return pole se záznamem
+     */
+    public String[] parseLine(String line) {
+        int startIndex = 1;
+        int shift = 2;
+
+        /*
+         Odstraní ze záznamu úvodní uvozovku a konečnou uvozovku se středníkem
+         příprava pro následující rozdělení záznamu pomocí metody split
+         */
+        String subString = line.substring(startIndex, line.length()-shift);
+
+        String[] entry = subString.split("\",\"");
+
+        return entry;
+    }
+}
diff --git a/src/data/IProcessable.java b/src/data/IProcessable.java
new file mode 100644
index 0000000..f7c2a4a
--- /dev/null
+++ b/src/data/IProcessable.java
@@ -0,0 +1,14 @@
+package data;
+
+/**
+ *
+ * Rozhraní pro zpracování dat - každá třída Record se jinak zpracovává, ale je potřeba metody proccesData
+ *
+ * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
+ * @version 1.0
+ */
+public interface IProcessable {
+
+    void proccesData(String[] dataRecord);
+
+}
diff --git a/src/data/JDFCaskodyRecord.java b/src/data/JDFCaskodyRecord.java
new file mode 100644
index 0000000..8e626d8
--- /dev/null
+++ b/src/data/JDFCaskodyRecord.java
@@ -0,0 +1,23 @@
+package data;
+
+/**
+ *
+ * Třída JDFCaskodyRecord obsahuje jeden záznam načtených dat z Caskody.txt
+ *
+ * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
+ * @version 1.0
+ */
+public class JDFCaskodyRecord implements IProcessable {
+
+    //-------------- Atributy --------------/
+    //TODO vytvořit proměnné pro všechna potřebná data
+
+    /**
+     * V metodě se přečte jeden záznam dat a rozřadí do určitých atributů - atributy bude možné dále využívat
+     * @param dataRecord jeden záznam načtených dat
+     */
+    @Override
+    public void proccesData(String[] dataRecord) {
+
+    }
+}
diff --git a/src/data/JDFLinkyRecord.java b/src/data/JDFLinkyRecord.java
new file mode 100644
index 0000000..cce3ecd
--- /dev/null
+++ b/src/data/JDFLinkyRecord.java
@@ -0,0 +1,24 @@
+package data;
+
+/**
+ *
+ * Třída JDFLinkyRecord obsahuje jeden záznam načtených dat z Linky.txt
+ *
+ * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
+ * @version 1.0
+ */
+
+public class JDFLinkyRecord implements IProcessable {
+
+    //-------------- Atributy --------------/
+    //TODO vytvořit proměnné pro všechna potřebná data
+
+    /**
+     * V metodě se přečte jeden záznam dat a rozřadí do určitých atributů - atributy bude možné dále využívat
+     * @param dataRecord jeden záznam načtených dat
+     */
+    @Override
+    public void proccesData(String[] dataRecord) {
+
+    }
+}
