summaryrefslogtreecommitdiff
path: root/vdv-server/Example452.hs
blob: 41bee9935d7ac1c6e0e2aebb5a5d45adeec4322f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
{-# LANGUAGE OverloadedLists, OverloadedStrings #-}

-- |

module Example452 where
import VDV451 (Latitude(..), Longitude(..), ÖPNVOptions(..), ÖPNVTable(..), öpnvSchnittstellenZip)
import VDV452
import Data.Vector (Vector)
import Data.Time (Day, fromGregorian, getCurrentTime, utctDay)
import Codec.Archive.Zip (Archive, fromArchive)
import qualified Data.ByteString.Lazy as LB


-- TODO: RecHp, MengeFztTyp, OrtHztf, RecUeb, UebFzt, RecUmlauf

-- we only have one of these.
-- TODO: add newtypes for the other relations?
bereich :: BereichNr
bereich = BereichNr 1
livar = LineVariant "itb"

pa1 = OrtNr (OrtRefOrt 10) (SteigNr 1)
fr1 = OrtNr (OrtRefOrt 11) (SteigNr 1)

t993 :: Day -> Vector BasisVerGueltigkeit
t993 day = [ BasisVerGueltigkeit day 1 ]

t485 :: Vector MengeBasisVersionen
t485 = [ MengeBasisVersionen 1 "die eine und einzige version" ]



t998 :: Vector MengeOnrTyp
t998 = [ MengeOnrTyp 1 OnrHaltepunkt "HP" "Haltepunkt" ]

t997 :: Vector MengeOrtTyp
t997 = [ MengeOrtTyp 1 OrtHaltestelle "Haltestelle" ]

t253 :: Vector RecOrt
t253 = [ RecOrt 1 OnrHaltepunkt pa1 "Passau Hbf" 10 8000298 (DHID "de:09262:156:0" (steigNr pa1)) (ortRef pa1) OrtHaltestelle Nothing "PA" "Passau Hbf" Nothing (Just $ Longitude 13.450776) (Just $ Latitude 48.573632) Nothing Nothing
       , RecOrt 1 OnrHaltepunkt fr1 "Freyung Bf" 11 8002094 (DHID "de:09272:4851:0" (steigNr fr1)) (ortRef fr1) OrtHaltestelle Nothing "FR" "Freyung" Nothing (Just $ Longitude 13.548351) (Just $ Latitude 48.802843) Nothing Nothing
       ]

t229 :: Vector RecHp
t229 = [ RecHp 1 OrtHaltestelle pa1 (steigNr pa1) "Passau Hbf"
       , RecHp 1 OrtHaltestelle fr1 (steigNr fr1) "Freyung Bf"]

t293 :: Vector MengeFzgTyp
t293 = [ MengeFzgTyp 1 1 0 0 0 0 80 30 "irgendein Fahrzeug" 1 "dings" Nothing Nothing Nothing ]

-- mögliche anzeigetexte eines DFI
t994 :: Vector RecZnr
t994 = [ RecZnr 1 1 "PA" "Passau Hbf" "Passau Hbf" "Passau Hbf" ""
       , RecZnr 1 2 "FR" "Freyung" "Freyung" "Freyung" ""
       ]

t290 :: Vector MengeTagesart
t290 = [ MengeTagesart 1 1 "normaler Betriebstag"
       , MengeTagesart 1 2 "Sonderfahrt Dezember"]

t348 :: Vector Firmenkalender
t348 = [ Firmenkalender 1 (fromGregorian 2022 12 3) "Sonderfahrt Dezember" 2 ]

t222 :: Vector MengeFgr
t222 = [ MengeFgr 1 1 "gibt nur eine" ]

t332 :: Vector MengeFahrtart
t332 = [ MengeFahrtart 1 Normalfahrt "Normal"]

t333 :: Vector MengeBereich
t333 = [ MengeBereich 1 bereich "bahn" "die ilztalbahn fährt bahn, sonst nix" ]


-- let's just say there's 30km between the stations
t299 :: Vector RecSel
t299 = [ RecSel 1 bereich OnrHaltepunkt pa1 fr1 OrtHaltestelle 30000 ]

-- let's just say there's an hour between the two stations
t282 :: Vector SelFztFeld
t282 = [ SelFztFeld 1 bereich 1 OrtHaltestelle pa1 fr1 OrtHaltestelle 3600 ]

t999 :: Vector OrtHztf
t999 = [ OrtHztf 1 1 OrtHaltestelle pa1 60
       , OrtHztf 1 1 OrtHaltestelle fr1 60
       ]

-- zwei halte für eine fahrt auf linie 13
t246 :: Vector LidVerlauf
t246 = [ LidVerlauf 1 1 56446 livar OrtHaltestelle pa1 1 Nothing 0 True True False False False False
       , LidVerlauf 1 2 56446 livar OrtHaltestelle fr1 2 Nothing 0 True True False False False False]

-- keine ahnung was die routennummer soll, steht jetzt auf 0
t226 :: Vector RecLid
t226 = [ RecLid 1 56446 livar 1 1 bereich "itb" "Ilztalbahn" Normalfahrt Nothing "Ilztalbahn" ]




t715 :: Vector RecFrt
t715 = [ RecFrt 1 1 28800 56446 2 Nothing Normalfahrt 1 livar Nothing 56446 False False "P 56446" 0 ]


mkArchive :: IO Archive
mkArchive = do
  time <- getCurrentTime
  let options = ÖPNVOptions
       { öpnvSource = "Datentest"
       , öpnvProgramVersion = "0.0.1"
       , öpnvDataVersion = "test-1"
       }
  pure $ öpnvSchnittstellenZip options time
    [ ÖPNVTable (t993 (utctDay time))
    , ÖPNVTable t485
    , ÖPNVTable t998
    , ÖPNVTable t997
    , ÖPNVTable t253
    , ÖPNVTable t229
    , ÖPNVTable t293
    , ÖPNVTable t994
    , ÖPNVTable t290
    , ÖPNVTable t348
    , ÖPNVTable t222
    , ÖPNVTable t332
    , ÖPNVTable t333
    , ÖPNVTable t299
    , ÖPNVTable t282
    , ÖPNVTable t999
    , ÖPNVTable t246
    , ÖPNVTable t226
    , ÖPNVTable t715
    ]

writeArchive :: IO ()
writeArchive = do
  archive <- mkArchive
  LB.writeFile "example.zip" (fromArchive archive)