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 @@
-
+