// var datasets = HlidacStatu.Lib.Data.External.DataSets.DataSetDB.Instance.SearchDataRaw("*", 1, 100) //.Result //.Select(s => Newtonsoft.Json.JsonConvert.DeserializeObject<HlidacStatu.Lib.Data.External.DataSets.Registration>(s.Item2)); private DataSetDB() : base(DataSourcesDbName, false) { if (client == null) { this.client = Lib.ES.Manager.GetESClient(DataSourcesDbName, idxType: ES.Manager.IndexType.DataSource); var ret = client.Indices.Exists(client.ConnectionSettings.DefaultIndex); //todo: es7 check if (!ret.Exists) { Newtonsoft.Json.Schema.Generation.JSchemaGenerator jsonG = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator(); jsonG.DefaultRequired = Newtonsoft.Json.Required.Default; Registration reg = new Registration() { datasetId = DataSourcesDbName, jsonSchema = jsonG.Generate(typeof(Registration)).ToString() }; Lib.ES.Manager.CreateIndex(client); //add record Elasticsearch.Net.PostData pd = Elasticsearch.Net.PostData.String(Newtonsoft.Json.JsonConvert.SerializeObject(reg)); var tres = client.LowLevel.Index <Elasticsearch.Net.StringResponse>(client.ConnectionSettings.DefaultIndex, DataSourcesDbName, pd); if (tres.Success == false) { throw new ApplicationException(tres.DebugInformation); } } } }
public static string Register() { Newtonsoft.Json.Schema.Generation.JSchemaGenerator jsonGen = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator(); jsonGen.DefaultRequired = Newtonsoft.Json.Required.Default; registration.jsonSchema = jsonGen.Generate(typeof(item)); //JSON schema HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add("Authorization", apiToken); var content = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(registration)); var jsonResult = httpClient.PostAsync(apiRoot + "/Datasets", content) .Result.Content .ReadAsStringAsync().Result; var result = JObject.Parse(jsonResult); if (result["error"] == null) { Console.WriteLine("Zaregistrovan dataset " + result["datasetId"].Value <string>()); return(result["datasetId"].Value <string>()); } else { Console.WriteLine("Chyba " + result["error"]["description"]); return(null); } }
/// <summary> /// Returns the json schema of the system tables /// </summary> /// <returns></returns> public static Newtonsoft.Json.Schema.JSchema Schema() { var generator = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator(); var schema = generator.Generate(typeof(DbSchemaConfig)); return(schema); }
public static string Register(string datasetId) { Newtonsoft.Json.Schema.Generation.JSchemaGenerator jsonGen = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator(); jsonGen.DefaultRequired = Newtonsoft.Json.Required.Default; var registration = new { name = "Rozhodnuti UOHS", //povinne, verejne jmeno datasetu datasetId = datasetId, //nepovinne, doporucujeme uvest. Jednoznacny identifikator datasetu v URL a ve volani API origUrl = "http://www.uohs.cz/cs/verejne-zakazky/sbirky-rozhodnuti/", //zdroj dat datasetu jsonSchema = jsonGen.Generate(typeof(UOHSData)), //JSON schema betaversion = true, // pokud true, pak dataset neni videt v seznam datasetu na HlidacStatu.cz/data allowWriteAccess = false, // pokud true, pak data v datasetu muze kdokoliv přepsat nebo smazat. Stejně tak údaje v registraci. // pokud false, pak kdokoliv muze data pridat, ale nemuze je prepsat či smazat orderList = new string[, ] { { "Nabytí právní moci", "PravniMoc" }, { "Účastníci", "Ucastnici.Jmeno" } }, }; HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add("Authorization", apiToken); string jsonResult = httpClient.GetAsync(apiRoot + "/Datasets/" + registration.datasetId) .Result.Content .ReadAsStringAsync().Result; var result = JContainer.Parse(jsonResult); if (result.HasValues == true) //dataset uz existuje { //smazu ho //zde uvedeno jako priklad, jsonResult = httpClient.DeleteAsync(apiRoot + "/Datasets/" + registration.datasetId) .Result.Content .ReadAsStringAsync().Result; } //vytvoreni nove registrace var content = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(registration)); jsonResult = httpClient.PostAsync(apiRoot + "/Datasets", content) .Result.Content .ReadAsStringAsync().Result; result = JObject.Parse(jsonResult); if (result["error"] == null) { Console.WriteLine("Zaregistrovan dataset " + result["datasetId"].Value <string>()); return(result["datasetId"].Value <string>()); } else { Console.WriteLine("Chyba " + result["error"]["description"]); return(null); } }
private static void WriteoutSchema(string path) { // Generate and write out scema for settings var generator = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator(); var schema = generator.Generate(typeof(Models.VSettings)); using (StreamWriter file = File.CreateText(Path.Combine(Path.GetDirectoryName(path), "vsettings.schema.json"))) using (var writer = new Newtonsoft.Json.JsonTextWriter(file)) { schema.WriteTo(writer); } }
private string GenerateSchemaFromCSharpType() { Newtonsoft.Json.Schema.Generation.JSchemaGenerator generator = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator() { DefaultRequired = Required.DisallowNull, }; JSchema schema = generator.Generate(templateType); schema.SchemaVersion = new Uri(SchemaVersionUriString); schema.Title = "Input Template"; schema.Description = "Input Template"; schema.Type = JSchemaType.Object; return(schema.ToString()); }
public ActionResult CreateSimple2(CreateSimpleModel model, FormCollection form) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } var uTmp = new Lib.IO.UploadedTmpFile(); var path = uTmp.GetFullPath(model.FileId.ToString(), model.FileId.ToString() + ".csv"); var pathModels = uTmp.GetFullPath(model.FileId.ToString(), model.FileId.ToString() + ".json"); model.Headers = (form["sheaders"] ?? "").Split('|'); //check Keycolumn List <CreateSimpleModel.Column> cols = new List <CreateSimpleModel.Column>(); int columns = model.Headers.Length; for (int i = 0; i < columns; i++) { string name = model.Headers[i]; if (form[$"include_{i}"] == "1") { cols.Add( new CreateSimpleModel.Column() { Name = name, NiceName = form[$"nicename_{i}"], ValType = form[$"typ_{i}"], ShowSearchFormat = form[$"show_search_{i}"] == "--" ? "string" : form[$"show_search_{i}"], ShowDetailFormat = form[$"show_detail_{i}"] == "--" ? "string" : form[$"show_detail_{i}"], } ); } } if (string.IsNullOrEmpty(model.KeyColumn) && !cols.Any(m => m.Name.ToLower() == "id")) { cols.Add(new CreateSimpleModel.Column() { Name = "id", NiceName = "Id", ValType = "string", ShowSearchFormat = "show", ShowDetailFormat = "hide", }); } model.Columns = cols.ToArray(); model.Save(pathModels); bool addIcoCol = false; Dictionary <string, Type> properties = new Dictionary <string, Type>(); //properties.Add("id", typeof(string)); foreach (var c in model.Columns) { switch (c.ValType) { case "number": properties.Add(c.NormalizedName(), typeof(Nullable <decimal>)); break; case "datetime": properties.Add(c.NormalizedName(), typeof(Nullable <DateTime>)); break; case "url": case "ico": default: properties.Add(c.NormalizedName(), typeof(string)); break; } } if (addIcoCol && !model.Columns.Any(m => m.NormalizedName() == "ico")) { properties.Add("ICO", typeof(string)); } if (!properties.Any(m => m.Key.ToLower() == "id")) { properties.Add("id", typeof(string)); } RuntimeClassBuilder rcb = new RuntimeClassBuilder(properties); var rcbObj = rcb.CreateObject(); Newtonsoft.Json.Schema.Generation.JSchemaGenerator jsonGen = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator(); jsonGen.DefaultRequired = Newtonsoft.Json.Required.Default; var schema = jsonGen.Generate(rcbObj.GetType()); //JSON schema //create registration Registration reg = new Registration(); reg.allowWriteAccess = false; reg.betaversion = true; reg.jsonSchema = schema.ToString(); reg.name = model.Name; reg.NormalizeShortName(); reg.createdBy = email; HlidacStatu.Api.Dataset.Connector.ClassicTemplate.ClassicSearchResultTemplate search = new Api.Dataset.Connector.ClassicTemplate.ClassicSearchResultTemplate(); HlidacStatu.Api.Dataset.Connector.ClassicTemplate.ClassicDetailTemplate detail = new Api.Dataset.Connector.ClassicTemplate.ClassicDetailTemplate(); search.AddColumn("Detail", "<a href=\"{{ fn_DatasetItemUrl item.id }}\">Detail</a>"); foreach (var col in model.Columns) { if (col.NormalizedName().ToLower() != "id") { if (col.ShowSearchFormat == "price") { search.AddColumn(col.NiceName, "{{ fn_FormatPrice item." + col.NormalizedName() + " }}"); } else if (col.ShowSearchFormat == "show") { if (col.ValType == "number") { search.AddColumn(col.NiceName, "{{ fn_FormatNumber item." + col.NormalizedName() + " }}"); } else if (col.ValType == "datetime") { search.AddColumn(col.NiceName, "{{ fn_FormatDate item." + col.NormalizedName() + " }}"); } else if (col.ValType == "ico") { search.AddColumn(col.NiceName, "{{ fn_RenderCompanyWithLink item." + col.NormalizedName() + " }}"); } else if (col.ValType == "url") { search.AddColumn(col.NiceName, "<a href='{{ item." + col.NormalizedName() + " }}' target='_blank'>Odkaz</a>"); } else { search.AddColumn(col.NiceName, "{{ item." + col.NormalizedName() + " }}"); } } } if (col.ShowDetailFormat == "price") { detail.AddColumn(col.NiceName, "{{ fn_FormatPrice item." + col.NormalizedName() + " }}"); } else if (col.ShowDetailFormat == "show") { if (col.ValType == "number") { detail.AddColumn(col.NiceName, "{{ fn_FormatNumber item." + col.NormalizedName() + " }}"); } else if (col.ValType == "datetime") { detail.AddColumn(col.NiceName, "{{ fn_FormatDate item." + col.NormalizedName() + " }}"); } else if (col.ValType == "ico") { detail.AddColumn(col.NiceName, "{{ fn_RenderCompanyWithLink item." + col.NormalizedName() + " }}"); } else if (col.ValType == "url") { detail.AddColumn(col.NiceName, "<a href='{{ item." + col.NormalizedName() + " }}' target='_blank'>Odkaz</a>"); } else { detail.AddColumn(col.NiceName, "{{ item." + col.NormalizedName() + " }}"); } } } reg.detailTemplate = new Registration.Template() { body = detail.Body }; reg.searchResultTemplate = new Registration.Template() { body = search.Body }; if (DataSet.ExistsDataset(reg.datasetId)) { reg.datasetId = reg.datasetId + "-" + Devmasters.TextUtil.GenRandomString(5); } datasetIndexStatCache.Invalidate(); var status = DataSet.Api.Create(reg, email); if (status.valid == false) { if (DataSet.ExistsDataset((status.value?.ToString() ?? ""))) { DataSetDB.Instance.DeleteRegistration(status.value?.ToString(), email); } ViewBag.ApiResponseError = status; return(View(model)); } model.DatasetId = ((DataSet)status.value).DatasetId; model.Save(pathModels); return(RedirectToAction("createSimple3", model)); }