diff --git a/DDUtilityApp/DDUtilityApp.csproj b/DDUtilityApp/DDUtilityApp.csproj index cf2b58a..90d3883 100644 --- a/DDUtilityApp/DDUtilityApp.csproj +++ b/DDUtilityApp/DDUtilityApp.csproj @@ -404,6 +404,12 @@ FrmEqSelector.cs + + Form + + + FrmServerLog.cs + Form @@ -522,6 +528,9 @@ FrmWorkFlow.cs + + FrmServerLog.cs + FrmFDCMongo.cs diff --git a/DDUtilityApp/GlobalVariable.cs b/DDUtilityApp/GlobalVariable.cs index ae58f39..0475392 100644 --- a/DDUtilityApp/GlobalVariable.cs +++ b/DDUtilityApp/GlobalVariable.cs @@ -106,22 +106,32 @@ namespace DDUtilityApp } } + /// + /// Loading AppSettings + /// private void LodConfig() { // DefaultPath string defaultPath = ConfigurationManager.AppSettings["DefaultPath"]; if (string.IsNullOrEmpty(defaultPath)) defaultPath = $@"%MyDocuments%\DDUtility\"; this.DefaultPath = defaultPath.Replace("%MyDocuments%", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); - this.DownloadPath = $@"{this.DefaultPath}Download\"; - this.WorkflowPath = $@"{this.DefaultPath}Workflow\"; - this.MesDownloadPath = $@"{this.DefaultPath}MesDownload\"; //jhlim 20250202 + this.DownloadPath = Path.Combine(this.DefaultPath, "Download"); + this.WorkflowPath = Path.Combine(this.DefaultPath, "Workflow"); + this.MesDownloadPath = Path.Combine(this.DefaultPath, "DownloadMES"); } + /// + /// Loading Setting.xml + /// public void LoadSetting() { this.LoadSetting($@"{this.DefaultPath}Setting.xml"); } + /// + /// Loading Setting File + /// + /// private void LoadSetting(string filename) { try diff --git a/DDUtilityApp/LOGPARSER/FrmLogParser.cs b/DDUtilityApp/LOGPARSER/FrmLogParser.cs index fee25ac..102cf27 100644 --- a/DDUtilityApp/LOGPARSER/FrmLogParser.cs +++ b/DDUtilityApp/LOGPARSER/FrmLogParser.cs @@ -951,6 +951,7 @@ namespace DDUtilityApp.LOGPARSER private void BtnDeploySite_Click(object sender, EventArgs e) { Process.Start("IEXPLORE.EXE", "http://pms.e1soft.co.kr:8090/Deploy/eqview/"); + Clipboard.SetText("http://pms.e1soft.co.kr:8090/Deploy/eqview/"); } private void BtnTest01_Click(object sender, EventArgs e) diff --git a/DDUtilityApp/MESDOWNLOADER/FrmServerLog.Designer.cs b/DDUtilityApp/MESDOWNLOADER/FrmServerLog.Designer.cs new file mode 100644 index 0000000..bf9c8a2 --- /dev/null +++ b/DDUtilityApp/MESDOWNLOADER/FrmServerLog.Designer.cs @@ -0,0 +1,272 @@ +namespace DDUtilityApp.MESDOWNLOADER +{ + partial class FrmServerLog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + Telerik.WinControls.UI.TableViewDefinition tableViewDefinition4 = new Telerik.WinControls.UI.TableViewDefinition(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.panel1 = new System.Windows.Forms.Panel(); + this.pnlAPList = new System.Windows.Forms.FlowLayoutPanel(); + this.pnlCommand = new System.Windows.Forms.Panel(); + this.btnDownPathOpen = new System.Windows.Forms.Button(); + this.btnDownPathChange = new System.Windows.Forms.Button(); + this.btnRefresh = new System.Windows.Forms.Button(); + this.tboxDownPath = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.cboxServer = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.treeFolder = new System.Windows.Forms.TreeView(); + this.gridFiles = new JWH.CONTROL.GridViewEx(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.pnlCommand.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gridFiles)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.gridFiles.MasterTemplate)).BeginInit(); + this.SuspendLayout(); + // + // 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, 3); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.panel1); + this.splitContainer1.Panel1MinSize = 94; + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); + this.splitContainer1.Size = new System.Drawing.Size(794, 569); + this.splitContainer1.SplitterDistance = 94; + this.splitContainer1.TabIndex = 0; + // + // panel1 + // + this.panel1.Controls.Add(this.pnlAPList); + this.panel1.Controls.Add(this.pnlCommand); + 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(794, 94); + this.panel1.TabIndex = 0; + // + // pnlAPList + // + this.pnlAPList.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlAPList.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.pnlAPList.Location = new System.Drawing.Point(722, 0); + this.pnlAPList.Name = "pnlAPList"; + this.pnlAPList.Padding = new System.Windows.Forms.Padding(0, 10, 0, 0); + this.pnlAPList.Size = new System.Drawing.Size(72, 94); + this.pnlAPList.TabIndex = 1; + // + // pnlCommand + // + this.pnlCommand.Controls.Add(this.btnDownPathOpen); + this.pnlCommand.Controls.Add(this.btnDownPathChange); + this.pnlCommand.Controls.Add(this.btnRefresh); + this.pnlCommand.Controls.Add(this.tboxDownPath); + this.pnlCommand.Controls.Add(this.label2); + this.pnlCommand.Controls.Add(this.cboxServer); + this.pnlCommand.Controls.Add(this.label1); + this.pnlCommand.Dock = System.Windows.Forms.DockStyle.Left; + this.pnlCommand.Location = new System.Drawing.Point(0, 0); + this.pnlCommand.Name = "pnlCommand"; + this.pnlCommand.Size = new System.Drawing.Size(722, 94); + this.pnlCommand.TabIndex = 0; + // + // btnDownPathOpen + // + this.btnDownPathOpen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnDownPathOpen.Location = new System.Drawing.Point(622, 62); + this.btnDownPathOpen.Name = "btnDownPathOpen"; + this.btnDownPathOpen.Size = new System.Drawing.Size(90, 23); + this.btnDownPathOpen.TabIndex = 6; + this.btnDownPathOpen.Text = "Open"; + this.btnDownPathOpen.UseVisualStyleBackColor = true; + // + // btnDownPathChange + // + this.btnDownPathChange.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnDownPathChange.Location = new System.Drawing.Point(622, 37); + this.btnDownPathChange.Name = "btnDownPathChange"; + this.btnDownPathChange.Size = new System.Drawing.Size(90, 23); + this.btnDownPathChange.TabIndex = 5; + this.btnDownPathChange.Text = "Change"; + this.btnDownPathChange.UseVisualStyleBackColor = true; + // + // btnRefresh + // + this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnRefresh.Location = new System.Drawing.Point(622, 10); + this.btnRefresh.Name = "btnRefresh"; + this.btnRefresh.Size = new System.Drawing.Size(90, 23); + this.btnRefresh.TabIndex = 4; + this.btnRefresh.Text = "Refresh"; + this.btnRefresh.UseVisualStyleBackColor = true; + // + // tboxDownPath + // + this.tboxDownPath.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tboxDownPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tboxDownPath.Location = new System.Drawing.Point(136, 38); + this.tboxDownPath.Multiline = true; + this.tboxDownPath.Name = "tboxDownPath"; + this.tboxDownPath.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.tboxDownPath.Size = new System.Drawing.Size(480, 47); + this.tboxDownPath.TabIndex = 3; + // + // label2 + // + this.label2.Location = new System.Drawing.Point(10, 38); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(120, 23); + this.label2.TabIndex = 2; + this.label2.Text = "로컬디렉토리 : "; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // cboxServer + // + this.cboxServer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.cboxServer.FormattingEnabled = true; + this.cboxServer.Location = new System.Drawing.Point(136, 12); + this.cboxServer.Name = "cboxServer"; + this.cboxServer.Size = new System.Drawing.Size(480, 20); + this.cboxServer.TabIndex = 1; + // + // label1 + // + this.label1.Location = new System.Drawing.Point(10, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(120, 23); + this.label1.TabIndex = 0; + this.label1.Text = "Server : "; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // 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.treeFolder); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.gridFiles); + this.splitContainer2.Size = new System.Drawing.Size(794, 471); + this.splitContainer2.SplitterDistance = 264; + this.splitContainer2.TabIndex = 0; + // + // treeFolder + // + this.treeFolder.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeFolder.Location = new System.Drawing.Point(0, 0); + this.treeFolder.Name = "treeFolder"; + this.treeFolder.Size = new System.Drawing.Size(264, 471); + this.treeFolder.TabIndex = 0; + // + // gridFiles + // + this.gridFiles.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.gridFiles.ColumnResizeKey = System.Windows.Forms.Keys.F6; + this.gridFiles.Dock = System.Windows.Forms.DockStyle.Fill; + this.gridFiles.Location = new System.Drawing.Point(0, 0); + // + // + // + this.gridFiles.MasterTemplate.ViewDefinition = tableViewDefinition4; + this.gridFiles.Name = "gridViewEx1"; + // + // + // + this.gridFiles.RootElement.ControlBounds = new System.Drawing.Rectangle(0, 0, 240, 150); + this.gridFiles.Size = new System.Drawing.Size(526, 471); + this.gridFiles.TabIndex = 0; + // + // FrmServerLog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 575); + this.Controls.Add(this.splitContainer1); + this.Name = "FrmServerLog"; + this.Padding = new System.Windows.Forms.Padding(3); + this.Text = "FrmServerLog"; + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.pnlCommand.ResumeLayout(false); + this.pnlCommand.PerformLayout(); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gridFiles.MasterTemplate)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.gridFiles)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.FlowLayoutPanel pnlAPList; + private System.Windows.Forms.Panel pnlCommand; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tboxDownPath; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox cboxServer; + private System.Windows.Forms.Button btnDownPathOpen; + private System.Windows.Forms.Button btnDownPathChange; + private System.Windows.Forms.Button btnRefresh; + private System.Windows.Forms.TreeView treeFolder; + private JWH.CONTROL.GridViewEx gridFiles; + } +} \ No newline at end of file diff --git a/DDUtilityApp/MESDOWNLOADER/FrmServerLog.cs b/DDUtilityApp/MESDOWNLOADER/FrmServerLog.cs new file mode 100644 index 0000000..96dd05f --- /dev/null +++ b/DDUtilityApp/MESDOWNLOADER/FrmServerLog.cs @@ -0,0 +1,444 @@ +using DDUtilityApp.LOGPARSER.DATA; +using JWH; +using JWH.NETWORK; +using Org.BouncyCastle.Tls.Crypto; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.DataVisualization.Charting; +using Telerik.WinControls.Drawing; +using Telerik.WinControls.UI; + +namespace DDUtilityApp.MESDOWNLOADER +{ + public partial class FrmServerLog: Form + { + + private DataSet DSSetting { get; set; } = null; + + private DataTable DTFileInfo { get; set; } = null; + + public FrmServerLog() + { + InitializeComponent(); + + this.SetLayout(); + this.SetEventHandler(); + } + + private void SetLayout() + { + try + { + this.CreateDTFileInfo(); + this.SetCboxServer(); + this.GridFiles_Setting(); + + this.tboxDownPath.ReadOnly = true; + this.tboxDownPath.Text = GlobalVariable.Instance.MesDownloadPath; + + this.treeFolder.Font = new Font("돋움체", 10.0F); + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + private void SetEventHandler() + { + try + { + this.cboxServer.SelectedIndexChanged += this.CboxServer_SelectedIndexChanged; + this.btnRefresh.Click += this.BtnRefresh_Click; + this.btnDownPathChange.Click += this.BtnDownPathChange_Click; + this.btnDownPathOpen.Click += this.BtnDownPathOpen_Click; + + this.treeFolder.AfterSelect += this.TreeFolder_AfterSelect; + + this.gridFiles.CellDoubleClick += this.GridFiles_CellDoubleClick; + this.gridFiles.KeyDown += this.GridFiles_KeyDown; + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + #region [ Controls ] -------------------------------------------------- + + /// + /// 서버선택 + /// + /// + /// + private void CboxServer_SelectedIndexChanged(object sender, EventArgs e) + { + try + { + this.GridFiles_Setting(); + Color[] backColors = new Color[] { Color.FromArgb(0, 255, 255, 255), Color.FromArgb(255, 255, 255, 220), Color.FromArgb(255, 255, 220, 255), Color.FromArgb(255, 220, 255, 255) }; + if (this.DSSetting == null || this.DSSetting.Tables.Contains("Item") == false) return; + + int value = (int)this.cboxServer.SelectedValue; + var query = from dtServer in DSSetting.Tables["Server"].AsEnumerable() + join dtItem in DSSetting.Tables["Item"].AsEnumerable() + on dtServer.Field("Server_Id") equals dtItem.Field("Server_Id") + where dtItem.Field("Server_Id") == value + select new + { + name = dtServer.Field("name"), + nameap = dtItem.Field("name"), + url = dtItem.Field("url"), + dir = dtItem.Field("dir"), + conkey = dtItem.Field("conkey"), + Server_Id = dtItem.Field("Server_Id"), + }; + + foreach (Control control in this.pnlAPList.Controls) + control.Dispose(); + this.pnlAPList.Controls.Clear(); + + int index = 0; + foreach (var item in query) + { + CheckBox chk = new CheckBox() + { + Text = $"{item.nameap} ({item.url})", + AutoSize = true, + Checked = true, + Tag = item.nameap, + BackColor = backColors[index % 4] + }; + index++; + this.pnlAPList.Controls.Add(chk); + + ExpressionFormattingObject formatting = new ExpressionFormattingObject($"Marking", $"nameap='{item.nameap}'", true); + formatting.RowBackColor = chk.BackColor; + this.gridFiles.Columns["nameap"].ConditionalFormattingObjectList.Add(formatting); + } + + this.treeFolder.Nodes.Clear(); + TreeNode rootNode = this.treeFolder.Nodes.Add("ROOT"); + this.treeFolder.SelectedNode = rootNode; + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + /// + /// 현재 (Treeview.SelectedNode)경로의 파일목록 갱신 + /// + /// + /// + private void BtnRefresh_Click(object sender, EventArgs e) + { + try + { + this.Cursor = Cursors.WaitCursor; + this.SuspendLayout(); + this.DTFileInfo.Rows.Clear(); + this.gridFiles.DataSource = null; + + int server_Id = (int)this.cboxServer.SelectedValue; + TreeNode currentNode = this.treeFolder.SelectedNode; + if (currentNode == null) return; + string subPath = currentNode.Tag as string; + + foreach (Control control in this.pnlAPList.Controls) + { + CheckBox chk = control as CheckBox; + if (chk == null || chk.Checked == false) continue; + + string nameap = control.Tag as string; + if (string.IsNullOrEmpty(nameap)) continue; + + DataRow[] rows = this.DSSetting.Tables["Item"].Select($"Server_Id='{server_Id}' AND name='{nameap}'"); + foreach (DataRow row in rows) + { + string url = row["url"] as string; + string dir = row["dir"] as string; + string conkey = row["conkey"] as string; + + string userId = this.GetUserIdFromConkey(conkey); + string password = this.GetPasswordFromConkey(conkey); + string currentPath = string.IsNullOrEmpty(subPath) ? dir : System.IO.Path.Combine(dir, subPath); + + FtpsClient.Initialize(url, userId, password); + var files = FtpsClient.GetFtpsList(currentPath); + + foreach (var file in files) + { + DataRow rowFile = this.DTFileInfo.NewRow(); + rowFile["Check"] = false; + rowFile["nameap"] = nameap; + rowFile["Name"] = file.Name; + rowFile["FileName"] = file.Name; + rowFile["Size"] = this.GetFileSize(file.Size, FileSizeType.MB); + rowFile["Modified"] = file.Modified.ToString("yyyy-MM-dd HH:mm:ss"); + rowFile["Type"] = file.Type; + rowFile["url"] = url; + rowFile["dir"] = dir; + rowFile["subpath"] = subPath; + rowFile["userId"] = userId; + rowFile["password"] = password; + this.DTFileInfo.Rows.Add(rowFile); + } + } + } + + this.DTFileInfo.DefaultView.RowFilter = $"Type='Directory'"; + this.DTFileInfo.DefaultView.Sort = "FileName ASC"; + foreach (DataRow row in this.DTFileInfo.DefaultView.ToTable(true, "FileName").Rows) + { + + string fileName = row["FileName"] as string; + if (string.IsNullOrEmpty(fileName)) continue; + if (currentNode.Nodes.ContainsKey(fileName)) continue; + + TreeNode node = currentNode.Nodes.Add(fileName, fileName); + node.Tag = string.IsNullOrEmpty(currentNode.Tag as string) ? fileName : System.IO.Path.Combine(currentNode.Tag as string, fileName); + } + currentNode.Expand(); + + this.DTFileInfo.DefaultView.RowFilter = ""; + this.DTFileInfo.DefaultView.Sort = "Modified DESC"; + this.gridFiles.DataSource = this.DTFileInfo; + this.gridFiles.BestFitColumns(); + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + finally + { + this.ResumeLayout(); + this.Cursor = Cursors.Default; + } + } + + /// + /// 로그파일 다운로드 폴더설정 + /// + /// + /// + private void BtnDownPathChange_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrEmpty(this.tboxDownPath.Text)) + this.tboxDownPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); + + using (FolderBrowserDialog dlg = new FolderBrowserDialog()) + { + dlg.SelectedPath = this.tboxDownPath.Text; + if (dlg.ShowDialog() == DialogResult.OK) + { + this.tboxDownPath.Text = dlg.SelectedPath; + GlobalVariable.Instance.MesDownloadPath = this.tboxDownPath.Text; + } + } + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + /// + /// 로그파일 다운로드 폴더열기 + /// + /// + /// + private void BtnDownPathOpen_Click(object sender, EventArgs e) + { + try + { + Process.Start("explorer.exe", this.tboxDownPath.Text); + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + private void TreeFolder_AfterSelect(object sender, TreeViewEventArgs e) + { + this.BtnRefresh_Click(this.btnRefresh, new EventArgs()); + } + + #endregion + + #region [ GridFiles ] ------------------------------------------------- + + private void GridFiles_Setting() + { + try + { + this.gridFiles.Columns.Clear(); + this.gridFiles.Columns.Add(new GridViewCheckBoxColumn("Check") { }); + this.gridFiles.Columns.Add(new GridViewTextBoxColumn("nameap") { HeaderText = "Server", ReadOnly = true }); + this.gridFiles.Columns.Add(new GridViewTextBoxColumn("Name") { ReadOnly=true, IsVisible = false }); + this.gridFiles.Columns.Add(new GridViewTextBoxColumn("FileName") { ReadOnly = true }); + this.gridFiles.Columns.Add(new GridViewTextBoxColumn("Size") { ReadOnly = true, TextAlignment = ContentAlignment.MiddleRight }); + this.gridFiles.Columns.Add(new GridViewTextBoxColumn("Modified") { ReadOnly = true }); + this.gridFiles.Columns.Add(new GridViewTextBoxColumn("Type") { ReadOnly = true }); + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + private void GridFiles_KeyDown(object sender, KeyEventArgs e) + { + try + { + + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + private void GridFiles_CellDoubleClick(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e) + { + try + { + + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + #endregion + + /// + /// Server + File 저장테이블 생성 + /// + /// + private void CreateDTFileInfo() + { + try + { + this.DTFileInfo = new DataTable(); + this.DTFileInfo.Columns.Add("Check", typeof(bool)); + this.DTFileInfo.Columns.Add("nameap", typeof(string)); + this.DTFileInfo.Columns.Add("Name", typeof(string)); + this.DTFileInfo.Columns.Add("FileName", typeof(string)); + this.DTFileInfo.Columns.Add("Size", typeof(string)); + this.DTFileInfo.Columns.Add("Modified", typeof(string)); + this.DTFileInfo.Columns.Add("Type", typeof(string)); + this.DTFileInfo.Columns.Add("url", typeof(string)); + this.DTFileInfo.Columns.Add("dir", typeof(string)); + this.DTFileInfo.Columns.Add("subpath", typeof(string)); + this.DTFileInfo.Columns.Add("userId", typeof(string)); + this.DTFileInfo.Columns.Add("password", typeof(string)); + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + /// + /// XML 설정파일 로딩 및 CboxServer 셋팅 + /// + private void SetCboxServer() + { + try + { + string path = ConfigurationManager.AppSettings["BULK_VIEWER"]; + this.DSSetting = XmlToDsConverter.ConvertXmlToDataSet(path); + if (this.DSSetting == null || this.DSSetting.Tables.Count < 1 || this.DSSetting.Tables.Contains("Server") == false) + { + MessageBox.Show("XML 데이터를 불러올 수 없습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + this.cboxServer.DataSource = DSSetting.Tables["Server"]; + this.cboxServer.DisplayMember = "name"; + this.cboxServer.ValueMember = "Server_Id"; + this.cboxServer.SelectedIndex = -1; + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + } + } + + /// + /// conkey to Base64 + /// + /// + /// + private string GetUserIdFromConkey(string conkey) + { + try + { + string value = Util.GetBase64(conkey); + string[] items = value.Split(':'); + if (items == null || items.Length < 1) return string.Empty; + + return items[0]; + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + return string.Empty; + } + } + + /// + /// conkey to Base64 + /// + /// + /// + private string GetPasswordFromConkey(string conkey) + { + try + { + string value = Util.GetBase64(conkey); + string[] items = value.Split(':'); + if (items == null || items.Length < 2) return string.Empty; + + return items[1]; + } + catch (Exception ex) + { + XLogger.Instance.Fatal(ex, true); + return string.Empty; + } + } + + public string GetFileSize(long length, FileSizeType format = FileSizeType.Auto) + { + int index = 0; + int nFormat = (int)format; + double value = length; + for (index = 0; index < nFormat; index++) + { + if (format == FileSizeType.Auto && value < 1024) break; + value /= 1024; + } + + return $"{value.ToString("N2")} {(FileSizeType)index}"; + } + + } +} diff --git a/DDUtilityApp/MESDOWNLOADER/FrmServerLog.resx b/DDUtilityApp/MESDOWNLOADER/FrmServerLog.resx new file mode 100644 index 0000000..85d34e3 --- /dev/null +++ b/DDUtilityApp/MESDOWNLOADER/FrmServerLog.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/DDUtilityApp/MESDOWNLOADER/ServerLog.cs b/DDUtilityApp/MESDOWNLOADER/ServerLog.cs index 6d08746..413b313 100644 --- a/DDUtilityApp/MESDOWNLOADER/ServerLog.cs +++ b/DDUtilityApp/MESDOWNLOADER/ServerLog.cs @@ -366,8 +366,16 @@ namespace DDUtilityApp.MESDOWNLOADER // 데이터 테이블 생성 후 바인딩 foreach (var item in fileList) { - dtFiles.Rows.Add(row.Cells["name"].Value, row.Cells["nameap"].Value, item.Name, item.Size.ToString("N0") - , item.Modified.ToString("yyyy-MM-dd HH:mm:ss"), item.Type, row.Cells["url"].Value, row.Cells["dir"].Value, userInfo[0], userInfo[1]); + dtFiles.Rows.Add( + row.Cells["name"].Value, + row.Cells["nameap"].Value, + item.Name, item.Size.ToString("N0"), + item.Modified.ToString("yyyy-MM-dd HH:mm:ss"), + item.Type, + row.Cells["url"].Value, + row.Cells["dir"].Value, + userInfo[0], + userInfo[1]); } } diff --git a/DDUtilityApp/Program.cs b/DDUtilityApp/Program.cs index 61978d4..20f6614 100644 --- a/DDUtilityApp/Program.cs +++ b/DDUtilityApp/Program.cs @@ -71,6 +71,7 @@ namespace DDUtilityApp #region [ 버튼 생성 정보 ] frmMain.Buttons.Add("EIS Log Viewer", new EisParser0()); frmMain.Buttons.Add("MES Log Download", typeof(MESDOWNLOADER.ServerLog)); + frmMain.Buttons.Add("Server Log Download", typeof(MESDOWNLOADER.FrmServerLog)); //frmMain.Buttons.Add("MIS Log Viewer", new AgvParser()); // 제거 frmMain.Buttons.Add("FDC Mongo Viewer", typeof(MONGO.FrmFDCMongo)); frmMain.Buttons.Add("HSMS Converter", typeof(LOGPARSER.FrmHsmsViewer)); diff --git a/DDUtilityApp/ViewList.xml b/DDUtilityApp/ViewList.xml index 4e5e351..7e896f4 100644 --- a/DDUtilityApp/ViewList.xml +++ b/DDUtilityApp/ViewList.xml @@ -1,8 +1,8 @@ - - + + @@ -15,7 +15,7 @@ - +