Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 88cfe074

Přidáno uživatelem jjirman před téměř 6 roky(ů)

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)

Zobrazit rozdíly:

src/data/DataLoader.java
1
package data;
2

  
3
import java.io.*;
4
import java.util.ArrayList;
5

  
6
/**
7
 *
8
 * Třída pro základní čtení a parsovani zdrojových souborů
9
 *
10
 * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
11
 * @version 1.0
12
 */
13
public class DataLoader {
14

  
15
    //--------------------------------------- ATRIBUTY: -------------------------------------------------//
16
    //---------------------------------------------------------------------------------------------------//
17

  
18
    /** Jméno načteného souboru */
19
    private  String fileName;
20
    /** Hashmapa načtených dat */
21
    private ArrayList<String[]> loadedData = new ArrayList<>();
22
    /** Proměnná souboru */
23
    private File file;
24
    /** Proměnná root (JDF) složky */
25
    private File directory;
26

  
27
    //-------------------------------------- KONSTRUKTOR: -----------------------------------------------//
28
    //---------------------------------------------------------------------------------------------------//
29

  
30
    /**
31
     * Konstruktor DataLoaderu - Inicializuje slozku se zdrojovymi soubory pro cteni
32
     * @param directory
33
     */
34
    public DataLoader(File directory) {
35
        this.directory = directory;
36
        this.file = null;
37
        this.fileName = "";
38
    }
39

  
40
    //------------------------------------ METODY: Get() ------------------------------------------------//
41
    //---------------------------------------------------------------------------------------------------//
42

  
43
    /**
44
     * Vrací pole dat souboru
45
     * @return pole dat souboru
46
     */
47
    public ArrayList<String[]> getLoadedData() {
48
        return loadedData;
49
    }
50

  
51
    /**
52
     * Vraci hodnotu atributu fileName obsahujici jmeno souboru
53
     *
54
     * @return jméno souboru zpracovávaného metodami
55
     */
56
    public String getFileName() {
57
        return fileName;
58
    }
59

  
60
    /**
61
     * Vrací instanci souboru
62
     * @return intance souboru
63
     */
64
    public File getFile() {
65
        return file;
66
    }
67

  
68
    /**
69
     * Vrací instanci root (JDF) složky
70
     * @return intance root (JDF) složka
71
     */
72
    public File getDirectory(){
73
        return directory;
74
    }
75

  
76
    //----------------------------------------- METODY: -------------------------------------------------//
77
    //---------------------------------------------------------------------------------------------------//
78

  
79
    /**
80
     * Metoda načte všechna data ze souboru
81
     * @param fileName jméno souboru, ze kterého se bude číst
82
     */
83
    public boolean loadData(String fileName){
84
        ArrayList<String[]> dataArrayList;
85
        String currLine;
86

  
87
        //soubor
88
        File file = new File(directory.getAbsolutePath()+"/"+fileName);
89
        if(!file.isFile()){
90
            System.out.println("Soubor neexistuje");
91
            return false;
92
        }
93

  
94
        //nastavení atributů
95
        setAttributes(file, fileName);
96

  
97
        //čtení souboru
98
        try {
99
            BufferedReader BuffReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1250"));
100
            while((currLine = BuffReader.readLine()) != null) {
101
                //celý záznam - jedná řádka
102
                String[] record = parseLine(currLine);
103
                //přídání do arraylistu loadedData
104
                loadedData.add(record);
105
            }
106
            BuffReader.close();
107

  
108
        } catch (FileNotFoundException e) {
109
            e.printStackTrace();
110
        } catch (UnsupportedEncodingException e) {
111
            e.printStackTrace();
112
        } catch (IOException e) {
113
            e.printStackTrace();
114
        }
115
        return true;
116
    }
117

  
118
    /**,
119
     * Nastavení zbývajících atributů pro DataLoader
120
     * @param file instance souboru
121
     * @param fileName název souborů
122
     */
123
    private void setAttributes(File file, String fileName){
124
        this.file = file;
125
        this.fileName = fileName;
126
    }
127

  
128
    /**
129
     * Zpracuje a vrátí jeden záznam (řádku) jako pole hodnot
130
     *
131
     * @param line řádka ke zpracování
132
     * @return pole se záznamem
133
     */
134
    public String[] parseLine(String line) {
135
        int startIndex = 1;
136
        int shift = 2;
137

  
138
        /*
139
         Odstraní ze záznamu úvodní uvozovku a konečnou uvozovku se středníkem
140
         příprava pro následující rozdělení záznamu pomocí metody split
141
         */
142
        String subString = line.substring(startIndex, line.length()-shift);
143

  
144
        String[] entry = subString.split("\",\"");
145

  
146
        return entry;
147
    }
148
}
src/data/IProcessable.java
1
package data;
2

  
3
/**
4
 *
5
 * Rozhraní pro zpracování dat - každá třída Record se jinak zpracovává, ale je potřeba metody proccesData
6
 *
7
 * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
8
 * @version 1.0
9
 */
10
public interface IProcessable {
11

  
12
    void proccesData(String[] dataRecord);
13

  
14
}
src/data/JDFCaskodyRecord.java
1
package data;
2

  
3
/**
4
 *
5
 * Třída JDFCaskodyRecord obsahuje jeden záznam načtených dat z Caskody.txt
6
 *
7
 * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
8
 * @version 1.0
9
 */
10
public class JDFCaskodyRecord implements IProcessable {
11

  
12
    //-------------- Atributy --------------/
13
    //TODO vytvořit proměnné pro všechna potřebná data
14

  
15
    /**
16
     * 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
17
     * @param dataRecord jeden záznam načtených dat
18
     */
19
    @Override
20
    public void proccesData(String[] dataRecord) {
21

  
22
    }
23
}
src/data/JDFLinkyRecord.java
1
package data;
2

  
3
/**
4
 *
5
 * Třída JDFLinkyRecord obsahuje jeden záznam načtených dat z Linky.txt
6
 *
7
 * @author Daniel Stus, Marek Sobota, Lukas Scurko, Jan Jirman
8
 * @version 1.0
9
 */
10

  
11
public class JDFLinkyRecord implements IProcessable {
12

  
13
    //-------------- Atributy --------------/
14
    //TODO vytvořit proměnné pro všechna potřebná data
15

  
16
    /**
17
     * 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
18
     * @param dataRecord jeden záznam načtených dat
19
     */
20
    @Override
21
    public void proccesData(String[] dataRecord) {
22

  
23
    }
24
}

Také k dispozici: Unified diff