257 lines
8.8 KiB
C#
257 lines
8.8 KiB
C#
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
|
|
|
|
|
|
}
|
|
|
|
}
|