초기 커밋.

This commit is contained in:
2025-02-03 11:02:48 +09:00
parent a7d46f415f
commit fe9aa0799f
2334 changed files with 674826 additions and 0 deletions

View File

@@ -0,0 +1,148 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Text;
using JWH;
using JWH.DATA;
namespace DDUtilityApp.LOGPARSER.DATA
{
public class CompressInformation : DataTableBase
{
public string ExtractPath { get; protected set; }
public string FileName { get; protected set; }
public List<FileInfo> Files { get; set; } = new List<FileInfo>();
public CompressInformation()
{
}
public CompressInformation(string filename)
{
this.FileName = filename;
this.Files.AddRange(this.Decompress(filename).ToArray());
}
private List<FileInfo> Decompress(string srcFile)
{
List<FileInfo> lstFile = new List<FileInfo>();
try
{
string extension = System.IO.Path.GetExtension(srcFile);
if (!Directory.Exists(GlobalVariable.Instance.WorkflowPath)) Directory.CreateDirectory(GlobalVariable.Instance.WorkflowPath);
string destFile = $@"{GlobalVariable.Instance.WorkflowPath}{System.IO.Path.GetFileNameWithoutExtension(srcFile)}";
if (this.Decompress(srcFile, destFile) == false) return lstFile;
string directoryName = $@"{GlobalVariable.Instance.WorkflowPath}{System.IO.Path.GetFileNameWithoutExtension(srcFile)}_{DateTime.Now.ToString("MMddHHmmss")}";
if (!Directory.Exists(directoryName)) Directory.CreateDirectory(directoryName);
this.ExtractPath = directoryName;
FileInfo destFileInfo = new FileInfo(destFile);
using (FileStream readStream = destFileInfo.OpenRead())
{
while (true)
{
// Get Length of FileName
byte[] byteLength = new byte[4];
int nRead = readStream.Read(byteLength, 0, 4);
if (nRead <= 0) break;
int lenFilename = BitConverter.ToInt32(byteLength, 0);
lenFilename *= 2;
// Get FileName
byte[] byteFilename = new byte[lenFilename];
nRead = readStream.Read(byteFilename, 0, lenFilename);
if (nRead <= 0) break;
string filename = Encoding.Unicode.GetString(byteFilename);
// Get Length of File Body
nRead = readStream.Read(byteLength, 0, 4);
if (nRead <= 0) break;
int lenFile = BitConverter.ToInt32(byteLength, 0);
if (lenFile == -1)
{
continue;
}
// Get File Body
byte[] byteFileBody = new byte[lenFile];
nRead = readStream.Read(byteFileBody, 0, lenFile);
if (nRead <= 0) break;
// Write File
using (FileStream writeStream = File.Create($"{directoryName}\\{filename}"))
writeStream.Write(byteFileBody, 0, lenFile);
lstFile.Add(new FileInfo($"{directoryName}\\{filename}"));
}
}
destFileInfo.Delete();
return lstFile;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
return lstFile;
}
}
private void Compress(DirectoryInfo directorySelected)
{
foreach (FileInfo fileToCompress in directorySelected.GetFiles())
{
using (FileStream originalFileStream = fileToCompress.OpenRead())
{
if ((File.GetAttributes(fileToCompress.FullName) &
FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".gz")
{
using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".gz"))
{
using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
{
originalFileStream.CopyTo(compressionStream);
}
}
FileInfo info = new FileInfo(GlobalVariable.Instance.WorkflowPath + Path.DirectorySeparatorChar + fileToCompress.Name + ".gz");
Console.WriteLine($"Compressed {fileToCompress.Name} from {fileToCompress.Length.ToString()} to {info.Length.ToString()} bytes.");
}
}
}
}
private bool Decompress(string srcFile, string destFile)
{
try
{
FileInfo srcFileInfo = new FileInfo(srcFile);
using (FileStream srcStream = srcFileInfo.OpenRead())
{
using (FileStream destStream = File.Create(destFile))
{
using (GZipStream zipStream = new GZipStream(srcStream, CompressionMode.Decompress))
{
zipStream.CopyTo(destStream);
}
}
}
return true;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
return false;
}
}
}
}

View File

@@ -0,0 +1,182 @@
using System;
using System.ComponentModel;
using DDUtilityApp.DATA;
using JWH;
using JWH.DATA;
namespace DDUtilityApp.LOGPARSER.DATA
{
/// <summary>
/// EIS 설비 정보
/// </summary>
public class EisEquipment : DataTableBase
{
/// <summary>LogServer Information</summary>
public LogServer Server { get; set; }
/// <summary>MES.FacilityName</summary>
public string Facility { get; set; }
/// <summary>EIS.Line</summary>
public string Line { get; set; }
/// <summary>MES.ProcessSegmentID</summary>
public string ProcessSegmentID { get; set; }
/// <summary>MES.ProcessSegmentName</summary>
public string ProcessSegmentName { get; set; }
/// <summary>EIS.ModelID</summary>
public string ModelID { get; set; }
/// <summary>MES.Maker</summary>
public string Maker { get; set; }
/// <summary>EIS.ModelVersion (From EIS.EquipmentModelDetails)</summary>
public string ModelVersion { get; set; }
/// <summary>EIS.Version</summary>
public string Version { get; set; }
/// <summary>EIS.RunningVersion</summary>
public string RunningVersion { get; set; }
/// <summary>Empty</summary>
public string CusLibVersion { get; set; }
/// <summary>EIS.EquipmentID</summary>
public string EquipmentID { get; set; }
/// <summary>Name is Select(MES, EIS)</summary>
[ReadOnly(true)]
public string DisplayName
{
get
{
string value = string.Empty;
foreach(string name in this.DisplayNameOrder.Split(';'))
{
value = this.PropertyGet(name);
if (!string.IsNullOrEmpty(value)) break;
}
return value;
}
}
/// <summary>EIS.Description</summary>
public string Description { get; set; }
/// <summary>EIS.GemSettingID (From DriverParameter)</summary>
public string GemSettingID { get; set; }
/// <summary>EIS.DriverFileName (From DriverParameter)</summary>
public string DriverFileName { get; set; }
/// <summary>EIS.EquipmentIP (From DriverParameter)</summary>
public string EquipmentIP { get; set; }
/// <summary>EIS.Port (From DriverParameter)</summary>
public int Port { get; set; }
/// <summary>Empty</summary>
public string ServerName { get; set; }
/// <summary>EIS.ServerIP</summary>
public string ServerIP { get; set; }
/// <summary>EIS.OriginServerIP</summary>
public string OriginServerIP { get; set; }
/// <summary>LogServerIP</summary>
public string LogServerIP { get; set; }
private string m_LogPath = string.Empty;
/// <summary>EIS.LogPath</summary>
public string LogPath
{
get { return this.m_LogPath; }
set { this.m_LogPath = this.SetLogPath(value); }
}
/// <summary>MES.Description</summary>
public string MesName { get; set; }
/// <summary>MES.OperationMode</summary>
public string OperationMode { get; set; }
private string m_ControlMode = string.Empty;
/// <summary>MES.ControlMode</summary>
public string ControlMode
{
get { return this.m_ControlMode; }
set { this.m_ControlMode = value.ToTitleCase(); }
}
private string m_EquipmentState = string.Empty;
/// <summary>MES.EqpState</summary>
public string State
{
get { return this.m_EquipmentState; }
set { this.m_EquipmentState = value.ToTitleCase(); }
}
/// <summary>MES.LastTrackInLotID</summary>
public string LastTrackInLotID { get; set; }
/// <summary>MES.LastTrackOutLotID</summary>
public string LastTrackOutLotID { get; set; }
/// <summary>DisplayName OrderBy</summary>
public string DisplayNameOrder { get; set; } = "MesName;Description;";
/// <summary>MES 기준등록 존재여부</summary>
public bool MesRegistration { get; set; } = true;
/// <summary>MES Daemon</summary>
public string MesDaemon { get; set; }
/// <summary>MES Service</summary>
public string MesService { get; set; }
/// <summary>MES Subject</summary>
public string MesSubject { get; set; }
/// <summary>PLC_TYPE</summary>
public string PlcType { get; set; }
/// <summary>PM Date</summary>
public DateTime PMDate { get; set; }
private string SetLogPath(string value)
{
try
{
if (value.StartsWith(@"\"))
{
string[] values = value.Split(new string[] { @"\" }, StringSplitOptions.RemoveEmptyEntries);
this.LogServerIP = values[0];
}
else
{
if (value.StartsWith("X:"))
this.LogServerIP = "192.168.7.150";
else
this.LogServerIP = this.ServerIP;
}
return value;
}
catch
{
return value;
}
}
}
}

View File

@@ -0,0 +1,41 @@
using System;
using JWH.DATA;
namespace DDUtilityApp.LOGPARSER.DATA
{
public class EisModelDetails : DataTableBase
{
public string ModelID { get; set; }
public string Version { get; set; }
public string Description { get; set; }
public DateTime DateTime { get; set; }
public string Modifier { get; set; }
public string LockState { get; set; }
}
public class EisModelInfo : DataTableBase
{
public string ModelID { get; set; }
public string Maker { get; set; }
public string Model { get; set; }
public string Description { get; set; }
public DateTime DateTime { get; set; }
public string Modifier { get; set; }
}
}

View File

@@ -0,0 +1,40 @@
using System;
using JWH.DATA;
namespace DDUtilityApp.LOGPARSER.DATA
{
/// <summary>
/// 로그 파일 정보
/// </summary>
public class LogFile : DataTableBase
{
public string Name { get; set; }
public long Length { get; set; }
public string Extension { get; set; }
public string FullName { get; set; }
public DateTime CreationTime { get; set; }
public DateTime LastAccessTime { get; set; }
public DateTime LastWriteTime { get; set; }
public LogFile()
{
}
public LogFile(string fullName)
{
this.Name = System.IO.Path.GetFileNameWithoutExtension(fullName);
this.FullName = fullName;
this.Extension = System.IO.Path.GetExtension(fullName);
}
}
}

View File

@@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using DDUtilityApp.SECS;
using JWH.DATA;
namespace DDUtilityApp.LOGPARSER.DATA
{
public class StandardCollection : List<StandardData>
{
}
/// <summary>
///
/// </summary>
public class StandardData : DataTableBase
{
public delegate void onBodyParser(StandardData sender);
[Browsable(false)]
public int LineNumber { get; set; }
public DateTime DateTime { get; set; }
public string Level { get; set; }
public string Server { get; set; }
public string Service { get; set; }
public string Type { get; set; }
public string MessageName { get; set; }
public string Return { get; set; }
public string Value { get; set; }
public string EquipmentID { get; set; }
public string PortID { get; set; }
public string CarrierID { get; set; }
public string LotID { get; set; }
public string ModuleID { get; set; }
public string HostPanelID { get; set; }
public string PanelID { get; set; }
public string PanelQty { get; set; }
public string TID { get; set; }
public string SystemByte { get; set; }
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; }
public string Column4 { get; set; }
public string Column5 { get; set; }
[Browsable(false)]
public StringBuilder Body { get; set; } = new StringBuilder();
[Browsable(false)]
public SECSItem SECSItem { get; set; } = null;
[Browsable(false)]
public onBodyParser BodyParser { get; set; }
public void BodyParsing()
{
if (this.BodyParser == null) return;
this.BodyParser.DynamicInvoke(this);
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append($"{this.Server} {this.MessageName}");
return sb.ToString();
}
}
}

View File

@@ -0,0 +1,582 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmEqSelector
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition1 = new Telerik.WinControls.UI.TableViewDefinition();
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition2 = new Telerik.WinControls.UI.TableViewDefinition();
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition3 = new Telerik.WinControls.UI.TableViewDefinition();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmEqSelector));
this.panel1 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.panel2 = new System.Windows.Forms.Panel();
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
this.panel8 = new System.Windows.Forms.Panel();
this.tboxName = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.panel9 = new System.Windows.Forms.Panel();
this.tboxEquipmentID = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.chkAllEquipment = new System.Windows.Forms.CheckBox();
this.chkUseMesDB = new System.Windows.Forms.CheckBox();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.panel4 = new System.Windows.Forms.Panel();
this.cboxServer = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.btnOK = new System.Windows.Forms.Button();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.panel3 = new System.Windows.Forms.Panel();
this.panel6 = new System.Windows.Forms.Panel();
this.gridEquipments = new JWH.CONTROL.GridViewEx();
this.panel5 = new System.Windows.Forms.Panel();
this.panel7 = new System.Windows.Forms.Panel();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.gridLogFiles = new JWH.CONTROL.GridViewEx();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.gridModelDetail = new JWH.CONTROL.GridViewEx();
this.panel10 = new System.Windows.Forms.Panel();
this.tboxModelDescription = new System.Windows.Forms.TextBox();
this.radStatusStrip1 = new Telerik.WinControls.UI.RadStatusStrip();
this.rstatus1 = new Telerik.WinControls.UI.RadLabelElement();
this.chkUseSMB = new System.Windows.Forms.CheckBox();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.panel2.SuspendLayout();
this.flowLayoutPanel2.SuspendLayout();
this.panel8.SuspendLayout();
this.panel9.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.panel4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.panel3.SuspendLayout();
this.panel6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.gridEquipments)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridEquipments.MasterTemplate)).BeginInit();
this.panel5.SuspendLayout();
this.panel7.SuspendLayout();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.gridLogFiles)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridLogFiles.MasterTemplate)).BeginInit();
this.tabPage2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.gridModelDetail)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridModelDetail.MasterTemplate)).BeginInit();
this.panel10.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.radStatusStrip1)).BeginInit();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.splitContainer1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(3, 2);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel1.Size = new System.Drawing.Size(1014, 572);
this.panel1.TabIndex = 0;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.Location = new System.Drawing.Point(3, 2);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.panel2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Size = new System.Drawing.Size(1008, 568);
this.splitContainer1.SplitterDistance = 72;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 1;
//
// panel2
//
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Controls.Add(this.flowLayoutPanel2);
this.panel2.Controls.Add(this.flowLayoutPanel1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1008, 72);
this.panel2.TabIndex = 2;
//
// flowLayoutPanel2
//
this.flowLayoutPanel2.AutoSize = true;
this.flowLayoutPanel2.Controls.Add(this.panel8);
this.flowLayoutPanel2.Controls.Add(this.panel9);
this.flowLayoutPanel2.Controls.Add(this.chkAllEquipment);
this.flowLayoutPanel2.Controls.Add(this.chkUseMesDB);
this.flowLayoutPanel2.Controls.Add(this.chkUseSMB);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Top;
this.flowLayoutPanel2.Location = new System.Drawing.Point(0, 34);
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
this.flowLayoutPanel2.Padding = new System.Windows.Forms.Padding(3);
this.flowLayoutPanel2.Size = new System.Drawing.Size(1006, 34);
this.flowLayoutPanel2.TabIndex = 1;
//
// panel8
//
this.panel8.Controls.Add(this.tboxName);
this.panel8.Controls.Add(this.label2);
this.panel8.Location = new System.Drawing.Point(6, 5);
this.panel8.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel8.MinimumSize = new System.Drawing.Size(0, 24);
this.panel8.Name = "panel8";
this.panel8.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel8.Size = new System.Drawing.Size(353, 24);
this.panel8.TabIndex = 0;
//
// tboxName
//
this.tboxName.Location = new System.Drawing.Point(104, 1);
this.tboxName.Name = "tboxName";
this.tboxName.Size = new System.Drawing.Size(246, 21);
this.tboxName.TabIndex = 1;
//
// label2
//
this.label2.Dock = System.Windows.Forms.DockStyle.Left;
this.label2.Location = new System.Drawing.Point(3, 2);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(101, 20);
this.label2.TabIndex = 0;
this.label2.Text = "Name : ";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// panel9
//
this.panel9.Controls.Add(this.tboxEquipmentID);
this.panel9.Controls.Add(this.label4);
this.panel9.Location = new System.Drawing.Point(365, 5);
this.panel9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel9.MinimumSize = new System.Drawing.Size(0, 24);
this.panel9.Name = "panel9";
this.panel9.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel9.Size = new System.Drawing.Size(353, 24);
this.panel9.TabIndex = 1;
//
// tboxEquipmentID
//
this.tboxEquipmentID.Location = new System.Drawing.Point(104, 1);
this.tboxEquipmentID.Name = "tboxEquipmentID";
this.tboxEquipmentID.Size = new System.Drawing.Size(246, 21);
this.tboxEquipmentID.TabIndex = 1;
//
// label4
//
this.label4.Dock = System.Windows.Forms.DockStyle.Left;
this.label4.Location = new System.Drawing.Point(3, 2);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(101, 20);
this.label4.TabIndex = 0;
this.label4.Text = "Equipment ID : ";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// chkAllEquipment
//
this.chkAllEquipment.AutoSize = true;
this.chkAllEquipment.Location = new System.Drawing.Point(724, 6);
this.chkAllEquipment.Name = "chkAllEquipment";
this.chkAllEquipment.Size = new System.Drawing.Size(72, 16);
this.chkAllEquipment.TabIndex = 3;
this.chkAllEquipment.Text = "모든설비";
this.chkAllEquipment.UseVisualStyleBackColor = true;
//
// chkUseMesDB
//
this.chkUseMesDB.AutoSize = true;
this.chkUseMesDB.Location = new System.Drawing.Point(802, 6);
this.chkUseMesDB.Name = "chkUseMesDB";
this.chkUseMesDB.Size = new System.Drawing.Size(71, 16);
this.chkUseMesDB.TabIndex = 4;
this.chkUseMesDB.Text = "MES DB";
this.chkUseMesDB.UseVisualStyleBackColor = true;
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.AutoSize = true;
this.flowLayoutPanel1.Controls.Add(this.panel4);
this.flowLayoutPanel1.Controls.Add(this.btnOK);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(3);
this.flowLayoutPanel1.Size = new System.Drawing.Size(1006, 34);
this.flowLayoutPanel1.TabIndex = 0;
//
// panel4
//
this.panel4.Controls.Add(this.cboxServer);
this.panel4.Controls.Add(this.label1);
this.panel4.Location = new System.Drawing.Point(6, 5);
this.panel4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel4.MinimumSize = new System.Drawing.Size(0, 24);
this.panel4.Name = "panel4";
this.panel4.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel4.Size = new System.Drawing.Size(353, 24);
this.panel4.TabIndex = 0;
//
// cboxServer
//
this.cboxServer.Dock = System.Windows.Forms.DockStyle.Fill;
this.cboxServer.FormattingEnabled = true;
this.cboxServer.Location = new System.Drawing.Point(104, 2);
this.cboxServer.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cboxServer.Name = "cboxServer";
this.cboxServer.Size = new System.Drawing.Size(246, 20);
this.cboxServer.TabIndex = 1;
//
// label1
//
this.label1.Dock = System.Windows.Forms.DockStyle.Left;
this.label1.Location = new System.Drawing.Point(3, 2);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(101, 20);
this.label1.TabIndex = 0;
this.label1.Text = "Server : ";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(365, 5);
this.btnOK.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(99, 24);
this.btnOK.TabIndex = 1;
this.btnOK.Text = "OK";
this.btnOK.UseVisualStyleBackColor = true;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer2.Name = "splitContainer2";
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.panel3);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.panel5);
this.splitContainer2.Size = new System.Drawing.Size(1008, 493);
this.splitContainer2.SplitterDistance = 453;
this.splitContainer2.TabIndex = 1;
//
// panel3
//
this.panel3.Controls.Add(this.panel6);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(0, 0);
this.panel3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel3.Name = "panel3";
this.panel3.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel3.Size = new System.Drawing.Size(453, 493);
this.panel3.TabIndex = 1;
//
// panel6
//
this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel6.Controls.Add(this.gridEquipments);
this.panel6.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel6.Location = new System.Drawing.Point(3, 2);
this.panel6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(447, 489);
this.panel6.TabIndex = 3;
//
// gridEquipments
//
this.gridEquipments.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.gridEquipments.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.gridEquipments.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridEquipments.Location = new System.Drawing.Point(0, 0);
this.gridEquipments.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
//
//
this.gridEquipments.MasterTemplate.ViewDefinition = tableViewDefinition1;
this.gridEquipments.Name = "gridEquipments";
//
//
//
this.gridEquipments.RootElement.ControlBounds = new System.Drawing.Rectangle(0, 0, 240, 150);
this.gridEquipments.Size = new System.Drawing.Size(445, 487);
this.gridEquipments.TabIndex = 2;
//
// panel5
//
this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel5.Controls.Add(this.panel7);
this.panel5.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel5.Location = new System.Drawing.Point(0, 0);
this.panel5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(551, 493);
this.panel5.TabIndex = 3;
//
// panel7
//
this.panel7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel7.Controls.Add(this.tabControl1);
this.panel7.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel7.Location = new System.Drawing.Point(0, 0);
this.panel7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel7.Name = "panel7";
this.panel7.Size = new System.Drawing.Size(549, 491);
this.panel7.TabIndex = 4;
//
// tabControl1
//
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Location = new System.Drawing.Point(0, 0);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(547, 489);
this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.tabControl1.TabIndex = 6;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.gridLogFiles);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(539, 463);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "Log Files";
this.tabPage1.UseVisualStyleBackColor = true;
//
// gridLogFiles
//
this.gridLogFiles.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.gridLogFiles.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.gridLogFiles.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridLogFiles.Location = new System.Drawing.Point(3, 3);
this.gridLogFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
//
//
this.gridLogFiles.MasterTemplate.ViewDefinition = tableViewDefinition2;
this.gridLogFiles.Name = "gridLogFiles";
//
//
//
this.gridLogFiles.RootElement.ControlBounds = new System.Drawing.Rectangle(3, 3, 240, 150);
this.gridLogFiles.Size = new System.Drawing.Size(533, 457);
this.gridLogFiles.TabIndex = 3;
//
// tabPage2
//
this.tabPage2.Controls.Add(this.gridModelDetail);
this.tabPage2.Controls.Add(this.panel10);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(539, 463);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "Model History";
this.tabPage2.UseVisualStyleBackColor = true;
//
// gridModelDetail
//
this.gridModelDetail.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.gridModelDetail.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.gridModelDetail.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridModelDetail.Location = new System.Drawing.Point(3, 3);
this.gridModelDetail.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
//
//
this.gridModelDetail.MasterTemplate.ViewDefinition = tableViewDefinition3;
this.gridModelDetail.Name = "gridModelDetail";
//
//
//
this.gridModelDetail.RootElement.ControlBounds = new System.Drawing.Rectangle(3, 3, 240, 150);
this.gridModelDetail.Size = new System.Drawing.Size(533, 357);
this.gridModelDetail.TabIndex = 6;
//
// panel10
//
this.panel10.Controls.Add(this.tboxModelDescription);
this.panel10.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel10.Location = new System.Drawing.Point(3, 360);
this.panel10.Name = "panel10";
this.panel10.Padding = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.panel10.Size = new System.Drawing.Size(533, 100);
this.panel10.TabIndex = 5;
//
// tboxModelDescription
//
this.tboxModelDescription.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxModelDescription.Location = new System.Drawing.Point(0, 2);
this.tboxModelDescription.Multiline = true;
this.tboxModelDescription.Name = "tboxModelDescription";
this.tboxModelDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxModelDescription.Size = new System.Drawing.Size(533, 96);
this.tboxModelDescription.TabIndex = 0;
//
// radStatusStrip1
//
this.radStatusStrip1.Items.AddRange(new Telerik.WinControls.RadItem[] {
this.rstatus1});
this.radStatusStrip1.Location = new System.Drawing.Point(3, 574);
this.radStatusStrip1.Name = "radStatusStrip1";
this.radStatusStrip1.Size = new System.Drawing.Size(1014, 26);
this.radStatusStrip1.TabIndex = 1;
//
// rstatus1
//
this.rstatus1.Name = "rstatus1";
this.radStatusStrip1.SetSpring(this.rstatus1, false);
this.rstatus1.Text = "";
this.rstatus1.TextWrap = true;
//
// chkSMB
//
this.chkUseSMB.AutoSize = true;
this.chkUseSMB.Location = new System.Drawing.Point(879, 6);
this.chkUseSMB.Name = "chkSMB";
this.chkUseSMB.Size = new System.Drawing.Size(77, 16);
this.chkUseSMB.TabIndex = 5;
this.chkUseSMB.Text = "Use SMB";
this.chkUseSMB.UseVisualStyleBackColor = true;
//
// FrmEqSelector
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1020, 602);
this.Controls.Add(this.panel1);
this.Controls.Add(this.radStatusStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "FrmEqSelector";
this.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Text = "Equipment Selector";
this.panel1.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.flowLayoutPanel2.ResumeLayout(false);
this.flowLayoutPanel2.PerformLayout();
this.panel8.ResumeLayout(false);
this.panel8.PerformLayout();
this.panel9.ResumeLayout(false);
this.panel9.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.panel4.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.panel6.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.gridEquipments.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridEquipments)).EndInit();
this.panel5.ResumeLayout(false);
this.panel7.ResumeLayout(false);
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.gridLogFiles.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridLogFiles)).EndInit();
this.tabPage2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.gridModelDetail.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridModelDetail)).EndInit();
this.panel10.ResumeLayout(false);
this.panel10.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.radStatusStrip1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Panel panel6;
private JWH.CONTROL.GridViewEx gridEquipments;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.ComboBox cboxServer;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel panel5;
private System.Windows.Forms.Panel panel7;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
private System.Windows.Forms.Panel panel8;
private System.Windows.Forms.TextBox tboxName;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Panel panel9;
private System.Windows.Forms.TextBox tboxEquipmentID;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.CheckBox chkAllEquipment;
private System.Windows.Forms.CheckBox chkUseMesDB;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private JWH.CONTROL.GridViewEx gridLogFiles;
private System.Windows.Forms.TabPage tabPage2;
private JWH.CONTROL.GridViewEx gridModelDetail;
private System.Windows.Forms.Panel panel10;
private System.Windows.Forms.TextBox tboxModelDescription;
private Telerik.WinControls.UI.RadStatusStrip radStatusStrip1;
private Telerik.WinControls.UI.RadLabelElement rstatus1;
private System.Windows.Forms.CheckBox chkUseSMB;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,154 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmFindDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.btnNext = new System.Windows.Forms.Button();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.btnClose = new System.Windows.Forms.Button();
this.btnPrevious = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.cboxFind = new System.Windows.Forms.ComboBox();
this.panel1.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.panel2);
this.panel1.Controls.Add(this.flowLayoutPanel1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(3);
this.panel1.Size = new System.Drawing.Size(496, 110);
this.panel1.TabIndex = 0;
//
// btnNext
//
this.btnNext.Location = new System.Drawing.Point(241, 3);
this.btnNext.Name = "btnNext";
this.btnNext.Size = new System.Drawing.Size(120, 27);
this.btnNext.TabIndex = 0;
this.btnNext.Text = "Next";
this.btnNext.UseVisualStyleBackColor = true;
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.AutoSize = true;
this.flowLayoutPanel1.Controls.Add(this.btnClose);
this.flowLayoutPanel1.Controls.Add(this.btnNext);
this.flowLayoutPanel1.Controls.Add(this.btnPrevious);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft;
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 74);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(490, 33);
this.flowLayoutPanel1.TabIndex = 1;
//
// btnClose
//
this.btnClose.Location = new System.Drawing.Point(367, 3);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(120, 27);
this.btnClose.TabIndex = 2;
this.btnClose.Text = "Close";
this.btnClose.UseVisualStyleBackColor = true;
//
// btnPrevious
//
this.btnPrevious.Location = new System.Drawing.Point(115, 3);
this.btnPrevious.Name = "btnPrevious";
this.btnPrevious.Size = new System.Drawing.Size(120, 27);
this.btnPrevious.TabIndex = 1;
this.btnPrevious.Text = "Previous";
this.btnPrevious.UseVisualStyleBackColor = true;
//
// panel2
//
this.panel2.BackColor = System.Drawing.SystemColors.ControlLight;
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Controls.Add(this.cboxFind);
this.panel2.Controls.Add(this.label1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(3, 3);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(490, 71);
this.panel2.TabIndex = 0;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(30, 25);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(82, 15);
this.label1.TabIndex = 0;
this.label1.Text = "찾을 내용: ";
//
// cboxFind
//
this.cboxFind.FormattingEnabled = true;
this.cboxFind.Location = new System.Drawing.Point(118, 22);
this.cboxFind.Name = "cboxFind";
this.cboxFind.Size = new System.Drawing.Size(357, 23);
this.cboxFind.TabIndex = 1;
//
// FrmFindDialog
//
this.AcceptButton = this.btnNext;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(496, 110);
this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "FrmFindDialog";
this.Text = "FrmFindDialog";
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.ComboBox cboxFind;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.Button btnClose;
private System.Windows.Forms.Button btnNext;
private System.Windows.Forms.Button btnPrevious;
}
}

View File

@@ -0,0 +1,136 @@
using JWH;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmFindDialog : Form
{
public event EventHandler FInd;
public Control Control { get; set; } = null;
public string SelectedText
{
get { return this.cboxFind.Text; }
set { this.cboxFind.Text = value; }
}
public FrmFindDialog()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
}
public FrmFindDialog(TextBox textBox) : this()
{
this.Control = textBox;
}
private void SetLayout()
{
this.Text = "Find Dialog";
this.MaximizeBox = false;
this.MinimizeBox = false;
}
private void SetEventHandler()
{
this.btnNext.Click += BtnNext_Click;
this.btnPrevious.Click += BtnPrevious_Click;
this.btnClose.Click += BtnClose_Click;
}
private void BtnNext_Click(object sender, EventArgs e)
{
try
{
TextBox control = this.Control as TextBox;
int start = control.SelectionStart + control.SelectionLength;
int index = control.Text.IndexOf(this.cboxFind.Text, start);
if (index < 0) return;
control.SelectionStart = index;
control.SelectionLength = this.cboxFind.Text.Length;
control.ScrollToCaret();
if (this.FInd != null) this.FInd(this, new EventArgs());
this.ComboBox_ItemAppend();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnPrevious_Click(object sender, EventArgs e)
{
try
{
TextBox control = this.Control as TextBox;
int end = control.SelectionStart;
int index = control.Text.LastIndexOf(this.cboxFind.Text, end);
if (index < 0) return;
control.SelectionStart = index;
control.SelectionLength = this.cboxFind.Text.Length;
control.ScrollToCaret();
if (this.FInd != null) this.FInd(this, new EventArgs());
this.ComboBox_ItemAppend();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void ComboBox_ItemAppend()
{
try
{
string value = this.cboxFind.Text;
if (string.IsNullOrWhiteSpace(value)) return;
this.cboxFind.Items.Remove(value);
this.cboxFind.Items.Insert(0, value);
this.cboxFind.Text = value;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
public void Next(string selectedText = "")
{
if (!string.IsNullOrWhiteSpace(selectedText)) this.cboxFind.Text = selectedText;
this.BtnNext_Click(this.btnNext, new EventArgs());
}
public void Pervious(string selectedText = "")
{
if (!string.IsNullOrWhiteSpace(selectedText)) this.cboxFind.Text = selectedText;
this.BtnPrevious_Click(this.btnNext, new EventArgs());
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,391 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmHsmsViewer
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.tboxHsms = new System.Windows.Forms.TextBox();
this.panel5 = new System.Windows.Forms.Panel();
this.btnHtoS = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.tboxSecs = new System.Windows.Forms.TextBox();
this.panel6 = new System.Windows.Forms.Panel();
this.btnStoH = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.panel4 = new System.Windows.Forms.Panel();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
this.panel2 = new System.Windows.Forms.Panel();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.panel8 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label();
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
this.tboxHexHangul = new System.Windows.Forms.TextBox();
this.panel7 = new System.Windows.Forms.Panel();
this.cboxEncoding = new System.Windows.Forms.ComboBox();
this.tboxHangul = new System.Windows.Forms.TextBox();
this.panel1.SuspendLayout();
this.panel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.panel5.SuspendLayout();
this.panel6.SuspendLayout();
this.panel4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.panel2.SuspendLayout();
this.panel8.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
this.splitContainer3.Panel1.SuspendLayout();
this.splitContainer3.Panel2.SuspendLayout();
this.splitContainer3.SuspendLayout();
this.panel7.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.panel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(3);
this.panel1.Size = new System.Drawing.Size(800, 450);
this.panel1.TabIndex = 1;
//
// panel3
//
this.panel3.Controls.Add(this.splitContainer1);
this.panel3.Controls.Add(this.panel4);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(3, 49);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(794, 398);
this.panel3.TabIndex = 2;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.tboxHsms);
this.splitContainer1.Panel1.Controls.Add(this.panel5);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.tboxSecs);
this.splitContainer1.Panel2.Controls.Add(this.panel6);
this.splitContainer1.Size = new System.Drawing.Size(492, 398);
this.splitContainer1.SplitterDistance = 250;
this.splitContainer1.TabIndex = 3;
//
// tboxHsms
//
this.tboxHsms.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxHsms.Location = new System.Drawing.Point(0, 51);
this.tboxHsms.Multiline = true;
this.tboxHsms.Name = "tboxHsms";
this.tboxHsms.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxHsms.Size = new System.Drawing.Size(250, 347);
this.tboxHsms.TabIndex = 2;
//
// panel5
//
this.panel5.Controls.Add(this.btnHtoS);
this.panel5.Controls.Add(this.label1);
this.panel5.Dock = System.Windows.Forms.DockStyle.Top;
this.panel5.Location = new System.Drawing.Point(0, 0);
this.panel5.Name = "panel5";
this.panel5.Padding = new System.Windows.Forms.Padding(2);
this.panel5.Size = new System.Drawing.Size(250, 51);
this.panel5.TabIndex = 1;
//
// btnHtoS
//
this.btnHtoS.Location = new System.Drawing.Point(3, 3);
this.btnHtoS.Name = "btnHtoS";
this.btnHtoS.Size = new System.Drawing.Size(169, 23);
this.btnHtoS.TabIndex = 0;
this.btnHtoS.Text = "HSMS to SECS -->";
this.btnHtoS.UseVisualStyleBackColor = true;
//
// label1
//
this.label1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.label1.Location = new System.Drawing.Point(2, 26);
this.label1.Name = "label1";
this.label1.Padding = new System.Windows.Forms.Padding(10, 3, 10, 3);
this.label1.Size = new System.Drawing.Size(246, 23);
this.label1.TabIndex = 0;
this.label1.Text = "# HSMS";
this.label1.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// tboxSecs
//
this.tboxSecs.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxSecs.Location = new System.Drawing.Point(0, 51);
this.tboxSecs.Multiline = true;
this.tboxSecs.Name = "tboxSecs";
this.tboxSecs.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxSecs.Size = new System.Drawing.Size(238, 347);
this.tboxSecs.TabIndex = 3;
//
// panel6
//
this.panel6.Controls.Add(this.btnStoH);
this.panel6.Controls.Add(this.label2);
this.panel6.Dock = System.Windows.Forms.DockStyle.Top;
this.panel6.Location = new System.Drawing.Point(0, 0);
this.panel6.Name = "panel6";
this.panel6.Padding = new System.Windows.Forms.Padding(2);
this.panel6.Size = new System.Drawing.Size(238, 51);
this.panel6.TabIndex = 2;
//
// btnStoH
//
this.btnStoH.Location = new System.Drawing.Point(3, 3);
this.btnStoH.Name = "btnStoH";
this.btnStoH.Size = new System.Drawing.Size(169, 23);
this.btnStoH.TabIndex = 1;
this.btnStoH.Text = "<-- SECS to HSMS";
this.btnStoH.UseVisualStyleBackColor = true;
//
// label2
//
this.label2.Dock = System.Windows.Forms.DockStyle.Bottom;
this.label2.Location = new System.Drawing.Point(2, 26);
this.label2.Name = "label2";
this.label2.Padding = new System.Windows.Forms.Padding(10, 3, 10, 3);
this.label2.Size = new System.Drawing.Size(234, 23);
this.label2.TabIndex = 1;
this.label2.Text = "# SECS";
this.label2.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// panel4
//
this.panel4.Controls.Add(this.splitContainer2);
this.panel4.Dock = System.Windows.Forms.DockStyle.Right;
this.panel4.Location = new System.Drawing.Point(492, 0);
this.panel4.Name = "panel4";
this.panel4.Padding = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.panel4.Size = new System.Drawing.Size(302, 398);
this.panel4.TabIndex = 2;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer2.Location = new System.Drawing.Point(3, 0);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.propertyGrid1);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.panel8);
this.splitContainer2.Size = new System.Drawing.Size(299, 398);
this.splitContainer2.SplitterDistance = 137;
this.splitContainer2.TabIndex = 0;
//
// propertyGrid1
//
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
this.propertyGrid1.Location = new System.Drawing.Point(0, 0);
this.propertyGrid1.Name = "propertyGrid1";
this.propertyGrid1.Size = new System.Drawing.Size(299, 137);
this.propertyGrid1.TabIndex = 3;
//
// panel2
//
this.panel2.Controls.Add(this.flowLayoutPanel1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(3, 3);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(794, 46);
this.panel2.TabIndex = 0;
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(794, 46);
this.flowLayoutPanel1.TabIndex = 0;
//
// panel8
//
this.panel8.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panel8.Controls.Add(this.splitContainer3);
this.panel8.Controls.Add(this.label3);
this.panel8.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel8.Location = new System.Drawing.Point(0, 0);
this.panel8.Name = "panel8";
this.panel8.Padding = new System.Windows.Forms.Padding(2);
this.panel8.Size = new System.Drawing.Size(299, 257);
this.panel8.TabIndex = 3;
//
// label3
//
this.label3.Dock = System.Windows.Forms.DockStyle.Top;
this.label3.Location = new System.Drawing.Point(2, 2);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(291, 23);
this.label3.TabIndex = 3;
this.label3.Text = "Byte to Hangul";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// splitContainer3
//
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer3.Location = new System.Drawing.Point(2, 25);
this.splitContainer3.Name = "splitContainer3";
this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer3.Panel1
//
this.splitContainer3.Panel1.Controls.Add(this.tboxHexHangul);
//
// splitContainer3.Panel2
//
this.splitContainer3.Panel2.Controls.Add(this.panel7);
this.splitContainer3.Size = new System.Drawing.Size(291, 226);
this.splitContainer3.SplitterDistance = 110;
this.splitContainer3.TabIndex = 4;
//
// tboxHexHangul
//
this.tboxHexHangul.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxHexHangul.Location = new System.Drawing.Point(0, 0);
this.tboxHexHangul.Multiline = true;
this.tboxHexHangul.Name = "tboxHexHangul";
this.tboxHexHangul.Size = new System.Drawing.Size(291, 110);
this.tboxHexHangul.TabIndex = 0;
//
// panel7
//
this.panel7.Controls.Add(this.tboxHangul);
this.panel7.Controls.Add(this.cboxEncoding);
this.panel7.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel7.Location = new System.Drawing.Point(0, 0);
this.panel7.Name = "panel7";
this.panel7.Size = new System.Drawing.Size(291, 112);
this.panel7.TabIndex = 0;
//
// cboxEncoding
//
this.cboxEncoding.Dock = System.Windows.Forms.DockStyle.Top;
this.cboxEncoding.FormattingEnabled = true;
this.cboxEncoding.Location = new System.Drawing.Point(0, 0);
this.cboxEncoding.Name = "cboxEncoding";
this.cboxEncoding.Size = new System.Drawing.Size(291, 20);
this.cboxEncoding.TabIndex = 3;
//
// tboxHangul
//
this.tboxHangul.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxHangul.Location = new System.Drawing.Point(0, 20);
this.tboxHangul.Multiline = true;
this.tboxHangul.Name = "tboxHangul";
this.tboxHangul.Size = new System.Drawing.Size(291, 92);
this.tboxHangul.TabIndex = 4;
//
// FrmHsmsViewer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.panel1);
this.Name = "FrmHsmsViewer";
this.Text = "Form1";
this.panel1.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout();
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.panel5.ResumeLayout(false);
this.panel6.ResumeLayout(false);
this.panel4.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel8.ResumeLayout(false);
this.splitContainer3.Panel1.ResumeLayout(false);
this.splitContainer3.Panel1.PerformLayout();
this.splitContainer3.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
this.splitContainer3.ResumeLayout(false);
this.panel7.ResumeLayout(false);
this.panel7.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.Button btnHtoS;
private System.Windows.Forms.Button btnStoH;
private System.Windows.Forms.TextBox tboxHsms;
private System.Windows.Forms.Panel panel5;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox tboxSecs;
private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.PropertyGrid propertyGrid1;
private System.Windows.Forms.Panel panel8;
private System.Windows.Forms.SplitContainer splitContainer3;
private System.Windows.Forms.TextBox tboxHexHangul;
private System.Windows.Forms.Panel panel7;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox tboxHangul;
private System.Windows.Forms.ComboBox cboxEncoding;
}
}

View File

@@ -0,0 +1,163 @@
#define xSECS2HSMS
using JWH;
using JWH.SECS;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmHsmsViewer : Form
{
#region [ Properties ] ------------------------------------------------
public SECSMessage SECSMessage { get; set; } = null;
#endregion
#region [ FrmTest01 ] -------------------------------------------------
public FrmHsmsViewer()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
}
public void SetLayout()
{
Font font = new Font("돋움체", 9.0F);
this.panel1.Height = 16;
this.tboxHsms.Font = font;
this.tboxHsms.ScrollBars = ScrollBars.Both;
this.tboxHsms.WordWrap = false;
this.tboxHsms.MaxLength = 3276700;
this.tboxHsms.AllowDrop = true;
this.tboxSecs.Font = font;
this.tboxSecs.ScrollBars = ScrollBars.Both;
this.tboxSecs.WordWrap = false;
this.tboxSecs.MaxLength = 3276700;
this.tboxSecs.ReadOnly = true;
this.tboxHexHangul.Font = font;
this.tboxHexHangul.WordWrap = true;
this.tboxHangul.Font = font;
this.tboxHangul.WordWrap = true;
this.cboxEncoding.DropDownStyle = ComboBoxStyle.DropDownList;
this.cboxEncoding.Items.Clear();
this.cboxEncoding.Items.Add(new KeyValuePair<string, Encoding>("Default", Encoding.Default));
this.cboxEncoding.Items.Add(new KeyValuePair<string, Encoding>("UTF7", Encoding.UTF7));
this.cboxEncoding.Items.Add(new KeyValuePair<string, Encoding>("UTF8", Encoding.UTF8));
this.cboxEncoding.Items.Add(new KeyValuePair<string, Encoding>("UTF32", Encoding.UTF32));
this.cboxEncoding.Items.Add(new KeyValuePair<string, Encoding>("ASCII", Encoding.ASCII));
this.cboxEncoding.Items.Add(new KeyValuePair<string, Encoding>("Unicode", Encoding.Unicode));
this.cboxEncoding.Items.Add(new KeyValuePair<string, Encoding>("BigEndianUnicode", Encoding.BigEndianUnicode));
this.cboxEncoding.DisplayMember = "Key";
this.cboxEncoding.SelectedIndex = 0;
}
public void SetEventHandler()
{
this.tboxHsms.DragDrop += Control_DragDrop;
this.tboxHsms.DragEnter += Control_DragEnter;
this.btnHtoS.Click += BtnHsmsToSecs_Click;
this.btnStoH.Click += BtnSecstoHsms_Click;
this.cboxEncoding.SelectedIndexChanged += HexHangul2Hangul;
this.tboxHexHangul.TextChanged += HexHangul2Hangul;
}
private void HexHangul2Hangul(object sender, EventArgs e)
{
string value = this.tboxHexHangul.Text.Replace(" ", "");
byte[] bytes = value.ConvertBytes(16);
Encoding encoding = ((KeyValuePair<string, Encoding>)this.cboxEncoding.SelectedItem).Value;
string result = encoding.GetString(bytes, 0, bytes.Length);
this.tboxHangul.Text = result;
}
#endregion
#region [ Control Event ] ---------------------------------------------
private void Control_DragDrop(object sender, DragEventArgs e)
{
if (sender == this.tboxHsms)
{
string strHsms = (string)e.Data.GetData(DataFormats.Text);
this.tboxHsms.Text = strHsms;
this.BtnHsmsToSecs_Click(this.btnHtoS, null);
}
}
private void Control_DragEnter(object sender, DragEventArgs e)
{
if (sender == this.tboxHsms)
{
if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy;
}
}
private void BtnHsmsToSecs_Click(object sender, EventArgs e)
{
try
{
if (string.IsNullOrEmpty(this.tboxHsms.Text)) return;
byte[] arrayByte = this.tboxHsms.Text.ConvertBytes(16);
this.SECSMessage = new SECSMessage(arrayByte);
//this.tboxSecs.Text = $"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] RCVD {item.ToString(0)}";
this.tboxSecs.Text = $"{this.SECSMessage.ToFullString()}";
this.propertyGrid1.SelectedObject = this.SECSMessage;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnSecstoHsms_Click(object sender, EventArgs e)
{
try
{
#if SECS2HSMS
if (string.IsNullOrEmpty(this.tboxSecs.Text)) return;
this.SECSMessage = new SECSMessage(this.tboxSecs.Text);
#else
if (this.SECSMessage == null) return;
#endif
//this.tboxSecs.Text = $"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] RCVD {item.ToString(0)}";
this.tboxHsms.Text = this.SECSMessage.ToHexString();
this.propertyGrid1.SelectedObject = this.SECSMessage;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
#endregion
#region [ Methods ] ---------------------------------------------------
#endregion
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,345 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

View File

@@ -0,0 +1,587 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmLogParser01
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition2 = new Telerik.WinControls.UI.TableViewDefinition();
this.pnlRoot = new System.Windows.Forms.Panel();
this.spnlRoot = new System.Windows.Forms.SplitContainer();
this.pnlControls = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.pnlFiles = new System.Windows.Forms.Panel();
this.lviewFiles = new System.Windows.Forms.ListView();
this.panel1 = new System.Windows.Forms.Panel();
this.tboxFilename = new System.Windows.Forms.TextBox();
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
this.btnFileAdd = new System.Windows.Forms.Button();
this.btnFileRemove = new System.Windows.Forms.Button();
this.btnClear = new System.Windows.Forms.Button();
this.btnParsing = new System.Windows.Forms.Button();
this.pnlButtons = new System.Windows.Forms.FlowLayoutPanel();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.chkAutoClear = new System.Windows.Forms.CheckBox();
this.chkDownload = new System.Windows.Forms.CheckBox();
this.chkFilterLinktest = new System.Windows.Forms.CheckBox();
this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();
this.btnClearFilter = new System.Windows.Forms.Button();
this.btnColumnResize = new System.Windows.Forms.Button();
this.spnl00 = new System.Windows.Forms.SplitContainer();
this.pnlDisplayL = new System.Windows.Forms.Panel();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.tboxLog = new System.Windows.Forms.TextBox();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.tboxException = new System.Windows.Forms.TextBox();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.pnlDisplayR = new System.Windows.Forms.Panel();
this.grid = new Telerik.WinControls.UI.RadGridView();
this.winGrid = new System.Windows.Forms.DataGridView();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.pnlRoot.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spnlRoot)).BeginInit();
this.spnlRoot.Panel1.SuspendLayout();
this.spnlRoot.Panel2.SuspendLayout();
this.spnlRoot.SuspendLayout();
this.pnlControls.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.pnlFiles.SuspendLayout();
this.panel1.SuspendLayout();
this.flowLayoutPanel2.SuspendLayout();
this.pnlButtons.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.flowLayoutPanel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spnl00)).BeginInit();
this.spnl00.Panel1.SuspendLayout();
this.spnl00.Panel2.SuspendLayout();
this.spnl00.SuspendLayout();
this.pnlDisplayL.SuspendLayout();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.pnlDisplayR.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.winGrid)).BeginInit();
this.SuspendLayout();
//
// pnlRoot
//
this.pnlRoot.Controls.Add(this.spnlRoot);
this.pnlRoot.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlRoot.Location = new System.Drawing.Point(0, 0);
this.pnlRoot.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlRoot.Name = "pnlRoot";
this.pnlRoot.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlRoot.Size = new System.Drawing.Size(948, 518);
this.pnlRoot.TabIndex = 0;
//
// spnlRoot
//
this.spnlRoot.Dock = System.Windows.Forms.DockStyle.Fill;
this.spnlRoot.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.spnlRoot.Location = new System.Drawing.Point(3, 2);
this.spnlRoot.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.spnlRoot.Name = "spnlRoot";
this.spnlRoot.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// spnlRoot.Panel1
//
this.spnlRoot.Panel1.Controls.Add(this.pnlControls);
this.spnlRoot.Panel1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
// spnlRoot.Panel2
//
this.spnlRoot.Panel2.Controls.Add(this.spnl00);
this.spnlRoot.Size = new System.Drawing.Size(942, 514);
this.spnlRoot.SplitterDistance = 128;
this.spnlRoot.SplitterWidth = 3;
this.spnlRoot.TabIndex = 1;
//
// pnlControls
//
this.pnlControls.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pnlControls.Controls.Add(this.splitContainer1);
this.pnlControls.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlControls.Location = new System.Drawing.Point(3, 2);
this.pnlControls.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlControls.Name = "pnlControls";
this.pnlControls.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlControls.Size = new System.Drawing.Size(936, 124);
this.pnlControls.TabIndex = 7;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(3, 2);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.pnlFiles);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.pnlButtons);
this.splitContainer1.Size = new System.Drawing.Size(928, 118);
this.splitContainer1.SplitterDistance = 512;
this.splitContainer1.TabIndex = 8;
//
// pnlFiles
//
this.pnlFiles.Controls.Add(this.lviewFiles);
this.pnlFiles.Controls.Add(this.panel1);
this.pnlFiles.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlFiles.Location = new System.Drawing.Point(0, 0);
this.pnlFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlFiles.Name = "pnlFiles";
this.pnlFiles.Size = new System.Drawing.Size(512, 118);
this.pnlFiles.TabIndex = 1;
//
// lviewFiles
//
this.lviewFiles.Dock = System.Windows.Forms.DockStyle.Fill;
this.lviewFiles.HideSelection = false;
this.lviewFiles.Location = new System.Drawing.Point(0, 0);
this.lviewFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.lviewFiles.Name = "lviewFiles";
this.lviewFiles.Size = new System.Drawing.Size(512, 91);
this.lviewFiles.TabIndex = 3;
this.lviewFiles.UseCompatibleStateImageBehavior = false;
//
// panel1
//
this.panel1.Controls.Add(this.tboxFilename);
this.panel1.Controls.Add(this.flowLayoutPanel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel1.Location = new System.Drawing.Point(0, 91);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0);
this.panel1.Size = new System.Drawing.Size(512, 27);
this.panel1.TabIndex = 2;
//
// tboxFilename
//
this.tboxFilename.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxFilename.Location = new System.Drawing.Point(0, 2);
this.tboxFilename.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxFilename.Name = "tboxFilename";
this.tboxFilename.Size = new System.Drawing.Size(136, 21);
this.tboxFilename.TabIndex = 17;
//
// flowLayoutPanel2
//
this.flowLayoutPanel2.AutoSize = true;
this.flowLayoutPanel2.Controls.Add(this.btnFileAdd);
this.flowLayoutPanel2.Controls.Add(this.btnFileRemove);
this.flowLayoutPanel2.Controls.Add(this.btnClear);
this.flowLayoutPanel2.Controls.Add(this.btnParsing);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Right;
this.flowLayoutPanel2.Location = new System.Drawing.Point(136, 2);
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
this.flowLayoutPanel2.Size = new System.Drawing.Size(376, 25);
this.flowLayoutPanel2.TabIndex = 16;
this.flowLayoutPanel2.WrapContents = false;
//
// btnFileAdd
//
this.btnFileAdd.Location = new System.Drawing.Point(3, 0);
this.btnFileAdd.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnFileAdd.Name = "btnFileAdd";
this.btnFileAdd.Size = new System.Drawing.Size(88, 20);
this.btnFileAdd.TabIndex = 16;
this.btnFileAdd.Text = "Add";
this.btnFileAdd.UseVisualStyleBackColor = true;
//
// btnFileRemove
//
this.btnFileRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnFileRemove.Location = new System.Drawing.Point(97, 0);
this.btnFileRemove.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnFileRemove.Name = "btnFileRemove";
this.btnFileRemove.Size = new System.Drawing.Size(88, 20);
this.btnFileRemove.TabIndex = 17;
this.btnFileRemove.Text = "Remove";
this.btnFileRemove.UseVisualStyleBackColor = true;
//
// btnClear
//
this.btnClear.Location = new System.Drawing.Point(191, 0);
this.btnClear.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(88, 20);
this.btnClear.TabIndex = 11;
this.btnClear.Text = "Clear";
this.btnClear.UseVisualStyleBackColor = true;
//
// btnParsing
//
this.btnParsing.Location = new System.Drawing.Point(285, 0);
this.btnParsing.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnParsing.Name = "btnParsing";
this.btnParsing.Size = new System.Drawing.Size(88, 20);
this.btnParsing.TabIndex = 18;
this.btnParsing.Text = "Parsing(F5)";
this.btnParsing.UseVisualStyleBackColor = true;
//
// pnlButtons
//
this.pnlButtons.AutoSize = true;
this.pnlButtons.Controls.Add(this.flowLayoutPanel1);
this.pnlButtons.Controls.Add(this.flowLayoutPanel3);
this.pnlButtons.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlButtons.Location = new System.Drawing.Point(0, 0);
this.pnlButtons.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlButtons.Name = "pnlButtons";
this.pnlButtons.Size = new System.Drawing.Size(412, 118);
this.pnlButtons.TabIndex = 5;
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.AutoSize = true;
this.flowLayoutPanel1.Controls.Add(this.chkAutoClear);
this.flowLayoutPanel1.Controls.Add(this.chkDownload);
this.flowLayoutPanel1.Controls.Add(this.chkFilterLinktest);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 2);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(279, 20);
this.flowLayoutPanel1.TabIndex = 11;
//
// chkAutoClear
//
this.chkAutoClear.AutoSize = true;
this.chkAutoClear.Checked = true;
this.chkAutoClear.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkAutoClear.Location = new System.Drawing.Point(3, 2);
this.chkAutoClear.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chkAutoClear.Name = "chkAutoClear";
this.chkAutoClear.Size = new System.Drawing.Size(83, 16);
this.chkAutoClear.TabIndex = 4;
this.chkAutoClear.Text = "Auto Clear";
this.chkAutoClear.UseVisualStyleBackColor = true;
//
// chkDownload
//
this.chkDownload.AutoSize = true;
this.chkDownload.Checked = true;
this.chkDownload.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkDownload.Location = new System.Drawing.Point(92, 2);
this.chkDownload.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chkDownload.Name = "chkDownload";
this.chkDownload.Size = new System.Drawing.Size(80, 16);
this.chkDownload.TabIndex = 6;
this.chkDownload.Text = "Download";
this.chkDownload.UseVisualStyleBackColor = true;
//
// chkFilterLinktest
//
this.chkFilterLinktest.AutoSize = true;
this.chkFilterLinktest.Checked = true;
this.chkFilterLinktest.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkFilterLinktest.Location = new System.Drawing.Point(178, 2);
this.chkFilterLinktest.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chkFilterLinktest.Name = "chkFilterLinktest";
this.chkFilterLinktest.Size = new System.Drawing.Size(98, 16);
this.chkFilterLinktest.TabIndex = 13;
this.chkFilterLinktest.Text = "Filter Linktest";
this.chkFilterLinktest.UseVisualStyleBackColor = true;
//
// flowLayoutPanel3
//
this.flowLayoutPanel3.AutoSize = true;
this.flowLayoutPanel3.Controls.Add(this.btnClearFilter);
this.flowLayoutPanel3.Controls.Add(this.btnColumnResize);
this.flowLayoutPanel3.Location = new System.Drawing.Point(3, 26);
this.flowLayoutPanel3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel3.Name = "flowLayoutPanel3";
this.flowLayoutPanel3.Size = new System.Drawing.Size(251, 24);
this.flowLayoutPanel3.TabIndex = 12;
//
// btnClearFilter
//
this.btnClearFilter.Location = new System.Drawing.Point(3, 2);
this.btnClearFilter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnClearFilter.Name = "btnClearFilter";
this.btnClearFilter.Size = new System.Drawing.Size(88, 20);
this.btnClearFilter.TabIndex = 13;
this.btnClearFilter.Text = "Clear Filter";
this.btnClearFilter.UseVisualStyleBackColor = true;
//
// btnColumnResize
//
this.btnColumnResize.Location = new System.Drawing.Point(97, 2);
this.btnColumnResize.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnColumnResize.Name = "btnColumnResize";
this.btnColumnResize.Size = new System.Drawing.Size(151, 20);
this.btnColumnResize.TabIndex = 14;
this.btnColumnResize.Text = "Column Resize(F6)";
this.btnColumnResize.UseVisualStyleBackColor = true;
//
// spnl00
//
this.spnl00.Dock = System.Windows.Forms.DockStyle.Fill;
this.spnl00.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.spnl00.Location = new System.Drawing.Point(0, 0);
this.spnl00.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.spnl00.Name = "spnl00";
//
// spnl00.Panel1
//
this.spnl00.Panel1.Controls.Add(this.pnlDisplayL);
//
// spnl00.Panel2
//
this.spnl00.Panel2.Controls.Add(this.pnlDisplayR);
this.spnl00.Size = new System.Drawing.Size(942, 383);
this.spnl00.SplitterDistance = 438;
this.spnl00.TabIndex = 0;
//
// pnlDisplayL
//
this.pnlDisplayL.Controls.Add(this.tabControl1);
this.pnlDisplayL.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlDisplayL.Location = new System.Drawing.Point(0, 0);
this.pnlDisplayL.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlDisplayL.Name = "pnlDisplayL";
this.pnlDisplayL.Size = new System.Drawing.Size(438, 383);
this.pnlDisplayL.TabIndex = 0;
//
// tabControl1
//
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Controls.Add(this.tabPage3);
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Location = new System.Drawing.Point(0, 0);
this.tabControl1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(438, 383);
this.tabControl1.TabIndex = 1;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.tboxLog);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage1.Size = new System.Drawing.Size(430, 357);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "Log Files";
this.tabPage1.UseVisualStyleBackColor = true;
//
// tboxLog
//
this.tboxLog.AllowDrop = true;
this.tboxLog.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxLog.Location = new System.Drawing.Point(3, 2);
this.tboxLog.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxLog.Multiline = true;
this.tboxLog.Name = "tboxLog";
this.tboxLog.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxLog.Size = new System.Drawing.Size(424, 353);
this.tboxLog.TabIndex = 1;
//
// tabPage2
//
this.tabPage2.Controls.Add(this.tboxException);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage2.Size = new System.Drawing.Size(375, 381);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "Execption";
this.tabPage2.UseVisualStyleBackColor = true;
//
// tboxException
//
this.tboxException.AllowDrop = true;
this.tboxException.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxException.Location = new System.Drawing.Point(3, 2);
this.tboxException.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxException.Multiline = true;
this.tboxException.Name = "tboxException";
this.tboxException.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxException.Size = new System.Drawing.Size(369, 377);
this.tboxException.TabIndex = 2;
//
// tabPage3
//
this.tabPage3.Location = new System.Drawing.Point(4, 22);
this.tabPage3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(375, 381);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "Equipment";
this.tabPage3.UseVisualStyleBackColor = true;
//
// pnlDisplayR
//
this.pnlDisplayR.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pnlDisplayR.Controls.Add(this.grid);
this.pnlDisplayR.Controls.Add(this.winGrid);
this.pnlDisplayR.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlDisplayR.Location = new System.Drawing.Point(0, 0);
this.pnlDisplayR.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlDisplayR.Name = "pnlDisplayR";
this.pnlDisplayR.Size = new System.Drawing.Size(500, 383);
this.pnlDisplayR.TabIndex = 1;
//
// grid
//
this.grid.Dock = System.Windows.Forms.DockStyle.Fill;
this.grid.Location = new System.Drawing.Point(0, 0);
this.grid.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
//
//
this.grid.MasterTemplate.ViewDefinition = tableViewDefinition2;
this.grid.Name = "grid";
this.grid.Size = new System.Drawing.Size(498, 381);
this.grid.TabIndex = 1;
//
// winGrid
//
this.winGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.winGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2});
this.winGrid.Location = new System.Drawing.Point(0, 0);
this.winGrid.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.winGrid.Name = "winGrid";
this.winGrid.RowTemplate.Height = 27;
this.winGrid.Size = new System.Drawing.Size(238, 183);
this.winGrid.TabIndex = 0;
//
// Column1
//
this.Column1.HeaderText = "Column1";
this.Column1.Name = "Column1";
//
// Column2
//
this.Column2.HeaderText = "Column2";
this.Column2.Name = "Column2";
//
// FrmLogParser01
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(948, 518);
this.Controls.Add(this.pnlRoot);
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "FrmLogParser01";
this.Text = "Form1";
this.pnlRoot.ResumeLayout(false);
this.spnlRoot.Panel1.ResumeLayout(false);
this.spnlRoot.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.spnlRoot)).EndInit();
this.spnlRoot.ResumeLayout(false);
this.pnlControls.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.pnlFiles.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.flowLayoutPanel2.ResumeLayout(false);
this.pnlButtons.ResumeLayout(false);
this.pnlButtons.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.flowLayoutPanel3.ResumeLayout(false);
this.spnl00.Panel1.ResumeLayout(false);
this.spnl00.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.spnl00)).EndInit();
this.spnl00.ResumeLayout(false);
this.pnlDisplayL.ResumeLayout(false);
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage1.PerformLayout();
this.tabPage2.ResumeLayout(false);
this.tabPage2.PerformLayout();
this.pnlDisplayR.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.grid)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.winGrid)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel pnlRoot;
private System.Windows.Forms.SplitContainer spnlRoot;
private System.Windows.Forms.Panel pnlDisplayL;
private System.Windows.Forms.SplitContainer spnl00;
private System.Windows.Forms.Panel pnlDisplayR;
private System.Windows.Forms.DataGridView winGrid;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private Telerik.WinControls.UI.RadGridView grid;
private System.Windows.Forms.Panel pnlControls;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TextBox tboxLog;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.TextBox tboxException;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Panel pnlFiles;
private System.Windows.Forms.Button btnClear;
private System.Windows.Forms.FlowLayoutPanel pnlButtons;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.CheckBox chkAutoClear;
private System.Windows.Forms.CheckBox chkDownload;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;
private System.Windows.Forms.Button btnClearFilter;
private System.Windows.Forms.Button btnColumnResize;
private System.Windows.Forms.ListView lviewFiles;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.CheckBox chkFilterLinktest;
private System.Windows.Forms.TextBox tboxFilename;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
private System.Windows.Forms.Button btnFileAdd;
private System.Windows.Forms.Button btnFileRemove;
private System.Windows.Forms.Button btnParsing;
private System.Windows.Forms.TabPage tabPage3;
}
}

View File

@@ -0,0 +1,567 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using DDUtilityApp.LOGPARSER.DATA;
using DDUtilityApp.LOGPARSER.PARSER;
using JWH;
using JWH.CONTROL;
using Telerik.WinControls.UI;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmLogParser01 : Form
{
private Font RadGridFont = new Font(new FontFamily("돋움체"), 11.0f);
private bool RadGridControlKey { get; set; } = false;
private StandardCollection Collection { get; set; } = new StandardCollection();
private FrmFindDialog FindDialog { get; set; } = null;
private string WindowText { get; set; } = $"[EverOne MCS] LOG File Viewer";
public FrmLogParser01()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
XLogger.Instance.Control = this.tboxException;
}
private void SetLayout()
{
this.AllowDrop = true;
this.Text = $"{this.WindowText} - Ver. {Application.ProductVersion}";
this.tboxLog.AllowDrop = true;
this.tboxLog.WordWrap = false;
this.tboxLog.Multiline = true;
this.tboxLog.HideSelection = false;
this.tboxLog.ScrollBars = ScrollBars.Both;
this.tboxLog.Font = new Font("돋움체", 9);
this.tboxException.WordWrap = false;
this.tboxException.Font = new Font("돋움체", 9);
this.lviewFiles.View = View.Details;
ColumnHeader header = this.lviewFiles.Columns.Add("File Name");
this.lviewFiles.CheckBoxes = true;
this.lviewFiles.MultiSelect = false;
this.lviewFiles.Sorting = SortOrder.Ascending;
this.lviewFiles.ListViewItemSorter = new ListViewItemComparer(0, this.lviewFiles.Sorting);
this.RadGrid_Setting();
}
private void SetEventHandler()
{
// DragDrop
this.DragDrop += Control_DragDrop;
this.DragEnter += Control_DragEnter;
this.tboxLog.DragDrop += Control_DragDrop;
this.tboxLog.DragEnter += Control_DragEnter;
this.tboxLog.KeyDown += TboxLog_KeyDown;
// File List
this.lviewFiles.Click += LviewFiles_Click;
this.lviewFiles.ColumnClick += LviewFiles_ColumnClick;
this.lviewFiles.Resize += LviewFiles_Resize;
this.tboxFilename.KeyDown += TboxFilename_KeyDown;
this.btnFileAdd.Click += BtnFileAdd_Click;
this.btnFileRemove.Click += BtnFileRemove_Click;
this.btnClear.Click += BtnFileClear_Click;
this.btnParsing.Click += BtnParsing_Click;
// Option
this.btnClearFilter.Click += BtnClearFilter_Click;
this.btnColumnResize.Click += BtnColumnResize_Click;
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.F3:
if (this.FindDialog != null) this.FindDialog.Next();
break;
case Keys.F5:
this.BtnParsing_Click(this.btnParsing, new EventArgs());
break;
case Keys.F6:
this.BtnColumnResize_Click(this.btnColumnResize, new EventArgs());
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
#region [ DragDrop ] --------------------------------------------------
private void Control_DragDrop(object sender, DragEventArgs e)
{
XLogger.Instance.Info(e);
if (this.chkAutoClear.Checked) this.lviewFiles.Items.Clear();
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string filePath in files)
{
ListViewItem lviewItem = this.lviewFiles.Items.Add(Path.GetFileName(filePath));
lviewItem.Checked = true;
lviewItem.Tag = filePath;
}
this.BtnParsing_Click(this.btnParsing, new EventArgs());
}
private void Control_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
}
#endregion
#region [ Control Event ] ---------------------------------------------
private void LviewFiles_Click(object sender, EventArgs e)
{
try
{
if (this.lviewFiles.Items.Count < 1) return;
if (this.lviewFiles.SelectedItems.Count < 1) return;
int index = -1;
index = this.lviewFiles.SelectedItems[0].Index;
this.tboxFilename.Text = this.lviewFiles.Items[index].Tag as string;
if (string.IsNullOrEmpty(this.tboxFilename.Text) == false && this.tboxFilename.Text.Length > 6)
{
this.tboxFilename.SelectionStart = this.tboxFilename.Text.Length - 6;
this.tboxFilename.SelectionLength = 2;
this.tboxFilename.Focus();
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void LviewFiles_ColumnClick(object sender, ColumnClickEventArgs e)
{
try
{
SortOrder sorting = SortOrder.None;
switch (this.lviewFiles.Sorting)
{
case SortOrder.None:
sorting = SortOrder.Ascending;
break;
case SortOrder.Ascending:
sorting = SortOrder.Descending;
break;
case SortOrder.Descending:
sorting = SortOrder.None;
break;
}
this.lviewFiles.Sorting = sorting;
this.lviewFiles.ListViewItemSorter = new ListViewItemComparer(e.Column, this.lviewFiles.Sorting);
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void LviewFiles_Resize(object sender, EventArgs e)
{
int width = this.lviewFiles.Width - 32;
int headerWidth = width / this.lviewFiles.Columns.Count;
foreach (ColumnHeader header in this.lviewFiles.Columns)
header.Width = headerWidth;
}
private void TboxFilename_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
this.BtnFileAdd_Click(this.btnFileAdd, new EventArgs());
}
private void BtnFileAdd_Click(object sender, EventArgs e)
{
try
{
ListViewItem lviewItem = this.lviewFiles.Items.Add(Path.GetFileName(this.tboxFilename.Text));
lviewItem.Checked = true;
lviewItem.Tag = this.tboxFilename.Text;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnFileRemove_Click(object sender, EventArgs e)
{
try
{
if (this.lviewFiles.SelectedItems.Count <= 0) return;
this.lviewFiles.SelectedItems[0].Remove();
this.tboxFilename.Text = string.Empty;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnFileClear_Click(object sender, EventArgs e)
{
this.Text = $"{this.WindowText} - Ver. {Application.ProductVersion}";
this.lviewFiles.Items.Clear();
this.tboxLog.Clear();
this.tboxException.Clear();
this.grid.DataSource = null;
}
private void BtnParsing_Click(object sender, EventArgs e)
{
try
{
this.Cursor = Cursors.WaitCursor;
this.Parsing();
if (this.chkFilterLinktest.Checked)
this.grid.DataSource = this.Collection.Where(item => item.Column1 != "LINKTEST");
else
this.grid.DataSource = this.Collection;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
this.Cursor = Cursors.Default;
}
}
private void BtnClearFilter_Click(object sender, EventArgs e)
{
this.grid.MasterTemplate.FilterDescriptors.Clear();
}
private void BtnColumnResize_Click(object sender, EventArgs e)
{
this.grid.BestFitColumns(BestFitColumnMode.DisplayedCells);
//foreach (GridViewColumn column in this.grid.Columns)
//{
// if (column.Name.ToUpper().StartsWith("COLUMN")) column.Width = 100;
// if (new string[] { "TID" }.Contains(column.Name.ToUpper())) column.Width = 100;
//}
}
private void TboxLog_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyData & Keys.Control) == Keys.Control && (e.KeyData & Keys.F) == Keys.F)
{
if (this.FindDialog == null)
{
this.FindDialog = new FrmFindDialog(this.tboxLog);
this.FindDialog.StartPosition = FormStartPosition.Manual;
this.FindDialog.Location = this.grid.PointToScreen(new Point(10, 10));
this.FindDialog.FormClosed += (object sender1, FormClosedEventArgs e1) => { this.FindDialog = null; };
this.FindDialog.FInd += (object sender1, EventArgs e1) => { };
this.FindDialog.Show();
}
else
{
this.FindDialog.Activate();
}
this.FindDialog.SelectedText = this.tboxLog.SelectedText;
}
}
#endregion
#region [ Grid ] ------------------------------------------------------
private void RadGrid_Setting()
{
this.grid.Columns.Clear();
if (this.grid.GetType() == typeof(RadGridView))
{
RadGridView rgrid = this.grid as RadGridView;
rgrid.Font = this.RadGridFont;
rgrid.AllowAddNewRow = false;
rgrid.AddNewRowPosition = SystemRowPosition.Top;
rgrid.NewRowEnterKeyMode = RadGridViewNewRowEnterKeyMode.EnterMovesToLastAddedRow;
rgrid.SelectionMode = GridViewSelectionMode.FullRowSelect;
rgrid.AllowAutoSizeColumns = false;
rgrid.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.None;
rgrid.EnableFiltering = true;
rgrid.ShowFilteringRow = false;
rgrid.ShowHeaderCellButtons = true;
rgrid.ShowNoDataText = true;
rgrid.ShowRowErrors = true;
rgrid.ShowGroupedColumns = true;
rgrid.ShowGroupPanelScrollbars = true;
rgrid.AllowEditRow = false;
rgrid.TableElement.RowHeaderColumnWidth = 80;
rgrid.DataBindingComplete += RadGrid_DataBindingComplete;
rgrid.SelectionChanged += RadGrid_SelectionChanged;
rgrid.ViewCellFormatting += RadGrid_ViewCellFormatting;
rgrid.CellDoubleClick += RadGrid_CellDoubleClick;
rgrid.KeyDown += RadGrid_KeyDown;
rgrid.KeyUp += RadGrid_KeyUp;
rgrid.CellClick += RadGrid_CellClick;
}
}
private void RadGrid_KeyUp(object sender, KeyEventArgs e)
{
this.RadGridControlKey = e.Control;
}
private void RadGrid_KeyDown(object sender, KeyEventArgs e)
{
this.RadGridControlKey = e.Control;
}
private void RadGrid_CellClick(object sender, GridViewCellEventArgs e)
{
try
{
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) rgrid = this.grid;
if (this.RadGridControlKey == false) return;
foreach (GridViewDataColumn column in rgrid.Columns)
{
foreach (BaseFormattingObject obj in column.ConditionalFormattingObjectList)
{
if (new string[] { "Marking" }.Contains(obj.Name))
{
ExpressionFormattingObject formatting = obj as ExpressionFormattingObject;
formatting.Expression += $" AND {e.Column.Name} = '{e.Value}'";
}
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void RadGrid_CellDoubleClick(object sender, GridViewCellEventArgs e)
{
try
{
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) rgrid = this.grid;
List<BaseFormattingObject> lstFormat = new List<BaseFormattingObject>();
foreach (GridViewDataColumn column in rgrid.Columns)
{
lstFormat.Clear();
foreach (BaseFormattingObject obj in column.ConditionalFormattingObjectList)
{
if (new string[] { "Level_Error", "Type_Error", "Server_Error", "Return_1" }.Contains(obj.Name)) continue;
lstFormat.Add(obj);
}
foreach (BaseFormattingObject obj in lstFormat)
column.ConditionalFormattingObjectList.Remove(obj);
}
var value = e.Value;
//DateTime column Convert
if (e.Value.GetType() == typeof(DateTime))
{
var tempData = (DateTime)e.Value;
value = tempData.ToString("yyyy-MM-dd HH:mm:ss.fff");
}
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Marking", $"{e.Column.Name} = '{value}'", true);
formatting.RowBackColor = Color.FromArgb(128, 0, 255, 0);
rgrid.Columns[e.Column.Name].ConditionalFormattingObjectList.Add(formatting);
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void RadGrid_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
if (e.CellElement is GridRowHeaderCellElement && e.Row is GridViewDataRowInfo)
{
#if ROW_INDEX
GridDataView dataView = this.grid.MasterTemplate.DataView as GridDataView;
e.CellElement.Text = (dataView.Indexer.Items.IndexOf(e.Row) + 1).ToString();
#else
StandardData standardData = e.Row.DataBoundItem as StandardData;
e.CellElement.Text = (standardData != null ? standardData.LineNumber.ToString() : "");
#endif
e.CellElement.TextImageRelation = TextImageRelation.ImageBeforeText;
}
else
{
e.CellElement.ResetValue(LightVisualElement.TextImageRelationProperty, Telerik.WinControls.ValueResetFlags.Local);
}
}
private void RadGrid_DataBindingComplete(object sender, GridViewBindingCompleteEventArgs e)
{
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) return;
if (rgrid.Columns.Contains("LineNumber")) rgrid.Columns["LineNumber"].IsVisible = false;
if (rgrid.Columns.Contains("DateTime")) rgrid.Columns["DateTime"].FormatString = "{0:yyyy-MM-dd HH:mm:ss.fff}";
if (rgrid.Columns.Contains("Service")) rgrid.Columns["Service"].IsVisible = false;
if (rgrid.Columns.Contains("Body")) rgrid.Columns["Body"].IsVisible = false;
if (rgrid.Columns.Contains("Level"))
{
rgrid.Columns["Level"].TextAlignment = ContentAlignment.MiddleCenter;
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Level_Error", "Level='ERROR'", true);
formatting.RowBackColor = Color.FromArgb(128, 255, 0, 0);
rgrid.Columns["Level"].ConditionalFormattingObjectList.Add(formatting);
}
if (rgrid.Columns.Contains("Type"))
{
//rgrid.Columns["Type"].TextAlignment = ContentAlignment.MiddleCenter;
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Type_Error", "Server<>'TID' and Type='ERROR'", true);
formatting.RowBackColor = Color.FromArgb(128, 255, 0, 0);
rgrid.Columns["Type"].ConditionalFormattingObjectList.Add(formatting);
}
if (rgrid.Columns.Contains("Return"))
{
rgrid.Columns["Return"].TextAlignment = ContentAlignment.MiddleCenter;
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Return_1", "Return<>0", true);
formatting.RowBackColor = Color.FromArgb(128, 255, 0, 0);
rgrid.Columns["Return"].ConditionalFormattingObjectList.Add(formatting);
}
//if (this.chkFilterLinktest.Checked)
//{
// FilterDescriptor filter = new FilterDescriptor("Column1", FilterOperator.IsNotEqualTo, "LINKTEST");
// filter.IsFilterEditor = true;
// this.grid.FilterDescriptors.Add(filter);
//}
rgrid.BestFitColumns(BestFitColumnMode.DisplayedCells);
}
private void RadGrid_SelectionChanged(object sender, EventArgs e)
{
try
{
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) return;
StandardData data = rgrid.SelectedRows.FirstOrDefault().DataBoundItem as StandardData;
if (data == null) return;
int dataLineNumber = data.LineNumber - 1;
int startLineNumber = dataLineNumber - 10;
int bottomLineNumber = dataLineNumber + 100;
int dataIndex = this.tboxLog.Text.IndexOf($"{data.LineNumber.ToString("000000")}:");
int difference = dataIndex - this.tboxLog.GetFirstCharIndexFromLine(dataLineNumber);
this.tboxLog.SuspendLayout();
if (bottomLineNumber >= this.tboxLog.Lines.Length) bottomLineNumber = this.tboxLog.Lines.Length - 1;
this.tboxLog.SelectionStart = this.tboxLog.GetFirstCharIndexFromLine(bottomLineNumber) + difference;
this.tboxLog.ScrollToCaret();
if (startLineNumber < 0) startLineNumber = 0;
this.tboxLog.SelectionStart = this.tboxLog.GetFirstCharIndexFromLine(startLineNumber) + difference;
this.tboxLog.ScrollToCaret();
this.tboxLog.SelectionStart = this.tboxLog.GetFirstCharIndexFromLine(dataLineNumber) + difference;
this.tboxLog.SelectionLength = 6;
this.tboxLog.ScrollToCaret();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
this.tboxLog.ResumeLayout();
}
}
#endregion
private StandardCollection Parsing()
{
try
{
this.tboxLog.Clear();
this.Collection.Clear();
List<string> lstFileName = new List<string>();
string strTitle = string.Empty;
// Process Unit: File
foreach (ListViewItem lviewItem in this.lviewFiles.Items)
{
if (lviewItem.Checked == false) continue;
XLogger.Instance.Info(lviewItem.Text);
string sourceFileName = lviewItem.Tag as string;
if (this.chkDownload.Checked)
{
string destPath = $@"{Application.StartupPath}\Download";
if (System.IO.Directory.Exists(destPath) == false) System.IO.Directory.CreateDirectory(destPath);
if (string.IsNullOrEmpty(strTitle)) strTitle = System.IO.Path.GetFileNameWithoutExtension(sourceFileName);
string destFileName = $@"{destPath}\{System.IO.Path.GetFileName(sourceFileName)}";
System.IO.File.Copy(sourceFileName, destFileName, true);
sourceFileName = destFileName;
}
lstFileName.Add(sourceFileName);
} // Process Unit: File
EisParser logParser = new EisParser(lstFileName.ToArray());
logParser.Parsing();
this.Text = $"{strTitle} - Ver. {Application.ProductVersion}";
this.tboxLog.Text = logParser.LogString.ToString();
this.Collection.AddRange(logParser.StandardCollection);
return this.Collection;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
return this.Collection;
}
}
}
}

View File

@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -0,0 +1,800 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmLogParser02
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition1 = new Telerik.WinControls.UI.TableViewDefinition();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogParser02));
this.pnlRoot = new System.Windows.Forms.Panel();
this.spnlRoot = new System.Windows.Forms.SplitContainer();
this.pnlControls = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.pnlEquipment = new System.Windows.Forms.Panel();
this.pnlFiles = new System.Windows.Forms.Panel();
this.lviewFiles = new System.Windows.Forms.ListView();
this.panel1 = new System.Windows.Forms.Panel();
this.tboxFilename = new System.Windows.Forms.TextBox();
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
this.btnFileAdd = new System.Windows.Forms.Button();
this.btnFileRemove = new System.Windows.Forms.Button();
this.btnFileClear = new System.Windows.Forms.Button();
this.btnParsing = new System.Windows.Forms.Button();
this.panel3 = new System.Windows.Forms.Panel();
this.btnEqpSelector = new System.Windows.Forms.Button();
this.tboxEqModelID = new System.Windows.Forms.TextBox();
this.tboxEqDescription = new System.Windows.Forms.TextBox();
this.tboxEquipmentID = new System.Windows.Forms.TextBox();
this.pnlButtons = new System.Windows.Forms.FlowLayoutPanel();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.chkAutoClear = new System.Windows.Forms.CheckBox();
this.chkDownload = new System.Windows.Forms.CheckBox();
this.chkFilterLinktest = new System.Windows.Forms.CheckBox();
this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();
this.btnClearFilter = new System.Windows.Forms.Button();
this.btnColumnResize = new System.Windows.Forms.Button();
this.btnOpenOriginal = new System.Windows.Forms.Button();
this.btnSecsDefine = new System.Windows.Forms.Button();
this.btnOpenWorkFlow = new System.Windows.Forms.Button();
this.panel4 = new System.Windows.Forms.Panel();
this.tabControl2 = new System.Windows.Forms.TabControl();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.spnl00 = new System.Windows.Forms.SplitContainer();
this.pnlDisplayL = new System.Windows.Forms.Panel();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.tboxLog = new System.Windows.Forms.TextBox();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.tboxException = new System.Windows.Forms.TextBox();
this.pnlDisplayR = new System.Windows.Forms.Panel();
this.grid = new JWH.CONTROL.GridViewEx();
this.flowLayoutPanel4 = new System.Windows.Forms.FlowLayoutPanel();
this.label1 = new System.Windows.Forms.Label();
this.tboxLineNumber = new System.Windows.Forms.TextBox();
this.btnGoLineNumber = new System.Windows.Forms.Button();
this.pnlRoot.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spnlRoot)).BeginInit();
this.spnlRoot.Panel1.SuspendLayout();
this.spnlRoot.Panel2.SuspendLayout();
this.spnlRoot.SuspendLayout();
this.pnlControls.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.pnlEquipment.SuspendLayout();
this.pnlFiles.SuspendLayout();
this.panel1.SuspendLayout();
this.flowLayoutPanel2.SuspendLayout();
this.panel3.SuspendLayout();
this.pnlButtons.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.flowLayoutPanel3.SuspendLayout();
this.panel4.SuspendLayout();
this.tabControl2.SuspendLayout();
this.tabPage4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spnl00)).BeginInit();
this.spnl00.Panel1.SuspendLayout();
this.spnl00.Panel2.SuspendLayout();
this.spnl00.SuspendLayout();
this.pnlDisplayL.SuspendLayout();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.pnlDisplayR.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).BeginInit();
this.flowLayoutPanel4.SuspendLayout();
this.SuspendLayout();
//
// pnlRoot
//
this.pnlRoot.Controls.Add(this.spnlRoot);
this.pnlRoot.Controls.Add(this.flowLayoutPanel4);
this.pnlRoot.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlRoot.Location = new System.Drawing.Point(0, 0);
this.pnlRoot.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlRoot.Name = "pnlRoot";
this.pnlRoot.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlRoot.Size = new System.Drawing.Size(1145, 602);
this.pnlRoot.TabIndex = 0;
//
// spnlRoot
//
this.spnlRoot.Dock = System.Windows.Forms.DockStyle.Fill;
this.spnlRoot.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.spnlRoot.Location = new System.Drawing.Point(3, 2);
this.spnlRoot.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.spnlRoot.Name = "spnlRoot";
this.spnlRoot.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// spnlRoot.Panel1
//
this.spnlRoot.Panel1.Controls.Add(this.pnlControls);
this.spnlRoot.Panel1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
// spnlRoot.Panel2
//
this.spnlRoot.Panel2.Controls.Add(this.panel4);
this.spnlRoot.Size = new System.Drawing.Size(1139, 571);
this.spnlRoot.SplitterDistance = 161;
this.spnlRoot.SplitterWidth = 3;
this.spnlRoot.TabIndex = 1;
//
// pnlControls
//
this.pnlControls.Controls.Add(this.splitContainer1);
this.pnlControls.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlControls.Location = new System.Drawing.Point(3, 2);
this.pnlControls.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlControls.Name = "pnlControls";
this.pnlControls.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlControls.Size = new System.Drawing.Size(1133, 157);
this.pnlControls.TabIndex = 7;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(3, 2);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.pnlButtons);
this.splitContainer1.Size = new System.Drawing.Size(1127, 153);
this.splitContainer1.SplitterDistance = 719;
this.splitContainer1.TabIndex = 8;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer2.Name = "splitContainer2";
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.pnlEquipment);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.panel3);
this.splitContainer2.Size = new System.Drawing.Size(719, 153);
this.splitContainer2.SplitterDistance = 380;
this.splitContainer2.TabIndex = 0;
//
// pnlEquipment
//
this.pnlEquipment.Controls.Add(this.pnlFiles);
this.pnlEquipment.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlEquipment.Location = new System.Drawing.Point(0, 0);
this.pnlEquipment.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlEquipment.Name = "pnlEquipment";
this.pnlEquipment.Size = new System.Drawing.Size(380, 153);
this.pnlEquipment.TabIndex = 1;
//
// pnlFiles
//
this.pnlFiles.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pnlFiles.Controls.Add(this.lviewFiles);
this.pnlFiles.Controls.Add(this.panel1);
this.pnlFiles.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlFiles.Location = new System.Drawing.Point(0, 0);
this.pnlFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlFiles.Name = "pnlFiles";
this.pnlFiles.Padding = new System.Windows.Forms.Padding(3, 2, 5, 2);
this.pnlFiles.Size = new System.Drawing.Size(380, 153);
this.pnlFiles.TabIndex = 2;
//
// lviewFiles
//
this.lviewFiles.Dock = System.Windows.Forms.DockStyle.Fill;
this.lviewFiles.HideSelection = false;
this.lviewFiles.Location = new System.Drawing.Point(3, 2);
this.lviewFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.lviewFiles.Name = "lviewFiles";
this.lviewFiles.Size = new System.Drawing.Size(370, 88);
this.lviewFiles.TabIndex = 0;
this.lviewFiles.UseCompatibleStateImageBehavior = false;
//
// panel1
//
this.panel1.Controls.Add(this.tboxFilename);
this.panel1.Controls.Add(this.flowLayoutPanel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel1.Location = new System.Drawing.Point(3, 90);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0);
this.panel1.Size = new System.Drawing.Size(370, 59);
this.panel1.TabIndex = 3;
//
// tboxFilename
//
this.tboxFilename.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxFilename.Location = new System.Drawing.Point(0, 2);
this.tboxFilename.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxFilename.Multiline = true;
this.tboxFilename.Name = "tboxFilename";
this.tboxFilename.Size = new System.Drawing.Size(370, 33);
this.tboxFilename.TabIndex = 0;
//
// flowLayoutPanel2
//
this.flowLayoutPanel2.AutoSize = true;
this.flowLayoutPanel2.Controls.Add(this.btnFileAdd);
this.flowLayoutPanel2.Controls.Add(this.btnFileRemove);
this.flowLayoutPanel2.Controls.Add(this.btnFileClear);
this.flowLayoutPanel2.Controls.Add(this.btnParsing);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Bottom;
this.flowLayoutPanel2.Location = new System.Drawing.Point(0, 35);
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
this.flowLayoutPanel2.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0);
this.flowLayoutPanel2.Size = new System.Drawing.Size(370, 24);
this.flowLayoutPanel2.TabIndex = 18;
this.flowLayoutPanel2.WrapContents = false;
//
// btnFileAdd
//
this.btnFileAdd.Location = new System.Drawing.Point(3, 2);
this.btnFileAdd.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnFileAdd.Name = "btnFileAdd";
this.btnFileAdd.Size = new System.Drawing.Size(70, 20);
this.btnFileAdd.TabIndex = 1;
this.btnFileAdd.Text = "Add";
this.btnFileAdd.UseVisualStyleBackColor = true;
//
// btnFileRemove
//
this.btnFileRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnFileRemove.Location = new System.Drawing.Point(79, 2);
this.btnFileRemove.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnFileRemove.Name = "btnFileRemove";
this.btnFileRemove.Size = new System.Drawing.Size(70, 20);
this.btnFileRemove.TabIndex = 2;
this.btnFileRemove.Text = "Remove";
this.btnFileRemove.UseVisualStyleBackColor = true;
//
// btnFileClear
//
this.btnFileClear.Location = new System.Drawing.Point(155, 2);
this.btnFileClear.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnFileClear.Name = "btnFileClear";
this.btnFileClear.Size = new System.Drawing.Size(70, 20);
this.btnFileClear.TabIndex = 3;
this.btnFileClear.Text = "Clear";
this.btnFileClear.UseVisualStyleBackColor = true;
//
// btnParsing
//
this.btnParsing.Location = new System.Drawing.Point(231, 2);
this.btnParsing.Margin = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.btnParsing.Name = "btnParsing";
this.btnParsing.Size = new System.Drawing.Size(88, 20);
this.btnParsing.TabIndex = 0;
this.btnParsing.Text = "Parsing(F5)";
this.btnParsing.UseVisualStyleBackColor = true;
//
// panel3
//
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel3.Controls.Add(this.btnEqpSelector);
this.panel3.Controls.Add(this.tboxEqModelID);
this.panel3.Controls.Add(this.tboxEqDescription);
this.panel3.Controls.Add(this.tboxEquipmentID);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(0, 0);
this.panel3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(335, 153);
this.panel3.TabIndex = 0;
//
// btnEqpSelector
//
this.btnEqpSelector.Location = new System.Drawing.Point(4, 75);
this.btnEqpSelector.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnEqpSelector.Name = "btnEqpSelector";
this.btnEqpSelector.Size = new System.Drawing.Size(170, 20);
this.btnEqpSelector.TabIndex = 0;
this.btnEqpSelector.Text = "Equipment Select ...";
this.btnEqpSelector.UseVisualStyleBackColor = true;
//
// tboxEqModelID
//
this.tboxEqModelID.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tboxEqModelID.Location = new System.Drawing.Point(4, 52);
this.tboxEqModelID.Margin = new System.Windows.Forms.Padding(3, 2, 3, 1);
this.tboxEqModelID.Name = "tboxEqModelID";
this.tboxEqModelID.Size = new System.Drawing.Size(327, 21);
this.tboxEqModelID.TabIndex = 3;
//
// tboxEqDescription
//
this.tboxEqDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tboxEqDescription.Location = new System.Drawing.Point(4, 29);
this.tboxEqDescription.Margin = new System.Windows.Forms.Padding(3, 2, 3, 1);
this.tboxEqDescription.Name = "tboxEqDescription";
this.tboxEqDescription.Size = new System.Drawing.Size(327, 21);
this.tboxEqDescription.TabIndex = 2;
//
// tboxEquipmentID
//
this.tboxEquipmentID.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tboxEquipmentID.Location = new System.Drawing.Point(4, 5);
this.tboxEquipmentID.Margin = new System.Windows.Forms.Padding(3, 2, 3, 1);
this.tboxEquipmentID.Name = "tboxEquipmentID";
this.tboxEquipmentID.Size = new System.Drawing.Size(327, 21);
this.tboxEquipmentID.TabIndex = 0;
//
// pnlButtons
//
this.pnlButtons.AutoSize = true;
this.pnlButtons.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pnlButtons.Controls.Add(this.flowLayoutPanel1);
this.pnlButtons.Controls.Add(this.flowLayoutPanel3);
this.pnlButtons.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlButtons.Location = new System.Drawing.Point(0, 0);
this.pnlButtons.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlButtons.Name = "pnlButtons";
this.pnlButtons.Size = new System.Drawing.Size(404, 153);
this.pnlButtons.TabIndex = 5;
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.AutoSize = true;
this.flowLayoutPanel1.Controls.Add(this.chkAutoClear);
this.flowLayoutPanel1.Controls.Add(this.chkDownload);
this.flowLayoutPanel1.Controls.Add(this.chkFilterLinktest);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 2);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(279, 20);
this.flowLayoutPanel1.TabIndex = 11;
//
// chkAutoClear
//
this.chkAutoClear.AutoSize = true;
this.chkAutoClear.Checked = true;
this.chkAutoClear.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkAutoClear.Location = new System.Drawing.Point(3, 2);
this.chkAutoClear.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chkAutoClear.Name = "chkAutoClear";
this.chkAutoClear.Size = new System.Drawing.Size(83, 16);
this.chkAutoClear.TabIndex = 4;
this.chkAutoClear.Text = "Auto Clear";
this.chkAutoClear.UseVisualStyleBackColor = true;
//
// chkDownload
//
this.chkDownload.AutoSize = true;
this.chkDownload.Checked = true;
this.chkDownload.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkDownload.Location = new System.Drawing.Point(92, 2);
this.chkDownload.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chkDownload.Name = "chkDownload";
this.chkDownload.Size = new System.Drawing.Size(80, 16);
this.chkDownload.TabIndex = 6;
this.chkDownload.Text = "Download";
this.chkDownload.UseVisualStyleBackColor = true;
//
// chkFilterLinktest
//
this.chkFilterLinktest.AutoSize = true;
this.chkFilterLinktest.Checked = true;
this.chkFilterLinktest.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkFilterLinktest.Location = new System.Drawing.Point(178, 2);
this.chkFilterLinktest.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chkFilterLinktest.Name = "chkFilterLinktest";
this.chkFilterLinktest.Size = new System.Drawing.Size(98, 16);
this.chkFilterLinktest.TabIndex = 13;
this.chkFilterLinktest.Text = "Filter Linktest";
this.chkFilterLinktest.UseVisualStyleBackColor = true;
//
// flowLayoutPanel3
//
this.flowLayoutPanel3.AutoSize = true;
this.flowLayoutPanel3.Controls.Add(this.btnClearFilter);
this.flowLayoutPanel3.Controls.Add(this.btnColumnResize);
this.flowLayoutPanel3.Controls.Add(this.btnOpenOriginal);
this.flowLayoutPanel3.Controls.Add(this.btnSecsDefine);
this.flowLayoutPanel3.Controls.Add(this.btnOpenWorkFlow);
this.flowLayoutPanel3.Location = new System.Drawing.Point(3, 26);
this.flowLayoutPanel3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel3.Name = "flowLayoutPanel3";
this.flowLayoutPanel3.Size = new System.Drawing.Size(360, 48);
this.flowLayoutPanel3.TabIndex = 14;
//
// btnClearFilter
//
this.btnClearFilter.Location = new System.Drawing.Point(3, 2);
this.btnClearFilter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnClearFilter.Name = "btnClearFilter";
this.btnClearFilter.Size = new System.Drawing.Size(114, 20);
this.btnClearFilter.TabIndex = 13;
this.btnClearFilter.Text = "Clear Filter";
this.btnClearFilter.UseVisualStyleBackColor = true;
//
// btnColumnResize
//
this.btnColumnResize.Location = new System.Drawing.Point(123, 2);
this.btnColumnResize.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnColumnResize.Name = "btnColumnResize";
this.btnColumnResize.Size = new System.Drawing.Size(151, 20);
this.btnColumnResize.TabIndex = 14;
this.btnColumnResize.Text = "Column Resize(F6)";
this.btnColumnResize.UseVisualStyleBackColor = true;
//
// btnOpenOriginal
//
this.btnOpenOriginal.Location = new System.Drawing.Point(3, 26);
this.btnOpenOriginal.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnOpenOriginal.Name = "btnOpenOriginal";
this.btnOpenOriginal.Size = new System.Drawing.Size(114, 20);
this.btnOpenOriginal.TabIndex = 16;
this.btnOpenOriginal.Text = "Original ...";
this.btnOpenOriginal.UseVisualStyleBackColor = true;
//
// btnSecsDefine
//
this.btnSecsDefine.Location = new System.Drawing.Point(123, 26);
this.btnSecsDefine.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnSecsDefine.Name = "btnSecsDefine";
this.btnSecsDefine.Size = new System.Drawing.Size(114, 20);
this.btnSecsDefine.TabIndex = 18;
this.btnSecsDefine.Text = "SECS Define ...";
this.btnSecsDefine.UseVisualStyleBackColor = true;
//
// btnOpenWorkFlow
//
this.btnOpenWorkFlow.Location = new System.Drawing.Point(243, 26);
this.btnOpenWorkFlow.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnOpenWorkFlow.Name = "btnOpenWorkFlow";
this.btnOpenWorkFlow.Size = new System.Drawing.Size(114, 20);
this.btnOpenWorkFlow.TabIndex = 19;
this.btnOpenWorkFlow.Text = "WorkFlow ...";
this.btnOpenWorkFlow.UseVisualStyleBackColor = true;
//
// panel4
//
this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panel4.Controls.Add(this.tabControl2);
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel4.Location = new System.Drawing.Point(0, 0);
this.panel4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel4.Name = "panel4";
this.panel4.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel4.Size = new System.Drawing.Size(1139, 407);
this.panel4.TabIndex = 2;
//
// tabControl2
//
this.tabControl2.Controls.Add(this.tabPage4);
this.tabControl2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl2.Location = new System.Drawing.Point(3, 2);
this.tabControl2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabControl2.Name = "tabControl2";
this.tabControl2.SelectedIndex = 0;
this.tabControl2.Size = new System.Drawing.Size(1129, 399);
this.tabControl2.TabIndex = 1;
//
// tabPage4
//
this.tabPage4.Controls.Add(this.spnl00);
this.tabPage4.Location = new System.Drawing.Point(4, 22);
this.tabPage4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage4.Size = new System.Drawing.Size(1121, 373);
this.tabPage4.TabIndex = 0;
this.tabPage4.Text = "Log Viewer";
this.tabPage4.UseVisualStyleBackColor = true;
//
// spnl00
//
this.spnl00.Dock = System.Windows.Forms.DockStyle.Fill;
this.spnl00.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.spnl00.Location = new System.Drawing.Point(3, 2);
this.spnl00.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.spnl00.Name = "spnl00";
//
// spnl00.Panel1
//
this.spnl00.Panel1.Controls.Add(this.pnlDisplayL);
//
// spnl00.Panel2
//
this.spnl00.Panel2.Controls.Add(this.pnlDisplayR);
this.spnl00.Size = new System.Drawing.Size(1115, 369);
this.spnl00.SplitterDistance = 438;
this.spnl00.TabIndex = 0;
//
// pnlDisplayL
//
this.pnlDisplayL.Controls.Add(this.tabControl1);
this.pnlDisplayL.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlDisplayL.Location = new System.Drawing.Point(0, 0);
this.pnlDisplayL.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlDisplayL.Name = "pnlDisplayL";
this.pnlDisplayL.Size = new System.Drawing.Size(438, 369);
this.pnlDisplayL.TabIndex = 0;
//
// tabControl1
//
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Location = new System.Drawing.Point(0, 0);
this.tabControl1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(438, 369);
this.tabControl1.TabIndex = 1;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.tboxLog);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage1.Size = new System.Drawing.Size(430, 343);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "Log Files";
this.tabPage1.UseVisualStyleBackColor = true;
//
// tboxLog
//
this.tboxLog.AllowDrop = true;
this.tboxLog.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxLog.Location = new System.Drawing.Point(3, 2);
this.tboxLog.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxLog.Multiline = true;
this.tboxLog.Name = "tboxLog";
this.tboxLog.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxLog.Size = new System.Drawing.Size(424, 339);
this.tboxLog.TabIndex = 1;
//
// tabPage2
//
this.tabPage2.Controls.Add(this.tboxException);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tabPage2.Size = new System.Drawing.Size(375, 377);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "Execption";
this.tabPage2.UseVisualStyleBackColor = true;
//
// tboxException
//
this.tboxException.AllowDrop = true;
this.tboxException.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxException.Location = new System.Drawing.Point(3, 2);
this.tboxException.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxException.Multiline = true;
this.tboxException.Name = "tboxException";
this.tboxException.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxException.Size = new System.Drawing.Size(369, 373);
this.tboxException.TabIndex = 2;
//
// pnlDisplayR
//
this.pnlDisplayR.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pnlDisplayR.Controls.Add(this.grid);
this.pnlDisplayR.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlDisplayR.Location = new System.Drawing.Point(0, 0);
this.pnlDisplayR.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlDisplayR.Name = "pnlDisplayR";
this.pnlDisplayR.Size = new System.Drawing.Size(673, 369);
this.pnlDisplayR.TabIndex = 1;
//
// grid
//
this.grid.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.grid.Dock = System.Windows.Forms.DockStyle.Fill;
this.grid.Location = new System.Drawing.Point(0, 0);
this.grid.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
//
//
this.grid.MasterTemplate.ViewDefinition = tableViewDefinition1;
this.grid.Name = "grid";
this.grid.Size = new System.Drawing.Size(671, 367);
this.grid.TabIndex = 0;
//
// flowLayoutPanel4
//
this.flowLayoutPanel4.AutoSize = true;
this.flowLayoutPanel4.Controls.Add(this.label1);
this.flowLayoutPanel4.Controls.Add(this.tboxLineNumber);
this.flowLayoutPanel4.Controls.Add(this.btnGoLineNumber);
this.flowLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Bottom;
this.flowLayoutPanel4.Location = new System.Drawing.Point(3, 573);
this.flowLayoutPanel4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel4.Name = "flowLayoutPanel4";
this.flowLayoutPanel4.Padding = new System.Windows.Forms.Padding(1);
this.flowLayoutPanel4.Size = new System.Drawing.Size(1139, 27);
this.flowLayoutPanel4.TabIndex = 18;
//
// label1
//
this.label1.Location = new System.Drawing.Point(4, 1);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(90, 22);
this.label1.TabIndex = 5;
this.label1.Text = "Line Number: ";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// tboxLineNumber
//
this.tboxLineNumber.Location = new System.Drawing.Point(100, 3);
this.tboxLineNumber.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxLineNumber.Name = "tboxLineNumber";
this.tboxLineNumber.Size = new System.Drawing.Size(99, 21);
this.tboxLineNumber.TabIndex = 6;
this.tboxLineNumber.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// btnGoLineNumber
//
this.btnGoLineNumber.Location = new System.Drawing.Point(205, 3);
this.btnGoLineNumber.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnGoLineNumber.Name = "btnGoLineNumber";
this.btnGoLineNumber.Size = new System.Drawing.Size(52, 20);
this.btnGoLineNumber.TabIndex = 8;
this.btnGoLineNumber.Text = "Go";
this.btnGoLineNumber.UseVisualStyleBackColor = true;
//
// FrmLogParser02
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1145, 602);
this.Controls.Add(this.pnlRoot);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "FrmLogParser02";
this.Text = "Form1";
this.pnlRoot.ResumeLayout(false);
this.pnlRoot.PerformLayout();
this.spnlRoot.Panel1.ResumeLayout(false);
this.spnlRoot.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.spnlRoot)).EndInit();
this.spnlRoot.ResumeLayout(false);
this.pnlControls.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.pnlEquipment.ResumeLayout(false);
this.pnlFiles.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.flowLayoutPanel2.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.pnlButtons.ResumeLayout(false);
this.pnlButtons.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.flowLayoutPanel3.ResumeLayout(false);
this.panel4.ResumeLayout(false);
this.tabControl2.ResumeLayout(false);
this.tabPage4.ResumeLayout(false);
this.spnl00.Panel1.ResumeLayout(false);
this.spnl00.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.spnl00)).EndInit();
this.spnl00.ResumeLayout(false);
this.pnlDisplayL.ResumeLayout(false);
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage1.PerformLayout();
this.tabPage2.ResumeLayout(false);
this.tabPage2.PerformLayout();
this.pnlDisplayR.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.grid)).EndInit();
this.flowLayoutPanel4.ResumeLayout(false);
this.flowLayoutPanel4.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel pnlRoot;
private System.Windows.Forms.SplitContainer spnlRoot;
private System.Windows.Forms.Panel pnlDisplayL;
private System.Windows.Forms.SplitContainer spnl00;
private System.Windows.Forms.Panel pnlDisplayR;
private System.Windows.Forms.Panel pnlControls;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TextBox tboxLog;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.TextBox tboxException;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Panel pnlEquipment;
private System.Windows.Forms.FlowLayoutPanel pnlButtons;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.CheckBox chkAutoClear;
private System.Windows.Forms.CheckBox chkDownload;
private System.Windows.Forms.CheckBox chkFilterLinktest;
private System.Windows.Forms.TabControl tabControl2;
private System.Windows.Forms.TabPage tabPage4;
private System.Windows.Forms.Button btnEqpSelector;
private System.Windows.Forms.TextBox tboxEquipmentID;
private System.Windows.Forms.TextBox tboxEqDescription;
private System.Windows.Forms.TextBox tboxEqModelID;
private System.Windows.Forms.Panel pnlFiles;
private System.Windows.Forms.ListView lviewFiles;
private System.Windows.Forms.Panel panel1;
private JWH.CONTROL.GridViewEx grid;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel4;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox tboxLineNumber;
private System.Windows.Forms.Button btnGoLineNumber;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;
private System.Windows.Forms.Button btnClearFilter;
private System.Windows.Forms.Button btnColumnResize;
private System.Windows.Forms.Button btnOpenOriginal;
private System.Windows.Forms.Button btnSecsDefine;
private System.Windows.Forms.Button btnOpenWorkFlow;
private System.Windows.Forms.TextBox tboxFilename;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
private System.Windows.Forms.Button btnFileAdd;
private System.Windows.Forms.Button btnFileRemove;
private System.Windows.Forms.Button btnFileClear;
private System.Windows.Forms.Button btnParsing;
}
}

View File

@@ -0,0 +1,726 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using DDUtilityApp.LOGPARSER.DATA;
using DDUtilityApp.LOGPARSER.PARSER;
using DDUtilityApp.SECS;
using JWH;
using JWH.CONTROL;
using Telerik.WinControls.UI;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmLogParser02 : Form
{
#region [ Properties ] ------------------------------------------------
private bool RadGridControlKey { get; set; } = false;
private StandardCollection Collection { get; set; } = new StandardCollection();
private LogParser Parser { get; set; } = new AgvParser();
private EisEquipment Equipment { get; set; } = null;
private SECSDefine SECSDefine { get; set; } = null;
private FrmFindDialog FindDialog { get; set; } = null;
private string WindowText { get; set; } = $"[EverOne] MIS Log Viewer";
public static string BasePath { get; set; }
public static string DownloadPath { get; set; }
public static string WorkflowPath { get; set; }
#endregion
#region [ FrmLogParser02 ] --------------------------------------------
public FrmLogParser02()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
XLogger.Instance.Control = this.tboxException;
}
private void SetLayout()
{
this.AllowDrop = true;
this.Text = $"{this.WindowText} - Ver. {Application.ProductVersion}";
BasePath = $"{Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)}\\DDUtility\\";
DownloadPath = $"{BasePath}Download";
WorkflowPath = $"{BasePath}WorkFlow";
this.tboxLog.AllowDrop = true;
this.tboxLog.WordWrap = false;
this.tboxLog.Multiline = true;
this.tboxLog.HideSelection = false;
this.tboxLog.ScrollBars = ScrollBars.Both;
this.tboxLog.Font = new Font("돋움체", 9);
this.tboxException.WordWrap = false;
this.tboxException.Font = new Font("돋움체", 9);
this.lviewFiles.View = View.Details;
ColumnHeader header = this.lviewFiles.Columns.Add("File Name");
this.lviewFiles.CheckBoxes = true;
this.lviewFiles.MultiSelect = false;
this.lviewFiles.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.lviewFiles.ListViewItemSorter = new ListViewItemComparer(0, this.lviewFiles.Sorting);
this.RadGrid_Setting();
this.btnEqpSelector.Enabled = false;
this.btnSecsDefine.Enabled = false;
this.btnOpenWorkFlow.Enabled = false;
this.ActiveControl = this.btnParsing;
}
private void SetEventHandler()
{
// DragDrop
this.DragDrop += Control_DragDrop;
this.DragEnter += Control_DragEnter;
this.tboxLog.DragDrop += Control_DragDrop;
this.tboxLog.DragEnter += Control_DragEnter;
this.tboxLog.KeyDown += TboxLog_KeyDown;
// File List
this.lviewFiles.Click += LviewFiles_Click;
this.lviewFiles.ColumnClick += LviewFiles_ColumnClick;
this.lviewFiles.Resize += LviewFiles_Resize;
this.tboxFilename.KeyDown += TboxFilename_KeyDown;
this.btnFileAdd.Click += BtnFileAdd_Click;
this.btnFileRemove.Click += BtnFileRemove_Click;
this.btnFileClear.Click += BtnFileClear_Click;
this.btnParsing.Click += BtnParsing_Click;
this.btnEqpSelector.Click += BtnEqpSelector_Click;
// Option
this.btnClearFilter.Click += BtnClearFilter_Click;
this.btnColumnResize.Click += BtnColumnResize_Click;
this.btnOpenOriginal.Click += BtnOpenOriginal_Click;
this.btnSecsDefine.Click += BtnSecsDefine_Click;
this.btnOpenWorkFlow.Click += BtnOpenWorkFlow_Click;
// StatusBar
this.btnGoLineNumber.Click += BtnGoLineNumber_Click;
this.tboxLineNumber.KeyDown += TboxLineNumber_KeyDown;
// Grid
this.grid.DataBindingComplete += RadGrid_DataBindingComplete;
this.grid.SelectionChanged += RadGrid_SelectionChanged;
this.grid.ViewCellFormatting += RadGrid_ViewCellFormatting;
this.grid.CellDoubleClick += RadGrid_CellDoubleClick;
this.grid.KeyDown += RadGrid_KeyDown;
this.grid.KeyUp += RadGrid_KeyUp;
this.grid.CellClick += RadGrid_CellClick;
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.F3:
if (this.FindDialog != null) this.FindDialog.Next();
break;
case Keys.F5:
this.BtnParsing_Click(this.btnParsing, new EventArgs());
break;
case Keys.F6:
this.BtnColumnResize_Click(this.btnColumnResize, new EventArgs());
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
#endregion
#region [ Control Event ] ---------------------------------------------
private void Control_DragDrop(object sender, DragEventArgs e)
{
XLogger.Instance.Info(e);
if (this.chkAutoClear.Checked) this.lviewFiles.Items.Clear();
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string filePath in files)
{
ListViewItem lviewItem = this.lviewFiles.Items.Add(Path.GetFileName(filePath));
lviewItem.Checked = true;
lviewItem.Tag = filePath;
}
this.BtnParsing_Click(this.btnParsing, new EventArgs());
}
private void Control_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
}
private void TboxLog_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyData & Keys.Control) == Keys.Control && (e.KeyData & Keys.F) == Keys.F)
{
if (this.FindDialog == null)
{
this.FindDialog = new FrmFindDialog(this.tboxLog);
this.FindDialog.StartPosition = FormStartPosition.Manual;
this.FindDialog.Location = this.grid.PointToScreen(new Point(10, 10));
this.FindDialog.FormClosed += (object sender1, FormClosedEventArgs e1) => { this.FindDialog = null; };
this.FindDialog.FInd += (object sender1, EventArgs e1) => { };
this.FindDialog.Show();
}
else
{
this.FindDialog.Activate();
}
this.FindDialog.SelectedText = this.tboxLog.SelectedText;
}
}
private void LviewFiles_Click(object sender, EventArgs e)
{
try
{
if (this.lviewFiles.Items.Count < 1) return;
if (this.lviewFiles.SelectedItems.Count < 1) return;
int index = -1;
index = this.lviewFiles.SelectedItems[0].Index;
this.tboxFilename.Text = this.lviewFiles.Items[index].Tag as string;
if (string.IsNullOrEmpty(this.tboxFilename.Text) == false && this.tboxFilename.Text.Length > 6)
{
this.tboxFilename.SelectionStart = this.tboxFilename.Text.Length - 6;
this.tboxFilename.SelectionLength = 2;
this.tboxFilename.Focus();
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void LviewFiles_ColumnClick(object sender, ColumnClickEventArgs e)
{
try
{
System.Windows.Forms.SortOrder sorting = System.Windows.Forms.SortOrder.None;
switch (this.lviewFiles.Sorting)
{
case System.Windows.Forms.SortOrder.None:
sorting = System.Windows.Forms.SortOrder.Ascending;
break;
case System.Windows.Forms.SortOrder.Ascending:
sorting = System.Windows.Forms.SortOrder.Descending;
break;
case System.Windows.Forms.SortOrder.Descending:
sorting = System.Windows.Forms.SortOrder.None;
break;
}
this.lviewFiles.Sorting = sorting;
this.lviewFiles.ListViewItemSorter = new ListViewItemComparer(e.Column, this.lviewFiles.Sorting);
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void LviewFiles_Resize(object sender, EventArgs e)
{
int width = this.lviewFiles.Width - 32;
int headerWidth = width / this.lviewFiles.Columns.Count;
foreach (ColumnHeader header in this.lviewFiles.Columns)
header.Width = headerWidth;
}
private void TboxFilename_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
this.BtnFileAdd_Click(this.btnFileAdd, new EventArgs());
}
private void BtnFileAdd_Click(object sender, EventArgs e)
{
try
{
ListViewItem lviewItem = this.lviewFiles.Items.Add(Path.GetFileName(this.tboxFilename.Text));
lviewItem.Checked = true;
lviewItem.Tag = this.tboxFilename.Text;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnFileRemove_Click(object sender, EventArgs e)
{
try
{
if (this.lviewFiles.SelectedItems.Count <= 0) return;
this.lviewFiles.SelectedItems[0].Remove();
this.tboxFilename.Text = string.Empty;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnFileClear_Click(object sender, EventArgs e)
{
this.Text = $"{this.WindowText} - Ver. {Application.ProductVersion}";
this.lviewFiles.Items.Clear();
this.tboxLog.Clear();
this.tboxException.Clear();
this.grid.DataSource = null;
}
private void BtnParsing_Click(object sender, EventArgs e)
{
try
{
this.Cursor = Cursors.WaitCursor;
this.Parsing();
if (this.chkFilterLinktest.Checked)
this.grid.AutoBinding(this.Collection.Where(item => item.Column1 != "LINKTEST").ToArray());
else
this.grid.AutoBinding(this.Collection.ToArray());
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
this.Cursor = Cursors.Default;
}
}
private void BtnEqpSelector_Click(object sender, EventArgs e)
{
try
{
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex, true);
}
}
private void BtnClearFilter_Click(object sender, EventArgs e)
{
this.grid.MasterTemplate.FilterDescriptors.Clear();
}
private void BtnColumnResize_Click(object sender, EventArgs e)
{
this.grid.BestFitColumns(BestFitColumnMode.DisplayedCells);
}
private void BtnOpenOriginal_Click(object sender, EventArgs e)
{
try
{
List<string> lstFileName = new List<string>();
// Process Unit: File
foreach (ListViewItem lviewItem in this.lviewFiles.Items)
{
if (lviewItem.Checked == false) continue;
XLogger.Instance.Info(lviewItem.Text);
string sourceFileName = lviewItem.Tag as string;
string destPath = DownloadPath;
if (System.IO.Directory.Exists(destPath) == false) System.IO.Directory.CreateDirectory(destPath);
string destFileName = $@"{destPath}\{System.IO.Path.GetFileName(sourceFileName)}";
if (this.chkDownload.Checked == false) System.IO.File.Copy(sourceFileName, destFileName, true);
sourceFileName = destFileName;
lstFileName.Add(sourceFileName);
} // Process Unit: File
foreach (string filename in lstFileName)
Process.Start(filename);
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnSecsDefine_Click(object sender, EventArgs e)
{
FrmSecsDefine frm = new FrmSecsDefine(this.Parser.SECSDefine);
frm.StartPosition = FormStartPosition.Manual;
int x = this.Location.X + this.Width - frm.Width - 32;
int y = this.Location.Y + 32;
frm.Location = new Point(x, y);
frm.Text = this.tboxEqModelID.Text;
frm.Show(this);
}
private void BtnOpenWorkFlow_Click(object sender, EventArgs e)
{
try
{
FrmWorkFlow dlg = new FrmWorkFlow();
//dlg.Owner = this;
dlg.Size = this.Size;
dlg.Location = this.Location;
dlg.StartPosition = FormStartPosition.Manual;
//dlg.StartPosition = FormStartPosition.CenterParent;
dlg.Text = this.tboxEqModelID.Text;
dlg.Show();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void TboxLineNumber_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
this.BtnGoLineNumber_Click(this.btnGoLineNumber, new EventArgs());
}
private void BtnGoLineNumber_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
try
{
int lineNumber = -1;
int.TryParse(this.tboxLineNumber.Text, out lineNumber);
foreach (GridViewRowInfo row in this.grid.Rows)
{
try
{
StandardData standardData = row.DataBoundItem as StandardData;
if (standardData == null) continue;
if (lineNumber <= standardData.LineNumber)
{
row.IsSelected = true;
row.IsCurrent = true;
break;
}
}
catch (Exception ex)
{
XLogger.Instance.Debug(ex);
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
this.Cursor = Cursors.Default;
}
}
#endregion
#region [ Grid ] ------------------------------------------------------
private void RadGrid_Setting()
{
this.grid.MultiSelect = true;
this.grid.Columns.Clear();
//this.grid.AddColumn("LineNumber");
this.grid.AddColumn("DateTime");
this.grid.AddColumn("Level");
this.grid.AddColumn("Server");
this.grid.AddColumn("Service");
this.grid.AddColumn("Type");
this.grid.AddColumn("MessageName");
this.grid.AddColumn("Return");
this.grid.AddColumn("Value");
this.grid.AddColumn("EquipmentID");
this.grid.AddColumn("PortID", "VEHICLEID");
this.grid.AddColumn("CarrierID");
this.grid.AddColumn("LotID");
this.grid.AddColumn("HostPanelID", "SourcePort");
this.grid.AddColumn("PanelID", "DestPort");
this.grid.AddColumn("PanelQty");
this.grid.AddColumn("TID");
this.grid.AddColumn("SystemByte");
this.grid.AddColumn("Column1", "CommandID");
this.grid.AddColumn("Column2", "WayPoint");
this.grid.AddColumn("Column3");
this.grid.AddColumn("Column4");
this.grid.AddColumn("Column5");
}
private void RadGrid_KeyUp(object sender, KeyEventArgs e)
{
this.RadGridControlKey = e.Control;
}
private void RadGrid_KeyDown(object sender, KeyEventArgs e)
{
this.RadGridControlKey = e.Control;
}
private void RadGrid_CellClick(object sender, GridViewCellEventArgs e)
{
try
{
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) rgrid = this.grid;
if (this.RadGridControlKey == false) return;
foreach (GridViewDataColumn column in rgrid.Columns)
{
foreach (BaseFormattingObject obj in column.ConditionalFormattingObjectList)
{
if (new string[] { "Marking" }.Contains(obj.Name))
{
ExpressionFormattingObject formatting = obj as ExpressionFormattingObject;
formatting.Expression += $" AND {e.Column.Name} = '{e.Value}'";
}
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void RadGrid_CellDoubleClick(object sender, GridViewCellEventArgs e)
{
try
{
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) rgrid = this.grid;
// RowHeader.DoubleClick
if (e.ColumnIndex == -1)
{
StandardData standardData = e.Row.DataBoundItem as StandardData;
if (standardData != null)
{
this.tboxLineNumber.Text = standardData.LineNumber.ToString();
this.tboxLineNumber.Tag = e.Row;
}
return;
}
List<BaseFormattingObject> lstFormat = new List<BaseFormattingObject>();
foreach (GridViewDataColumn column in rgrid.Columns)
{
lstFormat.Clear();
foreach (BaseFormattingObject obj in column.ConditionalFormattingObjectList)
{
if (new string[] { "Level_Error", "Type_Error", "Server_Error", "Return_1" }.Contains(obj.Name)) continue;
lstFormat.Add(obj);
}
foreach (BaseFormattingObject obj in lstFormat)
column.ConditionalFormattingObjectList.Remove(obj);
}
var value = e.Value;
//DateTime column Convert
if (e.Value.GetType() == typeof(DateTime))
{
var tempData = (DateTime)e.Value;
value = tempData.ToString("yyyy-MM-dd HH:mm:ss.fff");
}
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Marking", $"{e.Column.Name} = '{value}'", true);
formatting.RowBackColor = Color.FromArgb(128, 0, 255, 0);
rgrid.Columns[e.Column.Name].ConditionalFormattingObjectList.Add(formatting);
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void RadGrid_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
if (e.CellElement is GridRowHeaderCellElement && e.Row is GridViewDataRowInfo)
{
#if ROW_INDEX
GridDataView dataView = this.grid.MasterTemplate.DataView as GridDataView;
e.CellElement.Text = (dataView.Indexer.Items.IndexOf(e.Row) + 1).ToString();
#else
StandardData standardData = e.Row.DataBoundItem as StandardData;
e.CellElement.Text = (standardData != null ? standardData.LineNumber.ToString() : "");
#endif
//e.CellElement.TextImageRelation = TextImageRelation.ImageBeforeText;
}
else
{
e.CellElement.ResetValue(LightVisualElement.TextImageRelationProperty, Telerik.WinControls.ValueResetFlags.Local);
}
}
private void RadGrid_DataBindingComplete(object sender, GridViewBindingCompleteEventArgs e)
{
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) return;
if (rgrid.Columns.Contains("LineNumber")) rgrid.Columns["LineNumber"].IsVisible = false;
if (rgrid.Columns.Contains("DateTime")) rgrid.Columns["DateTime"].FormatString = "{0:yyyy-MM-dd HH:mm:ss.fff}";
if (rgrid.Columns.Contains("Body")) rgrid.Columns["Body"].IsVisible = false;
if (rgrid.Columns.Contains("Level"))
{
rgrid.Columns["Level"].TextAlignment = ContentAlignment.MiddleCenter;
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Level_Error", "Level='ERROR'", true);
formatting.RowBackColor = Color.FromArgb(128, 255, 0, 0);
rgrid.Columns["Level"].ConditionalFormattingObjectList.Add(formatting);
}
if (rgrid.Columns.Contains("Type"))
{
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Type_Error", "Server<>'TID' and Type='ERROR'", true);
formatting.RowBackColor = Color.FromArgb(128, 255, 0, 0);
rgrid.Columns["Type"].ConditionalFormattingObjectList.Add(formatting);
}
if (rgrid.Columns.Contains("Return"))
{
rgrid.Columns["Return"].TextAlignment = ContentAlignment.MiddleCenter;
ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Return_1", "Return<>0", true);
formatting.RowBackColor = Color.FromArgb(128, 255, 0, 0);
rgrid.Columns["Return"].ConditionalFormattingObjectList.Add(formatting);
}
rgrid.BestFitColumns(BestFitColumnMode.DisplayedCells);
}
private void RadGrid_SelectionChanged(object sender, EventArgs e)
{
try
{
this.Cursor = Cursors.WaitCursor;
RadGridView rgrid = sender as RadGridView;
if (rgrid == null) return;
if (rgrid.SelectedRows.Count < 1) return;
StandardData data = rgrid.SelectedRows.FirstOrDefault().DataBoundItem as StandardData;
if (data == null) return;
int dataLineNumber = data.LineNumber - 1;
int startLineNumber = dataLineNumber - 10;
int bottomLineNumber = dataLineNumber + 100;
int dataIndex = this.tboxLog.Text.IndexOf($"{data.LineNumber.ToString("000000")}:");
int difference = dataIndex - this.tboxLog.GetFirstCharIndexFromLine(dataLineNumber);
this.tboxLog.SuspendLayout();
if (bottomLineNumber >= this.tboxLog.Lines.Length) bottomLineNumber = this.tboxLog.Lines.Length - 1;
this.tboxLog.SelectionStart = this.tboxLog.GetFirstCharIndexFromLine(bottomLineNumber) + difference;
this.tboxLog.ScrollToCaret();
if (startLineNumber < 0) startLineNumber = 0;
this.tboxLog.SelectionStart = this.tboxLog.GetFirstCharIndexFromLine(startLineNumber) + difference;
this.tboxLog.ScrollToCaret();
this.tboxLog.SelectionStart = this.tboxLog.GetFirstCharIndexFromLine(dataLineNumber) + difference;
this.tboxLog.SelectionLength = 6;
this.tboxLog.ScrollToCaret();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
this.tboxLog.ResumeLayout();
this.Cursor = Cursors.Default;
}
}
#endregion
#region [ Method ] ----------------------------------------------------
private StandardCollection Parsing()
{
try
{
this.tboxLog.Clear();
this.Collection.Clear();
List<string> lstFileName = new List<string>();
string strTitle = string.Empty;
// Process Unit: File
foreach (ListViewItem lviewItem in this.lviewFiles.Items)
{
if (lviewItem.Checked == false) continue;
XLogger.Instance.Info(lviewItem.Text);
string sourceFileName = lviewItem.Tag as string;
if (this.chkDownload.Checked)
{
string destPath = DownloadPath;
if (System.IO.Directory.Exists(destPath) == false) System.IO.Directory.CreateDirectory(destPath);
if (string.IsNullOrEmpty(strTitle)) strTitle = System.IO.Path.GetFileNameWithoutExtension(sourceFileName);
string destFileName = $@"{destPath}\{System.IO.Path.GetFileName(sourceFileName)}";
System.IO.File.Copy(sourceFileName, destFileName, true);
sourceFileName = destFileName;
}
lstFileName.Add(sourceFileName);
} // Process Unit: File
this.Parser.ModelID = this.tboxEqModelID.Text;
this.Parser.SECSDefine = this.SECSDefine;
this.Parser.Parsing(lstFileName.ToArray());
this.Text = $"{strTitle} - Ver. {Application.ProductVersion}";
this.tboxLog.Text = this.Parser.LogString.ToString();
this.Collection.AddRange(this.Parser.StandardCollection);
return this.Collection;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
return this.Collection;
}
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,247 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmLogParser04
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.radDock1 = new Telerik.WinControls.UI.Docking.RadDock();
this.documentContainer1 = new Telerik.WinControls.UI.Docking.DocumentContainer();
this.toolWindow1 = new Telerik.WinControls.UI.Docking.ToolWindow();
this.toolTabStrip1 = new Telerik.WinControls.UI.Docking.ToolTabStrip();
this.toolTop = new Telerik.WinControls.UI.Docking.ToolWindow();
this.toolWindow3 = new Telerik.WinControls.UI.Docking.ToolWindow();
this.documentWindow1 = new Telerik.WinControls.UI.Docking.DocumentWindow();
this.documentTabStrip1 = new Telerik.WinControls.UI.Docking.DocumentTabStrip();
this.toolTabStrip4 = new Telerik.WinControls.UI.Docking.ToolTabStrip();
this.toolTabStrip3 = new Telerik.WinControls.UI.Docking.ToolTabStrip();
this.radSplitContainer3 = new Telerik.WinControls.UI.RadSplitContainer();
((System.ComponentModel.ISupportInitialize)(this.radDock1)).BeginInit();
this.radDock1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.documentContainer1)).BeginInit();
this.documentContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.toolTabStrip1)).BeginInit();
this.toolTabStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.documentTabStrip1)).BeginInit();
this.documentTabStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.toolTabStrip4)).BeginInit();
this.toolTabStrip4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.toolTabStrip3)).BeginInit();
this.toolTabStrip3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.radSplitContainer3)).BeginInit();
this.radSplitContainer3.SuspendLayout();
this.SuspendLayout();
//
// radDock1
//
this.radDock1.ActiveWindow = this.toolTop;
this.radDock1.Controls.Add(this.toolTabStrip3);
this.radDock1.Controls.Add(this.radSplitContainer3);
this.radDock1.Dock = System.Windows.Forms.DockStyle.Fill;
this.radDock1.Location = new System.Drawing.Point(3, 3);
this.radDock1.MainDocumentContainer = this.documentContainer1;
this.radDock1.Name = "radDock1";
this.radDock1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
//
//
this.radDock1.RootElement.MinSize = new System.Drawing.Size(25, 25);
this.radDock1.Size = new System.Drawing.Size(1000, 715);
this.radDock1.TabIndex = 0;
this.radDock1.TabStop = false;
//
// documentContainer1
//
this.documentContainer1.Controls.Add(this.documentTabStrip1);
this.documentContainer1.Name = "documentContainer1";
//
//
//
this.documentContainer1.RootElement.MinSize = new System.Drawing.Size(25, 25);
this.documentContainer1.SizeInfo.AbsoluteSize = new System.Drawing.Size(439, 200);
this.documentContainer1.SizeInfo.SizeMode = Telerik.WinControls.UI.Docking.SplitPanelSizeMode.Fill;
this.documentContainer1.SizeInfo.SplitterCorrection = new System.Drawing.Size(-143, 0);
//
// toolWindow1
//
this.toolWindow1.Caption = null;
this.toolWindow1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.toolWindow1.Location = new System.Drawing.Point(1, 24);
this.toolWindow1.Name = "toolWindow1";
this.toolWindow1.PreviousDockState = Telerik.WinControls.UI.Docking.DockState.Docked;
this.toolWindow1.Size = new System.Drawing.Size(341, 475);
this.toolWindow1.Text = "toolWindow1";
//
// toolTabStrip1
//
this.toolTabStrip1.CanUpdateChildIndex = true;
this.toolTabStrip1.Controls.Add(this.toolWindow1);
this.toolTabStrip1.Location = new System.Drawing.Point(0, 0);
this.toolTabStrip1.Name = "toolTabStrip1";
//
//
//
this.toolTabStrip1.RootElement.MinSize = new System.Drawing.Size(25, 25);
this.toolTabStrip1.SelectedIndex = 0;
this.toolTabStrip1.Size = new System.Drawing.Size(343, 501);
this.toolTabStrip1.SizeInfo.AbsoluteSize = new System.Drawing.Size(343, 200);
this.toolTabStrip1.SizeInfo.SplitterCorrection = new System.Drawing.Size(143, 0);
this.toolTabStrip1.TabIndex = 1;
this.toolTabStrip1.TabStop = false;
//
// toolTop
//
this.toolTop.Caption = null;
this.toolTop.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.toolTop.Location = new System.Drawing.Point(1, 24);
this.toolTop.Name = "toolTop";
this.toolTop.PreviousDockState = Telerik.WinControls.UI.Docking.DockState.Docked;
this.toolTop.Size = new System.Drawing.Size(988, 174);
this.toolTop.Text = "toolWindow2";
//
// toolWindow3
//
this.toolWindow3.Caption = null;
this.toolWindow3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.toolWindow3.Location = new System.Drawing.Point(1, 24);
this.toolWindow3.Name = "toolWindow3";
this.toolWindow3.PreviousDockState = Telerik.WinControls.UI.Docking.DockState.Docked;
this.toolWindow3.Size = new System.Drawing.Size(198, 475);
this.toolWindow3.Text = "toolWindow3";
//
// documentWindow1
//
this.documentWindow1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.documentWindow1.Location = new System.Drawing.Point(6, 29);
this.documentWindow1.Name = "documentWindow1";
this.documentWindow1.PreviousDockState = Telerik.WinControls.UI.Docking.DockState.TabbedDocument;
this.documentWindow1.Size = new System.Drawing.Size(427, 466);
this.documentWindow1.Text = "documentWindow1";
//
// documentTabStrip1
//
this.documentTabStrip1.CanUpdateChildIndex = true;
this.documentTabStrip1.Controls.Add(this.documentWindow1);
this.documentTabStrip1.Location = new System.Drawing.Point(0, 0);
this.documentTabStrip1.Name = "documentTabStrip1";
//
//
//
this.documentTabStrip1.RootElement.MinSize = new System.Drawing.Size(25, 25);
this.documentTabStrip1.SelectedIndex = 0;
this.documentTabStrip1.Size = new System.Drawing.Size(439, 501);
this.documentTabStrip1.TabIndex = 0;
this.documentTabStrip1.TabStop = false;
//
// toolTabStrip4
//
this.toolTabStrip4.CanUpdateChildIndex = true;
this.toolTabStrip4.Controls.Add(this.toolWindow3);
this.toolTabStrip4.Location = new System.Drawing.Point(790, 0);
this.toolTabStrip4.Name = "toolTabStrip4";
//
//
//
this.toolTabStrip4.RootElement.MinSize = new System.Drawing.Size(25, 25);
this.toolTabStrip4.SelectedIndex = 0;
this.toolTabStrip4.Size = new System.Drawing.Size(200, 501);
this.toolTabStrip4.TabIndex = 2;
this.toolTabStrip4.TabStop = false;
//
// toolTabStrip3
//
this.toolTabStrip3.CanUpdateChildIndex = true;
this.toolTabStrip3.Controls.Add(this.toolTop);
this.toolTabStrip3.Location = new System.Drawing.Point(5, 5);
this.toolTabStrip3.Name = "toolTabStrip3";
//
//
//
this.toolTabStrip3.RootElement.MinSize = new System.Drawing.Size(25, 25);
this.toolTabStrip3.SelectedIndex = 0;
this.toolTabStrip3.Size = new System.Drawing.Size(990, 200);
this.toolTabStrip3.TabIndex = 1;
this.toolTabStrip3.TabStop = false;
//
// radSplitContainer3
//
this.radSplitContainer3.Controls.Add(this.toolTabStrip1);
this.radSplitContainer3.Controls.Add(this.documentContainer1);
this.radSplitContainer3.Controls.Add(this.toolTabStrip4);
this.radSplitContainer3.IsCleanUpTarget = true;
this.radSplitContainer3.Location = new System.Drawing.Point(5, 209);
this.radSplitContainer3.Name = "radSplitContainer3";
this.radSplitContainer3.Padding = new System.Windows.Forms.Padding(5);
//
//
//
this.radSplitContainer3.RootElement.MinSize = new System.Drawing.Size(25, 25);
this.radSplitContainer3.Size = new System.Drawing.Size(990, 501);
this.radSplitContainer3.TabIndex = 0;
this.radSplitContainer3.TabStop = false;
//
// FrmLogParser04
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1006, 721);
this.Controls.Add(this.radDock1);
this.Name = "FrmLogParser04";
this.Padding = new System.Windows.Forms.Padding(3);
this.Text = "FrmLogParser04";
((System.ComponentModel.ISupportInitialize)(this.radDock1)).EndInit();
this.radDock1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.documentContainer1)).EndInit();
this.documentContainer1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.toolTabStrip1)).EndInit();
this.toolTabStrip1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.documentTabStrip1)).EndInit();
this.documentTabStrip1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.toolTabStrip4)).EndInit();
this.toolTabStrip4.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.toolTabStrip3)).EndInit();
this.toolTabStrip3.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.radSplitContainer3)).EndInit();
this.radSplitContainer3.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private Telerik.WinControls.UI.Docking.RadDock radDock1;
private Telerik.WinControls.UI.Docking.DocumentContainer documentContainer1;
private Telerik.WinControls.UI.Docking.ToolWindow toolTop;
private Telerik.WinControls.UI.Docking.ToolTabStrip toolTabStrip3;
private Telerik.WinControls.UI.RadSplitContainer radSplitContainer3;
private Telerik.WinControls.UI.Docking.ToolTabStrip toolTabStrip1;
private Telerik.WinControls.UI.Docking.ToolWindow toolWindow1;
private Telerik.WinControls.UI.Docking.DocumentTabStrip documentTabStrip1;
private Telerik.WinControls.UI.Docking.DocumentWindow documentWindow1;
private Telerik.WinControls.UI.Docking.ToolTabStrip toolTabStrip4;
private Telerik.WinControls.UI.Docking.ToolWindow toolWindow3;
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmLogParser04 : Form
{
public FrmLogParser04()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,198 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmMessageReplyTime
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition1 = new Telerik.WinControls.UI.TableViewDefinition();
this.btnGenerate = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.panel2 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.cboxMessageName = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.chart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.grid = new JWH.CONTROL.GridViewEx();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.grid)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).BeginInit();
this.SuspendLayout();
//
// btnGenerate
//
this.btnGenerate.Location = new System.Drawing.Point(12, 12);
this.btnGenerate.Name = "btnGenerate";
this.btnGenerate.Size = new System.Drawing.Size(113, 23);
this.btnGenerate.TabIndex = 0;
this.btnGenerate.Text = "DataGenerate";
this.btnGenerate.UseVisualStyleBackColor = true;
//
// panel1
//
this.panel1.Controls.Add(this.splitContainer1);
this.panel1.Controls.Add(this.panel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(800, 450);
this.panel1.TabIndex = 1;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.Location = new System.Drawing.Point(0, 47);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
this.splitContainer1.Panel1.Controls.Add(this.chart);
this.splitContainer1.Panel1.Padding = new System.Windows.Forms.Padding(2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.grid);
this.splitContainer1.Size = new System.Drawing.Size(800, 403);
this.splitContainer1.SplitterDistance = 190;
this.splitContainer1.TabIndex = 2;
//
// panel2
//
this.panel2.Controls.Add(this.button1);
this.panel2.Controls.Add(this.cboxMessageName);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.btnGenerate);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(800, 47);
this.panel2.TabIndex = 1;
//
// button1
//
this.button1.Location = new System.Drawing.Point(605, 12);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 4;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
//
// cboxMessageName
//
this.cboxMessageName.FormattingEnabled = true;
this.cboxMessageName.Location = new System.Drawing.Point(299, 14);
this.cboxMessageName.Name = "cboxMessageName";
this.cboxMessageName.Size = new System.Drawing.Size(300, 20);
this.cboxMessageName.TabIndex = 3;
//
// label1
//
this.label1.Location = new System.Drawing.Point(166, 12);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(126, 23);
this.label1.TabIndex = 2;
this.label1.Text = "Message Name :";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// chart
//
chartArea1.Name = "ChartArea1";
this.chart.ChartAreas.Add(chartArea1);
this.chart.Dock = System.Windows.Forms.DockStyle.Fill;
legend1.Name = "Legend1";
this.chart.Legends.Add(legend1);
this.chart.Location = new System.Drawing.Point(2, 2);
this.chart.Name = "chart";
series1.ChartArea = "ChartArea1";
series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
series1.Legend = "Legend1";
series1.Name = "Series1";
series1.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.DateTime;
this.chart.Series.Add(series1);
this.chart.Size = new System.Drawing.Size(796, 186);
this.chart.TabIndex = 0;
this.chart.Text = "chart1";
//
// grid
//
this.grid.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.grid.Dock = System.Windows.Forms.DockStyle.Fill;
this.grid.Location = new System.Drawing.Point(0, 0);
//
//
//
this.grid.MasterTemplate.ViewDefinition = tableViewDefinition1;
this.grid.Name = "grid";
this.grid.Size = new System.Drawing.Size(800, 209);
this.grid.TabIndex = 0;
//
// FrmMessageReplyTime
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.panel1);
this.Name = "FrmMessageReplyTime";
this.Text = "FrmMessageReplyTime";
this.panel1.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.grid)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnGenerate;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.SplitContainer splitContainer1;
private JWH.CONTROL.GridViewEx grid;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox cboxMessageName;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.DataVisualization.Charting.Chart chart;
}
}

View File

@@ -0,0 +1,275 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using DDUtilityApp.LOGPARSER.DATA;
using JWH;
using JWH.DATA;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmMessageReplyTime : Form
{
#region [ Deleage ] ===================================================
#endregion
#region [ Events ] ====================================================
#endregion
#region [ Variables ] =================================================
#endregion
#region [ Properties ] ================================================
public StandardCollection StandardCollection { get; set; } = null;
public Dictionary<string, List<StandardDataPair>> MessageCollection { get; set; } = new Dictionary<string, List<StandardDataPair>>();
#endregion
#region [ Constructor ] ===============================================
public FrmMessageReplyTime()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
}
public FrmMessageReplyTime(StandardCollection standardCollection) : this()
{
this.StandardCollection = standardCollection;
}
private void SetLayout()
{
Font font = new Font("돋움체", 9);
this.cboxMessageName.Font = font;
this.RadGrid_Setting();
this.Chart_Setting();
}
private void SetEventHandler()
{
this.btnGenerate.Click += this.BtnGenerate_Click;
this.cboxMessageName.SelectedIndexChanged += this.CboxMessageName_SelectedIndexChanged;
this.button1.Click += this.Button1_Click;
}
#endregion
#region [ Control Events ] ============================================
private void BtnGenerate_Click(object sender, EventArgs e)
{
this.Generate();
List<string> lstMessage = new List<string>();
lstMessage.Add("");
lstMessage.AddRange(this.MessageCollection.Keys.ToArray());
lstMessage.Sort();
this.cboxMessageName.DataSource = lstMessage.ToArray();
this.cboxMessageName.SelectedIndex = 0;
}
private void Generate()
{
Dictionary<string, List<StandardDataPair>> dicSrc = new Dictionary<string, List<StandardDataPair>>();
try
{
this.MessageCollection.Clear();
string[] arrServer = new string[] { "MES", "FDC", "RMS", "RTD" };
foreach (StandardData data in this.StandardCollection)
{
if (arrServer.Contains(data.Server) == false) continue;
if (string.IsNullOrWhiteSpace(data.TID)) continue;
string key = data.MessageName.Replace("Reply", "");
if (dicSrc.ContainsKey(key) == false)
{
dicSrc.Add(key, new List<StandardDataPair>());
StandardDataPair pair = dicSrc[key].Where(x => x.TID == data.TID).FirstOrDefault();
if (pair == null) dicSrc[key].Add(new StandardDataPair(data));
else pair.Add(data);
}
else
{
StandardDataPair pair = dicSrc[key].Where(x => x.TID == data.TID).FirstOrDefault();
if (pair == null) dicSrc[key].Add(new StandardDataPair(data));
else pair.Add(data);
}
}
foreach (KeyValuePair<string, List<StandardDataPair>> srcPair in dicSrc)
{
string key = srcPair.Key;
foreach (StandardDataPair pair in srcPair.Value)
{
if (pair.Request == null || pair.Response == null) continue;
if (this.MessageCollection.ContainsKey(key) == false) MessageCollection.Add(key, new List<StandardDataPair>());
this.MessageCollection[key].Add(pair);
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void CboxMessageName_SelectedIndexChanged(object sender, EventArgs e)
{
this.chart.Series.Clear();
List<StandardDataPair> lst = new List<StandardDataPair>();
if (string.IsNullOrEmpty(this.cboxMessageName.Text))
{
foreach (KeyValuePair<string, List<StandardDataPair>> pair in this.MessageCollection)
{
lst.AddRange(pair.Value.ToArray());
this.Chart_AddSeries(pair.Key).Points.DataBind(pair.Value.ToArray(), "RequestTime", "Interval", "Label=Interval");
}
}
else
{
string key = this.cboxMessageName.Text;
if (this.MessageCollection.ContainsKey(key) == false) return;
lst.AddRange(this.MessageCollection[key].ToArray());
//this.Chart_AddSeries(this.cboxMessageName.Text);
this.Chart_AddSeries(key).Points.DataBind(this.MessageCollection[key].ToArray(), "RequestTime", "Interval", "Label=Interval");
}
this.grid.AutoBinding(lst.ToArray());
//this.chart.DataSource = lst.ToArray();
//this.chart.DataBindCrossTable(lst.ToArray(), "MessageName", "RequestTime", "Interval", "Label=MessageName");
}
private void Button1_Click(object sender, EventArgs e)
{
this.Chart_Setting();
//this.chart.Series.Clear();
//CartesianSeries series = this.chart.Series[0] as CartesianSeries;
//series.CombineMode = ChartSeriesCombineMode.None;
}
#endregion
#region [ Public Method ] =============================================
#endregion
#region [ Method ] ====================================================
private void RadGrid_Setting()
{
this.grid.MultiSelect = true;
this.grid.Columns.Clear();
this.grid.TableElement.RowHeight = 20;
this.grid.AddColumn("MessageName");
this.grid.AddColumn("RequestTime");
this.grid.AddColumn("ResponseTime");
this.grid.AddColumn("Interval", "", true, "{0:#,##0.000}");
}
private void Chart_Setting()
{
//this.chart.ChartAreas[0].AxisX.ScaleView.Zoom()
//ChartArea chartArea = new ChartArea();
//this.chart.ChartAreas.Add(chartArea);
//Legend legend = new Legend();
//this.chart.Legends.Add(legend);
}
private Series Chart_AddSeries(string name)
{
Series series = new Series();
series.Name = name;
series.LegendText = name;
series.ChartType = SeriesChartType.Line;
series.XValueType = ChartValueType.Time;
series.XValueMember = "RequestTime";
series.YValueType = ChartValueType.Double;
series.YValueMembers = "Interval";
this.chart.Series.Add(series);
return series;
}
#endregion
}
public class StandardDataPair : DataTableBase
{
public StandardData Request { get; set; } = null;
public StandardData Response { get; set;} = null;
public string MessageName { get; set; } = string.Empty;
public string TID { get; set; } = string.Empty;
public DateTime RequestTime { get { return (this.Request == null ? DateTime.MinValue : this.Request.DateTime); } }
public DateTime ResponseTime { get { return (this.Response == null ? DateTime.MinValue : this.Response.DateTime); } }
public double Interval { get { return this.GetInterval(); } }
public StandardDataPair() { }
public StandardDataPair(params StandardData[] datas)
{
foreach(StandardData data in datas)
this.Add(data);
}
public override string ToString()
{
return this.GetInterval().ToString();
}
public void Add(StandardData data)
{
if (data == null) return;
if (string.IsNullOrWhiteSpace(this.TID)) this.TID = data.TID;
else if (this.TID != data.TID) return;
if (data.MessageName.ToUpper().EndsWith("Reply".ToUpper())) this.Response = data;
else { this.Request = data; this.MessageName = data.MessageName; }
}
/// <summary>
/// 응답시간(초)
/// </summary>
/// <returns></returns>
public double GetInterval()
{
double interval = 0;
if (this.Request == null || this.Response == null) return interval;
TimeSpan timeSpan = this.Response.DateTime.Subtract(this.Request.DateTime);
interval = timeSpan.TotalSeconds;
return interval;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,309 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmMessageReplyTime1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
Telerik.WinControls.UI.CartesianArea cartesianArea1 = new Telerik.WinControls.UI.CartesianArea();
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition1 = new Telerik.WinControls.UI.TableViewDefinition();
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition2 = new Telerik.WinControls.UI.TableViewDefinition();
this.btnGenerate = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.chart = new Telerik.WinControls.UI.RadChartView();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.grid = new JWH.CONTROL.GridViewEx();
this.gridAnalysis = new JWH.CONTROL.GridViewEx();
this.panel2 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label();
this.numTrimmedBegin = new System.Windows.Forms.NumericUpDown();
this.numTrimmedEnd = new System.Windows.Forms.NumericUpDown();
this.chkShowLabel = new System.Windows.Forms.CheckBox();
this.button1 = new System.Windows.Forms.Button();
this.cboxMessageName = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.chkTrimmed = new System.Windows.Forms.CheckBox();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridAnalysis)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridAnalysis.MasterTemplate)).BeginInit();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numTrimmedBegin)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numTrimmedEnd)).BeginInit();
this.SuspendLayout();
//
// btnGenerate
//
this.btnGenerate.Location = new System.Drawing.Point(12, 12);
this.btnGenerate.Name = "btnGenerate";
this.btnGenerate.Size = new System.Drawing.Size(113, 23);
this.btnGenerate.TabIndex = 0;
this.btnGenerate.Text = "Generate";
this.btnGenerate.UseVisualStyleBackColor = true;
//
// panel1
//
this.panel1.Controls.Add(this.splitContainer1);
this.panel1.Controls.Add(this.panel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(800, 450);
this.panel1.TabIndex = 1;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.Location = new System.Drawing.Point(0, 76);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
this.splitContainer1.Panel1.Controls.Add(this.chart);
this.splitContainer1.Panel1.Padding = new System.Windows.Forms.Padding(2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Size = new System.Drawing.Size(800, 374);
this.splitContainer1.SplitterDistance = 190;
this.splitContainer1.TabIndex = 2;
//
// chart
//
cartesianArea1.ShowGrid = true;
this.chart.AreaDesign = cartesianArea1;
this.chart.Dock = System.Windows.Forms.DockStyle.Fill;
this.chart.Location = new System.Drawing.Point(2, 2);
this.chart.Name = "chart";
this.chart.SelectionMode = Telerik.WinControls.UI.ChartSelectionMode.SingleDataPoint;
this.chart.ShowLegend = true;
this.chart.ShowPanZoom = true;
this.chart.ShowToolTip = true;
this.chart.ShowTrackBall = true;
this.chart.Size = new System.Drawing.Size(796, 186);
this.chart.TabIndex = 0;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Name = "splitContainer2";
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.grid);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.gridAnalysis);
this.splitContainer2.Size = new System.Drawing.Size(800, 180);
this.splitContainer2.SplitterDistance = 411;
this.splitContainer2.TabIndex = 1;
//
// grid
//
this.grid.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.grid.Dock = System.Windows.Forms.DockStyle.Fill;
this.grid.Location = new System.Drawing.Point(0, 0);
//
//
//
this.grid.MasterTemplate.ViewDefinition = tableViewDefinition1;
this.grid.Name = "grid";
this.grid.Size = new System.Drawing.Size(411, 180);
this.grid.TabIndex = 0;
//
// gridAnalysis
//
this.gridAnalysis.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.gridAnalysis.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridAnalysis.Location = new System.Drawing.Point(0, 0);
//
//
//
this.gridAnalysis.MasterTemplate.ViewDefinition = tableViewDefinition2;
this.gridAnalysis.Name = "gridAnalysis";
this.gridAnalysis.Size = new System.Drawing.Size(385, 180);
this.gridAnalysis.TabIndex = 1;
//
// panel2
//
this.panel2.Controls.Add(this.chkTrimmed);
this.panel2.Controls.Add(this.label3);
this.panel2.Controls.Add(this.numTrimmedBegin);
this.panel2.Controls.Add(this.numTrimmedEnd);
this.panel2.Controls.Add(this.chkShowLabel);
this.panel2.Controls.Add(this.button1);
this.panel2.Controls.Add(this.cboxMessageName);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.btnGenerate);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(800, 76);
this.panel2.TabIndex = 0;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(316, 18);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(14, 12);
this.label3.TabIndex = 8;
this.label3.Text = "~";
//
// numTrimmedBegin
//
this.numTrimmedBegin.Location = new System.Drawing.Point(255, 14);
this.numTrimmedBegin.Name = "numTrimmedBegin";
this.numTrimmedBegin.Size = new System.Drawing.Size(55, 21);
this.numTrimmedBegin.TabIndex = 7;
this.numTrimmedBegin.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// numTrimmedEnd
//
this.numTrimmedEnd.Location = new System.Drawing.Point(336, 14);
this.numTrimmedEnd.Name = "numTrimmedEnd";
this.numTrimmedEnd.Size = new System.Drawing.Size(55, 21);
this.numTrimmedEnd.TabIndex = 5;
this.numTrimmedEnd.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.numTrimmedEnd.Value = new decimal(new int[] {
80,
0,
0,
0});
//
// chkShowLabel
//
this.chkShowLabel.AutoSize = true;
this.chkShowLabel.Location = new System.Drawing.Point(451, 42);
this.chkShowLabel.Name = "chkShowLabel";
this.chkShowLabel.Size = new System.Drawing.Size(91, 16);
this.chkShowLabel.TabIndex = 1;
this.chkShowLabel.Text = "Show Label";
this.chkShowLabel.UseVisualStyleBackColor = true;
//
// button1
//
this.button1.Location = new System.Drawing.Point(397, 13);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 4;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
//
// cboxMessageName
//
this.cboxMessageName.FormattingEnabled = true;
this.cboxMessageName.Location = new System.Drawing.Point(145, 40);
this.cboxMessageName.Name = "cboxMessageName";
this.cboxMessageName.Size = new System.Drawing.Size(300, 20);
this.cboxMessageName.TabIndex = 3;
//
// label1
//
this.label1.Location = new System.Drawing.Point(12, 39);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(127, 23);
this.label1.TabIndex = 2;
this.label1.Text = "Message Name :";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// chkTrimmed
//
this.chkTrimmed.AutoSize = true;
this.chkTrimmed.Location = new System.Drawing.Point(145, 16);
this.chkTrimmed.Name = "chkTrimmed";
this.chkTrimmed.Size = new System.Drawing.Size(104, 16);
this.chkTrimmed.TabIndex = 9;
this.chkTrimmed.Text = "절사평균(%) : ";
this.chkTrimmed.UseVisualStyleBackColor = true;
//
// FrmMessageReplyTime1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.panel1);
this.Name = "FrmMessageReplyTime1";
this.Text = "FrmMessageReplyTime";
this.panel1.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit();
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.grid)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridAnalysis.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridAnalysis)).EndInit();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numTrimmedBegin)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numTrimmedEnd)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnGenerate;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.SplitContainer splitContainer1;
private JWH.CONTROL.GridViewEx grid;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox cboxMessageName;
private System.Windows.Forms.Button button1;
private Telerik.WinControls.UI.RadChartView chart;
private System.Windows.Forms.CheckBox chkShowLabel;
private System.Windows.Forms.SplitContainer splitContainer2;
private JWH.CONTROL.GridViewEx gridAnalysis;
private System.Windows.Forms.NumericUpDown numTrimmedEnd;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.NumericUpDown numTrimmedBegin;
private System.Windows.Forms.CheckBox chkTrimmed;
}
}

View File

@@ -0,0 +1,579 @@
#define XDateTimeAxis
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using DDUtilityApp.LOGPARSER.DATA;
using JWH;
using JWH.DATA;
using Telerik.Charting;
using Telerik.WinControls.UI;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmMessageReplyTime1 : Form
{
#region [ Deleage ] ===================================================
#endregion
#region [ Events ] ====================================================
#endregion
#region [ Variables ] =================================================
private Dictionary<string, StandardDataAnalysis> AnalysisCollection = new Dictionary<string, StandardDataAnalysis>();
private CartesianAxis HorizontalAxis { get; set; } = null;
private LinearAxis VerticalAxis { get; set; } = null;
#endregion
#region [ Properties ] ================================================
public StandardCollection StandardCollection { get; set; } = null;
public Dictionary<string, List<StandardDataPair>> MessageCollection { get; set; } = new Dictionary<string, List<StandardDataPair>>();
public RadGridView GridView { get; set; } = null;
#endregion
#region [ Constructor ] ===============================================
public FrmMessageReplyTime1()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
}
public FrmMessageReplyTime1(StandardCollection standardCollection) : this()
{
this.StandardCollection = standardCollection;
}
private void SetLayout()
{
Font font = new Font("돋움체", 9);
this.cboxMessageName.Font = font;
this.Grid_Setting();
this.GridAnalysis_Setting();
this.Chart_Setting();
}
private void SetEventHandler()
{
this.btnGenerate.Click += this.BtnGenerate_Click;
this.chkTrimmed.CheckedChanged += this.ChkTrimmed_CheckedChanged;
this.button1.Click += this.Button1_Click;
this.cboxMessageName.SelectedIndexChanged += this.CboxMessageName_SelectedIndexChanged;
this.chkShowLabel.CheckedChanged += this.ChkShowLabel_CheckedChanged;
ChartTrackballController controller = new ChartTrackballController();
controller.TextNeeded += this.ChartTrackball_TextNeeded;
this.chart.Controllers.Add(controller);
this.grid.RowFormatting += this.Grid_RowFormatting;
this.grid.CellDoubleClick += this.Grid_CellDoubleClick;
this.gridAnalysis.RowFormatting += this.GridAnalysis_RowFormatting;
this.gridAnalysis.CellFormatting += this.GridAnalysis_CellFormatting;
}
#endregion
#region [ Control Events ] ============================================
private void BtnGenerate_Click(object sender, EventArgs e)
{
this.Generate();
}
private void ChkTrimmed_CheckedChanged(object sender, EventArgs e)
{
}
private void CboxMessageName_SelectedIndexChanged(object sender, EventArgs e)
{
this.chart.Series.Clear();
try
{
#region Grid Display
List<StandardDataPair> lst = new List<StandardDataPair>();
if (string.IsNullOrEmpty(this.cboxMessageName.Text))
{
foreach (KeyValuePair<string, List<StandardDataPair>> pair in this.MessageCollection)
{
lst.AddRange(pair.Value.ToArray());
this.Chart_AddSeries(pair.Key, pair.Value.ToArray());
}
}
else
{
string key = this.cboxMessageName.Text;
if (this.MessageCollection.ContainsKey(key) == false) return;
lst.AddRange(this.MessageCollection[key].ToArray());
this.Chart_AddSeries(key, this.MessageCollection[key].ToArray());
}
this.grid.AutoBinding(lst.ToArray());
#endregion
#region Chart Display
if (lst.Count < 1) return;
if (this.chart.Series.Count < 1) return;
StandardDataPair min = lst[0];
StandardDataPair max = lst[0];
foreach (StandardDataPair pair in lst)
{
if (pair.RequestTime < min.RequestTime) min = pair;
if (pair.RequestTime > max.RequestTime) max = pair;
}
foreach (CartesianAxis item in this.chart.Axes)
{
if (item.GetType() == typeof(DateTimeContinuousAxis))
{
DateTimeContinuousAxis axis = item as DateTimeContinuousAxis;
//datetimeAxis.PlotMode = AxisPlotMode.BetweenTicks;
//datetimeAxis.LabelFormat = "{0:d}";
axis.MajorStepUnit = TimeInterval.Hour;
axis.LabelFormatProvider = new DateTimeFormatProvider();
}
else if (item.GetType() == typeof(CategoricalAxis))
{
CategoricalAxis axis = item as CategoricalAxis;
if (lst.Count < 10) axis.MajorTickInterval = 1;
else axis.MajorTickInterval = (int)Math.Round(lst.Count / 10.0);
}
else if (item.GetType() == typeof(LinearAxis))
{
LinearAxis axis = item as LinearAxis;
}
}
#endregion
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void Button1_Click(object sender, EventArgs e)
{
}
private void ChkShowLabel_CheckedChanged(object sender, EventArgs e)
{
foreach (ChartSeries series in this.chart.Series)
series.ShowLabels = this.chkShowLabel.Checked;
}
private void ChartTrackball_TextNeeded(object sender, TextNeededEventArgs e)
{
StandardDataPair data = e.Points[0].DataPoint.DataItem as StandardDataPair;
if (data != null)
{
e.Text = $"{data.RequestTime}{Environment.NewLine}{data.MessageName} : {data.Interval}";
}
}
private void Grid_RowFormatting(object sender, RowFormattingEventArgs e)
{
StandardDataPair stdPair = e.RowElement.RowInfo.DataBoundItem as StandardDataPair;
if (stdPair == null) return;
if (this.AnalysisCollection.ContainsKey(stdPair.MessageName) == false) return;
StandardDataAnalysis stdAnalysis = this.AnalysisCollection[stdPair.MessageName];
if (stdAnalysis.CheckOver(stdPair)) e.RowElement.ForeColor = Color.Red;
else e.RowElement.ForeColor = SystemColors.ControlText;
}
private void Grid_CellDoubleClick(object sender, GridViewCellEventArgs e)
{
StandardDataPair pair = e.Row.DataBoundItem as StandardDataPair;
if (pair == null) return;
if (this.GridView == null) return;
RadGridView grid = this.GridView;
try
{
this.Cursor = Cursors.WaitCursor;
StandardData data = pair.Request;
if (e.Column.FieldName.ToUpper() == "RESPONSETIME") data = pair.Response;
int lineNumber = data.LineNumber;
foreach (GridViewRowInfo row in grid.Rows)
{
try
{
StandardData standardData = row.DataBoundItem as StandardData;
if (standardData == null) continue;
if (lineNumber <= standardData.LineNumber)
{
this.grid.Focus();
row.IsSelected = false;
row.IsCurrent = false;
row.IsSelected = true;
row.IsCurrent = true;
break;
}
}
catch (Exception ex)
{
XLogger.Instance.Debug(ex);
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
this.Cursor = Cursors.Default;
}
}
private void GridAnalysis_RowFormatting(object sender, RowFormattingEventArgs e)
{
}
private void GridAnalysis_CellFormatting(object sender, CellFormattingEventArgs e)
{
string[] arrTrimmed = new string[] { "TrimmedMean", "TrimmedStdDeviation" };
string[] arrArithmetic = new string[] { "ArithmeticMean", "ArithmeticStdDeviation" };
if (this.chkTrimmed.Checked)
{
if (arrArithmetic.Contains(e.Column.FieldName)) e.CellElement.ForeColor = Color.LightGray;
else e.CellElement.ForeColor = SystemColors.ControlText;
}
else
{
if (arrTrimmed.Contains(e.Column.FieldName)) e.CellElement.ForeColor = Color.LightGray;
else e.CellElement.ForeColor = SystemColors.ControlText;
}
}
#endregion
#region [ Public Method ] =============================================
public void Generate()
{
this.DataGenerate();
this.DataAnalysis();
List<string> lstMessage = new List<string>();
lstMessage.Add("");
lstMessage.AddRange(this.MessageCollection.Keys.ToArray());
lstMessage.Sort();
this.cboxMessageName.DataSource = lstMessage.ToArray();
this.cboxMessageName.SelectedIndex = 0;
}
#endregion
#region [ Method ] ====================================================
private void DataGenerate()
{
Dictionary<string, List<StandardDataPair>> dicSrc = new Dictionary<string, List<StandardDataPair>>();
try
{
this.MessageCollection.Clear();
string[] arrServer = new string[] { "MES", "FDC", "RMS", "RTD" };
foreach (StandardData data in this.StandardCollection)
{
if (arrServer.Contains(data.Server) == false) continue;
if (string.IsNullOrWhiteSpace(data.TID)) continue;
string key = data.MessageName.Replace("Reply", "");
if (dicSrc.ContainsKey(key) == false)
{
dicSrc.Add(key, new List<StandardDataPair>());
StandardDataPair pair = dicSrc[key].Where(x => x.TID == data.TID).FirstOrDefault();
if (pair == null) dicSrc[key].Add(new StandardDataPair(data));
else pair.Add(data);
}
else
{
StandardDataPair pair = dicSrc[key].Where(x => x.TID == data.TID).FirstOrDefault();
if (pair == null) dicSrc[key].Add(new StandardDataPair(data));
else pair.Add(data);
}
}
foreach (KeyValuePair<string, List<StandardDataPair>> srcPair in dicSrc)
{
string key = srcPair.Key;
foreach (StandardDataPair pair in srcPair.Value)
{
if (pair.Request == null || pair.Response == null) continue;
if (this.MessageCollection.ContainsKey(key) == false) MessageCollection.Add(key, new List<StandardDataPair>());
this.MessageCollection[key].Add(pair);
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void DataAnalysis()
{
this.AnalysisCollection.Clear();
foreach (KeyValuePair<string, List<StandardDataPair>> item in this.MessageCollection)
{
if (this.AnalysisCollection.ContainsKey(item.Key) == false)
{
StandardDataAnalysis analysis = new StandardDataAnalysis(item.Key);
analysis.UseTrimmed = this.chkTrimmed.Checked;
analysis.TrimmedBegin = (double)this.numTrimmedBegin.Value;
analysis.TrimmedEnd = (double)this.numTrimmedEnd.Value;
this.AnalysisCollection.Add(item.Key, analysis);
}
this.AnalysisCollection[item.Key].AddRange(item.Value.ToArray());
}
this.gridAnalysis.AutoBinding(this.AnalysisCollection.Values.ToArray());
}
private void Grid_Setting()
{
this.grid.MultiSelect = true;
this.grid.Columns.Clear();
this.grid.TableElement.RowHeight = 20;
this.grid.AddColumn("MessageName");
this.grid.AddColumn("RequestTime");
this.grid.AddColumn("ResponseTime");
this.grid.AddColumn("Interval", "", true, "{0:#,##0.000}");
}
private void GridAnalysis_Setting()
{
this.gridAnalysis.MultiSelect = true;
this.gridAnalysis.Columns.Clear();
this.gridAnalysis.TableElement.RowHeight = 20;
this.gridAnalysis.AddColumn("MessageName");
this.gridAnalysis.AddColumn("Count");
this.gridAnalysis.AddColumn("Min", "", true, "{0:#,##0.000}");
this.gridAnalysis.AddColumn("Max", "", true, "{0:#,##0.000}");
this.gridAnalysis.AddColumn("TrimmedMean", "절사평균", true, "{0:#,##0.000}");
this.gridAnalysis.AddColumn("TrimmedStdDeviation", "절사편차", true, "{0:#,##0.000}");
this.gridAnalysis.AddColumn("ArithmeticMean", "산술평균", true, "{0:#,##0.000}");
this.gridAnalysis.AddColumn("ArithmeticStdDeviation", "산술편차", true, "{0:#,##0.000}");
}
private void Chart_Setting()
{
this.chart.ShowGrid = true;
this.chart.ShowLegend = true;
#if DateTimeAxis
this.HorizontalAxis = new DateTimeContinuousAxis()
{
MajorStepUnit = TimeInterval.Hour,
LabelFormatProvider = new DateTimeFormatProvider()
};
this.VerticalAxis = new LinearAxis()
{
};
#else
this.HorizontalAxis = new CategoricalAxis()
{
};
this.VerticalAxis = new LinearAxis()
{
};
#endif
}
private ChartSeries Chart_AddSeries(string name, StandardDataPair[] values)
{
LineSeries series = new LineSeries();
series.Name = name;
//series.HorizontalAxis = this.HorizontalAxis;
//series.VerticalAxis = this.VerticalAxis;
series.PointSize = new SizeF(3, 3);
series.BorderWidth = 2;
series.CategoryMember = "RequestTime";
series.ValueMember = "Interval";
series.ShowLabels = this.chkShowLabel.Checked;
series.Spline = true;
series.CombineMode = ChartSeriesCombineMode.Stack;
series.DataSource = values;
this.chart.Series.Add(series);
return series;
}
#endregion
}
public class DateTimeFormatProvider : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
return this;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
DateTime val = (DateTime)arg;
return val.ToString("HH:mm:ss");
}
}
public class StandardDataAnalysis : DataTableBase
{
/// <summary>MessageName</summary>
public string MessageName { get; set; } = string.Empty;
public int Count { get { return this.Collection.Count; } }
public bool UseTrimmed { get; set; } = false;
public double Min { get; set; } = -1;
public double Max { get; set; } = -1;
/// <summary>산술평균</summary>
public double ArithmeticMean { get; set; } = 0;
/// <summary>산술평균>표준편차</summary>
public double ArithmeticStdDeviation { get; set; } = 0;
/// <summary>절사평균</summary>
public double TrimmedMean { get; set; } = 0;
/// <summary>절사평균>표준편차</summary>
public double TrimmedStdDeviation { get; set; } = 0;
/// <summary>절사평균 범위</summary>
public double TrimmedBegin { get; set; } = 0;
/// <summary>절사평균 범위</summary>
public double TrimmedEnd { get; set; } = 80;
private List<StandardDataPair> Collection { get; set; } = new List<StandardDataPair>();
public StandardDataAnalysis() { }
public StandardDataAnalysis(string name, params StandardDataPair[] value)
{
this.MessageName = name;
this.Collection.AddRange(value);
if (value.Length > 0) this.Calculation();
}
public void AddRange(params StandardDataPair[] values)
{
this.Collection.AddRange(values);
this.Calculation();
}
private void Calculation()
{
double sum = 0;
double average = 0;
#region
sum = 0;
int trimStartIndex = (int)(this.Collection.Count * (this.TrimmedBegin / 100));
int trimEndIndex = (int)(this.Collection.Count * (this.TrimmedEnd / 100));
int trimCount = 0;
int trimIndex = -1;
foreach (StandardDataPair item in this.Collection.OrderBy(item => item.Interval))
{
trimIndex++;
if (trimIndex < trimStartIndex) continue;
if (trimIndex > trimEndIndex) break;
sum += item.Interval;
trimCount++;
}
average = sum / trimCount;
this.TrimmedMean = average;
#endregion
#region
sum = 0;
double min = -1;
double max = -1;
foreach (StandardDataPair item in this.Collection)
{
sum += item.Interval;
if (item.Interval < min || min == -1) min = item.Interval;
if (item.Interval > max || max == -1) max = item.Interval;
}
average = sum / this.Collection.Count;
this.Min = min; this.Max = max;
this.ArithmeticMean = average;
#endregion
double deviation = 0;
double sumTrimVariance = 0;
double sumArithmeticVariance = 0;
double variance = 0;
foreach (StandardDataPair item in this.Collection)
{
deviation = item.Interval - this.TrimmedMean; // 절사평균 편차
sumTrimVariance += Math.Pow(deviation, 2);
deviation = item.Interval - this.ArithmeticMean; // 산술평균 편차
sumArithmeticVariance += Math.Pow(deviation, 2);
}
variance = sumTrimVariance / this.Collection.Count; // 절사평균 분산
this.TrimmedStdDeviation = Math.Sqrt(variance); // 절사평균 표준편차
variance = sumArithmeticVariance / this.Collection.Count; // 산술평균 분산
this.ArithmeticStdDeviation = Math.Sqrt(variance); // 산술평균 표준편차
}
public bool CheckOver(StandardDataPair pair)
{
double average = 0;
if (this.UseTrimmed) average = this.ArithmeticMean; else average = this.TrimmedMean;
double min = average - (this.ArithmeticStdDeviation / 2);
double max = average + (this.ArithmeticStdDeviation / 2);
if (pair.Interval > max) return true;
return false;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,75 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmSecsDefine
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.tboxMessage = new System.Windows.Forms.TextBox();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.tboxMessage);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(3);
this.panel1.Size = new System.Drawing.Size(617, 683);
this.panel1.TabIndex = 0;
//
// tboxMessage
//
this.tboxMessage.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxMessage.Location = new System.Drawing.Point(3, 3);
this.tboxMessage.Multiline = true;
this.tboxMessage.Name = "tboxMessage";
this.tboxMessage.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.tboxMessage.Size = new System.Drawing.Size(611, 677);
this.tboxMessage.TabIndex = 0;
//
// FrmSecsDefine
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(617, 683);
this.Controls.Add(this.panel1);
this.Name = "FrmSecsDefine";
this.Text = "FrmSecsDefine";
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.TextBox tboxMessage;
}
}

View File

@@ -0,0 +1,61 @@
using DDUtilityApp.SECS;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmSecsDefine : Form
{
public SECSDefine SECSDefine { get; set; }
public FrmSecsDefine()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
}
public FrmSecsDefine(SECSDefine secsDefine) : this()
{
this.SECSDefine = secsDefine;
this.SetMessage();
}
protected void SetLayout()
{
this.tboxMessage.Font = new Font("돋움체", 9.0F);
this.tboxMessage.WordWrap = false;
}
protected void SetEventHandler()
{
}
private void SetMessage()
{
if (this.SECSDefine == null) return;
StringBuilder sb = new StringBuilder();
foreach (CEID ceid in this.SECSDefine.CeidCollection.OrderBy(item => int.Parse(item.ID)))
{
sb.AppendLine(ceid.ToXml());
sb.AppendLine();
}
this.tboxMessage.Text = sb.ToString();
this.tboxMessage.SelectionStart = 0;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,267 @@
namespace DDUtilityApp.LOGPARSER
{
partial class FrmWorkFlow
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
Telerik.WinControls.UI.TableViewDefinition tableViewDefinition1 = new Telerik.WinControls.UI.TableViewDefinition();
this.panel1 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.panel4 = new System.Windows.Forms.Panel();
this.btnSelectFolder = new System.Windows.Forms.Button();
this.tboxLocalPath = new System.Windows.Forms.TextBox();
this.rbtnLocal = new System.Windows.Forms.RadioButton();
this.rbtnRemote = new System.Windows.Forms.RadioButton();
this.panel2 = new System.Windows.Forms.Panel();
this.gridFile = new JWH.CONTROL.GridViewEx();
this.panel3 = new System.Windows.Forms.Panel();
this.tboxWorkflow = new System.Windows.Forms.TextBox();
this.btnOpenFolder = new System.Windows.Forms.Button();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.panel4.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.gridFile)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridFile.MasterTemplate)).BeginInit();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.splitContainer1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel1.Size = new System.Drawing.Size(920, 470);
this.panel1.TabIndex = 0;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.Location = new System.Drawing.Point(3, 2);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.panel3);
this.splitContainer1.Size = new System.Drawing.Size(914, 466);
this.splitContainer1.SplitterDistance = 600;
this.splitContainer1.TabIndex = 0;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.IsSplitterFixed = true;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.panel4);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.panel2);
this.splitContainer2.Size = new System.Drawing.Size(600, 466);
this.splitContainer2.SplitterDistance = 63;
this.splitContainer2.TabIndex = 3;
//
// panel4
//
this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel4.Controls.Add(this.btnOpenFolder);
this.panel4.Controls.Add(this.btnSelectFolder);
this.panel4.Controls.Add(this.tboxLocalPath);
this.panel4.Controls.Add(this.rbtnLocal);
this.panel4.Controls.Add(this.rbtnRemote);
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel4.Location = new System.Drawing.Point(0, 0);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(600, 63);
this.panel4.TabIndex = 2;
//
// btnOpen
//
this.btnSelectFolder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSelectFolder.Location = new System.Drawing.Point(560, 27);
this.btnSelectFolder.Name = "btnOpen";
this.btnSelectFolder.Size = new System.Drawing.Size(33, 23);
this.btnSelectFolder.TabIndex = 3;
this.btnSelectFolder.Text = "...";
this.btnSelectFolder.UseVisualStyleBackColor = true;
//
// tboxLocalPath
//
this.tboxLocalPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tboxLocalPath.Location = new System.Drawing.Point(89, 28);
this.tboxLocalPath.Name = "tboxLocalPath";
this.tboxLocalPath.Size = new System.Drawing.Size(467, 21);
this.tboxLocalPath.TabIndex = 2;
//
// rbtnLocal
//
this.rbtnLocal.AutoSize = true;
this.rbtnLocal.Location = new System.Drawing.Point(8, 31);
this.rbtnLocal.Name = "rbtnLocal";
this.rbtnLocal.Size = new System.Drawing.Size(54, 16);
this.rbtnLocal.TabIndex = 1;
this.rbtnLocal.Text = "Local";
this.rbtnLocal.UseVisualStyleBackColor = true;
//
// rbtnRemote
//
this.rbtnRemote.AutoSize = true;
this.rbtnRemote.Checked = true;
this.rbtnRemote.Location = new System.Drawing.Point(8, 9);
this.rbtnRemote.Name = "rbtnRemote";
this.rbtnRemote.Size = new System.Drawing.Size(66, 16);
this.rbtnRemote.TabIndex = 0;
this.rbtnRemote.TabStop = true;
this.rbtnRemote.Text = "Remote";
this.rbtnRemote.UseVisualStyleBackColor = true;
//
// panel2
//
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Controls.Add(this.gridFile);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(600, 399);
this.panel2.TabIndex = 3;
//
// gridFile
//
this.gridFile.ColumnResizeKey = System.Windows.Forms.Keys.F6;
this.gridFile.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridFile.Location = new System.Drawing.Point(0, 0);
this.gridFile.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
//
//
this.gridFile.MasterTemplate.ViewDefinition = tableViewDefinition1;
this.gridFile.Name = "gridFile";
this.gridFile.Size = new System.Drawing.Size(598, 397);
this.gridFile.TabIndex = 0;
//
// panel3
//
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel3.Controls.Add(this.tboxWorkflow);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(0, 0);
this.panel3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(310, 466);
this.panel3.TabIndex = 0;
//
// tboxWorkflow
//
this.tboxWorkflow.Dock = System.Windows.Forms.DockStyle.Fill;
this.tboxWorkflow.Location = new System.Drawing.Point(0, 0);
this.tboxWorkflow.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tboxWorkflow.Multiline = true;
this.tboxWorkflow.Name = "tboxWorkflow";
this.tboxWorkflow.Size = new System.Drawing.Size(308, 464);
this.tboxWorkflow.TabIndex = 0;
//
// btnOpenFolder
//
this.btnOpenFolder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnOpenFolder.Location = new System.Drawing.Point(486, 2);
this.btnOpenFolder.Name = "btnOpenFolder";
this.btnOpenFolder.Size = new System.Drawing.Size(107, 23);
this.btnOpenFolder.TabIndex = 4;
this.btnOpenFolder.Text = "Open Folder";
this.btnOpenFolder.UseVisualStyleBackColor = true;
//
// FrmWorkFlow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(920, 470);
this.Controls.Add(this.panel1);
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "FrmWorkFlow";
this.Text = "FrmWorkFlow";
this.panel1.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.panel4.ResumeLayout(false);
this.panel4.PerformLayout();
this.panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.gridFile.MasterTemplate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridFile)).EndInit();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.TextBox tboxWorkflow;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Button btnSelectFolder;
private System.Windows.Forms.TextBox tboxLocalPath;
private System.Windows.Forms.RadioButton rbtnLocal;
private System.Windows.Forms.RadioButton rbtnRemote;
private System.Windows.Forms.Panel panel2;
private JWH.CONTROL.GridViewEx gridFile;
private System.Windows.Forms.Button btnOpenFolder;
}
}

View File

@@ -0,0 +1,256 @@
using DDUtilityApp.DATA;
using DDUtilityApp.LOGPARSER.DATA;
using JWH;
using JWH.NETWORK;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Telerik.WinControls.UI;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmWorkFlow : Form
{
#region [ Properties ] ------------------------------------------------
public CompressInformation CompressInformation { get; set; } = null;
public EisEquipment Equipment { get; set; }
#endregion
#region [ FrmWorkFlow ] ------------------------------------------------
public FrmWorkFlow()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
}
protected void SetLayout()
{
this.AllowDrop = true;
if (GlobalVariable.Instance.WorkflowLocation == "Local") this.rbtnLocal.Checked = true;
else this.rbtnRemote.Checked = true;
this.tboxLocalPath.Text = GlobalVariable.Instance.WorkflowCompressPath;
this.tboxWorkflow.Font = new Font("돋움체", 9.0f);
this.tboxWorkflow.ScrollBars = ScrollBars.Both;
this.tboxWorkflow.WordWrap = false;
this.gridFile.TableElement.RowHeight = 20;
//this.gridFile.AddColumn("ModelID");
//this.gridFile.AddColumn("Version");
this.gridFile.AddColumn("ModuleName");
this.gridFile.AddColumn("Trigger");
this.gridFile.AddColumn("Workflow");
this.gridFile.AddColumn("Description");
//this.gridFile.AddColumn("GemSettingID");
}
protected void SetEventHandler()
{
this.DragDrop += Control_DragDrop;
this.DragEnter += Control_DragEnter;
this.Load += FrmWorkFlow_Load;
this.btnSelectFolder.Click += BtnSelectFolder_Click;
this.btnOpenFolder.Click += BtnOpenFolder_Click;
this.gridFile.CellDoubleClick += GridFile_CellDoubleClick;
this.gridFile.DataBindingComplete += GridFile_DataBindingComplete;
}
private void FrmWorkFlow_Load(object sender, EventArgs e)
{
this.SetWorkflowFiles();
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.F6:
this.gridFile.BestFitColumns(Telerik.WinControls.UI.BestFitColumnMode.DisplayedCells);
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
#endregion
#region [ Control Events ] --------------------------------------------
private void Control_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
}
private void Control_DragDrop(object sender, DragEventArgs e)
{
XLogger.Instance.Info(e);
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
this.Download(files[0]);
}
private void BtnSelectFolder_Click(object sender, EventArgs e)
{
FolderBrowserDialog dlg = new FolderBrowserDialog();
dlg.SelectedPath = this.tboxLocalPath.Text;
if (dlg.ShowDialog() != DialogResult.OK) return;
this.tboxLocalPath.Text =$@"{dlg.SelectedPath}\";
}
private void BtnOpenFolder_Click(object sender, EventArgs e)
{
try
{
if (this.CompressInformation == null) return;
Process.Start(this.CompressInformation.ExtractPath);
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void GridFile_CellDoubleClick(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
try
{
this.tboxWorkflow.Clear();
if (this.CompressInformation == null) this.Download();
if (this.CompressInformation == null) return;
string fileName = e.Row.Cells[2].Value as string;
foreach (FileInfo fileInfo in this.CompressInformation.Files)
{
if (string.Compare(fileInfo.Name, fileName, true) == 0)
{
FileStream fileStream = fileInfo.OpenRead();
StreamReader reader = new StreamReader(fileStream);
this.tboxWorkflow.Text = reader.ReadToEnd();
reader.Close();
fileStream.Close();
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void GridFile_DataBindingComplete(object sender, GridViewBindingCompleteEventArgs e)
{
this.gridFile.BestFitColumns(BestFitColumnMode.DisplayedCells);
}
#endregion
#region [ Method ] ----------------------------------------------------
private void SetWorkflowFiles()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine($"SELECT * ");
sb.AppendLine($"FROM WorkflowMapping ");
sb.AppendLine($"WHERE ModelID = '{this.Equipment.ModelID}' ");
sb.AppendLine($" AND Version = '{this.Equipment.RunningVersion}' ");
sb.AppendLine($" AND Workflow IS NOT NULL ");
sb.AppendLine($"ORDER BY ModuleName, 'Trigger', Workflow ");
DataSet ds = this.Equipment.Server.ExecuteQuery(sb.ToString());
this.gridFile.DataSource = ds.Tables[0];
this.gridFile.GroupDescriptors.Add(new GridGroupByExpression(this.gridFile.Columns[0]));
}
private void Download(string path = "")
{
try
{
this.Cursor = Cursors.WaitCursor;
string downFullName = $@"{GlobalVariable.Instance.WorkflowPath}{this.Equipment.ModelID}_{this.Equipment.RunningVersion}.Compress";
if (string.IsNullOrEmpty(path))
{
if (this.rbtnLocal.Checked)
{
path = $"{this.tboxLocalPath.Text}/{this.Equipment.ModelID}/{this.Equipment.RunningVersion}/ALL.COMPRESS";
System.IO.File.Copy(path, downFullName, true);
}
else
{
string uri = $"ftp://{this.Equipment.Server.FTPAddress}:{this.Equipment.Server.FTPPort}/";
string uid = this.Equipment.Server.FTPUserID;
string pwd = this.Equipment.Server.FTPPassword;
path = $"{this.Equipment.ModelID}/{this.Equipment.RunningVersion}";
FtpClient client = new FtpClient(uri, uid, pwd);
string[] lstName = client.GetList(path);
string fullName = string.Empty;
foreach (string name in lstName)
{
if (string.Compare(name, $"ALL.COMPRESS", true) == 0)
{
fullName = name;
break;
}
}
if (string.IsNullOrEmpty(fullName)) return;
bool result = client.Download($"{path}/ALL.COMPRESS", downFullName);
if (result == false) return;
}
}
else
{
downFullName = $@"{GlobalVariable.Instance.WorkflowPath}{System.IO.Path.GetFileName(path)}";
System.IO.File.Copy(path, downFullName, true);
}
this.CompressInformation = new CompressInformation(downFullName);
if (this.rbtnLocal.Checked)
{
GlobalVariable.Instance.WorkflowLocation = "Local";
if (!string.IsNullOrEmpty(this.tboxLocalPath.Text)) GlobalVariable.Instance.WorkflowCompressPath = this.tboxLocalPath.Text;
}
else
{
GlobalVariable.Instance.WorkflowLocation = "Remote";
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex, true);
}
finally
{
this.Cursor = Cursors.Default;
}
}
#endregion
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,140 @@
using DDUtilityApp.SECS;
using JWH;
using System;
using System.Collections.Generic;
using System.Xml;
namespace DDUtilityApp.LOGPARSER
{
public class GemSetting
{
public string ModelName { get; protected set; } = "COMMON";
public Dictionary<string, CEID> CeidDictionary = new Dictionary<string, CEID>();
public Dictionary<string, RPT> RptDictionary = new Dictionary<string, RPT>();
public Dictionary<string, SECSDefine> EquipmentModelDictionary = new Dictionary<string, SECSDefine>();
public GemSetting(string filename, string modelName = "COMMON")
{
this.Load(filename);
this.SetModelName(modelName);
}
public void Load(string filename)
{
XmlDocument document = null;
try
{
if (string.IsNullOrEmpty(filename)) return;
document = new XmlDocument();
document.Load(filename);
foreach (XmlNode child in document.ChildNodes[0])
{
if (string.Compare(child.Name, "MODEL", true) == 0)
{
string modelName = child.Attributes["NAME"].Value;
if (string.IsNullOrEmpty(modelName)) continue;
SECSDefine eqModel = new SECSDefine(child);
this.EquipmentModelDictionary.Add(modelName, eqModel);
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
}
}
public void SetModelName(string modelName)
{
try
{
this.ModelName = modelName;
if (this.EquipmentModelDictionary.ContainsKey("COMMON"))
{
SECSDefine model = this.EquipmentModelDictionary["COMMON"];
this.CeidDictionary = new Dictionary<string, CEID>(model.CeidDictionary);
this.RptDictionary = new Dictionary<string, RPT>(model.RptDictionary);
}
if (this.ModelName != "COMMON" && this.EquipmentModelDictionary.ContainsKey(this.ModelName))
{
SECSDefine model = this.EquipmentModelDictionary[this.ModelName];
foreach (KeyValuePair<string, CEID> pair in model.CeidDictionary)
if (this.CeidDictionary.ContainsKey(pair.Key)) this.CeidDictionary[pair.Key] = pair.Value;
else this.CeidDictionary.Add(pair.Key, pair.Value);
foreach (KeyValuePair<string, RPT> pair in model.RptDictionary)
if (this.RptDictionary.ContainsKey(pair.Key)) this.RptDictionary[pair.Key] = pair.Value;
else this.RptDictionary.Add(pair.Key, pair.Value);
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
/// <summary>
/// Change ID, Name, Format
/// </summary>
/// <param name="item"></param>
public void Setting(SECSItem item)
{
try
{
if (item.Stream != "6" || item.Function != "11") return;
if (item.ChildItems.Count != 3) return;
item.ChildItems[0].Name = "DATAID";
item.ChildItems[1].Name = "CEID";
if (this.CeidDictionary.ContainsKey(item.ChildItems[1].Value) == false) return;
CEID ceid = this.CeidDictionary[item.ChildItems[1].Value];
if (ceid != null) item.ChildItems[1].Description = ceid.Name;
foreach (SECSItem report in item.ChildItems[2])
{
if (report.ChildItems.Count != 2) continue;
report.ChildItems[0].Name = "RPTID";
if (this.RptDictionary.ContainsKey(report.ChildItems[0].Value) == false) continue;
RPT rpt = this.RptDictionary[report.ChildItems[0].Value];
if (rpt == null) continue;
int i = 0;
foreach (VID vid in rpt.VidCollection)
{
SECSItem secsVid = report.ChildItems[1].ChildItems[i];
secsVid.ID = vid.ID;
if (string.IsNullOrEmpty(secsVid.Name))
{
secsVid.Name = vid.Name;
//secsVid.Format = vid.Format;
//secsVid.Length = vid.Length;
}
i++;
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
}
}

View File

@@ -0,0 +1,278 @@
using JWH;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace DDUtilityApp.DATA
{
/// <summary>
/// Log Server 접속정보
/// </summary>
public class LogServer
{
#region [ Properties ] ------------------------------------------------
public string Name { get; set; }
public string DBConnectionString { get; set; }
public Dictionary<string, Account> NetworkAccount { get; set; } = new Dictionary<string, Account>();
public string FTPAddress { get; set; }
public int FTPPort { get; set; } = 21;
public string FTPUserID { get; set; }
public string FTPPassword { get; set; }
public string DBGetEquipments { get; set; }
public string DBGetModelDetails { get; set; }
public string DBGetModelInfo { get; set; }
/// <summary>
/// GetLogPath()에서 사용 할 Format 문자열을 설정하거나 가져옵니다.
/// <para>{0}\eisap01_eislog\Log\\{1}</para>
/// </summary>
//public Dictionary<string, string> QueryGetLogPath { get; set; } = new Dictionary<string, string>();
#endregion
#region [ LogServer ] -------------------------------------------------
public LogServer(string name, string dbConnectionString = "")
{
this.Name = name;
this.DBConnectionString = dbConnectionString;
}
#endregion
#region [ Method ] ----------------------------------------------------
public DataTable GetEquipments()
{
SqlConnection sqlConnection = null;
DataTable dt = null;
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
if (string.IsNullOrEmpty(this.DBGetEquipments)) throw new Exception($"QueryGetEquipment 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = this.DBGetEquipments;
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
if (ds != null && ds.Tables.Count > 0) dt = ds.Tables[0];
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return dt;
}
public DataTable GetModelDetails(string modelID)
{
SqlConnection sqlConnection = null;
DataTable dt = null;
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
if (string.IsNullOrEmpty(this.DBGetEquipments)) throw new Exception($"QueryGetEquipment 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = this.DBGetModelDetails;
sqlCommand.Parameters.Add(new SqlParameter("@MODEL_ID", modelID));
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
if (ds != null && ds.Tables.Count > 0) dt = ds.Tables[0];
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return dt;
}
public DataTable GetModelInfo(string modelID)
{
SqlConnection sqlConnection = null;
DataTable dt = null;
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
if (string.IsNullOrEmpty(this.DBGetEquipments)) throw new Exception($"QueryGetEquipment 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = this.DBGetModelInfo;
sqlCommand.Parameters.Add(new SqlParameter("@MODEL_ID", modelID));
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
if (ds != null && ds.Tables.Count > 0) dt = ds.Tables[0];
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return dt;
}
public string GetLogPath(string serverIP, string equipmentID)
{
try
{
Account account = this.NetworkAccount[serverIP];
return $@"\\{account.IPAddress}\{account.DefaultPath}{equipmentID}\";
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
return string.Empty;
}
}
public DataSet ExecuteQuery(string query)
{
SqlConnection sqlConnection = null;
DataSet ds = new DataSet();
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandTimeout = 5000;
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = query;
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return ds;
}
public override string ToString()
{
return this.Name;
}
#endregion
}
public class Account
{
public string IPAddress { get; set; }
public string UserID { get; set; }
public string Password { get; set; }
public string DefaultPath { get; set; }
public Account()
{
}
public Account(string ipAddress, string uid, string pwd, string defaultPath = "")
{
this.IPAddress = ipAddress;
this.UserID = uid;
this.Password = pwd;
this.DefaultPath = defaultPath;
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,171 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
using DDUtilityApp.LOGPARSER.DATA;
using DDUtilityApp.SECS;
using JWH;
using JWH.CONTROL;
namespace DDUtilityApp.LOGPARSER.PARSER
{
public abstract class LogParser
{
public delegate object Parser(StreamReader reader, ref string startLine);
#region [ Properties ] ------------------------------------------------
public string Text { get; set; } = "[EverOne] Log Viewer";
public string ServerName { get; set; } = string.Empty;
public string EquipmentID { get; set; } = string.Empty;
public string ModelID { get; set; }
public SECSDefine SECSDefine { get; set; } = null;
public List<string> Files { get; set; } = new List<string>();
public StandardCollection StandardCollection { get; set; } = new StandardCollection();
public StringBuilder LogString { get; set; } = new StringBuilder();
protected int LogDTimeStart { get; set; } = 0;
protected string LogDTime { get; set; } = "yyyy-MM-dd HH:mm:ss.fff";
protected int LineNumber { get; set; } = 0;
protected string LastReadLine { get; set; } = string.Empty;
protected long StreamPosition { get; set; } = 0;
#endregion
#region [ LogParser ] -------------------------------------------------
public LogParser()
{
}
public LogParser(params string[] files) : this()
{
//this.Childs.AddRange(from file in files orderby file select file);
this.Files.AddRange(files);
}
protected void Initilize()
{
this.StandardCollection.Clear();
this.LogString.Clear();
this.LineNumber = 0;
}
#endregion
#region [ Method ] ----------------------------------------------------
public virtual void SetGridHeader(GridViewEx grid)
{
grid.AddColumn("DateTime");
grid.AddColumn("Level");
grid.AddColumn("Server");
grid.AddColumn("Service");
grid.AddColumn("Type");
grid.AddColumn("MessageName");
grid.AddColumn("Return");
grid.AddColumn("Value");
grid.AddColumn("LotID");
grid.AddColumn("CarrierID");
grid.AddColumn("EquipmentID");
grid.AddColumn("PortID");
grid.AddColumn("SystemByte");
grid.AddColumn("ModuleID");
grid.AddColumn("HostPanelID");
grid.AddColumn("PanelID");
grid.AddColumn("PanelQty");
grid.AddColumn("TID");
grid.AddColumn("Column1");
grid.AddColumn("Column2");
grid.AddColumn("Column3");
grid.AddColumn("Column4");
grid.AddColumn("Column5");
}
public virtual void SaveGridHeader(GridViewEx grid)
{
}
public virtual string[] FileSelector(FrmLogParser sender, params string[] args)
{
string directoryName = string.Empty;
string fileName = string.Empty;
if (args != null && args.Length > 0)
{
directoryName = Path.GetDirectoryName(args[0]);
fileName = Path.GetFileName(args[0]);
}
OpenFileDialog dlg = new OpenFileDialog();
dlg.Multiselect = true;
dlg.InitialDirectory = directoryName;
dlg.FileName = fileName;
if (dlg.ShowDialog() == DialogResult.OK)
return dlg.FileNames;
return null;
}
public abstract bool Parsing();
public bool Parsing(params string[] files)
{
this.Files.Clear();
this.Files.AddRange(files);
return this.Parsing();
}
protected string GetReadLine(StreamReader reader, bool isWrite = true)
{
try
{
this.StreamPosition = reader.BaseStream.Position;
string strLine = reader.ReadLine();
if (isWrite)
{
this.LineNumber++;
this.LogString.AppendLine($"{this.LineNumber.ToString("000000")}: {strLine}");
//XLogger.Instance.Debug($"{this.LineNumber.ToString("000000")}: {strLine}");
}
return strLine;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
return string.Empty;
}
}
protected void LogString_Append(string strLine)
{
foreach (string value in strLine.Split(new string[] { Environment.NewLine }, StringSplitOptions.None))
{
this.LineNumber++;
this.LogString.AppendLine($"{this.LineNumber.ToString("000000")}: {value}");
//XLogger.Instance.Debug($"{this.LineNumber.ToString("000000")}: {value}");
}
}
#endregion
}
}