Knihovna pro .NET Framework napsaná ve .NET Standardu 1.6 a .NET Framework 4.6.1 umožňující snadnou práci s Datasety Hlídače státu. Dostupná také jako NuGet balíček.
Pro vytvoření instance konektoru je nutné znát Váš ApiToken
, který lze získat po příhlášení na stránkách Hlídače Státu - API pro vývojáře.
IDatasetConnector datasetConnector = new DatasetConnector(ApiToken);
Jakmile máme instanci vytvořenou, je potřeba definovat vlastní dataset.
Dataset je v knihovně popsaný třídou Dataset.cs, která je generická, protože JSON schema se automaticky generuje na základě generického parametru. Generický parametr musí splňovat podmínku, že implementuje rozhranní IDatasetItem
, který vyžaduje definici parametru Id
. Jednotlivé parametry odpovídají definici datové sady a jejich popis lze nalézt v dokumentaci.
Jelikož definice datasetu se v průběhu práce s ním pravděpodobně měnit nebude, je možné ji mít v programu uloženou např. jako statickou proměnnou
new HlidacStatu.Api.Dataset.Connector.Dataset<Most>(
"Stav Mostů v ČR", "Stav-Mostu", "http://bms.clevera.cz/Public", "Stav mostů v ČR. V tuto chvíli na dálnicích a silnicích I.třídy, které spravuje ŘSD.", "https://github.com/HlidacStatu/Datasety/tree/master/MostyRSD",
false, true,
new string[,] { { "Stav mostů", "Stav" }, { "Poslední kontrola", "PosledniProhlidka" } },
new ClassicTemplate.ClassicSearchResultTemplate()
.AddColumn("Označení", @"<a href=""@(fn_DatasetItemUrl(item.Id))"">@item.Oznaceni</a>")
.AddColumn("Jméno", "@item.Jmeno")
.AddColumn("Stav mostu", "@item.PopisStavu")
.AddColumn("Poslední kontrola", "@fn_FormatDate(item.PosledniProhlidka,\"dd.MM.yyyy\")")
.AddColumn("Mapa", "<a target='blank' href='https://mapy.cz/zakladni?q=@(fn_FormatNumber(item.GPS_Lat,\"en\")),@(fn_FormatNumber(item.GPS_Lng,\"en\"))'>na mapě</a>")
,
new ClassicTemplate.ClassicDetailTemplate()
.AddColumn("Jméno", "@item.Jmeno")
.AddColumn("Místní název", "@item.MistniNazev")
.AddColumn("Poslední kontrola", "@fn_FormatDate(item.PosledniProhlidka,\"dd.MM.yyyy\")")
.AddColumn("Stav mostu", "@item.PopisStavu")
.AddColumn("Spravuje", "@item.SpravaOrganizace, @item.SpravaProvozniUsek, @item.SpravaStredisko")
.AddColumn("Souřadnice", "Lat: @(fn_FormatNumber(item.GPS_Lat,\"en\"))<br/>Long: @(fn_FormatNumber(item.GPS_Lng,\"en\"))")
.AddColumn("Mapa", "<iframe src=\"https://api.mapy.cz/frame?params=%7B%22x%22%3A@(fn_FormatNumber(item.GPS_Lng,\"en\"))%2C%22y%22%3A@(fn_FormatNumber(item.GPS_Lat,\"en\"))%2C%22base%22%3A%221%22%2C%22layers%22%3A%5B%5D%2C%22zoom%22%3A16%2C%22url%22%3A%22https%3A%2F%2Fmapy.cz%2Fs%2F3auci%22%2C%22mark%22%3A%7B%22x%22%3A%22@(fn_FormatNumber(item.GPS_Lng,\"en\"))%22%2C%22y%22%3A%22@(fn_FormatNumber(item.GPS_Lat,\"en\"))%22%2C%22title%22%3A%22Poloha+mostu%22%7D%2C%22overview%22%3Atrue%7D&width=500&height=333&lang=cs\" width=\"500\" height=\"333\" style=\"border:none\" frameBorder=\"0\"></iframe>")
);
kde Most
definuje strukturu datasetu (v tomto případě informace o jednom mostu) a proměnné SearchResultTemplate
a DetailTemplate
definují šablony použité pro vykreslení seznamu výsledků vyhledávání a detailu položky datasetu. Více informací k definici šablony lze nalézt v popisu API - HTML Template.
Pomocná třída a metody v ní ClassicTemplate
pomohou vygenerovat template pro stránku s výsledky hledání a detail.
Vlastnosti datasetId
a generované JsonSchema
se nesmí měnit. Při nutnosti jejich změny je potřeba nejprve starý dataset odstranit a poté vytvořit nový se změněnými hodnotami.
Pro ověření, zda dataset již existuje, slouží metoda DatasetExists
, která jako parametr přijímá definici datasetu a vrací true
, pokud je daný dataset již zaregistrován v Hlídači státu, jinak vrací false
.
var datasetExists = await datasetConnector.DatasetExists(dataset)
Nový dataset se v Hlídači státu vytvoří (zaregistruje) voláním metody RegisterDataset
, která jako parametr přijímá definici datasetu a vrací id datasetu v Hlídači státu (datasetId
není povinná položka a pokud není vyplněna, Hlídač státu ji automaticky odvodí z názvu datasetu, tato hodnota je následně vrácena. Pokud je hodnota datasetId
vyplněna, je použita při registraci a vrácena).
var datasetId = await datasetConnector.CreateDataset(dataset);
Pokud již vytvářený dataset existuje, je vyvolána výjimka DatasetConnectorException
.
Existující dataset lze upravit kromě hodnot datasetId
a JsonSchema
(pro jejich změnu je nutné nejprve dataset smazat a následně vytvořit nový). Úprava datasetu se provede voláním metody UpdateDataset
, která jako parametr přijímá definici datasetu a vrací string Ok
, pokud se dataset podařilo upravit.
var updateResult = await datasetConnector.UpdateDataset(changedDataset);
Pokud upravovaný dataset neexistuje, je vyvolána výjimka DatasetConnectorException
.
Definici datasetu, včetně všech nahraných záznamů, lze odstranit voláním metody DeleteDataset
, která jako parametr přijímá definici datasetu.
await datasetConnector.DeleteDataset(dataset);
Pokud upravovaný dataset neexistuje, je vyvolána výjimka DatasetConnectorException
.
Záznam se do datasetu přidá voláním metody AddItemToDataset
, která jako první parametr přijímá definici datasetu a jako druhý parametr přidávaný záznam. V případě, že záznam na základě Id
v datasetu již existuje, bude nahrazen nově vkládaným záznamem. Návratová hodnota metody je Id
záznamu.
var result = await datasetConnector.AddItemToDataset(dataset, rizeni)