/// <summary> /// Parse query result for two values. /// </summary> /// <param name="scriptInstance">script reference</param> /// <param name="attributeNames">attribute</param> /// <param name="queryOutput">Output</param> private static void DualValueHandler (WindowsOracleInstanceLMSRawDataDetailsScript scriptInstance, String attributeName, String queryOutput) { string dbRole = null; string collectDate = null; StringBuilder logData = new StringBuilder(); string output = ExtractQueryOutput(attributeName, queryOutput); // // Never compile a regular expression is not assigned to // a static reference. Otherwise you will leak an Assembly. Regex r = new Regex(@"<BDNA>lmsDBRole<BDNA>(.*?)<BDNA>lmsInstallDate<BDNA>(.*?)<BDNA>"); foreach (String line in output.Split((new char[] { '\n', '\r' }), StringSplitOptions.RemoveEmptyEntries)) { Match match = r.Match(line); if (match.Length > 1) { dbRole = match.Groups[1].ToString(); collectDate = match.Groups[2].ToString(); logData.AppendFormat("lmsDBRole: {0}, lmsInstallDate: {1}\n", dbRole, collectDate); break; } else if (no_row_selected_pattern.IsMatch(line)) { string value = matchFirstGroup(line, no_row_selected_pattern); logData.AppendLine("No rows selected."); break; } else if (ora_error_pattern.IsMatch(line)) { string value = matchFirstGroup(line, ora_error_pattern); logData.AppendLine("Oracle error.."); } } Lib.Logger.TraceEvent(TraceEventType.Verbose, 0, "Task Id {0}: Parse query results for attribute {1}:\n{2}", scriptInstance.m_taskId, attributeName, logData.ToString()); if (!String.IsNullOrEmpty(dbRole)) { scriptInstance.SaveCollectedData("lmsDBRole", dbRole); } if (!String.IsNullOrEmpty(collectDate)) { scriptInstance.SaveCollectedData("lmsInstallDate", collectDate); } }
/// <summary> /// Parse query result for Banner value. /// </summary> /// <param name="scriptInstance">script reference</param> /// <param name="attributeNames">attribute</param> /// <param name="queryOutput">Output</param> private static void BannerValueHandler (WindowsOracleInstanceLMSRawDataDetailsScript scriptInstance, String attributeName, String queryOutput) { StringBuilder result = new StringBuilder(); StringBuilder logData = new StringBuilder(); string output = ExtractQueryOutput(attributeName, queryOutput); // // Never compile a regular expression is not assigned to // a static reference. Otherwise you will leak an Assembly. Regex r = new Regex(@"<BDNA=>(.*?)<=BDNA>"); foreach (String line in output.Split((new char[] { '\n', '\r' }), StringSplitOptions.RemoveEmptyEntries)) { if (!line.Contains(@"BANNER")) { Match match = r.Match(line); if (match.Length > 1) { result.Append(match.Groups[1].ToString()).Append(@"\n"); logData.AppendFormat("{0}: {1}\n", attributeName, result.ToString()); } else if (no_row_selected_pattern.IsMatch(line)) { result.Append(matchFirstGroup(line, no_row_selected_pattern)); logData.AppendLine("No rows selected."); break; } else if (ora_error_pattern.IsMatch(line)) { result.Append(matchFirstGroup(line, ora_error_pattern)); logData.AppendLine("Oracle error.."); } } } Lib.Logger.TraceEvent(TraceEventType.Verbose, 0, "Task Id {0}: Parse query results for attribute {1}:\n{2}", scriptInstance.m_taskId, attributeName, logData.ToString()); if (result.Length > 0) { scriptInstance.SaveCollectedData(attributeName, result.ToString()); } }