public IActionResult GetByFilter([FromQuery] string filter) { string entityAsJson = ""; try { _logger.LogInformation("CPAPI: Get"); // Deserialize the ontology filter OntologyFilter oFilter = new OntologyFilter(); if (filter != null && filter.Length > 0) { _logger.LogDebug("Deserializing ontology filter of length: " + filter.Length); oFilter = JsonConvert.DeserializeObject <OntologyFilter>(filter); } List <POCO.RecordAuthorityFilter> filters = new List <POCO.RecordAuthorityFilter>(); foreach (string of in oFilter.ontology) { string cleanFilterPKey = Utils.CleanTableKey(of); POCO.RecordAuthorityFilter filt = new POCO.RecordAuthorityFilter(cleanFilterPKey, "", ""); //DataFactory.Filter pkFilter = new DataFactory.Filter("PartitionKey", cleanFilterPKey, "eq"); filters.Add(filt); } DataFactory.DataConfig datacfg = Utils.GetDataConfig(); List <POCO.RecordAuthorityFunctionActivityEntry> recordAuthorityEntities = DataFactory.RecordAuthority.GetEntries(datacfg, filters); recordAuthorityEntities.Sort((x, y) => String.Compare(x.Function, y.Function)); entityAsJson = JsonConvert.SerializeObject(recordAuthorityEntities, Formatting.Indented); } catch (Exception ex) { string exceptionMsg = "Record Authority GET By Filter exception: " + ex.Message; //log.Info("Exception occurred extracting text from uploaded file \r\nError: " + ex.Message); if (ex.InnerException != null) { exceptionMsg = exceptionMsg + "[" + ex.InnerException.Message + "]"; } _logger.LogError(exceptionMsg); return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError)); } ObjectResult result = new ObjectResult(entityAsJson); return(result); }
public IActionResult GetByFilter([FromQuery] string filter) { string entityAsJson = ""; try { _logger.LogInformation("CPAPI: Get"); // Deserialize the ontology filter OntologyFilter oFilter = new OntologyFilter(); if (filter != null && filter.Length > 0) { _logger.LogDebug("Deserializing ontology filter of length: " + filter.Length); oFilter = JsonConvert.DeserializeObject <OntologyFilter>(filter); } List <DataFactory.Filter> filters = new List <DataFactory.Filter>(); foreach (string of in oFilter.ontology) { string cleanFilterPKey = Utils.CleanTableKey(of); DataFactory.Filter pkfilt = new DataFactory.Filter("PartitionKey", cleanFilterPKey, "eq"); filters.Add(pkfilt); } //CloudTable table = Utils.GetCloudTable("stlpontology", _logger); //// Create a default query //TableQuery<OntologyEntity> query = new TableQuery<OntologyEntity>(); //if (oFilter.ontology.Count>0) //{ // string combinedFilter = ""; // foreach(string of in oFilter.ontology) // { // string cleanFilterPKey = Utils.CleanTableKey(of); // string pkquery = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, cleanFilterPKey); // if (combinedFilter!="") // { // combinedFilter = TableQuery.CombineFilters(combinedFilter, TableOperators.Or, pkquery); // } // else // { // combinedFilter = pkquery; // } // } // // Create final combined query // query = new TableQuery<OntologyEntity>().Where(combinedFilter); //} //List<OntologyEntity> ontologyEntities = new List<OntologyEntity>(); //TableContinuationToken token = null; //var runningQuery = new TableQuery<OntologyEntity>() //{ // FilterString = query.FilterString, // SelectColumns = query.SelectColumns //}; //do //{ // runningQuery.TakeCount = query.TakeCount - ontologyEntities.Count; // Task<TableQuerySegment<OntologyEntity>> tSeg = table.ExecuteQuerySegmentedAsync<OntologyEntity>(runningQuery, token); // tSeg.Wait(); // token = tSeg.Result.ContinuationToken; // ontologyEntities.AddRange(tSeg.Result); //} while (token != null && (query.TakeCount == null || ontologyEntities.Count < query.TakeCount.Value)); //!ct.IsCancellationRequested && DataFactory.DataConfig datacfg = Utils.GetDataConfig(); List <POCO.Ontology> ontologyEntities = DataFactory.Ontology.GetOntology(datacfg, filters); ontologyEntities.Sort((x, y) => String.Compare(x.Label, y.Label)); entityAsJson = JsonConvert.SerializeObject(ontologyEntities, Formatting.Indented); } catch (Exception ex) { string exceptionMsg = "Ontology GET exception: " + ex.Message; //log.Info("Exception occurred extracting text from uploaded file \r\nError: " + ex.Message); if (ex.InnerException != null) { exceptionMsg = exceptionMsg + "[" + ex.InnerException.Message + "]"; } _logger.LogError(exceptionMsg); return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError)); } ObjectResult result = new ObjectResult(entityAsJson); return(result); }