示例#1
0
        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);
                }
            }
        }
示例#3
0
        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));
            }
        }
示例#4
0
        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));
            }
        }
示例#5
0
 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));
     }
 }
示例#6
0
        //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));
            }
        }