public void UpdateWithExpressionAndAnalyzerSuccess() { Analyzer analyzer = new KeywordAnalyzer(); const int NumObjects = 10; WriteTestObjects(NumObjects, o => o.ToDocument(), analyzer); TestObject t = new TestObject() { Number = 1234, String = "Test Object 1234", }; Assert.AreEqual(NumObjects, writer.NumDocs); writer.Add(t, analyzer); writer.Commit(); Assert.AreEqual(NumObjects + 1, writer.NumDocs); TestObject t2 = new TestObject() { Number = 2345, String = "Something Else 2345", }; writer.Update(t2, MappingSettings.Default, o => o.String == "Test Object 1234", analyzer); writer.Commit(); Assert.AreEqual(NumObjects + 1, writer.NumDocs); using (DirectoryReader reader = DirectoryReader.Open(dir)) { IndexSearcher searcher = new IndexSearcher(reader); // Verify that the updated item can be found. TestObject t3 = searcher.AsQueryable <TestObject>().Single(o => o.Number == 2345); Assert.AreEqual(t2.Number, t3.Number); Assert.AreEqual(t2.String, t3.String); // Verify that the old item cannot be found anymore. TestObject t4 = searcher.AsQueryable <TestObject>().SingleOrDefault(o => o.Number == 1234); Assert.IsNull(t4); // Verify that all other items remain untouched. TestObject[] others = (from o in searcher.AsQueryable <TestObject>() where o.Number != 2345 select o).ToArray(); Assert.IsNotNull(others); Assert.AreEqual(NumObjects, others.Length); foreach (TestObject o in others) { Assert.AreNotEqual(t2.Number, o.Number); Assert.AreNotEqual(t2.String, o.String); } } }
public void QueryOnDictionary() { const int NumObjects = 10; Write(NumObjects); Assert.AreEqual(NumObjects, writer.MaxDoc); using (DirectoryReader reader = DirectoryReader.Open(dir)) { IndexSearcher searcher = new IndexSearcher(reader); IQueryable <ObjectWithDict> query = from o in searcher.AsQueryable <ObjectWithDict>() where o.StringMap["ItemD"].Text == "d" orderby o.Id descending select o; Assert.AreEqual(NumObjects, query.Count()); ObjectWithDict[] results = query.ToArray(); for (int i = 0; i < NumObjects; i++) { Assert.AreEqual(NumObjects - 1 - i, results[i].Id); } query = from o in searcher.AsQueryable <ObjectWithDict>() where o.StringMap["ItemD"].Index == 4 && o.StringMap["ItemF"].Text != "a" orderby o.Id select o; Assert.AreEqual(NumObjects, query.Count()); results = query.ToArray(); for (int i = 0; i < NumObjects; i++) { Assert.AreEqual(i, results[i].Id); } } }
public ReturnModel <DashboardSummary> GetDashboardSummary() { try { var result = new DashboardSummary(); using (var reader = GetNewAppReader()) { var searcher = new IndexSearcher(reader); var appLog = searcher.AsQueryable <AppLog>().Where(x => x.LogType == (int)StoredLogType.AppLog); result.ErrorAppLogCount = appLog.AsQueryable <AppLog>().Where(x => x.Severity == "ERROR").Count(); result.ErrorSqlAppLogCount = appLog.AsQueryable <AppLog>().Where(x => x.Severity == "SqlError").Count(); result.WarningAppLogCount = appLog.AsQueryable <AppLog>().Where(x => x.Severity == "WARN").Count(); result.TotalAppLogCount = appLog.AsQueryable <AppLog>().Count(); result.LastestAppLogs = appLog.AsQueryable <AppLog>().OrderByDescending(x => x.Longdate).Take(20).ToList(); result.LastestErrorAppLogs = appLog.AsQueryable <AppLog>().Where(x => x.Severity == "ERROR").OrderByDescending(x => x.Longdate).Take(20).ToList(); var perfLog = searcher.AsQueryable <AppLog>().Where(x => x.LogType == (int)StoredLogType.PerfLog); var errorLst = perfLog.AsQueryable <AppLog>().Where(x => x.PerfStatus == "ERROR"); var allLst = perfLog.AsQueryable <AppLog>(); result.ErrorPerformanceLogCount = errorLst.AsQueryable().Count(); result.TotalPerformanceLogCount = allLst.AsQueryable().Count(); result.LastestPerformanceLogs = allLst.AsQueryable().OrderByDescending(x => x.Longdate).Take(20).ToList(); result.LastestErrorPerformanceLogs = errorLst.AsQueryable().OrderByDescending(x => x.Longdate).Take(20).ToList(); } return(new ReturnModel <DashboardSummary>(result)); } catch (Exception ex) { log.Error(ex, "Error when getting Dashboard Summary"); return(new ReturnModel <DashboardSummary>(ex)); } }
public ReturnListWithSearchModel <PerfLog, PerformanceLogSearchCriteria> GetPerformanceLogs(PerformanceLogSearchCriteria search) { try { using (var reader = GetNewAppReader()) { var searcher = new IndexSearcher(reader); var lst = searcher.AsQueryable <AppLog>(); if (search.FromDate.IsValidDate() && search.ToDate.IsValidDate()) { if (search.FromDate.Value <= search.ToDate.Value) { lst = lst.Where(x => x.Longdate >= search.FromDate.Value.StartOfDay() && x.Longdate <= search.ToDate.Value.EndOfDay()); } } else if (search.FromDate.IsValidDate()) { lst = lst.Where(x => x.Longdate >= search.FromDate.Value.StartOfDay()); } else if (search.ToDate.IsValidDate()) { lst = lst.Where(x => x.Longdate <= search.ToDate.Value.EndOfDay()); } lst = lst.OrderByDescending(x => x.Longdate); var totalRows = lst.AsQueryable().Count(); search.TotalRowCount = totalRows; var resultList = lst.ApplyPaging(search.Page, search.PageSize).ToList(); search.CurrentRows = resultList.Count; return(new ReturnListWithSearchModel <PerfLog, PerformanceLogSearchCriteria>(search, resultList.ToPerfLogs(), totalRows)); } } catch (Exception ex) { log.Error(ex, "Error when getting Performance Log list "); search.TotalRowCount = 0; search.CurrentRows = 0; return(new ReturnListWithSearchModel <PerfLog, PerformanceLogSearchCriteria>(search, "Error when getting Performance Log list ", ex)); } }
protected ReturnListWithSearchModel <string, BaseSearchCriteria> GetDistinctColumns(StoredLogType logType, BaseSearchCriteria search, Expression <Func <AppLog, string> > selector, string columnType) { try { using (var reader = GetNewAppReader()) { var searcher = new IndexSearcher(reader); var lst = searcher.AsQueryable <AppLog>().Select(selector).Distinct(); var totalRows = lst.AsQueryable().Count(); search.TotalRowCount = totalRows; var resultList = lst.ApplyPaging(search.Page, search.PageSize).ToList(); search.CurrentRows = resultList.Count; return(new ReturnListWithSearchModel <string, BaseSearchCriteria>(search, resultList, totalRows)); } } catch (Exception ex) { log.Error(ex, $"Error when getting {columnType} list "); search.TotalRowCount = 0; search.CurrentRows = 0; return(new ReturnListWithSearchModel <string, BaseSearchCriteria>(search, $"Error when getting {columnType} list ", ex)); } }
//API for getting logs public ReturnListWithSearchModel <AppLog, AppLogSearchCriteria> GetAppLogs(AppLogSearchCriteria search) { try { using (var reader = GetNewAppReader()) { var searcher = new IndexSearcher(reader); var lst = searcher.AsQueryable <AppLog>(); if (search.FromDate.IsValidDate() && search.ToDate.IsValidDate()) { if (search.FromDate.Value <= search.ToDate.Value) { lst = lst.Where(x => x.Longdate >= search.FromDate.Value.StartOfDay() && x.Longdate <= search.ToDate.Value.EndOfDay()); } } else if (search.FromDate.IsValidDate()) { lst = lst.Where(x => x.Longdate >= search.FromDate.Value.StartOfDay()); } else if (search.ToDate.IsValidDate()) { lst = lst.Where(x => x.Longdate <= search.ToDate.Value.EndOfDay()); } if (search.Severity != null) { lst = lst.Where(x => x.Severity == search.Severity); } if (search.SortBy == "AppLogId") { lst = search.SortAscending ? lst.OrderBy(x => x.LogId) : lst.OrderByDescending(x => x.LogId); } else if (search.SortBy == "LogType") { lst = search.SortAscending ? lst.OrderBy(x => x.LogType) : lst.OrderByDescending(x => x.LogType); } else if (search.SortBy == "CorelationId") { lst = search.SortAscending ? lst.OrderBy(x => x.CorelationId) : lst.OrderByDescending(x => x.CorelationId); } else if (search.SortBy == "FunctionId") { lst = search.SortAscending ? lst.OrderBy(x => x.FunctionId) : lst.OrderByDescending(x => x.FunctionId); } else if (search.SortBy == "Severity") { lst = search.SortAscending ? lst.OrderBy(x => x.Severity) : lst.OrderByDescending(x => x.Severity); } else if (search.SortBy == "App") { lst = search.SortAscending ? lst.OrderBy(x => x.App) : lst.OrderByDescending(x => x.App); } else if (search.SortBy == "MachineName") { lst = search.SortAscending ? lst.OrderBy(x => x.MachineName) : lst.OrderByDescending(x => x.MachineName); } else if (search.SortBy == "ProcessId") { lst = search.SortAscending ? lst.OrderBy(x => x.ProcessId) : lst.OrderByDescending(x => x.ProcessId); } else if (search.SortBy == "ThreadId") { lst = search.SortAscending ? lst.OrderBy(x => x.ThreadId) : lst.OrderByDescending(x => x.ThreadId); } else if (search.SortBy == "CurrentFunction") { lst = search.SortAscending ? lst.OrderBy(x => x.CurrentFunction) : lst.OrderByDescending(x => x.CurrentFunction); } else if (search.SortBy == "CurrentSourceFilename") { lst = search.SortAscending ? lst.OrderBy(x => x.CurrentSourceFilename) : lst.OrderByDescending(x => x.CurrentSourceFilename); } else if (search.SortBy == "CurrentSourceLineNumber") { lst = search.SortAscending ? lst.OrderBy(x => x.CurrentSourceLineNumber) : lst.OrderByDescending(x => x.CurrentSourceLineNumber); } else if (search.SortBy == "UserIdentity") { lst = search.SortAscending ? lst.OrderBy(x => x.UserIdentity) : lst.OrderByDescending(x => x.UserIdentity); } else if (search.SortBy == "RemoteAddress") { lst = search.SortAscending ? lst.OrderBy(x => x.RemoteAddress) : lst.OrderByDescending(x => x.RemoteAddress); } else if (search.SortBy == "UserAgent") { lst = search.SortAscending ? lst.OrderBy(x => x.UserAgent) : lst.OrderByDescending(x => x.UserAgent); } else if (search.SortBy == "Result") { lst = search.SortAscending ? lst.OrderBy(x => x.Result) : lst.OrderByDescending(x => x.Result); } else if (search.SortBy == "ResultCode") { lst = search.SortAscending ? lst.OrderBy(x => x.ResultCode) : lst.OrderByDescending(x => x.ResultCode); } else if (search.SortBy == "Message") { lst = search.SortAscending ? lst.OrderBy(x => x.Message) : lst.OrderByDescending(x => x.Message); } else if (search.SortBy == "PerfModule") { lst = search.SortAscending ? lst.OrderBy(x => x.PerfModule) : lst.OrderByDescending(x => x.PerfModule); } else if (search.SortBy == "PerfFunctionName") { lst = search.SortAscending ? lst.OrderBy(x => x.PerfFunctionName) : lst.OrderByDescending(x => x.PerfFunctionName); } else if (search.SortBy == "StartTime") { lst = search.SortAscending ? lst.OrderBy(x => x.StartTime) : lst.OrderByDescending(x => x.StartTime); } else if (search.SortBy == "ElapsedTime") { lst = search.SortAscending ? lst.OrderBy(x => x.ElapsedTime) : lst.OrderByDescending(x => x.ElapsedTime); } else if (search.SortBy == "PerfStatus") { lst = search.SortAscending ? lst.OrderBy(x => x.PerfStatus) : lst.OrderByDescending(x => x.PerfStatus); } else if (search.SortBy == "Request") { lst = search.SortAscending ? lst.OrderBy(x => x.Request) : lst.OrderByDescending(x => x.Request); } else if (search.SortBy == "Response") { lst = search.SortAscending ? lst.OrderBy(x => x.Response) : lst.OrderByDescending(x => x.Response); } else { lst = search.SortAscending ? lst.OrderBy(x => x.LongdateAsTicks) : lst.OrderByDescending(x => x.LongdateAsTicks); } var totalRows = lst.AsQueryable().Count(); search.TotalRowCount = totalRows; var resultList = lst.ApplyPaging(search.Page, search.PageSize).ToList(); search.CurrentRows = resultList.Count; return(new ReturnListWithSearchModel <AppLog, AppLogSearchCriteria>(search, resultList, totalRows)); } } catch (Exception ex) { log.Error(ex, "Error when getting App Log List "); search.TotalRowCount = 0; search.CurrentRows = 0; return(new ReturnListWithSearchModel <AppLog, AppLogSearchCriteria>(search, ex)); } }