public LogFrame() { InitializeComponent(); Logger = LogManager.GetLogger(Settings.Default.ApplicationLogger); TestAppender = (StringAppender)LogManager.GetRepository().GetAppenders().First(appender => appender.Name.Equals("StringLoggerTest")); TestAppender.OnAppend += UpdateTextBox; }
public void SetUp() { stringAppender = new StringAppender { Layout = new PatternLayout("%level - %message") }; BasicConfigurator.Configure(stringAppender); log = LogManager.GetLogger(typeof (GettingStarted)); log.Should().Not.Be.Null(); }
public void NamedPatternConverterWithPrecision2ShouldStripLessLeadingStuffIfPresent() { StringAppender stringAppender = new StringAppender(); PatternLayout layout = NewPatternLayout(); layout.AddConverter("message-as-name", typeof(MessageAsNamePatternConverter)); layout.ConversionPattern = "%message-as-name{2}"; layout.ActivateOptions(); stringAppender.Layout = layout; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestAddingCustomPattern"); log1.Info("NoDots"); Assert.AreEqual("NoDots", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("One.Dot"); Assert.AreEqual("One.Dot", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("Tw.o.Dots"); Assert.AreEqual("o.Dots", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("TrailingDot."); Assert.AreEqual("TrailingDot.", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info(".LeadingDot"); Assert.AreEqual("LeadingDot", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); // empty string and other evil combinations as tests for of-by-one mistakes in index calculations log1.Info(string.Empty); Assert.AreEqual(string.Empty, stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("x"); Assert.AreEqual("x", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("."); Assert.AreEqual(".", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); }
public void TestBackgroundThreadContextProperty() { StringAppender stringAppender = new StringAppender { Layout = new PatternLayout("%property{DateTimeTodayToString}") }; ILoggerRepository rep = LogManager.CreateRepository(TestBackgroundThreadContextPropertyRepository = "TestBackgroundThreadContextPropertyRepository" + Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); Thread thread = new Thread(new ThreadStart(ExecuteBackgroundThread)); thread.Start(); Thread.CurrentThread.Join(2000); }
public void TestStackTracePattern() { StringAppender stringAppender = new StringAppender { Layout = NewPatternLayout("%stacktrace{2}") }; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestStackTracePattern"); log1.Info("TestMessage"); StringAssert.EndsWith("PatternLayoutTest.TestStackTracePattern", stringAppender.GetString(), "stack trace value set"); stringAppender.Reset(); }
public void PatternLayoutConverterProperties() { XmlDocument log4netConfig = new XmlDocument(); log4netConfig.LoadXml(@" <log4net> <appender name=""StringAppender"" type=""UnitTestProject1.Appender.StringAppender, UnitTestProject1""> <layout type=""log4net.Layout.PatternLayout""> <converter> <name value=""propertyKeyCount"" /> <type value=""UnitTestProject1.Util.PropertyKeyCountPatternLayoutConverter, UnitTestProject1"" /> <property> <key value=""one-plus-one"" /> <value value=""2"" /> </property> <property> <key value=""two-plus-two"" /> <value value=""4"" /> </property> </converter> <conversionPattern value=""%propertyKeyCount"" /> </layout> </appender> <root> <level value=""ALL"" /> <appender-ref ref=""StringAppender"" /> </root> </log4net>"); ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); XmlConfigurator.Configure(rep, log4netConfig["log4net"]); ILog log = LogManager.GetLogger(rep.Name, "PatternLayoutConverterProperties"); log.Debug("Message"); PropertyKeyCountPatternLayoutConverter converter = PropertyKeyCountPatternLayoutConverter.MostRecentInstance; Assert.AreEqual(2, converter.Properties.Count); Assert.AreEqual("4", converter.Properties["two-plus-two"]); StringAppender appender = (StringAppender)LogManager.GetRepository(rep.Name).GetAppenders()[0]; Assert.AreEqual("2", appender.GetString()); }
public void ThreadTimestampVerbosityTest() { var appender = new StringAppender(); using (var runner = new LogRunner(new PatternLogFormatter("{THREAD} {VERBOSITY} {TIMESTAMP:yyyy-MM-dd HH:mm:ss.fff} {MESSAGE}"))) { runner.AddAppender(appender); var logger = new Logger(runner, "nunit", () => { return(DateTime.Parse("2019-01-02 23:24:25.876")); }); logger.Debug("Message {0}", 1); logger.Debug(1, "Message {0}", 2); } Assert.AreEqual(2, appender.Logs.Count); Assert.AreEqual(Thread.CurrentThread.Name + " 0 2019-01-02 23:24:25.876 Message 1", appender.Logs[0].Line); Assert.AreEqual(Thread.CurrentThread.Name + " 1 2019-01-02 23:24:25.876 Message 2", appender.Logs[1].Line); }
public void BracketsInStackTracesAreEscapedProperly() { XmlLayout layout = new XmlLayout(); StringAppender stringAppender = new StringAppender { Layout = layout }; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestLogger"); Action <int> bar = foo => { try { throw new NullReferenceException(); } catch (Exception ex) { log1.Error(string.Format("Error {0}", foo), ex); } }; bar(42); var log = stringAppender.GetString(); #if NETSTANDARD1_3 var startOfExceptionText = log.IndexOf("<exception>", StringComparison.Ordinal) + 11; var endOfExceptionText = log.IndexOf("</exception>", StringComparison.Ordinal); #else var startOfExceptionText = log.IndexOf("<exception>", StringComparison.InvariantCulture) + 11; var endOfExceptionText = log.IndexOf("</exception>", StringComparison.InvariantCulture); #endif var sub = log.Substring(startOfExceptionText, endOfExceptionText - startOfExceptionText); if (sub.StartsWith("<![CDATA[")) { StringAssert.EndsWith("]]>", sub); } else { StringAssert.DoesNotContain("<", sub); StringAssert.DoesNotContain(">", sub); } }
public async Task TestLogicalThreadPropertiesPatternAsyncAwait() { StringAppender stringAppender = new StringAppender { Layout = new PatternLayout("%property{" + Utils.PROPERTY_KEY + "}") }; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestLogicalThreadPropertiesPattern"); log1.Info("TestMessage"); Assert.AreEqual(SystemInfo.NullText, stringAppender.GetString(), "Test no logical thread stack value set"); stringAppender.Reset(); string testValueForCurrentContext = "Outer"; LogicalThreadContext.Properties[Utils.PROPERTY_KEY] = testValueForCurrentContext; log1.Info("TestMessage"); Assert.AreEqual(testValueForCurrentContext, stringAppender.GetString(), "Test logical thread properties value set"); stringAppender.Reset(); var strings = await Task.WhenAll(Enumerable.Range(0, 10).Select(x => SomeWorkProperties(x.ToString()))); // strings should be ["00AA0BB0", "01AA1BB1", "02AA2BB2", ...] for (int i = 0; i < strings.Length; i++) { Assert.AreEqual(string.Format("{0}{1}AA{1}BB{1}", testValueForCurrentContext, i), strings[i], "Test logical thread properties expected sequence"); } log1.Info("TestMessage"); Assert.AreEqual(testValueForCurrentContext, stringAppender.GetString(), "Test logical thread properties value set"); stringAppender.Reset(); LogicalThreadContext.Properties.Remove(Utils.PROPERTY_KEY); log1.Info("TestMessage"); Assert.AreEqual(SystemInfo.NullText, stringAppender.GetString(), "Test logical thread properties value removed"); stringAppender.Reset(); }
public void TestStackTracePattern() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = new PatternLayout("%stacktrace{2}"); ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestStackTracePattern"); log1.Info("TestMessage"); #if !MONO Assert.AreEqual("RuntimeMethodHandle._InvokeMethodFast > PatternLayoutTest.TestStackTracePattern", stringAppender.GetString(), "stack trace value set"); #else Assert.AreEqual("MonoMethod.InternalInvoke > PatternLayoutTest.TestStackTracePattern", stringAppender.GetString(), "stack trace value set"); #endif stringAppender.Reset(); }
public void TestAddingCustomPattern() { var stringAppender = new StringAppender(); var layout = new PatternLayout(); layout.AddConverter("TestAddingCustomPattern", typeof(TestMessagePatternConverter)); layout.ConversionPattern = "%TestAddingCustomPattern"; layout.ActivateOptions(); stringAppender.Layout = layout; var rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); var log1 = LogManager.GetLogger(rep.Name, "TestAddingCustomPattern"); log1.Info("TestMessage"); Assert.AreEqual("TestMessage", stringAppender.GetString(), "%TestAddingCustomPattern not registered"); }
public void TestExceptionPattern() { StringAppender stringAppender = new StringAppender(); PatternLayout layout = new PatternLayout("%exception{stacktrace}"); stringAppender.Layout = layout; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestExceptionPattern"); Exception exception = new Exception("Oh no!"); log1.Info("TestMessage", exception); Assert.AreEqual(SystemInfo.NullText, stringAppender.GetString()); stringAppender.Reset(); }
[Test] public void TestPropertyCharacterEscaping() { LoggingEventData evt = createBaseEvent(); evt.Properties["Property1"] = "prop1 \"quoted\""; XmlLayout layout = new XmlLayout(); StringAppender stringAppender = new StringAppender(); stringAppender.Layout = layout; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestThreadProperiesPattern"); log1.Logger.Log(new LoggingEvent(evt)); string expected = createEventNode("Property1", "prop1 "quoted""); Assert.AreEqual(expected, stringAppender.GetString()); }
[Test] public void TestPropertyIllegalCharacterMaskingInName() { LoggingEventData evt = createBaseEvent(); evt.Properties["Property\uFFFF"] = "mask this ->\uFFFF"; XmlLayout layout = new XmlLayout(); StringAppender stringAppender = new StringAppender(); stringAppender.Layout = layout; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestThreadProperiesPattern"); log1.Logger.Log(new LoggingEvent(evt)); string expected = createEventNode("Property?", "mask this ->?"); Assert.AreEqual(expected, stringAppender.GetString()); }
private void CreateScript() { TargetDir = TargetDir.EnsureDirEnd(); var appender = new StringAppender(); var successfulSettings = new List <YuScriptCreateSetting>(); foreach (var setting in ScriptCreateSettings) { if (string.IsNullOrEmpty(setting.ScriptId)) { //YuEditorAPIInvoker.DisplayTip("脚本名不能为空!"); return; } var scriptPath = TargetDir + setting.ScriptId + ".cs"; if (File.Exists(scriptPath)) { Debug.Log($"目标脚本{scriptPath}已存在,创建取消!"); continue; } AppendNoteHead(appender, setting); AppendBody(appender, setting); var content = appender.ToString(); IOUtility.WriteAllText(scriptPath, content); appender.Clean(); successfulSettings.Add(setting); } foreach (var setting in successfulSettings) { ScriptCreateSettings.Remove(setting); } AssetDatabase.Refresh(); }
public async Task TestLogicalThreadStackPatternAsyncAwait() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = new PatternLayout("%property{" + Utils.PROPERTY_KEY + "}"); ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestLogicalThreadStackPattern"); log1.Info("TestMessage"); Assert.AreEqual(SystemInfo.NullText, stringAppender.GetString(), "Test no logical thread stack value set"); stringAppender.Reset(); string testValueForCurrentContext = "Outer"; string[] strings = null; using (LogicalThreadContext.Stacks[Utils.PROPERTY_KEY].Push(testValueForCurrentContext)) { log1.Info("TestMessage"); Assert.AreEqual(testValueForCurrentContext, stringAppender.GetString(), "Test logical thread stack value set"); stringAppender.Reset(); strings = await Task.WhenAll(Enumerable.Range(0, 10).Select(x => SomeWorkStack(x.ToString()))); } // strings should be ["Outer 0 AOuter 0 AOuter 0Outer 0 BOuter 0 B Outer 0", ...] for (int i = 0; i < strings.Length; i++) { Assert.AreEqual(string.Format("{0} {1} A{0} {1} A{0} {1}{0} {1} B{0} {1} B{0} {1}", testValueForCurrentContext, i), strings[i], "Test logical thread properties expected sequence"); } log1.Info("TestMessage"); Assert.AreEqual(SystemInfo.NullText, stringAppender.GetString(), "Test logical thread properties value removed"); stringAppender.Reset(); }
public void TestFilterCustomException() { IAppender[] appenders = LogManager.GetRepository(loggerRepository.Name).GetAppenders(); Assert.IsTrue(appenders.Length == 1); IAppender appender = Array.Find(appenders, delegate(IAppender a) { return(a.Name == "MemoryAppender"); }); Assert.IsNotNull(appender); StringAppender stringAppender = appender as StringAppender; Assert.IsNotNull(stringAppender); ILog log1 = LogManager.GetLogger(loggerRepository.Name, "TestFormatString"); Assert.IsNotNull(log1); // *** log1.Info("Testing for ExceptionTypeFilterTestException", new ExceptionTypeFilterTestException()); Assert.AreEqual("Testing for ExceptionTypeFilterTestException", stringAppender.GetString(), "Test ExceptionTypeFilterTestException can be filter."); }
public void TestShutdownAndReconfigure() { // Create unique repository ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); // Create appender and configure repos StringAppender stringAppender = new StringAppender { Layout = new PatternLayout("%m") }; BasicConfigurator.Configure(rep, stringAppender); // Get logger from repos ILog log1 = LogManager.GetLogger(rep.Name, "logger1"); log1.Info("TestMessage1"); Assert.AreEqual("TestMessage1", stringAppender.GetString(), "Test logging configured"); stringAppender.Reset(); rep.Shutdown(); log1.Info("TestMessage2"); Assert.AreEqual("", stringAppender.GetString(), "Test not logging while shutdown"); stringAppender.Reset(); // Create new appender and configure stringAppender = new StringAppender { Layout = new PatternLayout("%m") }; BasicConfigurator.Configure(rep, stringAppender); log1.Info("TestMessage3"); Assert.AreEqual("TestMessage3", stringAppender.GetString(), "Test logging re-configured"); stringAppender.Reset(); }
[Test] public void TestBase64PropertyEventLogging() { LoggingEventData evt = createBaseEvent(); evt.Properties["Property1"] = "prop1"; XmlLayout layout = new XmlLayout(); layout.Base64EncodeProperties = true; StringAppender stringAppender = new StringAppender(); stringAppender.Layout = layout; ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestThreadProperiesPattern"); log1.Logger.Log(new LoggingEvent(evt)); string expected = createEventNode("Property1", "cHJvcDE="); Assert.AreEqual(expected, stringAppender.GetString()); }
public void BasicTest() { var appender = new StringAppender(); using (var runner = new LogRunner(new PatternLogFormatter("{LEVEL} {NAME} {MESSAGE}"))) { runner.AddAppender(appender); var logger = new Logger(runner, "N$AME"); logger.Debug("Message {0}", 1); logger.Info("Message {0}", 2); logger.Warn("Message {0}", 3); logger.Error("Message {0}", 4); logger.Success("Message {0}", 5); } Assert.AreEqual(5, appender.Logs.Count); Assert.AreEqual("DEBUG N$AME Message 1", appender.Logs[0].Line); Assert.AreEqual("INFO N$AME Message 2", appender.Logs[1].Line); Assert.AreEqual("WARN N$AME Message 3", appender.Logs[2].Line); Assert.AreEqual("ERROR N$AME Message 4", appender.Logs[3].Line); Assert.AreEqual("SUCCESS N$AME Message 5", appender.Logs[4].Line); }
private void ButtonGetValues_Click(object sender, RoutedEventArgs e) { if (SelectedGID == null) { return; } List <ModelCode> selectedProperties = new List <ModelCode>(); foreach (var child in Properties.Children) { if (child is CheckBox checkBox) { if (checkBox.IsChecked.Value) { foreach (KeyValuePair <ModelCode, string> keyValuePair in propertiesDesc) { if (keyValuePair.Value.Equals(checkBox.Content)) { selectedProperties.Add(keyValuePair.Key); } } } } } ResourceDescription rd = null; try { rd = tgda.GetValues(SelectedGID.GID, selectedProperties); } catch (Exception ex) { MessageBox.Show(ex.Message, "GetValues", MessageBoxButton.OK, MessageBoxImage.Error); } if (rd != null) { StringBuilder sb = new StringBuilder(); sb.Append("Returned entity" + Environment.NewLine + Environment.NewLine); sb.Append($"Entity with gid: 0x{rd.Id:X16}" + Environment.NewLine); foreach (Property property in rd.Properties) { switch (property.Type) { case PropertyType.Int64: StringAppender.AppendLong(sb, property); break; case PropertyType.Float: StringAppender.AppendFloat(sb, property); break; case PropertyType.String: StringAppender.AppendString(sb, property); break; case PropertyType.Reference: StringAppender.AppendReference(sb, property); break; case PropertyType.ReferenceVector: StringAppender.AppendReferenceVector(sb, property); break; default: sb.Append($"{property.Id}: {property.PropertyValue.LongValue}{Environment.NewLine}"); break; } } Values.Document.Blocks.Clear(); Values.AppendText(sb.ToString()); } }
public async Task <List <long> > GetExtentValues(ModelCode modelCodeType, List <ModelCode> properties, StringBuilder sb) { string message = "Getting extent values method started."; Logger.LogInformation(message); int iteratorId; int resourcesLeft; int numberOfResources = 300; List <long> ids = new List <long>(); StringBuilder tempSb = new StringBuilder(); try { var nmsClient = NetworkModelGdaClient.CreateClient(); if (nmsClient == null) { string errMsg = "NetworkModelGdaClient is null."; Logger.LogWarning(errMsg); throw new NullReferenceException(errMsg); } iteratorId = await nmsClient.GetExtentValues(modelCodeType, properties); resourcesLeft = await nmsClient.IteratorResourcesLeft(iteratorId); while (resourcesLeft > 0) { List <ResourceDescription> rds = await nmsClient.IteratorNext(numberOfResources, iteratorId); for (int i = 0; i < rds.Count; i++) { if (rds[i] == null) { continue; } tempSb.Append($"Entity with gid: 0x{rds[i].Id:X16}" + Environment.NewLine); foreach (Property property in rds[i].Properties) { switch (property.Type) { case PropertyType.Int64: StringAppender.AppendLong(tempSb, property); break; case PropertyType.Float: StringAppender.AppendFloat(tempSb, property); break; case PropertyType.String: StringAppender.AppendString(tempSb, property); break; case PropertyType.Reference: StringAppender.AppendReference(tempSb, property); break; case PropertyType.ReferenceVector: StringAppender.AppendReferenceVector(tempSb, property); break; default: tempSb.Append($"{property.Id}: {property.PropertyValue.LongValue}{Environment.NewLine}"); break; } } ids.Add(rds[i].Id); } resourcesLeft = await nmsClient.IteratorResourcesLeft(iteratorId); } await nmsClient.IteratorClose(iteratorId); message = "Getting extent values method SUCCESSFULLY finished."; Logger.LogInformation(message); } catch (Exception e) { message = string.Format("Getting extent values method failed for {0}.\n\t{1}", modelCodeType, e.Message); Logger.LogError(message); } if (sb != null) { sb.Append(tempSb.ToString()); } return(ids); }
public void TestLogFormatApi_NoInfo() { while (true) { } StringAppender stringAppender = new StringAppender(); stringAppender.Threshold = Level.Warn; stringAppender.Layout = new PatternLayout("%level:%message"); ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, stringAppender); ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Info"); // *** log1.Info("TestMessage"); Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 1"); stringAppender.Reset(); // *** log1.Info("TestMessage", null); Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 2"); stringAppender.Reset(); // *** log1.Info("TestMessage", new Exception("Exception message")); Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 3"); stringAppender.Reset(); // *** log1.InfoFormat("a{0}", "1"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 1 parm"); stringAppender.Reset(); // *** log1.InfoFormat("a{0}b{1}", "1", "2"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 2 parm"); stringAppender.Reset(); // *** log1.InfoFormat("a{0}b{1}c{2}", "1", "2", "3"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 3 parm"); stringAppender.Reset(); // *** log1.InfoFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 5 parms (only 4 used)"); stringAppender.Reset(); // *** log1.InfoFormat(null, "Before {0} After {1}", "Middle", "End"); Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); stringAppender.Reset(); // *** log1.InfoFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); stringAppender.Reset(); }
public List <long> GetExtentValues(ModelCode modelCodeType, List <ModelCode> properties, StringBuilder sb) { string message = "Getting extent values method started."; Logger.LogInfo(message); int iteratorId; int resourcesLeft; int numberOfResources = 300; List <long> ids = new List <long>(); StringBuilder tempSb = new StringBuilder(); try { using (NetworkModelGDAProxy gdaQueryProxy = proxyFactory.CreateProxy <NetworkModelGDAProxy, INetworkModelGDAContract>(EndpointNames.NetworkModelGDAEndpoint)) { if (gdaQueryProxy == null) { string errMsg = "NetworkModelGDAProxy is null."; Logger.LogWarn(errMsg); throw new NullReferenceException(errMsg); } iteratorId = gdaQueryProxy.GetExtentValues(modelCodeType, properties); resourcesLeft = gdaQueryProxy.IteratorResourcesLeft(iteratorId); while (resourcesLeft > 0) { List <ResourceDescription> rds = gdaQueryProxy.IteratorNext(numberOfResources, iteratorId); for (int i = 0; i < rds.Count; i++) { if (rds[i] != null) { tempSb.Append($"Entity with gid: 0x{rds[i].Id:X16}" + Environment.NewLine); foreach (Property property in rds[i].Properties) { switch (property.Type) { case PropertyType.Int64: StringAppender.AppendLong(tempSb, property); break; case PropertyType.Float: StringAppender.AppendFloat(tempSb, property); break; case PropertyType.String: StringAppender.AppendString(tempSb, property); break; case PropertyType.Reference: StringAppender.AppendReference(tempSb, property); break; case PropertyType.ReferenceVector: StringAppender.AppendReferenceVector(tempSb, property); break; default: tempSb.Append($"{property.Id}: {property.PropertyValue.LongValue}{Environment.NewLine}"); break; } } } ids.Add(rds[i].Id); } resourcesLeft = gdaQueryProxy.IteratorResourcesLeft(iteratorId); } gdaQueryProxy.IteratorClose(iteratorId); message = "Getting extent values method successfully finished."; Logger.LogInfo(message); } } catch (Exception e) { message = string.Format("Getting extent values method failed for {0}.\n\t{1}", modelCodeType, e.Message); Logger.LogError(message); } if (sb != null) { sb.Append(tempSb.ToString()); } return(ids); }
public List <long> GetExtentValues(ModelCode modelCodeType, List <ModelCode> properties, StringBuilder sb) { string message = "Getting extent values method started."; CommonTrace.WriteTrace(CommonTrace.TraceError, message); int iteratorId = 0; int resourcesLeft = 0; int numberOfResources = 300; List <long> ids = new List <long>(); StringBuilder tempSb = new StringBuilder(); try { iteratorId = GdaQueryProxy.GetExtentValues(modelCodeType, properties); resourcesLeft = GdaQueryProxy.IteratorResourcesLeft(iteratorId); while (resourcesLeft > 0) { List <ResourceDescription> rds = GdaQueryProxy.IteratorNext(numberOfResources, iteratorId); for (int i = 0; i < rds.Count; i++) { if (rds[i] != null) { tempSb.Append($"Entity with gid: 0x{rds[i].Id:X16}" + Environment.NewLine); foreach (Property property in rds[i].Properties) { switch (property.Type) { case PropertyType.Int64: StringAppender.AppendLong(tempSb, property); break; case PropertyType.Float: StringAppender.AppendFloat(tempSb, property); break; case PropertyType.String: StringAppender.AppendString(tempSb, property); break; case PropertyType.Reference: StringAppender.AppendReference(tempSb, property); break; case PropertyType.ReferenceVector: StringAppender.AppendReferenceVector(tempSb, property); break; default: tempSb.Append($"{property.Id}: {property.PropertyValue.LongValue}{Environment.NewLine}"); break; } } } ids.Add(rds[i].Id); } resourcesLeft = GdaQueryProxy.IteratorResourcesLeft(iteratorId); } GdaQueryProxy.IteratorClose(iteratorId); message = "Getting extent values method successfully finished."; CommonTrace.WriteTrace(CommonTrace.TraceError, message); } catch (Exception e) { message = string.Format("Getting extent values method failed for {0}.\n\t{1}", modelCodeType, e.Message); CommonTrace.WriteTrace(CommonTrace.TraceError, message); } if (sb != null) { sb.Append(tempSb.ToString()); } return(ids); }