commit 9ebc6f0f30dcfe9b0835f5fc5613752a45d3d492
Author: Daniel Stuš <stusd@students.zcu.cz>
Date:   Wed May 29 12:03:36 2019 +0200

    Opraveny drobné odchylky od vzorových souborů v logice generovaní bitmap. (Re #7535)

diff --git a/JDF/SeznamLinek.txt b/JDF/SeznamLinek.txt
index b991aab..70c1696 100644
--- a/JDF/SeznamLinek.txt
+++ b/JDF/SeznamLinek.txt
@@ -2,4 +2,5 @@
 000010
 000020
 000048
+000030
 000371
\ No newline at end of file
diff --git a/src/data/Bitmap.java b/src/data/Bitmap.java
index ef0871a..fe8888f 100644
--- a/src/data/Bitmap.java
+++ b/src/data/Bitmap.java
@@ -477,6 +477,14 @@ public class Bitmap {
         Arrays.fill(this.bitmap, 0);
     }
 
+    /**
+     * Metoda naplní bitmapu (všechny dny) jedničkami
+     */
+    public void fillWithOnes() {
+        Arrays.fill(this.bitmap, 1);
+    }
+
+
     /**
      * Metoda overuje spravnost zadane hodnoty
      * - do bitmapy lze zadat pouze 1 nebo 0
diff --git a/src/data/BitmapBuilder.java b/src/data/BitmapBuilder.java
index 36f5995..fd55116 100644
--- a/src/data/BitmapBuilder.java
+++ b/src/data/BitmapBuilder.java
@@ -348,43 +348,49 @@ public class BitmapBuilder {
                 window.printMessage("- spoj: "+currentJoin);
 
                 Bitmap generatedBitmap = new Bitmap(dateFrom, dateTo, currentLine, currentJoin, currentTimeCode, spoj.hardCodesToString(pevnykod), spoj.getNumberLineVersion());
-                int numberOfTimeCodes = 0; //Počet časových kódu aplikovaných na daný spoj
+                int numberOfTimeCodes = 0; //Počet časových kódu daného spoje
+                int timeCodesInRange = 0; //Počet časových kódu aplikovaných na spoj
 
                 previousTimeCode = "";
 
                 for (JDFCaskodyRecord caskod : caskody) {
-                    currentTimeCode =  caskod.getTimeCode();
+
 
                     // Zda se jedná o aktuálně zkoumanou linku a spoj
                     if (currentLine.equals(caskod.getNumberLine()) && currentJoin.equals(caskod.getNumberJoin())) {
 
+                        currentTimeCode =  caskod.getTimeCode();
+                        generatedBitmap.setTimeCode(currentTimeCode);
+                        numberOfTimeCodes++;
+
+                        // Pokud se jedná o stejný spoj, ale jiný časový kód vytvoř novou bitmapu a přidej předchozí
+                        if (!currentTimeCode.equals(previousTimeCode) && isNumeric(currentTimeCode) && !previousTimeCode.equals("")) {
+                            bitmaps.add(generatedBitmap);
+                            generatedBitmap = new Bitmap(dateFrom, dateTo, currentLine, currentJoin, currentTimeCode, spoj.hardCodesToString(pevnykod), spoj.getNumberLineVersion());
+                        }
 
-                        //Pokud je zkoumaný časový kód v rozsahu bitmapy
-                            if (isInRange(dateFrom, dateTo, caskod.getStartDate(), caskod.getEndDate())) {
 
-                                generatedBitmap.setTimeCode(currentTimeCode);
-                                numberOfTimeCodes++;
-                                hardCodeRange = setHardCodeRange(dateFrom, dateTo, caskod.getStartDate(), caskod.getEndDate());
+                         //Pokud je zkoumaný časový kód v rozsahu bitmapy
+                        if (isInRange(dateFrom, dateTo, caskod.getStartDate(), caskod.getEndDate())) {
+                            timeCodesInRange++;
+                            hardCodeRange = setHardCodeRange(dateFrom, dateTo, caskod.getStartDate(), caskod.getEndDate());
+                            fillBitmap(generatedBitmap, hardCodeRange[0], hardCodeRange[1], Integer.parseInt(caskod.getTypeTimeCode()));
+                        }
 
-                                // Pokud se jedná o stejný spoj, ale jiný časový kód vytvoř novou bitmapu a přidej předchozí
-                                if (!currentTimeCode.equals(previousTimeCode) && isNumeric(currentTimeCode) && !previousTimeCode.equals("")) {
-                                    bitmaps.add(generatedBitmap);
-                                    generatedBitmap = new Bitmap(dateFrom, dateTo, currentLine, currentJoin, currentTimeCode, spoj.hardCodesToString(pevnykod), spoj.getNumberLineVersion());
-                                    fillBitmap(generatedBitmap, hardCodeRange[0], hardCodeRange[1], Integer.parseInt(caskod.getTypeTimeCode()));
-                                }
+                        previousTimeCode = currentTimeCode;
+                    }
+                }
 
-                                else {
-                                    fillBitmap(generatedBitmap, hardCodeRange[0], hardCodeRange[1], Integer.parseInt(caskod.getTypeTimeCode()));
-                                }
 
-                                previousTimeCode = currentTimeCode;
 
-                            }
-                    }
+                //Pokud nemá žádné časové omezení a žádný pevnýkód -> naplň jedničkami
+                if (numberOfTimeCodes == 0 && spoj.getHardCodes().size() == 0) {
+                    generatedBitmap.fillWithOnes();
+                    bitmaps.add(generatedBitmap);
                 }
 
-                //Pokud nemá spoj žádná omezení -> napln bitmapu a přidej
-                if (numberOfTimeCodes == 0) {
+                //Pokud nemá spoj žádná omezení -> napln bitmapu podle pevnych kodu a přidej
+                else if (timeCodesInRange == 0 && spoj.getHardCodes().size() > 0) {
                     generatedBitmap.setHardCodeDays(dateFrom, dateTo, 1);
                     bitmaps.add(generatedBitmap);
                 }
diff --git a/src/data/JDFSpojeRecord.java b/src/data/JDFSpojeRecord.java
index 97096c9..e2c1468 100644
--- a/src/data/JDFSpojeRecord.java
+++ b/src/data/JDFSpojeRecord.java
@@ -142,7 +142,7 @@ public class JDFSpojeRecord implements IProcessable {
                 case hardCodeIndex8:
                 case hardCodeIndex9:
                 case hardCodeIndex10:
-                    if(!dataRecord[index].equals("")) hardCodes.add(dataRecord[index]);
+                    if(!dataRecord[index].equals("") && Integer.parseInt(dataRecord[index])>0 && Integer.parseInt(dataRecord[index])<10) hardCodes.add(dataRecord[index]);
                     break;
                 case numberLineVersionIndex:
                     this.numberLineVersion = dataRecord[index];
