초기 커밋.
This commit is contained in:
8
DDUtilityApp/App.Release.config
Normal file
8
DDUtilityApp/App.Release.config
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
||||
</startup>
|
||||
<appSettings>
|
||||
</appSettings>
|
||||
</configuration>
|
||||
37
DDUtilityApp/App.config
Normal file
37
DDUtilityApp/App.config
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
|
||||
</startup>
|
||||
<appSettings>
|
||||
<add key="ClientSettingsProvider.ServiceUri" value=""/>
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<membership defaultProvider="ClientAuthenticationMembershipProvider">
|
||||
<providers>
|
||||
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
|
||||
</providers>
|
||||
</membership>
|
||||
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
|
||||
<providers>
|
||||
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
|
||||
</providers>
|
||||
</roleManager>
|
||||
</system.web>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0"/>
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
2
DDUtilityApp/ClassDiagram1.cd
Normal file
2
DDUtilityApp/ClassDiagram1.cd
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ClassDiagram />
|
||||
BIN
DDUtilityApp/DDEESUtility.pptx
Normal file
BIN
DDUtilityApp/DDEESUtility.pptx
Normal file
Binary file not shown.
609
DDUtilityApp/DDUtilityApp.csproj
Normal file
609
DDUtilityApp/DDUtilityApp.csproj
Normal file
@@ -0,0 +1,609 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{B8459F14-92D3-482C-A932-65E76E6D11F6}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>DDUtilityApp</RootNamespace>
|
||||
<AssemblyName>DDUtilityApp</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<IsWebBootstrapper>true</IsWebBootstrapper>
|
||||
<TargetFrameworkProfile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<PublishUrl>ftp://192.168.100.11/eqview/Provider/</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Web</InstallFrom>
|
||||
<UpdateEnabled>true</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>true</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<InstallUrl>http://pms.e1soft.co.kr:8090/Deploy/eqview/Provider/</InstallUrl>
|
||||
<ProductName>EverOne EES Utility</ProductName>
|
||||
<PublisherName>EverOne</PublisherName>
|
||||
<SuiteName>Utility %28에버원 운영팀%29</SuiteName>
|
||||
<MinimumRequiredVersion>1.0.0.2</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>index.htm</WebPage>
|
||||
<TrustUrlParameters>true</TrustUrlParameters>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>2025.01.07.0</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>IMAGE\CampingFire.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestCertificateThumbprint>364E4871F73BB57064DCBA003F81DDF47397861F</ManifestCertificateThumbprint>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestKeyFile>DDUtilityApp_TemporaryKey.pfx</ManifestKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>false</SignManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\ARM64\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>ARM64</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\ARM64\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>ARM64</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\AWSSDK.Core.3.7.100.14\lib\net45\AWSSDK.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="AWSSDK.SecurityToken, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\AWSSDK.SecurityToken.3.7.100.14\lib\net45\AWSSDK.SecurityToken.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DnsClient, Version=1.6.1.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DnsClient.1.6.1\lib\net471\DnsClient.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EIS.Framework">
|
||||
<HintPath>..\Library\EIS.Framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="JWH.SECS, Version=2022.2.4.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\JWH.SECS.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.2.0.0\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Win32.Registry, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Win32.Registry.5.0.0\lib\net461\Microsoft.Win32.Registry.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MongoDB.Bson, Version=2.24.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MongoDB.Bson.2.24.0\lib\net472\MongoDB.Bson.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MongoDB.Driver, Version=2.24.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MongoDB.Driver.2.24.0\lib\net472\MongoDB.Driver.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MongoDB.Driver.Core, Version=2.24.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MongoDB.Driver.Core.2.24.0\lib\net472\MongoDB.Driver.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MongoDB.Libmongocrypt, Version=1.8.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MongoDB.Libmongocrypt.1.8.2\lib\netstandard2.0\MongoDB.Libmongocrypt.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SharpCompress, Version=0.30.1.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SharpCompress.0.30.1\lib\net461\SharpCompress.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Snappier, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a1b25124e6e13a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Snappier.1.0.0\lib\netstandard2.0\Snappier.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.AccessControl, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.AccessControl.5.0.0\lib\net461\System.Security.AccessControl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Encoding.CodePages, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encoding.CodePages.5.0.0\lib\net461\System.Text.Encoding.CodePages.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Windows.Forms.DataVisualization" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Telerik.WinControls, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\TelerikWinForms-R1-2019_Bin40\Telerik.WinControls.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.WinControls.ChartView, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\TelerikWinForms-R1-2019_Bin40\Telerik.WinControls.ChartView.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.WinControls.GridView, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\TelerikWinForms-R1-2019_Bin40\Telerik.WinControls.GridView.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\TelerikWinForms-R1-2019_Bin40\Telerik.WinControls.UI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="TelerikCommon, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\TelerikWinForms-R1-2019_Bin40\TelerikCommon.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="TelerikExport, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\TelerikWinForms-R1-2019_Bin40\TelerikExport.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="TIBCO.Rendezvous, Version=1.0.5155.23393, Culture=neutral, PublicKeyToken=1a696d1f90f6158a, processorArchitecture=AMD64">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\TIBCO 8.4.2\TIBCO.Rendezvous.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ZstdSharp, Version=0.7.3.0, Culture=neutral, PublicKeyToken=8d151af33a4ad5cf, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ZstdSharp.Port.0.7.3\lib\net461\ZstdSharp.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ETC\FrmTIbcoConfig.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ETC\FrmTIbcoConfig.Designer.cs">
|
||||
<DependentUpon>FrmTIbcoConfig.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GlobalVariable.cs" />
|
||||
<Compile Include="LOGPARSER\DATA\CompressInformation.cs" />
|
||||
<Compile Include="LOGPARSER\DATA\EisEquipment.cs" />
|
||||
<Compile Include="LOGPARSER\DATA\EisEquipmentModelDetails.cs" />
|
||||
<Compile Include="LOGPARSER\FrmHsmsViewer.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmHsmsViewer.Designer.cs">
|
||||
<DependentUpon>FrmHsmsViewer.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmMessageReplyTime1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmMessageReplyTime1.Designer.cs">
|
||||
<DependentUpon>FrmMessageReplyTime1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmMessageReplyTime.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmMessageReplyTime.Designer.cs">
|
||||
<DependentUpon>FrmMessageReplyTime.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmSecsDefine.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmSecsDefine.Designer.cs">
|
||||
<DependentUpon>FrmSecsDefine.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmWorkFlow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmWorkFlow.Designer.cs">
|
||||
<DependentUpon>FrmWorkFlow.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\GemSetting.cs" />
|
||||
<Compile Include="LOGPARSER\DATA\LogFile.cs" />
|
||||
<Compile Include="LOGPARSER\LogServer.cs" />
|
||||
<Compile Include="LOGPARSER\DATA\StandardData.cs" />
|
||||
<Compile Include="LOGPARSER\FrmFindDialog.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmFindDialog.Designer.cs">
|
||||
<DependentUpon>FrmFindDialog.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser03.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser03.Designer.cs">
|
||||
<DependentUpon>FrmLogParser03.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser02.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser02.Designer.cs">
|
||||
<DependentUpon>FrmLogParser02.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser01.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser01.Designer.cs">
|
||||
<DependentUpon>FrmLogParser01.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmLogParser.Designer.cs">
|
||||
<DependentUpon>FrmLogParser.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmMain.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmMain.Designer.cs">
|
||||
<DependentUpon>FrmMain.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\PARSER\AgvParser.cs" />
|
||||
<Compile Include="LOGPARSER\PARSER\EisParser0.cs" />
|
||||
<Compile Include="LOGPARSER\PARSER\EisParser.cs" />
|
||||
<Compile Include="LOGPARSER\PARSER\LogParser.cs" />
|
||||
<Compile Include="LOGPARSER\FrmEqSelector.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LOGPARSER\FrmEqSelector.Designer.cs">
|
||||
<DependentUpon>FrmEqSelector.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MONGO\FDCMongoDB.cs" />
|
||||
<Compile Include="MONGO\FrmFDCMongo.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MONGO\FrmFDCMongo.Designer.cs">
|
||||
<DependentUpon>FrmFDCMongo.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SECS\CEID.cs" />
|
||||
<Compile Include="SECS\SECSDefine.cs" />
|
||||
<Compile Include="SECS\RPT.cs" />
|
||||
<Compile Include="SECS\SECSLib.cs" />
|
||||
<Compile Include="SECS\SECSItem.cs" />
|
||||
<Compile Include="SECS\VID.cs" />
|
||||
<Compile Include="SPECDOCUMENT\DocumentInfo.cs" />
|
||||
<Compile Include="SPECDOCUMENT\FrmSpecDocument.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SPECDOCUMENT\FrmSpecDocument.Designer.cs">
|
||||
<DependentUpon>FrmSpecDocument.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SPECDOCUMENT\SpecDocument.cs" />
|
||||
<Compile Include="SPECDOCUMENT\SpecInfo.cs" />
|
||||
<Compile Include="TEST\FrmTest01.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="TEST\FrmTest01.Designer.cs">
|
||||
<DependentUpon>FrmTest01.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\Daemon.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\Mode.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\Network.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\SendSubject.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\Server.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\Service.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\Subject.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\DATA\TargetServer.cs" />
|
||||
<Compile Include="TIBRENDEZVOUS\FrmSimulator01.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="TIBRENDEZVOUS\FrmSimulator01.Designer.cs">
|
||||
<DependentUpon>FrmSimulator01.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WORKFLOW\DATA\DynamicActivity.cs" />
|
||||
<Compile Include="WORKFLOW\DATA\FlowBase.cs" />
|
||||
<Compile Include="WORKFLOW\DATA\Flowchart.cs" />
|
||||
<Compile Include="WORKFLOW\DATA\FlowDecision.cs" />
|
||||
<Compile Include="WORKFLOW\DATA\FlowStep.cs" />
|
||||
<Compile Include="WORKFLOW\DATA\Parameter.cs" />
|
||||
<Compile Include="WORKFLOW\DATA\ViewState.cs" />
|
||||
<Compile Include="WORKFLOW\FrmWorkflow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="WORKFLOW\FrmWorkflow.Designer.cs">
|
||||
<DependentUpon>FrmWorkflow.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WORKFLOW\Workflow.cs" />
|
||||
<Content Include="tibrv.dll" />
|
||||
<Content Include="tibrvcm.dll" />
|
||||
<Content Include="tibrvcmq.dll" />
|
||||
<Content Include="tibrvft.dll" />
|
||||
<EmbeddedResource Include="ETC\FrmTIbcoConfig.resx">
|
||||
<DependentUpon>FrmTIbcoConfig.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmFindDialog.resx">
|
||||
<DependentUpon>FrmFindDialog.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmHsmsViewer.resx">
|
||||
<DependentUpon>FrmHsmsViewer.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmLogParser03.resx">
|
||||
<DependentUpon>FrmLogParser03.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmLogParser02.resx">
|
||||
<DependentUpon>FrmLogParser02.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmLogParser01.resx">
|
||||
<DependentUpon>FrmLogParser01.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmLogParser.resx">
|
||||
<DependentUpon>FrmLogParser.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmMain.resx">
|
||||
<DependentUpon>FrmMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmEqSelector.resx">
|
||||
<DependentUpon>FrmEqSelector.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmMessageReplyTime1.resx">
|
||||
<DependentUpon>FrmMessageReplyTime1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmMessageReplyTime.resx">
|
||||
<DependentUpon>FrmMessageReplyTime.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmSecsDefine.resx">
|
||||
<DependentUpon>FrmSecsDefine.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LOGPARSER\FrmWorkFlow.resx">
|
||||
<DependentUpon>FrmWorkFlow.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MONGO\FrmFDCMongo.resx">
|
||||
<DependentUpon>FrmFDCMongo.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="SPECDOCUMENT\FrmSpecDocument.resx">
|
||||
<DependentUpon>FrmSpecDocument.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="TEST\FrmTest01.resx">
|
||||
<DependentUpon>FrmTest01.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="TIBRENDEZVOUS\FrmSimulator01.resx">
|
||||
<DependentUpon>FrmSimulator01.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="WORKFLOW\FrmWorkflow.resx">
|
||||
<DependentUpon>FrmWorkflow.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="App.Release.config" />
|
||||
<None Include="DDUtilityApp_TemporaryKey.pfx" />
|
||||
<Content Include="IMAGE\CampingFire.ico" />
|
||||
<Content Include="IMAGE\Fire.ico" />
|
||||
<Content Include="IMAGE\Main.ico" />
|
||||
<Content Include="log4net.config">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\JWH\JWH.csproj">
|
||||
<Project>{004bc1f3-b24a-402d-92ed-c5fc501e915a}</Project>
|
||||
<Name>JWH</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="IMAGE\icon03.ico" />
|
||||
<Content Include="IMAGE\machine.ico" />
|
||||
<Content Include="ReadMe.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="TibRendezvousInfo.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="POPUP\" />
|
||||
<Folder Include="TIBRENDEZVOUS\PARSER\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.6.1%28x86 및 x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PublishFile Include="DDUtilityApp.pdb">
|
||||
<Visible>False</Visible>
|
||||
<Group>
|
||||
</Group>
|
||||
<TargetPath>
|
||||
</TargetPath>
|
||||
<PublishState>Include</PublishState>
|
||||
<IncludeHash>True</IncludeHash>
|
||||
<FileType>File</FileType>
|
||||
</PublishFile>
|
||||
<PublishFile Include="JWH.pdb">
|
||||
<Visible>False</Visible>
|
||||
<Group>
|
||||
</Group>
|
||||
<TargetPath>
|
||||
</TargetPath>
|
||||
<PublishState>Include</PublishState>
|
||||
<IncludeHash>True</IncludeHash>
|
||||
<FileType>File</FileType>
|
||||
</PublishFile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Analyzer Include="..\packages\AWSSDK.SecurityToken.3.7.100.14\analyzers\dotnet\cs\AWSSDK.SecurityToken.CodeAnalysis.dll" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\MongoDB.Libmongocrypt.1.8.2\build\MongoDB.Libmongocrypt.targets" Condition="Exists('..\packages\MongoDB.Libmongocrypt.1.8.2\build\MongoDB.Libmongocrypt.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\MongoDB.Libmongocrypt.1.8.2\build\MongoDB.Libmongocrypt.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Libmongocrypt.1.8.2\build\MongoDB.Libmongocrypt.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
238
DDUtilityApp/ETC/FrmTIbcoConfig.Designer.cs
generated
Normal file
238
DDUtilityApp/ETC/FrmTIbcoConfig.Designer.cs
generated
Normal file
@@ -0,0 +1,238 @@
|
||||
namespace DDUtilityApp.ETC
|
||||
{
|
||||
partial class FrmTIbcoConfig
|
||||
{
|
||||
/// <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.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.tboxFilename = new System.Windows.Forms.TextBox();
|
||||
this.btnSave = new System.Windows.Forms.Button();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.panel3 = new System.Windows.Forms.Panel();
|
||||
this.panel4 = new System.Windows.Forms.Panel();
|
||||
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
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.panel2.SuspendLayout();
|
||||
this.panel3.SuspendLayout();
|
||||
this.panel4.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.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(800, 450);
|
||||
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(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.tboxFilename);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnSave);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(800, 450);
|
||||
this.splitContainer1.SplitterDistance = 51;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// tboxFilename
|
||||
//
|
||||
this.tboxFilename.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tboxFilename.Location = new System.Drawing.Point(129, 14);
|
||||
this.tboxFilename.Name = "tboxFilename";
|
||||
this.tboxFilename.Size = new System.Drawing.Size(659, 21);
|
||||
this.tboxFilename.TabIndex = 1;
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Location = new System.Drawing.Point(12, 12);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(111, 23);
|
||||
this.btnSave.TabIndex = 0;
|
||||
this.btnSave.Text = "Save";
|
||||
this.btnSave.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// 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.panel2);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(3);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.panel3);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(800, 395);
|
||||
this.splitContainer2.SplitterDistance = 411;
|
||||
this.splitContainer2.TabIndex = 0;
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Controls.Add(this.textBox1);
|
||||
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.Padding = new System.Windows.Forms.Padding(1);
|
||||
this.panel2.Size = new System.Drawing.Size(405, 389);
|
||||
this.panel2.TabIndex = 1;
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBox1.Location = new System.Drawing.Point(1, 27);
|
||||
this.textBox1.Multiline = true;
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(403, 361);
|
||||
this.textBox1.TabIndex = 1;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.label1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.label1.Location = new System.Drawing.Point(1, 1);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.label1.Size = new System.Drawing.Size(403, 26);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Original";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.Controls.Add(this.panel4);
|
||||
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel3.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.panel3.Size = new System.Drawing.Size(385, 395);
|
||||
this.panel3.TabIndex = 2;
|
||||
//
|
||||
// panel4
|
||||
//
|
||||
this.panel4.Controls.Add(this.textBox2);
|
||||
this.panel4.Controls.Add(this.label2);
|
||||
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel4.Location = new System.Drawing.Point(3, 3);
|
||||
this.panel4.Name = "panel4";
|
||||
this.panel4.Padding = new System.Windows.Forms.Padding(1);
|
||||
this.panel4.Size = new System.Drawing.Size(379, 389);
|
||||
this.panel4.TabIndex = 2;
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBox2.Location = new System.Drawing.Point(1, 27);
|
||||
this.textBox2.Multiline = true;
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.Size = new System.Drawing.Size(377, 361);
|
||||
this.textBox2.TabIndex = 1;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.label2.Location = new System.Drawing.Point(1, 1);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.label2.Size = new System.Drawing.Size(377, 26);
|
||||
this.label2.TabIndex = 0;
|
||||
this.label2.Text = "Sort";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// FrmTIbcoConfig
|
||||
//
|
||||
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 = "FrmTIbcoConfig";
|
||||
this.Text = "FrmTIbcoConfig";
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.PerformLayout();
|
||||
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.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
this.panel3.ResumeLayout(false);
|
||||
this.panel4.ResumeLayout(false);
|
||||
this.panel4.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private System.Windows.Forms.Panel panel3;
|
||||
private System.Windows.Forms.Button btnSave;
|
||||
private System.Windows.Forms.TextBox tboxFilename;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Panel panel4;
|
||||
private System.Windows.Forms.TextBox textBox2;
|
||||
private System.Windows.Forms.Label label2;
|
||||
}
|
||||
}
|
||||
164
DDUtilityApp/ETC/FrmTIbcoConfig.cs
Normal file
164
DDUtilityApp/ETC/FrmTIbcoConfig.cs
Normal file
@@ -0,0 +1,164 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace DDUtilityApp.ETC
|
||||
{
|
||||
|
||||
public partial class FrmTIbcoConfig : Form
|
||||
{
|
||||
|
||||
public FrmTIbcoConfig()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.SetLayout();
|
||||
this.SetEventHandler();
|
||||
}
|
||||
|
||||
private void SetLayout()
|
||||
{
|
||||
this.textBox1.Font = new Font("돋움체", 9.0F);
|
||||
this.textBox1.ScrollBars = ScrollBars.Both;
|
||||
this.textBox2.Font = new Font("돋움체", 9.0F);
|
||||
this.textBox2.ScrollBars = ScrollBars.Both;
|
||||
}
|
||||
|
||||
private void SetEventHandler()
|
||||
{
|
||||
// DragDrop
|
||||
this.textBox1.AllowDrop = true;
|
||||
this.textBox1.DragDrop += Control_DragDrop;
|
||||
this.textBox1.DragEnter += Control_DragEnter;
|
||||
this.textBox2.AllowDrop = true;
|
||||
this.textBox2.DragDrop += Control_DragDrop;
|
||||
this.textBox2.DragEnter += Control_DragEnter;
|
||||
|
||||
this.btnSave.Click += Button1_Click;
|
||||
}
|
||||
|
||||
private void Control_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
XLogger.Instance.Info(e);
|
||||
|
||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
if (files == null || files.Length < 1) return;
|
||||
|
||||
string fileName = files[0];
|
||||
this.SetText(this.textBox1, fileName);
|
||||
this.SetTextSort(this.textBox2, fileName);
|
||||
}
|
||||
|
||||
private void Control_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.SaveDocument(this.textBox2, this.tboxFilename.Text);
|
||||
}
|
||||
|
||||
private void SetText(object sender, string fileName)
|
||||
{
|
||||
TextBox textBox = sender as TextBox;
|
||||
if (textBox == null) return;
|
||||
textBox.Clear();
|
||||
this.tboxFilename.Text = fileName;
|
||||
|
||||
XmlDocument document = new XmlDocument();
|
||||
document.Load(fileName);
|
||||
|
||||
using (MemoryStream stream = new MemoryStream())
|
||||
{
|
||||
XmlWriterSettings settings = new XmlWriterSettings
|
||||
{
|
||||
Encoding = new UTF8Encoding(false),
|
||||
Indent = true,
|
||||
IndentChars = " ",
|
||||
NewLineChars = Environment.NewLine,
|
||||
NewLineHandling = NewLineHandling.Replace
|
||||
};
|
||||
using (XmlWriter writer = XmlWriter.Create(stream, settings))
|
||||
{
|
||||
document.Save(writer);
|
||||
}
|
||||
textBox.Text = Encoding.UTF8.GetString(stream.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTextSort(object sender, string fileName)
|
||||
{
|
||||
TextBox textBox = sender as TextBox;
|
||||
if (textBox == null) return;
|
||||
this.tboxFilename.Text = fileName;
|
||||
|
||||
XmlDocument document = new XmlDocument();
|
||||
document.Load(fileName);
|
||||
|
||||
XmlNodeList messageNameList = document.GetElementsByTagName("messageNameList");
|
||||
List<XmlNode> list = new List<XmlNode>();
|
||||
foreach (XmlNode nodeList in messageNameList)
|
||||
{
|
||||
foreach (XmlNode node in nodeList.ChildNodes)
|
||||
list.Add(node);
|
||||
|
||||
nodeList.RemoveAll();
|
||||
foreach (XmlNode node in list.OrderBy(e => e.Name))
|
||||
nodeList.AppendChild(node);
|
||||
}
|
||||
|
||||
using (MemoryStream stream = new MemoryStream())
|
||||
{
|
||||
XmlWriterSettings settings = new XmlWriterSettings
|
||||
{
|
||||
Encoding = new UTF8Encoding(false),
|
||||
Indent = true,
|
||||
IndentChars = " ",
|
||||
NewLineChars = Environment.NewLine,
|
||||
NewLineHandling = NewLineHandling.Replace
|
||||
};
|
||||
using (XmlWriter writer = XmlWriter.Create(stream, settings))
|
||||
{
|
||||
document.Save(writer);
|
||||
}
|
||||
textBox.Text = Encoding.UTF8.GetString(stream.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
private void SetText1(object sender, string fileName)
|
||||
{
|
||||
TextBox textBox = sender as TextBox;
|
||||
if (textBox == null) return;
|
||||
this.tboxFilename.Text = fileName;
|
||||
|
||||
XmlDocument document = new XmlDocument();
|
||||
document.Load(fileName);
|
||||
textBox.Text = document.GetBeautify();
|
||||
}
|
||||
|
||||
private void SaveDocument(object sender, string filename)
|
||||
{
|
||||
TextBox textBox = sender as TextBox;
|
||||
if (textBox == null) return;
|
||||
|
||||
using (StreamWriter writer = new StreamWriter(filename))
|
||||
{
|
||||
writer.Write(textBox.Text);
|
||||
}
|
||||
|
||||
MessageBox.Show($"저장하였습니다.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/ETC/FrmTIbcoConfig.resx
Normal file
120
DDUtilityApp/ETC/FrmTIbcoConfig.resx
Normal 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>
|
||||
271
DDUtilityApp/EisEquipmentInfo0.xml
Normal file
271
DDUtilityApp/EisEquipmentInfo0.xml
Normal file
@@ -0,0 +1,271 @@
|
||||
<SERVER_LIST>
|
||||
<SERVER ID='EIS.B1'>
|
||||
<EQUIPMENT ID='P0410-PLAA002-DUMMY' DESCRIPTION='ABF_A_플라즈마1호' NICKNAME='ABF_A_플라즈마1호' />
|
||||
<EQUIPMENT ID='SS0387-OVNA-1130-000001' DESCRIPTION='ABF_A_큐어1호' NICKNAME='ABF_A_큐어1호' />
|
||||
<EQUIPMENT ID='SS0603-PREA-1130-000001' DESCRIPTION='ABF_A_CZ전처리1' NICKNAME='ABF_A_CZ전처리1' />
|
||||
<EQUIPMENT ID='SS0603-PREA-1130-000002' DESCRIPTION='ABF_A_CZ전처리2' NICKNAME='ABF_A_CZ전처리2' />
|
||||
<EQUIPMENT ID='SS0370-DSMA-1130-000002' DESCRIPTION='ABF_A_수직디스미어1호' NICKNAME='ABF_A_수직디스미어1호' />
|
||||
<EQUIPMENT ID='SS0430-ELPA-1130-000001' DESCRIPTION='ABF_A_수직화학동1호' NICKNAME='ABF_A_수직화학동1호' />
|
||||
<EQUIPMENT ID='SS0430-ELPA-1130-000002' DESCRIPTION='도금_A_화학동3호' NICKNAME='도금_A_화학동3호' />
|
||||
<EQUIPMENT ID='SS0430-ELPA-1130-000003' DESCRIPTION='도금_A_화학동4호' NICKNAME='도금_A_화학동4호' />
|
||||
<EQUIPMENT ID='SS0370-DSMA-1130-000003' DESCRIPTION='도금_A_디스미어3호' NICKNAME='도금_A_디스미어3호' />
|
||||
<EQUIPMENT ID='SS0370-DSMA-1130-000004' DESCRIPTION='도금_A_디스미어4호' NICKNAME='도금_A_디스미어4호' />
|
||||
<EQUIPMENT ID='P0370-DSMA003-DUMMY' DESCRIPTION='도금_A_디스미어5호' NICKNAME='도금_A_디스미어5호' />
|
||||
<EQUIPMENT ID='S0430-ELPA001-DUMMY' DESCRIPTION='도금_A_화학동2호' NICKNAME='도금_A_화학동2호' />
|
||||
<EQUIPMENT ID='S0430-ELPA002-DUMMY' DESCRIPTION='도금_A_화학동1호' NICKNAME='도금_A_화학동1호' />
|
||||
<EQUIPMENT ID='S0370-DSMA001-DUMMY' DESCRIPTION='도금_A_디스미어2호' NICKNAME='도금_A_디스미어2호' />
|
||||
<EQUIPMENT ID='S0370-DSMA002-DUMMY' DESCRIPTION='도금_A_디스미어1호' NICKNAME='도금_A_디스미어1호' />
|
||||
<EQUIPMENT ID='P0430-ELPA003-DUMMY' DESCRIPTION='도금_A_화학동5호' NICKNAME='도금_A_화학동5호' />
|
||||
<EQUIPMENT ID='DP0370-DSMA-1130-000001' DESCRIPTION='도금_B_디스미어6호' NICKNAME='도금_B_디스미어6호' />
|
||||
<EQUIPMENT ID='P0520-ECPA001-DUMMY' DESCRIPTION='도금_B_전기동7호' NICKNAME='도금_B_전기동7호' />
|
||||
<EQUIPMENT ID='P0520-ECPA003-DUMMY' DESCRIPTION='도금_A_전기동6호' NICKNAME='도금_A_전기동6호' />
|
||||
<EQUIPMENT ID='HS0470-ECPA-1130-000002' DESCRIPTION='도금_B_전기동9호' NICKNAME='도금_B_전기동9호' />
|
||||
<EQUIPMENT ID='S0520-ECPA001-DUMMY' DESCRIPTION='도금_A_전기동2호' NICKNAME='도금_A_전기동2호' />
|
||||
<EQUIPMENT ID='S0520-ECPA002-DUMMY' DESCRIPTION='도금_A_전기동1호' NICKNAME='도금_A_전기동1호' />
|
||||
<EQUIPMENT ID='P0680-ECPA003-DUMMY' DESCRIPTION='도금_A_전기동5호' NICKNAME='도금_A_전기동5호' />
|
||||
<EQUIPMENT ID='SS0680-ECPA-1130-000001' DESCRIPTION='도금_A_전기동4호' NICKNAME='도금_A_전기동4호' />
|
||||
<EQUIPMENT ID='SS0470-ECPA-1130-000002' DESCRIPTION='도금_B_전기동3호' NICKNAME='도금_B_전기동3호' />
|
||||
<EQUIPMENT ID='HS0470-ECPA-1110-000001' DESCRIPTION='도금_B_전기동8호' NICKNAME='도금_B_전기동8호' />
|
||||
<EQUIPMENT ID='SS0030-ECHA-1130-000001' DESCRIPTION='도금_A_H-에칭1호' NICKNAME='도금_A_H-에칭1호' />
|
||||
<EQUIPMENT ID='SS0310-ECHA-1130-000001' DESCRIPTION='도금_A_S-에칭1호' NICKNAME='도금_A_S-에칭1호' />
|
||||
<EQUIPMENT ID='PS0130-OVNA-1130-000001' DESCRIPTION='B2_DPC_기타_성형Baking' NICKNAME='B2_DPC_기타_성형Baking' />
|
||||
<EQUIPMENT ID='DP0400-OVNA-1130-000005' DESCRIPTION='B2_DPC_기타_가압Baking' NICKNAME='B2_DPC_기타_가압Baking' />
|
||||
<EQUIPMENT ID='SS0400-OVNA-1130-000007' DESCRIPTION='B1_XBF_TowerBaking' NICKNAME='B1_XBF_TowerBaking' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000001' DESCRIPTION='DPC_SOP_코이닝1호' NICKNAME='DPC_SOP_코이닝1호' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000002' DESCRIPTION='DPC_SOP_코이닝2호' NICKNAME='DPC_SOP_코이닝2호' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000003' DESCRIPTION='DPC_SOP_코이닝3호' NICKNAME='DPC_SOP_코이닝3호' />
|
||||
<EQUIPMENT ID='DP0601-BUFA-1130-000001' DESCRIPTION='DPC_적층_CZ전처리 1호' NICKNAME='DPC_적층_CZ전처리 1호' />
|
||||
<EQUIPMENT ID='DP0601-BUFA-1130-000002' DESCRIPTION='B2_DPC_적층_CZ전처리 2호' NICKNAME='B2_DPC_적층_CZ전처리 2호' />
|
||||
<EQUIPMENT ID='BB0601-PREA-1130-000001' DESCRIPTION='B2_적층_CZ전처리' NICKNAME='B2_적층_CZ전처리' />
|
||||
<EQUIPMENT ID='DP0870-ATOA-1130-000002' DESCRIPTION='DPC_적층_기판분리1호' NICKNAME='DPC_적층_기판분리1호' />
|
||||
<EQUIPMENT ID='BB0870-SPCA-1130-000001' DESCRIPTION='B2_적층_기판분리1호' NICKNAME='B2_적층_기판분리1호' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000001' DESCRIPTION='DPC_기타_OSP1호' NICKNAME='DPC_기타_OSP1호' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000002' DESCRIPTION='DPC_기타_OSP2호' NICKNAME='DPC_기타_OSP2호' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000003' DESCRIPTION='DPC_기타_OSP3호' NICKNAME='DPC_기타_OSP3호' />
|
||||
<EQUIPMENT ID='DP0270-PUNA-1130-000001' DESCRIPTION='DPC_적층_펀칭기' NICKNAME='DPC_적층_펀칭기' />
|
||||
<EQUIPMENT ID='DP1170-SMBA-1130-000001' DESCRIPTION='DPC_SOP_MMP1호' NICKNAME='DPC_SOP_MMP1호' />
|
||||
<EQUIPMENT ID='DP1170-SMBA-1130-000002' DESCRIPTION='DPC_SOP_MMP2호' NICKNAME='DPC_SOP_MMP2호' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000001' DESCRIPTION='DPC_적층_Tdill1호' NICKNAME='DPC_적층_Tdill1호' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000002' DESCRIPTION='DPC_적층_Tdill2호' NICKNAME='DPC_적층_Tdill2호' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000003' DESCRIPTION='DPC_적층_Tdill3호' NICKNAME='DPC_적층_Tdill3호' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000004' DESCRIPTION='B2_적층_Tdill4호' NICKNAME='B2_적층_Tdill4호' />
|
||||
<EQUIPMENT ID='P0140-TDRA001-DUMMY' DESCRIPTION='B2_적층_Tdill6호' NICKNAME='B2_적층_Tdill6호' />
|
||||
<EQUIPMENT ID='PS0140-TDRA-1130-000002' DESCRIPTION='B2_적층_Tdill2호' NICKNAME='B2_적층_Tdill2호' />
|
||||
<EQUIPMENT ID='BB0140-TDRA-1130-000001' DESCRIPTION='B2_적층_Tdill1호' NICKNAME='B2_적층_Tdill1호' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000005' DESCRIPTION='B2_적층_Tdill5호' NICKNAME='B2_적층_Tdill5호' />
|
||||
<EQUIPMENT ID='P0150-RUTA001-DUMMY' DESCRIPTION='DPC_적층_TRIM2호' NICKNAME='DPC_적층_TRIM2호' />
|
||||
<EQUIPMENT ID='DP0150-RUTA-1130-000001' DESCRIPTION='DPC_적층_TRIM1호' NICKNAME='DPC_적층_TRIM1호' />
|
||||
<EQUIPMENT ID='BB0150-RUTA-1130-000001' DESCRIPTION='B2_적층_TRIM1호' NICKNAME='B2_적층_TRIM1호' />
|
||||
<EQUIPMENT ID='H0070-DESA004-DUMMY' DESCRIPTION='이미지_A_DES4호' NICKNAME='이미지_A_DES4호' />
|
||||
<EQUIPMENT ID='HS0070-DESA-1130-000001' DESCRIPTION='이미지_A_DES3호' NICKNAME='이미지_A_DES3호' />
|
||||
<EQUIPMENT ID='P0650-DESA003-DUMMY' DESCRIPTION='이미지_A_DES6호' NICKNAME='이미지_A_DES6호' />
|
||||
<EQUIPMENT ID='S0650-DESA001-DUMMY' DESCRIPTION='이미지_A_DES1호' NICKNAME='이미지_A_DES1호' />
|
||||
<EQUIPMENT ID='SS0650-DESA-1130-000001' DESCRIPTION='이미지_A_DES2호' NICKNAME='이미지_A_DES2호' />
|
||||
<EQUIPMENT ID='HS0060-LDIA-1130-000005' DESCRIPTION='이미지_B_DI노광7호' NICKNAME='이미지_B_DI노광7호' />
|
||||
<EQUIPMENT ID='HS0645-LDIA-1130-000001' DESCRIPTION='이미지_B_DI노광10호' NICKNAME='이미지_B_DI노광10호' />
|
||||
<EQUIPMENT ID='PS0640-LDIA-1130-000001' DESCRIPTION='이미지_B_DI노광8호' NICKNAME='이미지_B_DI노광8호' />
|
||||
<EQUIPMENT ID='S0640-EXPA004-DUMMY' DESCRIPTION='이미지_A_DI노광2호' NICKNAME='이미지_A_DI노광2호' />
|
||||
<EQUIPMENT ID='SS0645-EXPA-1130-000001' DESCRIPTION='이미지_A_DI노광3호' NICKNAME='이미지_A_DI노광3호' />
|
||||
<EQUIPMENT ID='SS0645-LDIA-1130-000001' DESCRIPTION='이미지_A_DI노광1호' NICKNAME='이미지_A_DI노광1호' />
|
||||
<EQUIPMENT ID='SS0645-LDIA-1130-000002' DESCRIPTION='이미지_A_DI노광5호' NICKNAME='이미지_A_DI노광5호' />
|
||||
<EQUIPMENT ID='SS0645-LDIA-1130-000004' DESCRIPTION='이미지_A_DI노광12호' NICKNAME='이미지_A_DI노광12호' />
|
||||
<EQUIPMENT ID='HS0790-LDIA-1130-000002' DESCRIPTION='PSR_A_DI노광6호' NICKNAME='PSR_A_DI노광6호' />
|
||||
<EQUIPMENT ID='300107' DESCRIPTION='PSR_A_DI노광12호' NICKNAME='PSR_A_DI노광12호' />
|
||||
<EQUIPMENT ID='HS0795-LDIA-1130-000001' DESCRIPTION='B2_DI노광9호' NICKNAME='B2_DI노광9호' />
|
||||
<EQUIPMENT ID='S0690-ECHA001-DUMMY' DESCRIPTION='이미지_A_F-에칭1호' NICKNAME='이미지_A_F-에칭1호' />
|
||||
<EQUIPMENT ID='PS0690-ECHA-1130-000001' DESCRIPTION='이미지_B_F-에칭2호' NICKNAME='이미지_B_F-에칭2호' />
|
||||
<EQUIPMENT ID='SS0965-ECHA-1130-000002' DESCRIPTION='이미지_A_F-에칭3호' NICKNAME='이미지_A_F-에칭3호' />
|
||||
<EQUIPMENT ID='SS0675-DEVA-1130-000002' DESCRIPTION='이미지_A_수직현상2호' NICKNAME='이미지_A_수직현상2호' />
|
||||
<EQUIPMENT ID='S0860-DEVA001-DUMMY' DESCRIPTION='이미지_A_수직현상1호' NICKNAME='이미지_A_수직현상1호' />
|
||||
<EQUIPMENT ID='HS0675-DEVA-1130-000001' DESCRIPTION='이미지_A_수직현상3호' NICKNAME='이미지_A_수직현상3호' />
|
||||
<EQUIPMENT ID='30084' DESCRIPTION='이미지_A_수직현상4호' NICKNAME='이미지_A_수직현상4호' />
|
||||
<EQUIPMENT ID='SS0860-SDPA-1130-000001' DESCRIPTION='이미지_A_수평현상1호' NICKNAME='이미지_A_수평현상1호' />
|
||||
<EQUIPMENT ID='SS0860-SDPA-1130-000002' DESCRIPTION='이미지_A_수평현상2호' NICKNAME='이미지_A_수평현상2호' />
|
||||
<EQUIPMENT ID='SS0810-STRA-1130-000002' DESCRIPTION='이미지_A_M박리4호' NICKNAME='이미지_A_M박리4호' />
|
||||
<EQUIPMENT ID='S0810-STRA001-DUMMY' DESCRIPTION='이미지_A_M박리1호' NICKNAME='이미지_A_M박리1호' />
|
||||
<EQUIPMENT ID='SS0630-DFPA-1130-000002' DESCRIPTION='이미지_A_전처리1호' NICKNAME='이미지_A_전처리1호' />
|
||||
<EQUIPMENT ID='SS0630-DFPA-1130-000001' DESCRIPTION='이미지_A_전처리4호' NICKNAME='이미지_A_전처리4호' />
|
||||
<EQUIPMENT ID='SS0705-ECHA-1130-000001' DESCRIPTION='이미지_A_수직에칭기' NICKNAME='이미지_A_수직에칭기' />
|
||||
<EQUIPMENT ID='SS0405-SPCA-1130-000002' DESCRIPTION='도금_A_엣지코팅3호' NICKNAME='도금_A_엣지코팅3호' />
|
||||
<EQUIPMENT ID='DP0405-SPCA-1130-000001' DESCRIPTION='DPC_B_엣지코팅1호' NICKNAME='DPC_B_엣지코팅1호' />
|
||||
<EQUIPMENT ID='DP0405-SPCA-1130-000002' DESCRIPTION='DPC_B_엣지코팅2호' NICKNAME='DPC_B_엣지코팅2호' />
|
||||
<EQUIPMENT ID='DP0130-PRSA-1130-000001' DESCRIPTION='DPC_적층_PRESS1호' NICKNAME='DPC_적층_PRESS1호' />
|
||||
<EQUIPMENT ID='P0130-PRSA001-DUMMY' DESCRIPTION='DPC_적층_PRESS2호' NICKNAME='DPC_적층_PRESS2호' />
|
||||
<EQUIPMENT ID='HS0430-ELPA-1130-000002' DESCRIPTION='도금_B_화학동6호' NICKNAME='도금_B_화학동6호' />
|
||||
<EQUIPMENT ID='P0630-DFPA002-DUMMY' DESCRIPTION='이미지_B_전처리10호' NICKNAME='이미지_B_전처리10호' />
|
||||
<EQUIPMENT ID='H0050-DFPA001-DUMMY' DESCRIPTION='이미지_B_전처리8호' NICKNAME='이미지_B_전처리8호' />
|
||||
<EQUIPMENT ID='SS0690-ECHA-1130-000001' DESCRIPTION='이미지_A_Q-에칭1호' NICKNAME='이미지_A_Q-에칭1호' />
|
||||
<EQUIPMENT ID='PS0630-DFPA-1130-000001' DESCRIPTION='이미지_B_전처리7호' NICKNAME='이미지_B_전처리7호' />
|
||||
<EQUIPMENT ID='SS0840-DFPA-1130-000001' DESCRIPTION='이미지_A_전처리2호' NICKNAME='이미지_A_전처리2호' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000001' DESCRIPTION='이미지_A_AOI1호' NICKNAME='이미지_A_AOI1호' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000002' DESCRIPTION='이미지_A_AOI2호' NICKNAME='이미지_A_AOI2호' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000003' DESCRIPTION='이미지_A_AOI3호' NICKNAME='이미지_A_AOI3호' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000004' DESCRIPTION='이미지_A_AOI4호' NICKNAME='이미지_A_AOI4호' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000005' DESCRIPTION='이미지_A_AOI5호' NICKNAME='이미지_A_AOI5호' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000006' DESCRIPTION='이미지_A_AOI6호' NICKNAME='이미지_A_AOI6호' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000003' DESCRIPTION='이미지_B_AOI7호' NICKNAME='이미지_B_AOI7호' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000004' DESCRIPTION='이미지_B_AOI8호' NICKNAME='이미지_B_AOI8호' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000005' DESCRIPTION='이미지_B_AOI9호' NICKNAME='이미지_B_AOI9호' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000006' DESCRIPTION='이미지_B_AOI10호' NICKNAME='이미지_B_AOI10호' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000007' DESCRIPTION='이미지_B_AOI11호' NICKNAME='이미지_B_AOI11호' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000008' DESCRIPTION='이미지_B_AOI12호' NICKNAME='이미지_B_AOI12호' />
|
||||
<EQUIPMENT ID='SS0410-PLAA-1130-000001' DESCRIPTION='표면처리_A_수동플라즈마1호' NICKNAME='표면처리_A_수동플라즈마1호' />
|
||||
<EQUIPMENT ID='HS0430-ELPA-1110-000001' DESCRIPTION='도금_B_화학동7호' NICKNAME='도금_B_화학동7호' />
|
||||
<EQUIPMENT ID='SS0388-ATOA-1130-000001' DESCRIPTION='ABF_A_오토필러1호' NICKNAME='ABF_A_오토필러1호' />
|
||||
<EQUIPMENT ID='HS0625-BUFA-1130-000001' DESCRIPTION='도금_B_브러쉬정면1호' NICKNAME='도금_B_브러쉬정면1호' />
|
||||
<EQUIPMENT ID='P0310-ECHA001-DUMMY' DESCRIPTION='도금_B_S-에칭3호' NICKNAME='도금_B_S-에칭3호' />
|
||||
<EQUIPMENT ID='HS0310-ECHA-1130-000001' DESCRIPTION='도금_소프트에칭 2호' NICKNAME='도금_소프트에칭 2호' />
|
||||
<EQUIPMENT ID='HS0370-DSMA-1110-000001' DESCRIPTION='도금_B_디스미어7호' NICKNAME='도금_B_디스미어7호' />
|
||||
<EQUIPMENT ID='DP0407-SPCA-1130-000001' DESCRIPTION='DPC_기타_동박분리기1호' NICKNAME='DPC_기타_동박분리기1호' />
|
||||
<EQUIPMENT ID='DP0407-SPCA-1130-000002' DESCRIPTION='DPC_기타_동박분리기2호' NICKNAME='DPC_기타_동박분리기2호' />
|
||||
<EQUIPMENT ID='DP0030-ECHA-1130-000001' DESCRIPTION='DPC_이미지_하프에칭1호' NICKNAME='DPC_이미지_하프에칭1호' />
|
||||
<EQUIPMENT ID='DP0100-OXIA-1130-000001' DESCRIPTION='DPC_적층_브라운옥사이드1호' NICKNAME='DPC_적층_브라운옥사이드1호' />
|
||||
<EQUIPMENT ID='DP0105-OXIA-1130-000003' DESCRIPTION='DPC_적층_블랙옥사이드1호' NICKNAME='DPC_적층_블랙옥사이드1호' />
|
||||
<EQUIPMENT ID='DP1146-BBTA-1130-000001' DESCRIPTION='B4_BBT_Quad' NICKNAME='B4_BBT_Quad' />
|
||||
<EQUIPMENT ID='P0640-EXPA001-DUMMY' DESCRIPTION='이미지_B_자동노광7호' NICKNAME='이미지_B_자동노광7호' />
|
||||
<EQUIPMENT ID='P0640-EXPA002-DUMMY' DESCRIPTION='이미지_B_자동노광6호' NICKNAME='이미지_B_자동노광6호' />
|
||||
<EQUIPMENT ID='HS0810-STRA-1130-000001' DESCRIPTION='이미지_B_M-박리3호' NICKNAME='이미지_B_M-박리3호' />
|
||||
<EQUIPMENT ID='H0050-DFPA007-DUMMY' DESCRIPTION='이미지_B_전처리6호' NICKNAME='이미지_B_전처리6호' />
|
||||
<EQUIPMENT ID='H0070-DESA003-DUMMY' DESCRIPTION='이미지_B_DES5호' NICKNAME='이미지_B_DES5호' />
|
||||
<EQUIPMENT ID='H0850-VLMA001-DUMMY' DESCRIPTION='이미지_B_진공밀착1호' NICKNAME='이미지_B_진공밀착1호' />
|
||||
<EQUIPMENT ID='HS0050-DFPA-1130-000005' DESCRIPTION='이미지_B_전처리9호' NICKNAME='이미지_B_전처리9호' />
|
||||
<EQUIPMENT ID='SS0640-EXPA-1130-000003' DESCRIPTION='이미지_A_자동노광2호' NICKNAME='이미지_A_자동노광2호' />
|
||||
<EQUIPMENT ID='SS0660-DFPA-1130-000002' DESCRIPTION='이미지_A_전처리5호' NICKNAME='이미지_A_전처리5호' />
|
||||
<EQUIPMENT ID='PS0670-EXPA-1130-000001' DESCRIPTION='이미지_B_자동노광9호' NICKNAME='이미지_B_자동노광9호' />
|
||||
<EQUIPMENT ID='S0660-DFPA002-DUMMY' DESCRIPTION='이미지_A_전처리3호' NICKNAME='이미지_A_전처리3호' />
|
||||
<EQUIPMENT ID='S0640-EXPA001-DUMMY' DESCRIPTION='이미지_A_자동노광3호' NICKNAME='이미지_A_자동노광3호' />
|
||||
<EQUIPMENT ID='S0640-EXPA002-DUMMY' DESCRIPTION='이미지_A_자동노광4호' NICKNAME='이미지_A_자동노광4호' />
|
||||
<EQUIPMENT ID='SS0810-STRA-1130-000001' DESCRIPTION='이미지_A_M-박리2호' NICKNAME='이미지_A_M-박리2호' />
|
||||
<EQUIPMENT ID='HS0740-PPTA-1110-000003' DESCRIPTION='PSR_B_HP전처리1호' NICKNAME='PSR_B_HP전처리1호' />
|
||||
<EQUIPMENT ID='HS0790-EXPA-1130-000002' DESCRIPTION='PSR_B_자동노광5호' NICKNAME='PSR_B_자동노광5호' />
|
||||
<EQUIPMENT ID='HS0790-EXPA-1130-000003' DESCRIPTION='PSR_B_자동노광6호' NICKNAME='PSR_B_자동노광6호' />
|
||||
<EQUIPMENT ID='P0790-EXPA005-DUMMY' DESCRIPTION='PSR_B_자동노광8호' NICKNAME='PSR_B_자동노광8호' />
|
||||
<EQUIPMENT ID='P0790-EXPA007-DUMMY' DESCRIPTION='PSR_B_자동노광7호' NICKNAME='PSR_B_자동노광7호' />
|
||||
<EQUIPMENT ID='S0790-EXPA001-DUMMY' DESCRIPTION='PSR_A_자동노광2호' NICKNAME='PSR_A_자동노광2호' />
|
||||
<EQUIPMENT ID='S0790-EXPA002-DUMMY' DESCRIPTION='PSR_B_자동노광9호' NICKNAME='PSR_B_자동노광9호' />
|
||||
<EQUIPMENT ID='S0790-EXPA003-DUMMY' DESCRIPTION='PSR_A_자동노광3호' NICKNAME='PSR_A_자동노광3호' />
|
||||
<EQUIPMENT ID='H0820-JETA002-DUMMY' DESCRIPTION='표면처리_B_퍼미스3호' NICKNAME='표면처리_B_퍼미스3호' />
|
||||
<EQUIPMENT ID='S0820-JETA001-DUMMY' DESCRIPTION='표면처리_A_퍼미스1호' NICKNAME='표면처리_A_퍼미스1호' />
|
||||
<EQUIPMENT ID='PS0820-JETA-1110-000002' DESCRIPTION='표면처리_A_퍼미스2호' NICKNAME='표면처리_A_퍼미스2호' />
|
||||
<EQUIPMENT ID='SS0930-STRA-1130-000003' DESCRIPTION='표면처리_A_SR후처리1호(미사용)' NICKNAME='표면처리_A_SR후처리1호(미사용)' />
|
||||
<EQUIPMENT ID='SS0970-STRA-1130-000001' DESCRIPTION='표면처리_A_S-박리2호' NICKNAME='표면처리_A_S-박리2호' />
|
||||
<EQUIPMENT ID='PS0120-LUPA-1130-000001' DESCRIPTION='DPC_적층_자동적층4호' NICKNAME='DPC_적층_자동적층4호' />
|
||||
<EQUIPMENT ID='DP0120-LUPA-1130-000001' DESCRIPTION='DPC_적층_자동적층1호' NICKNAME='DPC_적층_자동적층1호' />
|
||||
<EQUIPMENT ID='DP0120-LUPA-1130-000002' DESCRIPTION='DPC_적층_자동적층2호' NICKNAME='DPC_적층_자동적층2호' />
|
||||
<EQUIPMENT ID='DP0120-LUPA-1130-000003' DESCRIPTION='DPC_적층_자동적층3호' NICKNAME='DPC_적층_자동적층3호' />
|
||||
<EQUIPMENT ID='P0120-LUPA001-DUMMY' DESCRIPTION='DPC_적층_자동적층5호' NICKNAME='DPC_적층_자동적층5호' />
|
||||
<EQUIPMENT ID='SS0400-OVNA-1130-000006' DESCRIPTION='표면처리_A_수직베이킹' NICKNAME='표면처리_A_수직베이킹' />
|
||||
<EQUIPMENT ID='THIK01' DESCRIPTION='DPC_두께측정기' NICKNAME='DPC_두께측정기' />
|
||||
<EQUIPMENT ID='HS0800-SDPA-1130-000002' DESCRIPTION='PSR_B_현상7호' NICKNAME='PSR_B_현상7호' />
|
||||
<EQUIPMENT ID='HS0800-SDPA-1130-000004' DESCRIPTION='PSR_B_현상6호' NICKNAME='PSR_B_현상6호' />
|
||||
<EQUIPMENT ID='P0800-SDPA001-DUMMY' DESCRIPTION='PSR_B_현상5호' NICKNAME='PSR_B_현상5호' />
|
||||
<EQUIPMENT ID='SS0800-SDPA-1130-000002' DESCRIPTION='PSR_A_현상1호' NICKNAME='PSR_A_현상1호' />
|
||||
<EQUIPMENT ID='SS0800-SDPA-1130-000003' DESCRIPTION='PSR_A_현상2호' NICKNAME='PSR_A_현상2호' />
|
||||
<EQUIPMENT ID='SS0800-SDPA-1130-000004' DESCRIPTION='PSR_A_현상3호' NICKNAME='PSR_A_현상3호' />
|
||||
<EQUIPMENT ID='P0790-EXPA004-DUMMY' DESCRIPTION='PSR_B_DI노광7호' NICKNAME='PSR_B_DI노광7호' />
|
||||
<EQUIPMENT ID='S0790-EXPA004-DUMMY' DESCRIPTION='PSR_A_DI노광1호' NICKNAME='PSR_A_DI노광1호' />
|
||||
<EQUIPMENT ID='SS0790-LDIA-1130-000001' DESCRIPTION='PSR_A_DI노광3호' NICKNAME='PSR_A_DI노광3호' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000001' DESCRIPTION='PSR_A_DI노광4호' NICKNAME='PSR_A_DI노광4호' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000002' DESCRIPTION='PSR_A_DI노광2호' NICKNAME='PSR_A_DI노광2호' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000003' DESCRIPTION='PSR_A_DI노광8호' NICKNAME='PSR_A_DI노광8호' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000004' DESCRIPTION='PSR_A_DI노광10호' NICKNAME='PSR_A_DI노광10호' />
|
||||
<EQUIPMENT ID='HS0620-PPTA-1130-000001' DESCRIPTION='PSR_B_HP연마1호' NICKNAME='PSR_B_HP연마1호' />
|
||||
<EQUIPMENT ID='HS0740-PPTA-1130-000004' DESCRIPTION='PSR_B_전처리4호' NICKNAME='PSR_B_전처리4호' />
|
||||
<EQUIPMENT ID='HS0730-PPTA-1130-000001' DESCRIPTION='PSR_B_전처리6호' NICKNAME='PSR_B_전처리6호' />
|
||||
<EQUIPMENT ID='HS0730-PPTA-1130-000002' DESCRIPTION='PSR_B_전처리7호' NICKNAME='PSR_B_전처리7호' />
|
||||
<EQUIPMENT ID='P0730-PPTA003-DUMMY' DESCRIPTION='PSR_B_전처리5호' NICKNAME='PSR_B_전처리5호' />
|
||||
<EQUIPMENT ID='S0730-PPTA001-DUMMY' DESCRIPTION='PSR_A_전처리1호' NICKNAME='PSR_A_전처리1호' />
|
||||
<EQUIPMENT ID='S0730-PPTA002-DUMMY' DESCRIPTION='PSR_A_전처리2호' NICKNAME='PSR_A_전처리2호' />
|
||||
<EQUIPMENT ID='SS0730-PPTA-1130-000001' DESCRIPTION='PSR_A_전처리8호' NICKNAME='PSR_A_전처리8호' />
|
||||
<EQUIPMENT ID='H0740-PRTA005-DUMMY' DESCRIPTION='롤코터 3호' NICKNAME='롤코터 3호' />
|
||||
<EQUIPMENT ID='P0770-VLMA001-DUMMY' DESCRIPTION='ABF_A_진공밀착1호' NICKNAME='ABF_A_진공밀착1호' />
|
||||
<EQUIPMENT ID='HS0771-VLMA-1130-000001' DESCRIPTION='이미지_B_진공밀착2호' NICKNAME='이미지_B_진공밀착2호' />
|
||||
<EQUIPMENT ID='HS0780-VLMA-1130-000001' DESCRIPTION='PSR_B_진공밀착6호' NICKNAME='PSR_B_진공밀착6호' />
|
||||
<EQUIPMENT ID='S0770-VLMA001-DUMMY' DESCRIPTION='PSR_B_진공밀착7호' NICKNAME='PSR_B_진공밀착7호' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000003' DESCRIPTION='PSR_B_진공밀착3호' NICKNAME='PSR_B_진공밀착3호' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000001' DESCRIPTION='PSR_A_진공밀착2호' NICKNAME='PSR_A_진공밀착2호' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000002' DESCRIPTION='PSR_A_진공밀착4호' NICKNAME='PSR_A_진공밀착4호' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000004' DESCRIPTION='PSR_A_진공밀착5호' NICKNAME='PSR_A_진공밀착5호' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000005' DESCRIPTION='PSR_A_진공밀착1호' NICKNAME='PSR_A_진공밀착1호' />
|
||||
<EQUIPMENT ID='SS0775-VLMA-1130-000001' DESCRIPTION='PSR_A_진공밀착8호' NICKNAME='PSR_A_진공밀착8호' />
|
||||
<EQUIPMENT ID='SS0900-GLDA-1130-000001' DESCRIPTION='표면처리_A_ENEPIG1호' NICKNAME='표면처리_A_ENEPIG1호' />
|
||||
<EQUIPMENT ID='HS1260-OSPA-1130-000001' DESCRIPTION='표면처리_A_OSP4호' NICKNAME='표면처리_A_OSP4호' />
|
||||
<EQUIPMENT ID='P0410-PLAA003-DUMMY' DESCRIPTION='표면처리_A_플라즈마2호' NICKNAME='표면처리_A_플라즈마2호' />
|
||||
<EQUIPMENT ID='S0410-PLAA001-DUMMY' DESCRIPTION='표면처리_A_플라즈마1호' NICKNAME='표면처리_A_플라즈마1호' />
|
||||
<EQUIPMENT ID='SS0410-PLAA-1130-000003' DESCRIPTION='표면처리_B_플라즈마3호' NICKNAME='표면처리_B_플라즈마3호' />
|
||||
<EQUIPMENT ID='SS0410-PLAA-1130-000004' DESCRIPTION='표면처리_B_플라즈마4호' NICKNAME='표면처리_B_플라즈마4호' />
|
||||
<EQUIPMENT ID='P0890-GLDA003-DUMMY' DESCRIPTION='표면처리_B_소프트골드3호' NICKNAME='표면처리_B_소프트골드3호' />
|
||||
<EQUIPMENT ID='S0890-GLDA001-DUMMY' DESCRIPTION='표면처리_A_소프트골드1호' NICKNAME='표면처리_A_소프트골드1호' />
|
||||
<EQUIPMENT ID='SS0890-GLDA-1130-000001' DESCRIPTION='표면처리_A_소프트골드2호' NICKNAME='표면처리_A_소프트골드2호' />
|
||||
<EQUIPMENT ID='BB0130-PRSA-1130-000001' DESCRIPTION='B2_적층_PRESS3호' NICKNAME='B2_적층_PRESS3호' />
|
||||
<EQUIPMENT ID='BB0130-PRSA-1130-000008' DESCRIPTION='B2_적층_PRESS4호' NICKNAME='B2_적층_PRESS4호' />
|
||||
<EQUIPMENT ID='BC1259-AFVA-1130-000001' DESCRIPTION='A2 (Unit)' NICKNAME='A2 (Unit)' />
|
||||
<EQUIPMENT ID='DP1147-BBTA-1130-000001' DESCRIPTION='BBT(Unit)' NICKNAME='BBT(Unit)' />
|
||||
<EQUIPMENT ID='DP1170-SMBA-1130-000001' DESCRIPTION='SPP#1' NICKNAME='SPP#1' />
|
||||
<EQUIPMENT ID='DP1170-SMBA-1130-000002' DESCRIPTION='SPP#2' NICKNAME='SPP#2' />
|
||||
<EQUIPMENT ID='DP1171-SMBA-1130-000002' DESCRIPTION='Micro Ball 1호(신규)/리플로우/디플럭스 3호라인' NICKNAME='Micro Ball 1호(신규)/리플로우/디플럭스 3호라인' />
|
||||
<EQUIPMENT ID='DP1171-SMBA-1130-000003' DESCRIPTION='Micro Ball 2호(신규)/리플로우/디플럭스 3호라인' NICKNAME='Micro Ball 2호(신규)/리플로우/디플럭스 3호라인' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000004' DESCRIPTION='코이닝(Quad)' NICKNAME='코이닝(Quad)' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000005' DESCRIPTION='코이닝(Unit)' NICKNAME='코이닝(Unit)' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000004' DESCRIPTION='OSP 5호 (프로웨트 社)' NICKNAME='OSP 5호 (프로웨트 社)' />
|
||||
<EQUIPMENT ID='DP1155-SWNA-1130-000001' DESCRIPTION='1차 Sawing/수세 (Quad)' NICKNAME='1차 Sawing/수세 (Quad)' />
|
||||
<EQUIPMENT ID='ChipCounter' DESCRIPTION='ChipCounter' NICKNAME='ChipCounter' />
|
||||
<EQUIPMENT ID='DP1146-BBTA-1130-000001' DESCRIPTION='BBT(Quad)' NICKNAME='BBT(Quad)' />
|
||||
<EQUIPMENT ID='DP1341-SWNA-1130-000001' DESCRIPTION='2차 Sawing/수세' NICKNAME='2차 Sawing/수세' />
|
||||
</SERVER>
|
||||
<SERVER ID='EIS.B2'>
|
||||
<EQUIPMENT ID='BA0520-ECPA-1130-000001' DESCRIPTION='전기동 1호' NICKNAME='전기동 1호' />
|
||||
<EQUIPMENT ID='BA0520-ECPA-1130-000002' DESCRIPTION='전기동 2호' NICKNAME='전기동 2호' />
|
||||
<EQUIPMENT ID='BA0425-PLAA-1130-000001' DESCRIPTION='자동 플라즈마 01호(2F)' NICKNAME='자동 플라즈마 01호(2F)' />
|
||||
<EQUIPMENT ID='BA0438-OVNA-1130-000001' DESCRIPTION='VL베이킹(3F) → 베이킹 2호(3F)' NICKNAME='VL베이킹(3F) → 베이킹 2호(3F)' />
|
||||
<EQUIPMENT ID='BA0660-DFPA-1130-000001' DESCRIPTION='전처리 01호' NICKNAME='전처리 01호' />
|
||||
<EQUIPMENT ID='BA0675-DEVA-1130-000001' DESCRIPTION='수직현상 01호' NICKNAME='수직현상 01호' />
|
||||
<EQUIPMENT ID='BA0723-OVNA-1130-000001' DESCRIPTION='' NICKNAME='고온베이킹' />
|
||||
<EQUIPMENT ID='BA0430-ELPA-1130-000001' DESCRIPTION='수평 화학동' NICKNAME='수평 화학동' />
|
||||
<EQUIPMENT ID='BA0030-ECHA-1130-000001' DESCRIPTION='하프에칭 1호' NICKNAME='하프에칭 1호' />
|
||||
<EQUIPMENT ID='BA0660-WASA-1130-000001' DESCRIPTION='TRAY 세정기' NICKNAME='TRAY 세정기' />
|
||||
<EQUIPMENT ID='BA0414-PLAA-1130-000001' DESCRIPTION='플라즈마(3F)' NICKNAME='플라즈마(3F)' />
|
||||
<EQUIPMENT ID='BA0419-PLAA-1130-000001' DESCRIPTION='플라즈마 1F- 표면처리 → 플라즈마 1호 - 표면처리' NICKNAME='플라즈마 1F- 표면처리 → 플라즈마 1호 - 표면처리' />
|
||||
<EQUIPMENT ID='BA0366-DSMA-1130-000001' DESCRIPTION='수직 디스미어 → 수직디스미어 1호' NICKNAME='수직 디스미어 → 수직디스미어 1호' />
|
||||
<EQUIPMENT ID='BA0435-ELPA-1130-000001' DESCRIPTION='수직 화학동 → 수직화학동 1호' NICKNAME='수직 화학동 → 수직화학동 1호' />
|
||||
<EQUIPMENT ID='BA0396-OVNA-1130-000001' DESCRIPTION='VL베이킹(2F) ← 베이킹 1호(2F)' NICKNAME='VL베이킹(2F) ← 베이킹 1호(2F)' />
|
||||
<EQUIPMENT ID='BA0050-DFPA-1130-000001' DESCRIPTION='전처리 02호' NICKNAME='전처리 02호' />
|
||||
<EQUIPMENT ID='BA0074-INSA-1130-000001' DESCRIPTION='3D 측정기 02호 → 나노 2호' NICKNAME='3D 측정기 02호 → 나노 2호' />
|
||||
<EQUIPMENT ID='BA0708-INSA-1130-000001' DESCRIPTION='3D 측정기 01호 → 나노 1호' NICKNAME='3D 측정기 01호 → 나노 1호' />
|
||||
<EQUIPMENT ID='BA0717-AOIA-1130-000001' DESCRIPTION='AOI 01호 (A3) → A3 1호' NICKNAME='AOI 01호 (A3) → A3 1호' />
|
||||
<EQUIPMENT ID='BA0070-ECHA-1130-000001' DESCRIPTION='DES 01호' NICKNAME='DES 01호' />
|
||||
<EQUIPMENT ID='BA0671-LDIA-1130-000001' DESCRIPTION='DI 노광 01호' NICKNAME='DI 노광 01호' />
|
||||
<EQUIPMENT ID='BA0061-LDIA-1130-000001' DESCRIPTION='DI 노광 02호' NICKNAME='DI 노광 02호' />
|
||||
<EQUIPMENT ID='BA0810-STRA-1130-000001' DESCRIPTION='M-박리 01호' NICKNAME='M-박리 01호' />
|
||||
<EQUIPMENT ID='BB0387-OVNA-1130-000001' DESCRIPTION='XBF CURE → XBF CURE 1호' NICKNAME='XBF CURE → XBF CURE 1호' />
|
||||
<EQUIPMENT ID='BB0750-PRTA-1130-000001' DESCRIPTION='롤코터 1호' NICKNAME='롤코터 1호' />
|
||||
<EQUIPMENT ID='BB0776-VLMA-1130-000002' DESCRIPTION='진공밀착기(니코)#2' NICKNAME='진공밀착기(니코)#2' />
|
||||
<EQUIPMENT ID='BB0776-VLMA-1130-000003' DESCRIPTION='진공밀착기(니코)#3' NICKNAME='진공밀착기(니코)#3' />
|
||||
<EQUIPMENT ID='BB0780-VLMA-1130-000001' DESCRIPTION='진공밀착 1호' NICKNAME='진공밀착 1호' />
|
||||
<EQUIPMENT ID='BB0785-PLMA-1130-000001' DESCRIPTION='PET밀착 1호' NICKNAME='PET밀착 1호' />
|
||||
<EQUIPMENT ID='BB0730-WASA-1130-000001' DESCRIPTION='TRAY 세정기 1호' NICKNAME='TRAY 세정기 1호' />
|
||||
<EQUIPMENT ID='BB0800-SDPA-1130-000001' DESCRIPTION='PSR 현상 1호/CURE/두께측정기' NICKNAME='PSR 현상 1호/CURE/두께측정기' />
|
||||
<EQUIPMENT ID='BB0805-INSA-1130-000001' DESCRIPTION='3D 측정 1호 → 나노 1호' NICKNAME='3D 측정 1호 → 나노 1호' />
|
||||
<EQUIPMENT ID='BB0805-INSA-1130-000002' DESCRIPTION='표면검사기 1호' NICKNAME='표면검사기 1호' />
|
||||
<EQUIPMENT ID='BB0603-PREA-1130-000001' DESCRIPTION='XBF전처리 1호기(8101)/검사기/터널베이킹' NICKNAME='XBF전처리 1호기(8101)/검사기/터널베이킹' />
|
||||
<EQUIPMENT ID='BB0730-PPTA-1130-000001' DESCRIPTION='PSR전처리 1호 / 검사기' NICKNAME='PSR전처리 1호 / 검사기' />
|
||||
<EQUIPMENT ID='BB0791-LDIA-1130-000001' DESCRIPTION='DI노광 1호 / 오토필러' NICKNAME='DI노광 1호 / 오토필러' />
|
||||
<EQUIPMENT ID='300106' DESCRIPTION='분리합치기' NICKNAME='분리합치기' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000002' DESCRIPTION='LOT분리합체기 A1-1(STATION A1-1)' NICKNAME='LOT분리합체기 A1-1(STATION A1-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000003' DESCRIPTION='LOT분리합체기 A1-2(STATION A1-1)' NICKNAME='LOT분리합체기 A1-2(STATION A1-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000012' DESCRIPTION='LOT분리합체기 A2-2(STATION A2-1)' NICKNAME='LOT분리합체기 A2-2(STATION A2-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000013' DESCRIPTION='LOT분리합체기 A2-3(STATION A2-1)' NICKNAME='LOT분리합체기 A2-3(STATION A2-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000019' DESCRIPTION='LOT분리합체기 A2-1(4층)' NICKNAME='LOT분리합체기 A2-1(4층)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000023' DESCRIPTION='LOT분리합체기 A3-1(STATION A3-1)' NICKNAME='LOT분리합체기 A3-1(STATION A3-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000024' DESCRIPTION='LOT분리합체기 A3-2(STATION A3-1)' NICKNAME='LOT분리합체기 A3-2(STATION A3-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000030' DESCRIPTION='LOT분리합체기 A4-1(STATION A4-1)' NICKNAME='LOT분리합체기 A4-1(STATION A4-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000031' DESCRIPTION='LOT분리합체기 A4-2(STATION A4-1)' NICKNAME='LOT분리합체기 A4-2(STATION A4-1)' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000002' DESCRIPTION='LOT분리합체기 B3-1(STATION B3-1)' NICKNAME='LOT분리합체기 B3-1(STATION B3-1)' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000003' DESCRIPTION='LOT분리합체기 B3-2(STATION B3-1)' NICKNAME='LOT분리합체기 B3-2(STATION B3-1)' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000010' DESCRIPTION='LOT분리합체기 B4-2(STATION B4-1)' NICKNAME='LOT분리합체기 B4-2(STATION B4-1)' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000011' DESCRIPTION='LOT분리합체기 B4-1' NICKNAME='LOT분리합체기 B4-1' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000019' DESCRIPTION='LOT분리합체기 B4-3(STATION B4-1)' NICKNAME='LOT분리합체기 B4-3(STATION B4-1)' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000007' DESCRIPTION='Run Sheet 제거기' NICKNAME='Run Sheet 제거기' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000010' DESCRIPTION='트레이포장기-A동이동으로 EES추가' NICKNAME='트레이포장기-A동이동으로 EES추가' />
|
||||
</SERVER>
|
||||
</SERVER_LIST>
|
||||
280
DDUtilityApp/EisEquipmentInfo1.xml
Normal file
280
DDUtilityApp/EisEquipmentInfo1.xml
Normal file
@@ -0,0 +1,280 @@
|
||||
<SERVER_LIST>
|
||||
<SERVER ID='EIS.B1'>
|
||||
<EQUIPMENT ID='P0410-PLAA002-DUMMY' DESCRIPTION='' NICKNAME='플라즈마 1호' IP='192.168.233.2' />
|
||||
<EQUIPMENT ID='SS0387-OVNA-1130-000001' DESCRIPTION='' NICKNAME='큐어 1호' IP='192.168.233.222' />
|
||||
<EQUIPMENT ID='SS0603-PREA-1130-000001' DESCRIPTION='' NICKNAME='CZ전처리 1호' IP='192.168.233.223' />
|
||||
<EQUIPMENT ID='SS0603-PREA-1130-000002' DESCRIPTION='' NICKNAME='CZ전처리 2호' IP='192.168.233.104' />
|
||||
<EQUIPMENT ID='SS0370-DSMA-1130-000002' DESCRIPTION='' NICKNAME='수직디스미어 1호' IP='192.168.233.69' />
|
||||
<EQUIPMENT ID='SS0430-ELPA-1130-000001' DESCRIPTION='' NICKNAME='수직화학동 1호' IP='127.0.0.1' />
|
||||
<EQUIPMENT ID='SS0388-ATOA-1130-000001' DESCRIPTION='' NICKNAME='오토필러 1호' IP='192.168.233.219' />
|
||||
<EQUIPMENT ID='HS0771-VLMA-1130-000001' DESCRIPTION='' NICKNAME='진공밀착 2호' IP='192.168.113.89' />
|
||||
<EQUIPMENT ID='P0770-VLMA001-DUMMY' DESCRIPTION='' NICKNAME='진공밀착 1호' IP='192.168.233.186' />
|
||||
<EQUIPMENT ID='DP0370-DSMA-1130-000001' DESCRIPTION='' NICKNAME='디스미어 6호' IP='192.168.113.192' />
|
||||
<EQUIPMENT ID='P0370-DSMA003-DUMMY' DESCRIPTION='' NICKNAME='디스미어 5호' IP='192.168.233.145' />
|
||||
<EQUIPMENT ID='P0430-ELPA003-DUMMY' DESCRIPTION='' NICKNAME='화학동 5호' IP='192.168.233.150' />
|
||||
<EQUIPMENT ID='S0370-DSMA001-DUMMY' DESCRIPTION='' NICKNAME='디스미어 2호' IP='192.168.233.142' />
|
||||
<EQUIPMENT ID='S0370-DSMA002-DUMMY' DESCRIPTION='' NICKNAME='디스미어 1호' IP='192.168.233.141' />
|
||||
<EQUIPMENT ID='S0430-ELPA001-DUMMY' DESCRIPTION='' NICKNAME='화학동 2호' IP='192.168.233.147' />
|
||||
<EQUIPMENT ID='S0430-ELPA002-DUMMY' DESCRIPTION='' NICKNAME='화학동 1호' IP='192.168.233.146' />
|
||||
<EQUIPMENT ID='SS0370-DSMA-1130-000003' DESCRIPTION='' NICKNAME='디스미어 3호' IP='192.168.233.143' />
|
||||
<EQUIPMENT ID='SS0370-DSMA-1130-000004' DESCRIPTION='' NICKNAME='디스미어 4호' IP='192.168.233.144' />
|
||||
<EQUIPMENT ID='SS0430-ELPA-1130-000002' DESCRIPTION='' NICKNAME='화학동 3호' IP='192.168.233.148' />
|
||||
<EQUIPMENT ID='SS0430-ELPA-1130-000003' DESCRIPTION='' NICKNAME='화학동 4호' IP='192.168.233.149' />
|
||||
<EQUIPMENT ID='HS0470-ECPA-1130-000002' DESCRIPTION='' NICKNAME='전기동 9호' IP='192.168.113.18' />
|
||||
<EQUIPMENT ID='P0520-ECPA001-DUMMY' DESCRIPTION='' NICKNAME='전기동 7호' IP='192.168.113.16' />
|
||||
<EQUIPMENT ID='P0520-ECPA003-DUMMY' DESCRIPTION='' NICKNAME='전기동 6호' IP='192.168.233.154' />
|
||||
<EQUIPMENT ID='P0680-ECPA003-DUMMY' DESCRIPTION='' NICKNAME='전기동 5호' IP='192.168.233.131' />
|
||||
<EQUIPMENT ID='S0520-ECPA001-DUMMY' DESCRIPTION='' NICKNAME='전기동 2호' IP='192.168.233.152' />
|
||||
<EQUIPMENT ID='S0520-ECPA002-DUMMY' DESCRIPTION='' NICKNAME='전기동 1호' IP='192.168.233.151' />
|
||||
<EQUIPMENT ID='SS0680-ECPA-1130-000001' DESCRIPTION='' NICKNAME='전기동 4호' IP='192.168.233.22' />
|
||||
<EQUIPMENT ID='HS0470-ECPA-1110-000001' DESCRIPTION='' NICKNAME='전기동 8호' IP='192.168.113.64' />
|
||||
<EQUIPMENT ID='SS0470-ECPA-1130-000002' DESCRIPTION='' NICKNAME='전기동 3호' IP='192.168.233.164' />
|
||||
<EQUIPMENT ID='SS0030-ECHA-1130-000001' DESCRIPTION='' NICKNAME='H에칭 1호' IP='192.168.113.115' />
|
||||
<EQUIPMENT ID='SS0310-ECHA-1130-000001' DESCRIPTION='' NICKNAME='S에칭 1호' IP='192.168.233.93' />
|
||||
<EQUIPMENT ID='SS0405-SPCA-1130-000002' DESCRIPTION='' NICKNAME='엣지코팅 3호' IP='192.168.233.238' />
|
||||
<EQUIPMENT ID='HS0430-ELPA-1130-000002' DESCRIPTION='' NICKNAME='화학동 6호' IP='192.168.113.193' />
|
||||
<EQUIPMENT ID='HS0430-ELPA-1110-000001' DESCRIPTION='' NICKNAME='화학동 7호' IP='192.168.113.15' />
|
||||
<EQUIPMENT ID='HS0310-ECHA-1130-000001' DESCRIPTION='' NICKNAME='소프트에칭 2호' IP='192.168.113.24' />
|
||||
<EQUIPMENT ID='HS0370-DSMA-1110-000001' DESCRIPTION='' NICKNAME='디스미어 7호' IP='192.168.113.12' />
|
||||
<EQUIPMENT ID='HS0625-BUFA-1130-000001' DESCRIPTION='' NICKNAME='브러쉬정면 1호' IP='192.168.113.22' />
|
||||
<EQUIPMENT ID='P0310-ECHA001-DUMMY' DESCRIPTION='' NICKNAME='S에칭 3호' IP='192.168.113.21' />
|
||||
<EQUIPMENT ID='DP0400-OVNA-1130-000005' DESCRIPTION='' NICKNAME='가압Baking' IP='192.168.193.36' />
|
||||
<EQUIPMENT ID='PS0130-OVNA-1130-000001' DESCRIPTION='' NICKNAME='성형Baking' IP='192.168.193.35' />
|
||||
<EQUIPMENT ID='SS0400-OVNA-1130-000007' DESCRIPTION='' NICKNAME='XBF_TowerBaking' IP='192.168.233.83' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000001' DESCRIPTION='' NICKNAME='SOP코이닝 1호' IP='192.168.163.176' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000002' DESCRIPTION='' NICKNAME='SOP코이닝 2호' IP='192.168.163.176' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000003' DESCRIPTION='' NICKNAME='SOP코이닝 3호' IP='192.168.163.176' />
|
||||
<EQUIPMENT ID='BB0601-PREA-1130-000001' DESCRIPTION='' NICKNAME='CZ전처리[B2]' IP='192.168.193.30' />
|
||||
<EQUIPMENT ID='DP0601-BUFA-1130-000001' DESCRIPTION='' NICKNAME='CZ전처리 1호' IP='192.168.163.152' />
|
||||
<EQUIPMENT ID='DP0601-BUFA-1130-000002' DESCRIPTION='' NICKNAME='CZ전처리 2호' IP='192.168.193.37' />
|
||||
<EQUIPMENT ID='BB0870-SPCA-1130-000001' DESCRIPTION='' NICKNAME='기판분리 1호[B2]' IP='192.168.193.31' />
|
||||
<EQUIPMENT ID='DP0870-ATOA-1130-000002' DESCRIPTION='' NICKNAME='기판분리 1호' IP='192.168.163.163' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000001' DESCRIPTION='' NICKNAME='OSP 1호' IP='192.168.163.6' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000002' DESCRIPTION='' NICKNAME='OSP 2호' IP='192.168.163.7' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000003' DESCRIPTION='' NICKNAME='OSP 3호' IP='192.168.163.8' />
|
||||
<EQUIPMENT ID='BB0130-PRSA-1130-000001' DESCRIPTION='' NICKNAME='PRESS 3호[B2] (IN:1~7)' IP='192.168.193.28' />
|
||||
<EQUIPMENT ID='BB0130-PRSA-1130-000008' DESCRIPTION='' NICKNAME='PRESS 4호[B2] (IN:8~14)' IP='192.168.193.27' />
|
||||
<EQUIPMENT ID='DP0270-PUNA-1130-000001' DESCRIPTION='' NICKNAME='펀칭기' IP='192.168.163.37' />
|
||||
<EQUIPMENT ID='DP1180-RFLA-1130-000001' DESCRIPTION='' NICKNAME='리플로우 1호' IP='192.168.163.20' />
|
||||
<EQUIPMENT ID='DP1180-RFLA-1130-000002' DESCRIPTION='' NICKNAME='리플로우 2호' IP='192.168.163.21' />
|
||||
<EQUIPMENT ID='BB0140-TDRA-1130-000001' DESCRIPTION='' NICKNAME='T.Drill 1호[B2]' IP='192.168.193.41' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000001' DESCRIPTION='' NICKNAME='T.Drill 1호' IP='192.168.163.155' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000002' DESCRIPTION='' NICKNAME='T.Drill 2호' IP='192.168.163.156' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000003' DESCRIPTION='' NICKNAME='T.Drill 3호' IP='192.168.163.157' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000004' DESCRIPTION='' NICKNAME='T.Drill 4호' IP='192.168.193.46' />
|
||||
<EQUIPMENT ID='DP0140-TDRA-1130-000005' DESCRIPTION='' NICKNAME='T.Drill 5호' IP='192.168.193.47' />
|
||||
<EQUIPMENT ID='P0140-TDRA001-DUMMY' DESCRIPTION='' NICKNAME='T.Drill 6호' IP='192.168.193.48' />
|
||||
<EQUIPMENT ID='PS0140-TDRA-1130-000002' DESCRIPTION='' NICKNAME='T.Drill 2호[B2]' IP='192.168.163.159' />
|
||||
<EQUIPMENT ID='BB0150-RUTA-1130-000001' DESCRIPTION='' NICKNAME='TRIM 1호[B2]' IP='192.168.193.34' />
|
||||
<EQUIPMENT ID='DP0150-RUTA-1130-000001' DESCRIPTION='' NICKNAME='TRIM 1호' IP='192.168.163.13' />
|
||||
<EQUIPMENT ID='P0150-RUTA001-DUMMY' DESCRIPTION='' NICKNAME='TRIM 2호' IP='192.168.193.40' />
|
||||
<EQUIPMENT ID='DP0405-SPCA-1130-000001' DESCRIPTION='' NICKNAME='엣지코팅 1호' IP='192.168.163.10' />
|
||||
<EQUIPMENT ID='DP0405-SPCA-1130-000002' DESCRIPTION='' NICKNAME='엣지코팅 2호' IP='192.168.163.11' />
|
||||
<EQUIPMENT ID='DP0130-PRSA-1130-000001' DESCRIPTION='' NICKNAME='PRESS 1호' IP='192.168.163.153' />
|
||||
<EQUIPMENT ID='P0130-PRSA001-DUMMY' DESCRIPTION='' NICKNAME='PRESS 2호' IP='192.168.163.154' />
|
||||
<EQUIPMENT ID='DP0030-ECHA-1130-000001' DESCRIPTION='' NICKNAME='하프에칭 1호' IP='192.168.163.166' />
|
||||
<EQUIPMENT ID='DP0100-OXIA-1130-000001' DESCRIPTION='' NICKNAME='브라운옥사이드 1호' IP='192.168.163.150' />
|
||||
<EQUIPMENT ID='DP0105-OXIA-1130-000003' DESCRIPTION='' NICKNAME='블랙옥사이드 1호' IP='192.168.163.151' />
|
||||
<EQUIPMENT ID='DP0407-SPCA-1130-000001' DESCRIPTION='' NICKNAME='동박분리기 1호' IP='192.168.163.180' />
|
||||
<EQUIPMENT ID='DP0407-SPCA-1130-000002' DESCRIPTION='' NICKNAME='동박분리기 2호' IP='192.168.163.181' />
|
||||
<EQUIPMENT ID='300230' DESCRIPTION='' NICKNAME='BBT(QUAD) 2호' IP='192.168.163.51' />
|
||||
<EQUIPMENT ID='300232' DESCRIPTION='' NICKNAME='BBT(QUAD) 3호' IP='192.168.163.52' />
|
||||
<EQUIPMENT ID='DP1146-BBTA-1130-000001' DESCRIPTION='' NICKNAME='BBT(QUAD) 1호' IP='192.168.163.49' />
|
||||
<EQUIPMENT ID='DP0120-LUPA-1130-000001' DESCRIPTION='' NICKNAME='자동적층 1호' IP='192.168.163.22' />
|
||||
<EQUIPMENT ID='DP0120-LUPA-1130-000002' DESCRIPTION='' NICKNAME='자동적층 2호' IP='192.168.163.23' />
|
||||
<EQUIPMENT ID='DP0120-LUPA-1130-000003' DESCRIPTION='' NICKNAME='자동적층 3호' IP='192.168.163.24' />
|
||||
<EQUIPMENT ID='P0120-LUPA001-DUMMY' DESCRIPTION='' NICKNAME='자동적층 5호' IP='192.168.163.26' />
|
||||
<EQUIPMENT ID='PS0120-LUPA-1130-000001' DESCRIPTION='' NICKNAME='자동적층 4호' IP='192.168.163.25' />
|
||||
<EQUIPMENT ID='THIK01' DESCRIPTION='' NICKNAME='두께측정기' IP='192.168.10.100' />
|
||||
<EQUIPMENT ID='H0070-DESA004-DUMMY' DESCRIPTION='' NICKNAME='DES 4호' IP='192.168.111.51' />
|
||||
<EQUIPMENT ID='HS0070-DESA-1130-000001' DESCRIPTION='' NICKNAME='DES 3호' IP='192.168.113.20' />
|
||||
<EQUIPMENT ID='P0650-DESA003-DUMMY' DESCRIPTION='' NICKNAME='DES 6호' IP='192.168.111.52' />
|
||||
<EQUIPMENT ID='S0650-DESA001-DUMMY' DESCRIPTION='' NICKNAME='DES 1호' IP='192.168.113.102' />
|
||||
<EQUIPMENT ID='S0650-DESA001-DUMMY' DESCRIPTION='' NICKNAME='DES 1호' IP='192.168.113.102' />
|
||||
<EQUIPMENT ID='SS0650-DESA-1130-000001' DESCRIPTION='' NICKNAME='DES 2호' IP='192.168.232.59' />
|
||||
<EQUIPMENT ID='SS0650-DESA-1130-000001' DESCRIPTION='' NICKNAME='DES 2호' IP='192.168.232.59' />
|
||||
<EQUIPMENT ID='HS0060-LDIA-1130-000005' DESCRIPTION='' NICKNAME='DI노광 7호' IP='192.168.113.95' />
|
||||
<EQUIPMENT ID='HS0645-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 10호' IP='192.168.113.97' />
|
||||
<EQUIPMENT ID='PS0640-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 8호' IP='192.168.113.96' />
|
||||
<EQUIPMENT ID='S0640-EXPA004-DUMMY' DESCRIPTION='' NICKNAME='DI노광 2호' IP='192.168.233.36' />
|
||||
<EQUIPMENT ID='SS0645-EXPA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 3호' IP='192.168.233.55' />
|
||||
<EQUIPMENT ID='SS0645-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 1호' IP='192.168.233.105' />
|
||||
<EQUIPMENT ID='SS0645-LDIA-1130-000002' DESCRIPTION='' NICKNAME='DI노광 5호' IP='192.168.233.45' />
|
||||
<EQUIPMENT ID='SS0645-LDIA-1130-000004' DESCRIPTION='' NICKNAME='DI노광 12호' IP='192.168.233.35' />
|
||||
<EQUIPMENT ID='PS0690-ECHA-1130-000001' DESCRIPTION='' NICKNAME='F에칭 2호' IP='192.168.113.110' />
|
||||
<EQUIPMENT ID='S0690-ECHA001-DUMMY' DESCRIPTION='' NICKNAME='F에칭 1호' IP='192.168.113.63' />
|
||||
<EQUIPMENT ID='SS0965-ECHA-1130-000002' DESCRIPTION='' NICKNAME='F에칭 3호' IP='192.168.113.71' />
|
||||
<EQUIPMENT ID='300084' DESCRIPTION='' NICKNAME='수직현상 4호' IP='192.168.233.86' />
|
||||
<EQUIPMENT ID='HS0675-DEVA-1130-000001' DESCRIPTION='' NICKNAME='수직현상 3호' IP='192.168.233.12' />
|
||||
<EQUIPMENT ID='S0860-DEVA001-DUMMY' DESCRIPTION='' NICKNAME='수직현상 1호' IP='192.168.233.171' />
|
||||
<EQUIPMENT ID='SS0675-DEVA-1130-000002' DESCRIPTION='' NICKNAME='수직현상 2호' IP='192.168.233.172' />
|
||||
<EQUIPMENT ID='SS0860-SDPA-1130-000001' DESCRIPTION='' NICKNAME='수평현상 1호' IP='192.168.233.181' />
|
||||
<EQUIPMENT ID='SS0860-SDPA-1130-000002' DESCRIPTION='' NICKNAME='수평현상 2호' IP='192.168.233.182' />
|
||||
<EQUIPMENT ID='S0810-STRA001-DUMMY' DESCRIPTION='' NICKNAME='M박리 1호' IP='192.168.233.239' />
|
||||
<EQUIPMENT ID='SS0810-STRA-1130-000002' DESCRIPTION='' NICKNAME='M박리 4호' IP='192.168.233.88' />
|
||||
<EQUIPMENT ID='SS0630-DFPA-1130-000002' DESCRIPTION='' NICKNAME='전처리 1호' IP='192.168.233.229' />
|
||||
<EQUIPMENT ID='SS0630-DFPA-1130-000001' DESCRIPTION='' NICKNAME='전처리 4호' IP='192.168.233.53' />
|
||||
<EQUIPMENT ID='SS0705-ECHA-1130-000001' DESCRIPTION='' NICKNAME='수직에칭기' IP='192.168.233.65' />
|
||||
<EQUIPMENT ID='H0050-DFPA001-DUMMY' DESCRIPTION='' NICKNAME='전처리 8호' IP='192.168.113.25' />
|
||||
<EQUIPMENT ID='P0630-DFPA002-DUMMY' DESCRIPTION='' NICKNAME='전처리 10호' IP='192.168.233.91' />
|
||||
<EQUIPMENT ID='PS0630-DFPA-1130-000001' DESCRIPTION='' NICKNAME='전처리 7호' IP='192.168.113.28' />
|
||||
<EQUIPMENT ID='SS0690-ECHA-1130-000001' DESCRIPTION='' NICKNAME='Q에칭 1호' IP='192.168.233.173' />
|
||||
<EQUIPMENT ID='SS0840-DFPA-1130-000001' DESCRIPTION='' NICKNAME='전처리 2호' IP='192.168.233.158' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000003' DESCRIPTION='' NICKNAME='AOI 7호' IP='192.168.113.209' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000004' DESCRIPTION='' NICKNAME='AOI 8호' IP='192.168.113.75' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000005' DESCRIPTION='' NICKNAME='AOI 9호' IP='192.168.113.183' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000006' DESCRIPTION='' NICKNAME='AOI 10호' IP='192.168.113.185' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000007' DESCRIPTION='' NICKNAME='AOI 11호' IP='192.168.113.187' />
|
||||
<EQUIPMENT ID='HS0718-AOIA-1130-000008' DESCRIPTION='' NICKNAME='AOI 12호' IP='192.168.113.189' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000001' DESCRIPTION='' NICKNAME='AOI 1호' IP='192.168.113.74' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000002' DESCRIPTION='' NICKNAME='AOI 2호' IP='192.168.113.181' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000003' DESCRIPTION='' NICKNAME='AOI 3호' IP='192.168.113.84' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000004' DESCRIPTION='' NICKNAME='AOI 4호' IP='192.168.113.77' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000005' DESCRIPTION='' NICKNAME='AOI 5호' IP='192.168.113.78' />
|
||||
<EQUIPMENT ID='SS0718-AOIA-1130-000006' DESCRIPTION='' NICKNAME='AOI 6호' IP='192.168.113.79' />
|
||||
<EQUIPMENT ID='H0050-DFPA007-DUMMY' DESCRIPTION='' NICKNAME='전처리 6호' IP='192.168.113.61' />
|
||||
<EQUIPMENT ID='H0070-DESA003-DUMMY' DESCRIPTION='' NICKNAME='DES 5호' IP='192.168.113.36' />
|
||||
<EQUIPMENT ID='H0850-VLMA001-DUMMY' DESCRIPTION='' NICKNAME='진공밀착 1호' IP='192.168.113.35' />
|
||||
<EQUIPMENT ID='HS0050-DFPA-1130-000005' DESCRIPTION='' NICKNAME='전처리 9호' IP='192.168.113.26' />
|
||||
<EQUIPMENT ID='HS0810-STRA-1130-000001' DESCRIPTION='' NICKNAME='M박리 3호' IP='192.168.233.27' />
|
||||
<EQUIPMENT ID='P0640-EXPA001-DUMMY' DESCRIPTION='' NICKNAME='자동노광 7호' IP='192.168.113.33' />
|
||||
<EQUIPMENT ID='P0640-EXPA002-DUMMY' DESCRIPTION='' NICKNAME='자동노광 6호' IP='192.168.113.32' />
|
||||
<EQUIPMENT ID='PS0670-EXPA-1130-000001' DESCRIPTION='' NICKNAME='자동노광 9호' IP='192.168.113.34' />
|
||||
<EQUIPMENT ID='S0640-EXPA001-DUMMY' DESCRIPTION='' NICKNAME='자동노광 3호' IP='192.168.233.169' />
|
||||
<EQUIPMENT ID='S0640-EXPA002-DUMMY' DESCRIPTION='' NICKNAME='자동노광 4호' IP='192.168.233.170' />
|
||||
<EQUIPMENT ID='S0660-DFPA002-DUMMY' DESCRIPTION='' NICKNAME='전처리 3호' IP='192.168.233.159' />
|
||||
<EQUIPMENT ID='SS0640-EXPA-1130-000003' DESCRIPTION='' NICKNAME='자동노광 2호' IP='192.168.233.168' />
|
||||
<EQUIPMENT ID='SS0660-DFPA-1130-000002' DESCRIPTION='' NICKNAME='전처리 5호' IP='192.168.233.4' />
|
||||
<EQUIPMENT ID='SS0810-STRA-1130-000001' DESCRIPTION='' NICKNAME='M박리 2호' IP='192.168.233.178' />
|
||||
<EQUIPMENT ID='SS0965-ECHA-1130-000002_Back' DESCRIPTION='' NICKNAME='' IP='192.168.113.71' />
|
||||
<EQUIPMENT ID='HS0718-ATOA-1130-000002' DESCRIPTION='' NICKNAME='AOR 3호' IP='192.168.113.196' />
|
||||
<EQUIPMENT ID='HS0718-ATOA-1130-000003' DESCRIPTION='' NICKNAME='AOR 4호' IP='192.168.113.198' />
|
||||
<EQUIPMENT ID='SS0718-ATOA-1130-000002' DESCRIPTION='' NICKNAME='AOR 1호' IP='192.168.113.177' />
|
||||
<EQUIPMENT ID='SS0718-ATOA-1130-000003' DESCRIPTION='' NICKNAME='AOR 2호' IP='192.168.113.191' />
|
||||
<EQUIPMENT ID='300060' DESCRIPTION='' NICKNAME='AOR 5호' IP='192.168.113.201' />
|
||||
<EQUIPMENT ID='300107' DESCRIPTION='' NICKNAME='DI노광 12호' IP='192.168.233.79' />
|
||||
<EQUIPMENT ID='HS0790-LDIA-1130-000002' DESCRIPTION='' NICKNAME='DI노광 6호' IP='192.168.113.140' />
|
||||
<EQUIPMENT ID='HS0790-LDIA-1130-000003' DESCRIPTION='' NICKNAME='DI노광 5호' IP='192.168.113.207' />
|
||||
<EQUIPMENT ID='HS0795-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 9호' IP='192.168.113.210' />
|
||||
<EQUIPMENT ID='HS0740-PPTA-1110-000003' DESCRIPTION='' NICKNAME='HP전처리 1호' IP='192.168.113.56' />
|
||||
<EQUIPMENT ID='HS0790-EXPA-1130-000002' DESCRIPTION='' NICKNAME='자동노광 5호' IP='192.168.113.48' />
|
||||
<EQUIPMENT ID='HS0790-EXPA-1130-000003' DESCRIPTION='' NICKNAME='자동노광 6호' IP='192.168.113.49' />
|
||||
<EQUIPMENT ID='P0790-EXPA005-DUMMY' DESCRIPTION='' NICKNAME='자동노광 8호' IP='192.168.113.51' />
|
||||
<EQUIPMENT ID='P0790-EXPA007-DUMMY' DESCRIPTION='' NICKNAME='자동노광 7호' IP='192.168.113.50' />
|
||||
<EQUIPMENT ID='S0790-EXPA001-DUMMY' DESCRIPTION='' NICKNAME='자동노광 2호' IP='192.168.233.197' />
|
||||
<EQUIPMENT ID='S0790-EXPA002-DUMMY' DESCRIPTION='' NICKNAME='자동노광 9호' IP='192.168.113.52' />
|
||||
<EQUIPMENT ID='S0790-EXPA003-DUMMY' DESCRIPTION='' NICKNAME='자동노광 3호' IP='192.168.233.198' />
|
||||
<EQUIPMENT ID='HS0800-SDPA-1130-000002' DESCRIPTION='' NICKNAME='현상 7호' IP='192.168.113.55' />
|
||||
<EQUIPMENT ID='HS0800-SDPA-1130-000004' DESCRIPTION='' NICKNAME='현상 6호' IP='192.168.113.54' />
|
||||
<EQUIPMENT ID='P0800-SDPA001-DUMMY' DESCRIPTION='' NICKNAME='현상 5호' IP='192.168.113.53' />
|
||||
<EQUIPMENT ID='SS0800-SDPA-1130-000002' DESCRIPTION='' NICKNAME='현상 1호' IP='192.168.233.75' />
|
||||
<EQUIPMENT ID='SS0800-SDPA-1130-000003' DESCRIPTION='' NICKNAME='현상 2호' IP='192.168.233.76' />
|
||||
<EQUIPMENT ID='SS0800-SDPA-1130-000004' DESCRIPTION='' NICKNAME='현상 3호' IP='192.168.233.77' />
|
||||
<EQUIPMENT ID='P0790-EXPA004-DUMMY' DESCRIPTION='' NICKNAME='DI노광 7호' IP='192.168.113.47' />
|
||||
<EQUIPMENT ID='S0790-EXPA004-DUMMY' DESCRIPTION='' NICKNAME='DI노광 1호' IP='192.168.113.72' />
|
||||
<EQUIPMENT ID='SS0790-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 3호' IP='192.168.233.194' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 4호' IP='192.168.233.195' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000002' DESCRIPTION='' NICKNAME='DI노광 2호' IP='192.168.233.193' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000003' DESCRIPTION='' NICKNAME='DI노광 8호' IP='192.168.233.196' />
|
||||
<EQUIPMENT ID='SS0795-LDIA-1130-000004' DESCRIPTION='' NICKNAME='DI노광 10호' IP='192.168.233.197' />
|
||||
<EQUIPMENT ID='HS0620-PPTA-1130-000001' DESCRIPTION='' NICKNAME='HP연마 1호' IP='192.168.113.57' />
|
||||
<EQUIPMENT ID='HS0730-PPTA-1130-000001' DESCRIPTION='' NICKNAME='전처리 6호' IP='192.168.113.41' />
|
||||
<EQUIPMENT ID='HS0730-PPTA-1130-000002' DESCRIPTION='' NICKNAME='전처리 7호' IP='192.168.113.42' />
|
||||
<EQUIPMENT ID='HS0740-PPTA-1130-000004' DESCRIPTION='' NICKNAME='전처리 4호' IP='192.168.113.39' />
|
||||
<EQUIPMENT ID='P0730-PPTA003-DUMMY' DESCRIPTION='' NICKNAME='전처리 5호' IP='192.168.113.40' />
|
||||
<EQUIPMENT ID='S0730-PPTA001-DUMMY' DESCRIPTION='' NICKNAME='전처리 1호' IP='192.168.233.81' />
|
||||
<EQUIPMENT ID='S0730-PPTA002-DUMMY' DESCRIPTION='' NICKNAME='전처리 2호' IP='192.168.233.82' />
|
||||
<EQUIPMENT ID='SS0730-PPTA-1130-000001' DESCRIPTION='' NICKNAME='전처리 8호' IP='192.168.233.185' />
|
||||
<EQUIPMENT ID='H0740-PRTA005-DUMMY' DESCRIPTION='' NICKNAME='롤코터 3호' IP='192.168.113.133' />
|
||||
<EQUIPMENT ID='HS0780-VLMA-1130-000001' DESCRIPTION='' NICKNAME='진공밀착 6호' IP='192.168.113.43' />
|
||||
<EQUIPMENT ID='S0770-VLMA001-DUMMY' DESCRIPTION='' NICKNAME='진공밀착 7호' IP='192.168.113.44' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000003' DESCRIPTION='' NICKNAME='진공밀착 3호' IP='192.168.113.230' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000001' DESCRIPTION='' NICKNAME='진공밀착 2호' IP='192.168.233.187' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000002' DESCRIPTION='' NICKNAME='진공밀착 4호' IP='192.168.233.189' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000004' DESCRIPTION='' NICKNAME='진공밀착 5호' IP='192.168.233.190' />
|
||||
<EQUIPMENT ID='SS0770-VLMA-1130-000005' DESCRIPTION='' NICKNAME='진공밀착 1호' IP='192.168.233.74' />
|
||||
<EQUIPMENT ID='SS0775-VLMA-1130-000001' DESCRIPTION='' NICKNAME='진공밀착 8호' IP='192.168.233.191' />
|
||||
<EQUIPMENT ID='SS0410-PLAA-1130-000001' DESCRIPTION='' NICKNAME='수동플라즈마 1호' IP='192.168.233.28' />
|
||||
<EQUIPMENT ID='H0820-JETA002-DUMMY' DESCRIPTION='' NICKNAME='퍼미스 3호' IP='192.168.113.58' />
|
||||
<EQUIPMENT ID='PS0820-JETA-1110-000002' DESCRIPTION='' NICKNAME='퍼미스 2호' IP='192.168.233.203' />
|
||||
<EQUIPMENT ID='S0820-JETA001-DUMMY' DESCRIPTION='' NICKNAME='퍼미스 1호' IP='192.168.233.202' />
|
||||
<EQUIPMENT ID='SS0930-STRA-1130-000003' DESCRIPTION='' NICKNAME='SR후처리 1호(미사용)' IP='192.168.233.212' />
|
||||
<EQUIPMENT ID='SS0970-STRA-1130-000001' DESCRIPTION='' NICKNAME='S박리 2호' IP='192.168.233.209' />
|
||||
<EQUIPMENT ID='SS0400-OVNA-1130-000006' DESCRIPTION='' NICKNAME='수직베이킹' IP='192.168.233.136' />
|
||||
<EQUIPMENT ID='SS0900-GLDA-1130-000001' DESCRIPTION='' NICKNAME='ENEPIG 1호' IP='192.168.233.210' />
|
||||
<EQUIPMENT ID='HS1260-OSPA-1130-000001' DESCRIPTION='' NICKNAME='OSP 4호' IP='192.168.113.2' />
|
||||
<EQUIPMENT ID='P0410-PLAA003-DUMMY' DESCRIPTION='' NICKNAME='플라즈마 2호' IP='192.168.233.205' />
|
||||
<EQUIPMENT ID='S0410-PLAA001-DUMMY' DESCRIPTION='' NICKNAME='플라즈마 1호' IP='192.168.233.210' />
|
||||
<EQUIPMENT ID='SS0410-PLAA-1130-000003' DESCRIPTION='' NICKNAME='플라즈마 3호' IP='192.168.113.45' />
|
||||
<EQUIPMENT ID='SS0410-PLAA-1130-000004' DESCRIPTION='' NICKNAME='플라즈마 4호' IP='192.168.113.31' />
|
||||
<EQUIPMENT ID='P0890-GLDA003-DUMMY' DESCRIPTION='' NICKNAME='소프트골드 3호' IP='192.168.113.27' />
|
||||
<EQUIPMENT ID='S0890-GLDA001-DUMMY' DESCRIPTION='' NICKNAME='소프트골드 1호' IP='192.168.233.208' />
|
||||
<EQUIPMENT ID='SS0890-GLDA-1130-000001' DESCRIPTION='' NICKNAME='소프트골드 2호' IP='192.168.232.41' />
|
||||
</SERVER>
|
||||
<SERVER ID='EIS.B2'>
|
||||
<EQUIPMENT ID='BA0520-ECPA-1130-000001' DESCRIPTION='' NICKNAME='전기동 1호' IP='192.168.123.2' />
|
||||
<EQUIPMENT ID='BA0520-ECPA-1130-000002' DESCRIPTION='' NICKNAME='전기동 2호' IP='192.168.123.3' />
|
||||
<EQUIPMENT ID='BA0425-PLAA-1130-000001' DESCRIPTION='' NICKNAME='플라즈마[2F] (현상)' IP='192.168.123.7' />
|
||||
<EQUIPMENT ID='BA0438-OVNA-1130-000001' DESCRIPTION='' NICKNAME='베이킹 2호[3F]' IP='192.168.122.2' />
|
||||
<EQUIPMENT ID='BA0660-DFPA-1130-000001' DESCRIPTION='' NICKNAME='전처리 1호' IP='192.168.122.5' />
|
||||
<EQUIPMENT ID='BA0675-DEVA-1130-000001' DESCRIPTION='' NICKNAME='수직현상 1호' IP='192.168.122.17' />
|
||||
<EQUIPMENT ID='BA0723-OVNA-1130-000001' DESCRIPTION='' NICKNAME='베이킹 1호[4F] (고온베이킹)' IP='192.168.122.11' />
|
||||
<EQUIPMENT ID='BA0430-ELPA-1130-000001' DESCRIPTION='' NICKNAME='수평화학동 (IN:각인기/디버링/수평디스미어/화학동)' IP='192.168.123.21' />
|
||||
<EQUIPMENT ID='BA0030-ECHA-1130-000001' DESCRIPTION='' NICKNAME='하프에칭 1호' IP='192.168.122.16' />
|
||||
<EQUIPMENT ID='BA0660-WASA-1130-000001' DESCRIPTION='' NICKNAME='TRAY 세정기' IP='192.168.122.39' />
|
||||
<EQUIPMENT ID='BA0414-PLAA-1130-000001' DESCRIPTION='' NICKNAME='플라즈마[3F] (IN:오토필러)' IP='192.168.123.18' />
|
||||
<EQUIPMENT ID='BA0419-PLAA-1130-000001' DESCRIPTION='' NICKNAME='플라즈마[1F] (표면처리)' IP='192.168.123.80' />
|
||||
<EQUIPMENT ID='BA0366-DSMA-1130-000001' DESCRIPTION='' NICKNAME='수직디스미어 1호 (IN:나노스캔/화학동/VL베이킹)' IP='192.168.123.4' />
|
||||
<EQUIPMENT ID='BA0435-ELPA-1130-000001' DESCRIPTION='' NICKNAME='수직화학동 1호' IP='192.168.123.23' />
|
||||
<EQUIPMENT ID='BA0396-OVNA-1130-000001' DESCRIPTION='' NICKNAME='VL베이킹[2F] (IN:두께측정기)' IP='192.168.122.10' />
|
||||
<EQUIPMENT ID='BA0050-DFPA-1130-000001' DESCRIPTION='' NICKNAME='전처리 2호' IP='192.168.122.4' />
|
||||
<EQUIPMENT ID='BA0074-INSA-1130-000001' DESCRIPTION='' NICKNAME='나노 2호 (3D측정기)' IP='192.168.123.41' />
|
||||
<EQUIPMENT ID='BA0708-INSA-1130-000001' DESCRIPTION='' NICKNAME='나노 1호 (3D측정기)' IP='192.168.123.40' />
|
||||
<EQUIPMENT ID='BA0717-AOIA-1130-000001' DESCRIPTION='' NICKNAME='A3 1호' IP='192.168.123.15' />
|
||||
<EQUIPMENT ID='BA0070-ECHA-1130-000001' DESCRIPTION='' NICKNAME='DES 1호' IP='192.168.123.24' />
|
||||
<EQUIPMENT ID='BA0671-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 1호' IP='192.168.123.5' />
|
||||
<EQUIPMENT ID='BA0061-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 2호' IP='192.168.123.22' />
|
||||
<EQUIPMENT ID='BA0810-STRA-1130-000001' DESCRIPTION='' NICKNAME='M박리/Q에칭' IP='192.168.122.3' />
|
||||
<EQUIPMENT ID='BB0387-OVNA-1130-000001' DESCRIPTION='' NICKNAME='CURE 1호' IP='192.168.193.26' />
|
||||
<EQUIPMENT ID='BB0750-PRTA-1130-000001' DESCRIPTION='' NICKNAME='롤코터 1호' IP='192.168.192.14' />
|
||||
<EQUIPMENT ID='BB0776-VLMA-1130-000002' DESCRIPTION='' NICKNAME='진공밀착 2호' IP='192.168.192.9' />
|
||||
<EQUIPMENT ID='BB0776-VLMA-1130-000003' DESCRIPTION='' NICKNAME='진공밀착 3호' IP='192.168.192.16' />
|
||||
<EQUIPMENT ID='BB0780-VLMA-1130-000001' DESCRIPTION='' NICKNAME='진공밀착 1호' IP='192.168.192.15' />
|
||||
<EQUIPMENT ID='BB0785-PLMA-1130-000001' DESCRIPTION='' NICKNAME='PET밀착 1호' IP='192.168.192.7' />
|
||||
<EQUIPMENT ID='BB0730-WASA-1130-000001' DESCRIPTION='' NICKNAME='TRAY세정기 1호' IP='192.168.192.8' />
|
||||
<EQUIPMENT ID='BB0800-SDPA-1130-000001' DESCRIPTION='' NICKNAME='PSR현상 1호 (IN:CURE/두께측정기)' IP='192.168.192.5' />
|
||||
<EQUIPMENT ID='BB0805-INSA-1130-000001' DESCRIPTION='' NICKNAME='나노 1호' IP='192.168.193.25' />
|
||||
<EQUIPMENT ID='BB0805-INSA-1130-000002' DESCRIPTION='' NICKNAME='표면검사기 1호' IP='192.168.193.6' />
|
||||
<EQUIPMENT ID='BB0603-PREA-1130-000001' DESCRIPTION='' NICKNAME='XBF전처리 1호 (IN:검사기/터널베이킹)' IP='192.168.193.2' />
|
||||
<EQUIPMENT ID='BB0730-PPTA-1130-000001' DESCRIPTION='' NICKNAME='PSR전처리 1호 (IN:검사기)' IP='192.168.192.4' />
|
||||
<EQUIPMENT ID='BB0791-LDIA-1130-000001' DESCRIPTION='' NICKNAME='DI노광 1호 (IN:오토필러)' IP='192.168.193.3' />
|
||||
<EQUIPMENT ID='300106' DESCRIPTION='' NICKNAME='분리합치기' IP='192.168.193.7' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000002' DESCRIPTION='' NICKNAME='LOT분리합체기 A1-1(STATION A1-1)' IP='192.168.123.42' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000003' DESCRIPTION='' NICKNAME='LOT분리합체기 A1-2(STATION A1-1)' IP='192.168.123.42' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000012' DESCRIPTION='' NICKNAME='LOT분리합체기 A2-2(STATION A2-1)' IP='192.168.123.45' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000013' DESCRIPTION='' NICKNAME='LOT분리합체기 A2-3(STATION A2-1)' IP='192.168.123.45' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000019' DESCRIPTION='' NICKNAME='LOT분리합체기 A2-1(4층)' IP='192.168.123.50' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000023' DESCRIPTION='' NICKNAME='LOT분리합체기 A3-1(STATION A3-1)' IP='192.168.123.52' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000024' DESCRIPTION='' NICKNAME='LOT분리합체기 A3-2(STATION A3-1)' IP='192.168.123.52' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000030' DESCRIPTION='' NICKNAME='LOT분리합체기 A4-1(STATION A4-1)' IP='192.168.123.57' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000031' DESCRIPTION='' NICKNAME='LOT분리합체기 A4-2(STATION A4-1)' IP='192.168.123.57' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000002' DESCRIPTION='' NICKNAME='LOT분리합체기 B3-1(STATION B3-1)' IP='192.168.193.11' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000003' DESCRIPTION='' NICKNAME='LOT분리합체기 B3-2(STATION B3-1)' IP='192.168.193.11' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000010' DESCRIPTION='' NICKNAME='LOT분리합체기 B4-2(STATION B4-1)' IP='192.168.193.16' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000011' DESCRIPTION='' NICKNAME='LOT분리합체기 B4-1' IP='192.168.193.17' />
|
||||
<EQUIPMENT ID='BB9001-ATOA-1130-000019' DESCRIPTION='' NICKNAME='LOT분리합체기 B4-3(STATION B4-1)' IP='192.168.193.16' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000007' DESCRIPTION='' NICKNAME='RunSheet 제거기' IP='192.168.123.43' />
|
||||
<EQUIPMENT ID='BA9001-ATOA-1130-000010' DESCRIPTION='' NICKNAME='트레이포장기' IP='192.168.123.63' />
|
||||
<EQUIPMENT ID='BC1259-AFVA-1130-000001' DESCRIPTION='' NICKNAME='A2 (Unit)' IP='127.0.0.1' />
|
||||
<EQUIPMENT ID='DP1147-BBTA-1130-000001' DESCRIPTION='' NICKNAME='BBT(Unit)' IP='192.168.162.5' />
|
||||
<EQUIPMENT ID='DP1170-SMBA-1130-000001' DESCRIPTION='' NICKNAME='SOP_MMP 1호' IP='192.168.163.19' />
|
||||
<EQUIPMENT ID='DP1170-SMBA-1130-000002' DESCRIPTION='' NICKNAME='SOP_MMP 2호' IP='192.168.163.30' />
|
||||
<EQUIPMENT ID='DP1171-SMBA-1130-000002' DESCRIPTION='' NICKNAME='MicroBall 1호' IP='192.168.163.33' />
|
||||
<EQUIPMENT ID='DP1171-SMBA-1130-000003' DESCRIPTION='' NICKNAME='MicroBall 2호' IP='192.168.163.21' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000004' DESCRIPTION='' NICKNAME='코이닝(Quad)' IP='192.168.163.28' />
|
||||
<EQUIPMENT ID='DP1200-COIA-1130-000005' DESCRIPTION='' NICKNAME='코이닝(Unit)' IP='192.168.163.28' />
|
||||
<EQUIPMENT ID='DP1260-OSPA-1130-000004' DESCRIPTION='' NICKNAME='OSP 5호 (프로웨트 社)' IP='127.0.0.1' />
|
||||
<EQUIPMENT ID='DP1155-SWNA-1130-000001' DESCRIPTION='' NICKNAME='Sawing/수세 (Quad)' IP='192.168.163.46' />
|
||||
<EQUIPMENT ID='ChipCounter' DESCRIPTION='' NICKNAME='ChipCounter' IP='172.20.75.21' />
|
||||
</SERVER>
|
||||
</SERVER_LIST>
|
||||
51
DDUtilityApp/FrmMain.Designer.cs
generated
Normal file
51
DDUtilityApp/FrmMain.Designer.cs
generated
Normal file
@@ -0,0 +1,51 @@
|
||||
namespace DDUtilityApp
|
||||
{
|
||||
partial class FrmMain
|
||||
{
|
||||
/// <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.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// FrmMain
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(288, 152);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.Name = "FrmMain";
|
||||
this.Padding = new System.Windows.Forms.Padding(18, 16, 18, 16);
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "FrmMain";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
114
DDUtilityApp/FrmMain.cs
Normal file
114
DDUtilityApp/FrmMain.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DDUtilityApp
|
||||
{
|
||||
public partial class FrmMain : Form
|
||||
{
|
||||
|
||||
public object SelectedObject { get; set; } = null;
|
||||
|
||||
public Dictionary<string, object> Buttons { get; set; } = new Dictionary<string, object>();
|
||||
|
||||
public FrmMain()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.SetLayout();
|
||||
this.SetEventHandler();
|
||||
}
|
||||
|
||||
public FrmMain(Dictionary<string, object> args) : this()
|
||||
{
|
||||
this.Buttons = args;
|
||||
this.SetButtons();
|
||||
}
|
||||
|
||||
protected void SetLayout()
|
||||
{
|
||||
}
|
||||
|
||||
protected void SetEventHandler()
|
||||
{
|
||||
this.Load += FrmMain_Load;
|
||||
}
|
||||
|
||||
private void FrmMain_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.SetButtons();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 동적으로 버튼 생성
|
||||
/// </summary>
|
||||
private void SetButtons()
|
||||
{
|
||||
try
|
||||
{
|
||||
int btnWidth = 200;
|
||||
int btnHeight = 32;
|
||||
int tabIndex = 0;
|
||||
|
||||
List<Button> lstControls = new List<Button>();
|
||||
foreach(string name in this.Buttons.Keys)
|
||||
{
|
||||
object obj = this.Buttons[name];
|
||||
|
||||
Button button = new Button();
|
||||
button.Text = name;
|
||||
button.Size = new Size(btnWidth, btnHeight);
|
||||
button.Dock = DockStyle.Top;
|
||||
button.TabIndex = tabIndex++;
|
||||
button.Tag = obj;
|
||||
button.Click += Button_Click;
|
||||
lstControls.Add(button);
|
||||
}
|
||||
|
||||
Button btnClose = new Button();
|
||||
btnClose.Text = "Close";
|
||||
btnClose.Size = new Size(btnWidth, btnHeight);
|
||||
btnClose.Dock = DockStyle.Top;
|
||||
btnClose.TabIndex = tabIndex++;
|
||||
btnClose.Click += BtnClose_Click;
|
||||
lstControls.Add(btnClose);
|
||||
|
||||
lstControls.Reverse();
|
||||
foreach (Button button in lstControls)
|
||||
{
|
||||
this.Controls.Add(button);
|
||||
|
||||
if (button.Name == "btnClose")
|
||||
this.CancelButton = button;
|
||||
}
|
||||
|
||||
this.AutoSize = true;
|
||||
this.Padding = new Padding(10);
|
||||
this.Size = new Size(this.Width, btnClose.Bounds.Bottom);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
Button button = sender as Button;
|
||||
this.SelectedObject = button.Tag;
|
||||
|
||||
this.DialogResult = DialogResult.OK;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void BtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.DialogResult = DialogResult.Cancel;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
345
DDUtilityApp/FrmMain.resx
Normal file
345
DDUtilityApp/FrmMain.resx
Normal 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>
|
||||
207
DDUtilityApp/GlobalVariable.cs
Normal file
207
DDUtilityApp/GlobalVariable.cs
Normal file
@@ -0,0 +1,207 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Configuration;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
|
||||
namespace DDUtilityApp
|
||||
{
|
||||
|
||||
public class GlobalVariable
|
||||
{
|
||||
|
||||
[ReadOnly(true)]
|
||||
public static GlobalVariable Instance { get; set; } = new GlobalVariable();
|
||||
|
||||
/// <summary>
|
||||
/// 설정정보 파일 경로
|
||||
/// </summary>
|
||||
public string DefaultPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 로그파일 다운로드 경로
|
||||
/// </summary>
|
||||
public string DownloadPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Workflow 다운로드 경로
|
||||
/// </summary>
|
||||
public string WorkflowPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Workflow(Compress) 원본파일 경로 구분
|
||||
/// </summary>
|
||||
public string WorkflowLocation { get; set; } = "Remote";
|
||||
|
||||
/// <summary>
|
||||
/// Workflow(Compress) 원본파일 경로
|
||||
/// </summary>
|
||||
public string WorkflowCompressPath { get; set; }
|
||||
|
||||
public FormStartPosition FormStartPosition { get; set; } = FormStartPosition.CenterScreen;
|
||||
|
||||
public FormWindowState FormWindowState { get; set; } = FormWindowState.Maximized;
|
||||
|
||||
public Point FormLocation { get; set; } = new Point(0, 0);
|
||||
|
||||
public Size FormSize { get; set; } = new Size(1300, 750);
|
||||
|
||||
#region [ LogParser ]
|
||||
|
||||
public string EisParser_GridHeader { get; set; } = string.Empty;
|
||||
|
||||
public string AgvParser_GridHeader { get; set; } = string.Empty;
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ FrmEqSelector ]
|
||||
|
||||
/// <summary>
|
||||
/// EquipmentSelector 설비명 표시 필드. DDUtilityName;Description;MesName;
|
||||
/// </summary>
|
||||
public string FrmEqSelector_NameOrder { get; set; } = "MesName;DDUtilityName;Description;";
|
||||
|
||||
public bool FrmEqSelector_AllEquipment { get; set; } = false;
|
||||
|
||||
public bool FrmEqSelector_UseMesDB { get; set; } = false;
|
||||
|
||||
public string FrmEqSelector_GridEquipmentHeader { get; set; } = string.Empty;
|
||||
|
||||
public bool FrmEqSelector_UseSMB { get; set; } = false;
|
||||
|
||||
#endregion
|
||||
|
||||
public GlobalVariable()
|
||||
{
|
||||
this.LodConfig();
|
||||
this.LoadSetting();
|
||||
|
||||
if (string.IsNullOrEmpty(this.FrmEqSelector_GridEquipmentHeader))
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append($"Facility;");
|
||||
sb.Append($"Line;");
|
||||
sb.Append($"EquipmentID;");
|
||||
sb.Append($"DisplayName;");
|
||||
//sb.Append($"ControlMode;");
|
||||
//sb.Append($"State;");
|
||||
sb.Append($"ModelID;");
|
||||
sb.Append($"Version;");
|
||||
sb.Append($"EquipmentIP;");
|
||||
sb.Append($"Port;");
|
||||
sb.Append($"ServerIP;");
|
||||
sb.Append($"GemSettingID;");
|
||||
sb.Append($"DriverFileName;");
|
||||
this.FrmEqSelector_GridEquipmentHeader = sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
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\";
|
||||
}
|
||||
|
||||
public void LoadSetting()
|
||||
{
|
||||
this.LoadSetting($@"{this.DefaultPath}Setting.xml");
|
||||
}
|
||||
|
||||
private void LoadSetting(string filename)
|
||||
{
|
||||
try
|
||||
{
|
||||
Type type = this.GetType();
|
||||
|
||||
XmlDocument document = new XmlDocument();
|
||||
document.Load(filename);
|
||||
|
||||
PropertyInfo property = null;
|
||||
foreach (XmlNode node in document.GetNodesByName("Property"))
|
||||
{
|
||||
try
|
||||
{
|
||||
property = type.GetProperty(node.Attributes["NAME"].Value);
|
||||
string strValue = node.Attributes["VALUE"].Value;
|
||||
if (property == null) continue;
|
||||
|
||||
object value = null;
|
||||
if (property.PropertyType == typeof(System.Type))
|
||||
{
|
||||
value = Type.GetType(strValue);
|
||||
}
|
||||
else if (property.PropertyType == typeof(Size))
|
||||
{
|
||||
string[] splitValues = strValue.Split(new string[] { "{", "}", "=", "," }, StringSplitOptions.RemoveEmptyEntries);
|
||||
value = new Size(int.Parse(splitValues[1]), int.Parse(splitValues[3]));
|
||||
}
|
||||
else if (property.PropertyType == typeof(Point))
|
||||
{
|
||||
string[] splitValues = strValue.Split(new string[] { "{", "}", "=", "," }, StringSplitOptions.RemoveEmptyEntries);
|
||||
value = new Point(int.Parse(splitValues[1]), int.Parse(splitValues[3]));
|
||||
}
|
||||
else
|
||||
{
|
||||
value = TypeDescriptor.GetConverter(property.PropertyType).ConvertFrom(strValue);
|
||||
}
|
||||
|
||||
property.SetValue(this, value);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal($"{property.Name}", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveSetting()
|
||||
{
|
||||
this.SaveSetting($@"{this.DefaultPath}Setting.xml");
|
||||
}
|
||||
|
||||
private void SaveSetting(string filename)
|
||||
{
|
||||
try
|
||||
{
|
||||
Type type = this.GetType();
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine($"<DDUtility>");
|
||||
sb.AppendLine($" <Properties>");
|
||||
foreach (PropertyInfo property in type.GetProperties())
|
||||
{
|
||||
Attribute attribute = property.GetCustomAttribute(typeof(ReadOnlyAttribute));
|
||||
if (attribute != null && ((ReadOnlyAttribute)attribute).IsReadOnly) continue;
|
||||
|
||||
object value = property.GetValue(this);
|
||||
sb.AppendLine($" <Property NAME='{property.Name}' VALUE='{value}' />");
|
||||
}
|
||||
sb.AppendLine($" </Properties>");
|
||||
sb.AppendLine($"</DDUtility>");
|
||||
|
||||
using (StreamWriter stream = File.CreateText(filename))
|
||||
stream.Write(sb.ToString());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
BIN
DDUtilityApp/IMAGE/CampingFire.ico
Normal file
BIN
DDUtilityApp/IMAGE/CampingFire.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
DDUtilityApp/IMAGE/Fire.ico
Normal file
BIN
DDUtilityApp/IMAGE/Fire.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
BIN
DDUtilityApp/IMAGE/Main.ico
Normal file
BIN
DDUtilityApp/IMAGE/Main.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
BIN
DDUtilityApp/IMAGE/icon03.ico
Normal file
BIN
DDUtilityApp/IMAGE/icon03.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 361 KiB |
BIN
DDUtilityApp/IMAGE/machine.ico
Normal file
BIN
DDUtilityApp/IMAGE/machine.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
148
DDUtilityApp/LOGPARSER/DATA/CompressInformation.cs
Normal file
148
DDUtilityApp/LOGPARSER/DATA/CompressInformation.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
182
DDUtilityApp/LOGPARSER/DATA/EisEquipment.cs
Normal file
182
DDUtilityApp/LOGPARSER/DATA/EisEquipment.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
41
DDUtilityApp/LOGPARSER/DATA/EisEquipmentModelDetails.cs
Normal file
41
DDUtilityApp/LOGPARSER/DATA/EisEquipmentModelDetails.cs
Normal 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; }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
40
DDUtilityApp/LOGPARSER/DATA/LogFile.cs
Normal file
40
DDUtilityApp/LOGPARSER/DATA/LogFile.cs
Normal 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
98
DDUtilityApp/LOGPARSER/DATA/StandardData.cs
Normal file
98
DDUtilityApp/LOGPARSER/DATA/StandardData.cs
Normal 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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
582
DDUtilityApp/LOGPARSER/FrmEqSelector.Designer.cs
generated
Normal file
582
DDUtilityApp/LOGPARSER/FrmEqSelector.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
1055
DDUtilityApp/LOGPARSER/FrmEqSelector.cs
Normal file
1055
DDUtilityApp/LOGPARSER/FrmEqSelector.cs
Normal file
File diff suppressed because it is too large
Load Diff
1504
DDUtilityApp/LOGPARSER/FrmEqSelector.resx
Normal file
1504
DDUtilityApp/LOGPARSER/FrmEqSelector.resx
Normal file
File diff suppressed because it is too large
Load Diff
154
DDUtilityApp/LOGPARSER/FrmFindDialog.Designer.cs
generated
Normal file
154
DDUtilityApp/LOGPARSER/FrmFindDialog.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
136
DDUtilityApp/LOGPARSER/FrmFindDialog.cs
Normal file
136
DDUtilityApp/LOGPARSER/FrmFindDialog.cs
Normal 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/LOGPARSER/FrmFindDialog.resx
Normal file
120
DDUtilityApp/LOGPARSER/FrmFindDialog.resx
Normal 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>
|
||||
391
DDUtilityApp/LOGPARSER/FrmHsmsViewer.Designer.cs
generated
Normal file
391
DDUtilityApp/LOGPARSER/FrmHsmsViewer.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
163
DDUtilityApp/LOGPARSER/FrmHsmsViewer.cs
Normal file
163
DDUtilityApp/LOGPARSER/FrmHsmsViewer.cs
Normal 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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/LOGPARSER/FrmHsmsViewer.resx
Normal file
120
DDUtilityApp/LOGPARSER/FrmHsmsViewer.resx
Normal 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>
|
||||
1105
DDUtilityApp/LOGPARSER/FrmLogParser.Designer.cs
generated
Normal file
1105
DDUtilityApp/LOGPARSER/FrmLogParser.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
1334
DDUtilityApp/LOGPARSER/FrmLogParser.cs
Normal file
1334
DDUtilityApp/LOGPARSER/FrmLogParser.cs
Normal file
File diff suppressed because it is too large
Load Diff
345
DDUtilityApp/LOGPARSER/FrmLogParser.resx
Normal file
345
DDUtilityApp/LOGPARSER/FrmLogParser.resx
Normal 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>
|
||||
587
DDUtilityApp/LOGPARSER/FrmLogParser01.Designer.cs
generated
Normal file
587
DDUtilityApp/LOGPARSER/FrmLogParser01.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
567
DDUtilityApp/LOGPARSER/FrmLogParser01.cs
Normal file
567
DDUtilityApp/LOGPARSER/FrmLogParser01.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
132
DDUtilityApp/LOGPARSER/FrmLogParser01.resx
Normal file
132
DDUtilityApp/LOGPARSER/FrmLogParser01.resx
Normal 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>
|
||||
800
DDUtilityApp/LOGPARSER/FrmLogParser02.Designer.cs
generated
Normal file
800
DDUtilityApp/LOGPARSER/FrmLogParser02.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
726
DDUtilityApp/LOGPARSER/FrmLogParser02.cs
Normal file
726
DDUtilityApp/LOGPARSER/FrmLogParser02.cs
Normal 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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
6293
DDUtilityApp/LOGPARSER/FrmLogParser02.resx
Normal file
6293
DDUtilityApp/LOGPARSER/FrmLogParser02.resx
Normal file
File diff suppressed because it is too large
Load Diff
1012
DDUtilityApp/LOGPARSER/FrmLogParser03.Designer.cs
generated
Normal file
1012
DDUtilityApp/LOGPARSER/FrmLogParser03.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
1112
DDUtilityApp/LOGPARSER/FrmLogParser03.cs
Normal file
1112
DDUtilityApp/LOGPARSER/FrmLogParser03.cs
Normal file
File diff suppressed because it is too large
Load Diff
6296
DDUtilityApp/LOGPARSER/FrmLogParser03.resx
Normal file
6296
DDUtilityApp/LOGPARSER/FrmLogParser03.resx
Normal file
File diff suppressed because it is too large
Load Diff
247
DDUtilityApp/LOGPARSER/FrmLogParser04.Designer.cs
generated
Normal file
247
DDUtilityApp/LOGPARSER/FrmLogParser04.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
20
DDUtilityApp/LOGPARSER/FrmLogParser04.cs
Normal file
20
DDUtilityApp/LOGPARSER/FrmLogParser04.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
DDUtilityApp/LOGPARSER/FrmLogParser04.resx
Normal file
120
DDUtilityApp/LOGPARSER/FrmLogParser04.resx
Normal 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>
|
||||
198
DDUtilityApp/LOGPARSER/FrmMessageReplyTime.Designer.cs
generated
Normal file
198
DDUtilityApp/LOGPARSER/FrmMessageReplyTime.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
275
DDUtilityApp/LOGPARSER/FrmMessageReplyTime.cs
Normal file
275
DDUtilityApp/LOGPARSER/FrmMessageReplyTime.cs
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
120
DDUtilityApp/LOGPARSER/FrmMessageReplyTime.resx
Normal file
120
DDUtilityApp/LOGPARSER/FrmMessageReplyTime.resx
Normal 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>
|
||||
309
DDUtilityApp/LOGPARSER/FrmMessageReplyTime1.Designer.cs
generated
Normal file
309
DDUtilityApp/LOGPARSER/FrmMessageReplyTime1.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
579
DDUtilityApp/LOGPARSER/FrmMessageReplyTime1.cs
Normal file
579
DDUtilityApp/LOGPARSER/FrmMessageReplyTime1.cs
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/LOGPARSER/FrmMessageReplyTime1.resx
Normal file
120
DDUtilityApp/LOGPARSER/FrmMessageReplyTime1.resx
Normal 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>
|
||||
75
DDUtilityApp/LOGPARSER/FrmSecsDefine.Designer.cs
generated
Normal file
75
DDUtilityApp/LOGPARSER/FrmSecsDefine.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
61
DDUtilityApp/LOGPARSER/FrmSecsDefine.cs
Normal file
61
DDUtilityApp/LOGPARSER/FrmSecsDefine.cs
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/LOGPARSER/FrmSecsDefine.resx
Normal file
120
DDUtilityApp/LOGPARSER/FrmSecsDefine.resx
Normal 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>
|
||||
267
DDUtilityApp/LOGPARSER/FrmWorkFlow.Designer.cs
generated
Normal file
267
DDUtilityApp/LOGPARSER/FrmWorkFlow.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
||||
256
DDUtilityApp/LOGPARSER/FrmWorkFlow.cs
Normal file
256
DDUtilityApp/LOGPARSER/FrmWorkFlow.cs
Normal 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
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/LOGPARSER/FrmWorkFlow.resx
Normal file
120
DDUtilityApp/LOGPARSER/FrmWorkFlow.resx
Normal 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>
|
||||
140
DDUtilityApp/LOGPARSER/GemSetting.cs
Normal file
140
DDUtilityApp/LOGPARSER/GemSetting.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
278
DDUtilityApp/LOGPARSER/LogServer.cs
Normal file
278
DDUtilityApp/LOGPARSER/LogServer.cs
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
1110
DDUtilityApp/LOGPARSER/PARSER/AgvParser.cs
Normal file
1110
DDUtilityApp/LOGPARSER/PARSER/AgvParser.cs
Normal file
File diff suppressed because it is too large
Load Diff
1299
DDUtilityApp/LOGPARSER/PARSER/EisParser.cs
Normal file
1299
DDUtilityApp/LOGPARSER/PARSER/EisParser.cs
Normal file
File diff suppressed because it is too large
Load Diff
1691
DDUtilityApp/LOGPARSER/PARSER/EisParser0.cs
Normal file
1691
DDUtilityApp/LOGPARSER/PARSER/EisParser0.cs
Normal file
File diff suppressed because it is too large
Load Diff
171
DDUtilityApp/LOGPARSER/PARSER/LogParser.cs
Normal file
171
DDUtilityApp/LOGPARSER/PARSER/LogParser.cs
Normal 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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
184
DDUtilityApp/MONGO/FDCMongoDB.cs
Normal file
184
DDUtilityApp/MONGO/FDCMongoDB.cs
Normal file
@@ -0,0 +1,184 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using JWH.DATA;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace JWH.MONGODB
|
||||
{
|
||||
public class FDCMongoDB
|
||||
{
|
||||
|
||||
public static string ConnectionString { get; set; } = "mongodb://192.168.8.181:27001";
|
||||
|
||||
public static string DatabaseName { get; set; } = "fdc";
|
||||
|
||||
public static List<BsonDocument> GetListCollection()
|
||||
{
|
||||
MongoClient client = new MongoClient(ConnectionString);
|
||||
IMongoDatabase database = client.GetDatabase(DatabaseName);
|
||||
List<BsonDocument> item = database.ListCollectionsAsync().Result.ToListAsync<BsonDocument>().Result;
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
public static List<TraceCollection> GetCollectionData(string collectionName, DateTime dtStart, DateTime dtEnd, TraceCollection condition = null)
|
||||
{
|
||||
MongoClient client = new MongoClient(ConnectionString);
|
||||
IMongoDatabase database = client.GetDatabase(DatabaseName);
|
||||
IMongoCollection<TraceCollection> collection = database.GetCollection<TraceCollection>(collectionName);
|
||||
|
||||
// # ALL Data
|
||||
//var lst = collection.Find(_ => true).ToList();
|
||||
// # Use BsonDocument
|
||||
//var filter = new BsonDocument("LotID", "13089570006B");
|
||||
// # Use Builders.Filter
|
||||
//var filterBuilder = Builders<TraceCollection>.Filter;
|
||||
//var filter = filterBuilder.Eq(x => x.LotID, "13109360026B");
|
||||
|
||||
FilterDefinitionBuilder<TraceCollection> filterBuilder = Builders<TraceCollection>.Filter;
|
||||
FilterDefinition<TraceCollection> filter = filterBuilder.Gte(x => x.EVENTTIME, dtStart) & filterBuilder.Lt(x => x.EVENTTIME, dtEnd);
|
||||
if (condition != null)
|
||||
{
|
||||
string[] SkipPropertys = new string[] { "_id", "EVENTTIME" };
|
||||
foreach (PropertyInfo property in condition.GetType().GetProperties())
|
||||
{
|
||||
object value = property.GetValue(condition);
|
||||
if (value != null)
|
||||
{
|
||||
if (property.Name.Equals("LotID")) filter &= filterBuilder.Eq(x => x.LotID, value);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
List<TraceCollection> document = collection.Find(filter).ToList();
|
||||
|
||||
return document;
|
||||
}
|
||||
|
||||
public static bool GetCollectionSize_Flag = false;
|
||||
|
||||
public static async void GetCollectionSize(string filename, Action<string> complete, params object[] controls)
|
||||
{
|
||||
GetCollectionSize_Flag = true;
|
||||
StreamWriter writer = null;
|
||||
BsonDocument document = null;
|
||||
try
|
||||
{
|
||||
ProgressBar progressBar = null;
|
||||
Control textBox = null;
|
||||
foreach(object ctrl in controls)
|
||||
{
|
||||
if (ctrl.GetType() == typeof(ProgressBar)) progressBar = (ProgressBar)ctrl;
|
||||
if (ctrl.GetType() == typeof(Label)) textBox = (Label)ctrl;
|
||||
if (ctrl.GetType() == typeof(TextBox)) textBox = (TextBox)ctrl;
|
||||
}
|
||||
|
||||
MongoClient client = new MongoClient(ConnectionString);
|
||||
IMongoDatabase database = client.GetDatabase(DatabaseName);
|
||||
List<BsonDocument> collections = database.ListCollectionsAsync().Result.ToListAsync<BsonDocument>().Result;
|
||||
|
||||
if (progressBar != null)
|
||||
{
|
||||
progressBar.Maximum = collections.Count;
|
||||
progressBar.Minimum = 0;
|
||||
progressBar.Value = 0;
|
||||
}
|
||||
|
||||
string[] elementNames = new string[] { "size", "count", "avgObjSize", "storageSize", "freeStorageSize", "totalIndexSize", "totalSize" };
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append($"EQ, SVID, name, ");
|
||||
foreach (string elementName in elementNames) sb.Append($"{elementName}, ");
|
||||
|
||||
writer = new StreamWriter(filename);
|
||||
writer.WriteLine(sb.ToString());
|
||||
for (int i = 0; i < collections.Count; i++)
|
||||
{
|
||||
BsonDocument collection = collections[i];
|
||||
string collectionName = collection.GetElement("name").Value.ToString();
|
||||
var command = new JsonCommand<BsonDocument>("{collstats:\"" + collectionName + "\"}");
|
||||
document = await database.RunCommandAsync(command);
|
||||
|
||||
string[] elementValues = new string[] { "", "", "", "", "", "", "" };
|
||||
BsonElement[] elements = document.ToArray();
|
||||
foreach(BsonElement element in elements)
|
||||
{
|
||||
for (int j = 0; j < elementNames.Length; j++)
|
||||
{
|
||||
if (element.Name == elementNames[j])
|
||||
{
|
||||
elementValues[j] = element.Value.ToString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sb.Clear();
|
||||
string[] splitName = collectionName.Split('.');
|
||||
if (splitName.Length == 2) sb.Append($"{splitName[0]}, {splitName[1]}, {collectionName}, ");
|
||||
else sb.Append($", , {collectionName},");
|
||||
foreach (string value in elementValues) sb.Append($"{value}, ");
|
||||
writer.WriteLine(sb.ToString());
|
||||
|
||||
if (progressBar != null) progressBar.Value = i;
|
||||
if (textBox != null) textBox.Text = $"{i.ToString("#,##0")} / {collections.Count.ToString("#,##0")}"; ;
|
||||
|
||||
if (!GetCollectionSize_Flag) break;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
filename = string.Empty;
|
||||
}
|
||||
finally
|
||||
{
|
||||
FDCMongoDB.GetCollectionSize_Flag = false;
|
||||
if (writer != null) writer.Close();
|
||||
complete(filename);
|
||||
}
|
||||
}
|
||||
|
||||
public class TraceCollection : DataTableBase
|
||||
{
|
||||
|
||||
public ObjectId _id { get; set; }
|
||||
|
||||
public List<object> LotList { get; set; }
|
||||
|
||||
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
|
||||
public DateTime EVENTTIME { get; set; }
|
||||
|
||||
public string VIDName { get; set; }
|
||||
|
||||
public object Value { get; set; }
|
||||
|
||||
public string LotID { get; set; }
|
||||
|
||||
public string MaterialID { get; set; }
|
||||
|
||||
public string ProductID { get; set; }
|
||||
|
||||
public object UnitNO { get; set; }
|
||||
|
||||
public string Recipe { get; set; }
|
||||
|
||||
public string ProcessID { get; set; }
|
||||
|
||||
public string VORNR { get; set; }
|
||||
|
||||
public string UnitState { get; set; }
|
||||
|
||||
public string Sign { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
401
DDUtilityApp/MONGO/FrmFDCMongo.Designer.cs
generated
Normal file
401
DDUtilityApp/MONGO/FrmFDCMongo.Designer.cs
generated
Normal file
@@ -0,0 +1,401 @@
|
||||
namespace DDUtilityApp.MONGO
|
||||
{
|
||||
partial class FrmFDCMongo
|
||||
{
|
||||
/// <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 tableViewDefinition4 = new Telerik.WinControls.UI.TableViewDefinition();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnGetCollectionSizeStart = new Telerik.WinControls.UI.RadButton();
|
||||
this.tboxEquipmentID = new Telerik.WinControls.UI.RadTextBox();
|
||||
this.btnEquipmentFind = new Telerik.WinControls.UI.RadButton();
|
||||
this.tree = new Telerik.WinControls.UI.RadTreeView();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.radLabel2 = new Telerik.WinControls.UI.RadLabel();
|
||||
this.radLabel1 = new Telerik.WinControls.UI.RadLabel();
|
||||
this.btnRefresh = new Telerik.WinControls.UI.RadButton();
|
||||
this.dpEnd = new Telerik.WinControls.UI.RadDateTimePicker();
|
||||
this.dpStart = new Telerik.WinControls.UI.RadDateTimePicker();
|
||||
this.statusStrip = new Telerik.WinControls.UI.RadStatusStrip();
|
||||
this.ssName = new Telerik.WinControls.UI.RadLabelElement();
|
||||
this.ssStatus01 = new Telerik.WinControls.UI.RadLabelElement();
|
||||
this.ssStatus02 = new Telerik.WinControls.UI.RadLabelElement();
|
||||
this.ssMessage = new Telerik.WinControls.UI.RadLabelElement();
|
||||
this.pbarCollectionSize = new System.Windows.Forms.ProgressBar();
|
||||
this.lblProgressValue = new System.Windows.Forms.Label();
|
||||
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();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
|
||||
this.splitContainer3.Panel1.SuspendLayout();
|
||||
this.splitContainer3.Panel2.SuspendLayout();
|
||||
this.splitContainer3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnGetCollectionSizeStart)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tboxEquipmentID)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnEquipmentFind)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tree)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.radLabel2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.radLabel1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnRefresh)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dpEnd)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dpStart)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.statusStrip)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grid)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).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(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.panel1.Size = new System.Drawing.Size(800, 424);
|
||||
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, 3);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.splitContainer3);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(794, 418);
|
||||
this.splitContainer1.SplitterDistance = 375;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// splitContainer3
|
||||
//
|
||||
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer3.IsSplitterFixed = true;
|
||||
this.splitContainer3.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer3.Name = "splitContainer3";
|
||||
this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer3.Panel1
|
||||
//
|
||||
this.splitContainer3.Panel1.Controls.Add(this.lblProgressValue);
|
||||
this.splitContainer3.Panel1.Controls.Add(this.pbarCollectionSize);
|
||||
this.splitContainer3.Panel1.Controls.Add(this.btnGetCollectionSizeStart);
|
||||
this.splitContainer3.Panel1.Controls.Add(this.tboxEquipmentID);
|
||||
this.splitContainer3.Panel1.Controls.Add(this.btnEquipmentFind);
|
||||
//
|
||||
// splitContainer3.Panel2
|
||||
//
|
||||
this.splitContainer3.Panel2.Controls.Add(this.tree);
|
||||
this.splitContainer3.Size = new System.Drawing.Size(375, 418);
|
||||
this.splitContainer3.SplitterDistance = 75;
|
||||
this.splitContainer3.TabIndex = 1;
|
||||
//
|
||||
// btnGetCollectionSizeStart
|
||||
//
|
||||
this.btnGetCollectionSizeStart.Location = new System.Drawing.Point(298, 34);
|
||||
this.btnGetCollectionSizeStart.Name = "btnGetCollectionSizeStart";
|
||||
this.btnGetCollectionSizeStart.Size = new System.Drawing.Size(73, 21);
|
||||
this.btnGetCollectionSizeStart.TabIndex = 2;
|
||||
this.btnGetCollectionSizeStart.Text = "Start";
|
||||
//
|
||||
// tboxEquipmentID
|
||||
//
|
||||
this.tboxEquipmentID.Location = new System.Drawing.Point(10, 9);
|
||||
this.tboxEquipmentID.Name = "tboxEquipmentID";
|
||||
this.tboxEquipmentID.Size = new System.Drawing.Size(282, 20);
|
||||
this.tboxEquipmentID.TabIndex = 1;
|
||||
//
|
||||
// btnEquipmentFind
|
||||
//
|
||||
this.btnEquipmentFind.Location = new System.Drawing.Point(298, 8);
|
||||
this.btnEquipmentFind.Name = "btnEquipmentFind";
|
||||
this.btnEquipmentFind.Size = new System.Drawing.Size(73, 21);
|
||||
this.btnEquipmentFind.TabIndex = 0;
|
||||
this.btnEquipmentFind.Text = "Find";
|
||||
//
|
||||
// tree
|
||||
//
|
||||
this.tree.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tree.Location = new System.Drawing.Point(0, 0);
|
||||
this.tree.Name = "tree";
|
||||
this.tree.Size = new System.Drawing.Size(375, 339);
|
||||
this.tree.SpacingBetweenNodes = -1;
|
||||
this.tree.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.panel2);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.grid);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(415, 418);
|
||||
this.splitContainer2.SplitterDistance = 75;
|
||||
this.splitContainer2.TabIndex = 2;
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Controls.Add(this.radLabel2);
|
||||
this.panel2.Controls.Add(this.radLabel1);
|
||||
this.panel2.Controls.Add(this.btnRefresh);
|
||||
this.panel2.Controls.Add(this.dpEnd);
|
||||
this.panel2.Controls.Add(this.dpStart);
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel2.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(415, 75);
|
||||
this.panel2.TabIndex = 0;
|
||||
//
|
||||
// radLabel2
|
||||
//
|
||||
this.radLabel2.AutoSize = false;
|
||||
this.radLabel2.Location = new System.Drawing.Point(3, 37);
|
||||
this.radLabel2.Name = "radLabel2";
|
||||
this.radLabel2.Size = new System.Drawing.Size(100, 18);
|
||||
this.radLabel2.TabIndex = 8;
|
||||
this.radLabel2.Text = "End Date : ";
|
||||
this.radLabel2.TextAlignment = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// radLabel1
|
||||
//
|
||||
this.radLabel1.AutoSize = false;
|
||||
this.radLabel1.Location = new System.Drawing.Point(3, 11);
|
||||
this.radLabel1.Name = "radLabel1";
|
||||
this.radLabel1.Size = new System.Drawing.Size(100, 18);
|
||||
this.radLabel1.TabIndex = 7;
|
||||
this.radLabel1.Text = "Start Date : ";
|
||||
this.radLabel1.TextAlignment = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// btnRefresh
|
||||
//
|
||||
this.btnRefresh.Location = new System.Drawing.Point(294, 10);
|
||||
this.btnRefresh.Name = "btnRefresh";
|
||||
this.btnRefresh.Size = new System.Drawing.Size(110, 20);
|
||||
this.btnRefresh.TabIndex = 4;
|
||||
this.btnRefresh.Text = "Refresh";
|
||||
//
|
||||
// dpEnd
|
||||
//
|
||||
this.dpEnd.Format = System.Windows.Forms.DateTimePickerFormat.Short;
|
||||
this.dpEnd.Location = new System.Drawing.Point(109, 36);
|
||||
this.dpEnd.Name = "dpEnd";
|
||||
this.dpEnd.Size = new System.Drawing.Size(179, 20);
|
||||
this.dpEnd.TabIndex = 2;
|
||||
this.dpEnd.TabStop = false;
|
||||
this.dpEnd.Text = "2024-03-28";
|
||||
this.dpEnd.Value = new System.DateTime(2024, 3, 28, 11, 24, 49, 907);
|
||||
//
|
||||
// dpStart
|
||||
//
|
||||
this.dpStart.Location = new System.Drawing.Point(109, 10);
|
||||
this.dpStart.Name = "dpStart";
|
||||
this.dpStart.Size = new System.Drawing.Size(179, 20);
|
||||
this.dpStart.TabIndex = 0;
|
||||
this.dpStart.TabStop = false;
|
||||
this.dpStart.Text = "2024년 3월 28일 목요일";
|
||||
this.dpStart.Value = new System.DateTime(2024, 3, 28, 11, 24, 49, 907);
|
||||
//
|
||||
// statusStrip
|
||||
//
|
||||
this.statusStrip.Items.AddRange(new Telerik.WinControls.RadItem[] {
|
||||
this.ssName,
|
||||
this.ssStatus01,
|
||||
this.ssStatus02,
|
||||
this.ssMessage});
|
||||
this.statusStrip.Location = new System.Drawing.Point(0, 424);
|
||||
this.statusStrip.Name = "statusStrip";
|
||||
this.statusStrip.Size = new System.Drawing.Size(800, 26);
|
||||
this.statusStrip.TabIndex = 1;
|
||||
//
|
||||
// ssName
|
||||
//
|
||||
this.ssName.Alignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.ssName.Name = "ssName";
|
||||
this.statusStrip.SetSpring(this.ssName, false);
|
||||
this.ssName.Text = "Collection";
|
||||
this.ssName.TextWrap = true;
|
||||
//
|
||||
// ssStatus01
|
||||
//
|
||||
this.ssStatus01.Alignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.ssStatus01.BorderHighlightThickness = 2;
|
||||
this.ssStatus01.BorderVisible = false;
|
||||
this.ssStatus01.Name = "ssStatus01";
|
||||
this.ssStatus01.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.statusStrip.SetSpring(this.ssStatus01, false);
|
||||
this.ssStatus01.Text = "수집시간";
|
||||
this.ssStatus01.TextWrap = true;
|
||||
//
|
||||
// ssStatus02
|
||||
//
|
||||
this.ssStatus02.Alignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.ssStatus02.BorderVisible = false;
|
||||
this.ssStatus02.FlipText = false;
|
||||
this.ssStatus02.Name = "ssStatus02";
|
||||
this.statusStrip.SetSpring(this.ssStatus02, false);
|
||||
this.ssStatus02.Text = "출력시간";
|
||||
this.ssStatus02.TextWrap = true;
|
||||
//
|
||||
// ssMessage
|
||||
//
|
||||
this.ssMessage.Alignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.ssMessage.Name = "ssMessage";
|
||||
this.statusStrip.SetSpring(this.ssMessage, false);
|
||||
this.ssMessage.Text = "";
|
||||
this.ssMessage.TextWrap = true;
|
||||
//
|
||||
// pbarCollectionSize
|
||||
//
|
||||
this.pbarCollectionSize.Location = new System.Drawing.Point(10, 34);
|
||||
this.pbarCollectionSize.Name = "pbarCollectionSize";
|
||||
this.pbarCollectionSize.Size = new System.Drawing.Size(282, 21);
|
||||
this.pbarCollectionSize.TabIndex = 3;
|
||||
//
|
||||
// lblProgressValue
|
||||
//
|
||||
this.lblProgressValue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblProgressValue.BackColor = System.Drawing.Color.Transparent;
|
||||
this.lblProgressValue.Location = new System.Drawing.Point(99, 57);
|
||||
this.lblProgressValue.Name = "lblProgressValue";
|
||||
this.lblProgressValue.Size = new System.Drawing.Size(194, 18);
|
||||
this.lblProgressValue.TabIndex = 4;
|
||||
this.lblProgressValue.Text = "label1";
|
||||
this.lblProgressValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// grid
|
||||
//
|
||||
this.grid.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
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 = tableViewDefinition4;
|
||||
this.grid.Name = "grid";
|
||||
//
|
||||
//
|
||||
//
|
||||
this.grid.RootElement.ControlBounds = new System.Drawing.Rectangle(0, 0, 240, 150);
|
||||
this.grid.Size = new System.Drawing.Size(415, 339);
|
||||
this.grid.TabIndex = 1;
|
||||
//
|
||||
// FrmFDCMongo
|
||||
//
|
||||
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.Controls.Add(this.statusStrip);
|
||||
this.Name = "FrmFDCMongo";
|
||||
this.Text = "FrmFDC";
|
||||
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.splitContainer3.Panel1.ResumeLayout(false);
|
||||
this.splitContainer3.Panel1.PerformLayout();
|
||||
this.splitContainer3.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
|
||||
this.splitContainer3.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnGetCollectionSizeStart)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tboxEquipmentID)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnEquipmentFind)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tree)).EndInit();
|
||||
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.panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.radLabel2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.radLabel1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnRefresh)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dpEnd)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dpStart)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.statusStrip)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grid.MasterTemplate)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grid)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private Telerik.WinControls.UI.RadTreeView tree;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private JWH.CONTROL.GridViewEx grid;
|
||||
private System.Windows.Forms.SplitContainer splitContainer3;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private Telerik.WinControls.UI.RadDateTimePicker dpEnd;
|
||||
private Telerik.WinControls.UI.RadDateTimePicker dpStart;
|
||||
private Telerik.WinControls.UI.RadButton btnRefresh;
|
||||
private Telerik.WinControls.UI.RadStatusStrip statusStrip;
|
||||
private Telerik.WinControls.UI.RadLabelElement ssName;
|
||||
private Telerik.WinControls.UI.RadLabelElement ssStatus01;
|
||||
private Telerik.WinControls.UI.RadLabelElement ssStatus02;
|
||||
private Telerik.WinControls.UI.RadLabelElement ssMessage;
|
||||
private Telerik.WinControls.UI.RadTextBox tboxEquipmentID;
|
||||
private Telerik.WinControls.UI.RadButton btnEquipmentFind;
|
||||
private Telerik.WinControls.UI.RadLabel radLabel2;
|
||||
private Telerik.WinControls.UI.RadLabel radLabel1;
|
||||
private Telerik.WinControls.UI.RadButton btnGetCollectionSizeStart;
|
||||
private System.Windows.Forms.ProgressBar pbarCollectionSize;
|
||||
private System.Windows.Forms.Label lblProgressValue;
|
||||
}
|
||||
}
|
||||
387
DDUtilityApp/MONGO/FrmFDCMongo.cs
Normal file
387
DDUtilityApp/MONGO/FrmFDCMongo.cs
Normal file
@@ -0,0 +1,387 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Windows.Forms;
|
||||
using JWH;
|
||||
using JWH.MONGODB;
|
||||
using MongoDB.Bson;
|
||||
using Telerik.WinControls.Data;
|
||||
using Telerik.WinControls.UI;
|
||||
using static JWH.MONGODB.FDCMongoDB;
|
||||
|
||||
namespace DDUtilityApp.MONGO
|
||||
{
|
||||
|
||||
public partial class FrmFDCMongo : Form
|
||||
{
|
||||
|
||||
public string EquipmentID { get; set; } = string.Empty;
|
||||
|
||||
public string VID { get; set; } = string.Empty;
|
||||
|
||||
public DateTime DateTimeStart { get; set; } = DateTime.Now.Date;
|
||||
|
||||
public DateTime DateTimeEnd { get; set; } = DateTime.Now.AddDays(1).Date;
|
||||
|
||||
public FrmFDCMongo()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.SetLayout();
|
||||
this.SetEventHandler();
|
||||
}
|
||||
|
||||
private void SetLayout()
|
||||
{
|
||||
this.Text = $"FDC MongoDB";
|
||||
|
||||
this.dpStart.CustomFormat = "yyyy-MM-dd HH:mm";
|
||||
this.dpStart.Format = DateTimePickerFormat.Custom;
|
||||
this.dpStart.Value = this.DateTimeStart;
|
||||
this.dpEnd.CustomFormat = "yyyy-MM-dd HH:mm";
|
||||
this.dpEnd.Format = DateTimePickerFormat.Custom;
|
||||
this.dpEnd.Value = this.DateTimeEnd;
|
||||
this.pbarCollectionSize.Visible = false;
|
||||
this.lblProgressValue.Visible = false;
|
||||
|
||||
this.tree.ShowLines = true;
|
||||
this.tree.ShowRootLines = true;
|
||||
|
||||
this.GridSetting();
|
||||
}
|
||||
|
||||
private void SetEventHandler()
|
||||
{
|
||||
this.Shown += this.FrmFDC_Shown;
|
||||
|
||||
this.tboxEquipmentID.KeyDown += this.TboxEquipmentID_KeyDown;
|
||||
this.btnEquipmentFind.Click += this.BtnEquipmentFind_Click;
|
||||
this.dpStart.ValueChanged += this.DpStart_ValueChanged;
|
||||
this.dpEnd.ValueChanged += this.DpEnd_ValueChanged;
|
||||
this.btnRefresh.Click += this.BtnRefresh_Click;
|
||||
this.btnGetCollectionSizeStart.Click += this.BtnGetCollectionSizeStart_Click;
|
||||
|
||||
this.tree.SelectedNodeChanged += this.Tree_SelectedNodeChanged;
|
||||
}
|
||||
|
||||
#region [ Event ] =====================================================
|
||||
|
||||
private void FrmFDC_Shown(object sender, EventArgs e)
|
||||
{
|
||||
this.SetTree();
|
||||
if (string.IsNullOrEmpty(this.EquipmentID)) return;
|
||||
|
||||
this.tboxEquipmentID.Text = this.EquipmentID;
|
||||
this.dpStart.Value = this.DateTimeStart;
|
||||
this.dpEnd.Value = this.DateTimeEnd;
|
||||
this.BtnEquipmentFind_Click(null, null);
|
||||
}
|
||||
|
||||
private void DpStart_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.DateTimeStart = this.dpStart.Value;
|
||||
}
|
||||
|
||||
private void DpEnd_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.DateTimeEnd = this.dpEnd.Value;
|
||||
}
|
||||
|
||||
private void BtnRefresh_Click(object sender, EventArgs e)
|
||||
{
|
||||
DateTime timeStart = DateTime.Now;
|
||||
List<TraceCollection> data = null;
|
||||
try
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
this.ssName.Text = "GRID";
|
||||
|
||||
DateTime dtStart = this.DateTimeStart;
|
||||
DateTime dtEnd = this.DateTimeEnd;
|
||||
data = FDCMongoDB.GetCollectionData($"{this.EquipmentID}.{this.VID}", dtStart, dtEnd);
|
||||
timeStart = this.StatusLabelDisplay(this.ssStatus01, "수집", timeStart, DateTime.Now);
|
||||
|
||||
this.grid.AutoBinding(data.ToArray());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.StatusLabelDisplay(this.ssStatus02, "출력", timeStart, DateTime.Now);
|
||||
this.ssMessage.Text = $"RowCount is {data?.Count.ToString("#,##0")}";
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private void TboxEquipmentID_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
this.BtnEquipmentFind_Click(null, null);
|
||||
}
|
||||
|
||||
private void BtnEquipmentFind_Click(object sender, EventArgs e)
|
||||
{
|
||||
RadTreeNode node = this.tree.Find(x => x.Name.StartsWith(this.tboxEquipmentID.Text));
|
||||
if (node != null)
|
||||
{
|
||||
this.tree.ClearSelection();
|
||||
node.Selected = true;
|
||||
node.ExpandAll();
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnGetCollectionSizeStart_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (FDCMongoDB.GetCollectionSize_Flag)
|
||||
{
|
||||
this.GetCollectionSize_Complete();
|
||||
return;
|
||||
}
|
||||
|
||||
SaveFileDialog dlg = new SaveFileDialog();
|
||||
dlg.Title = "FDC Collection Infomation";
|
||||
dlg.Filter = "CSV|*.csv";
|
||||
dlg.FilterIndex = 0;
|
||||
dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
|
||||
dlg.FileName = $"FDC_Collection-{DateTime.Now.ToString("yyyyMMddHHmm")}.csv";
|
||||
if (dlg.ShowDialog() != DialogResult.OK) return;
|
||||
|
||||
this.lblProgressValue.Text = "";
|
||||
this.lblProgressValue.Visible = true;
|
||||
this.pbarCollectionSize.Visible = true;
|
||||
this.btnGetCollectionSizeStart.Text = "Stop";
|
||||
FDCMongoDB.GetCollectionSize(dlg.FileName, this.GetCollectionSize_Complete, this.pbarCollectionSize, this.lblProgressValue);
|
||||
}
|
||||
|
||||
private void GetCollectionSize_Complete(string filename = "")
|
||||
{
|
||||
FDCMongoDB.GetCollectionSize_Flag = false;
|
||||
this.btnGetCollectionSizeStart.Text = "Start";
|
||||
this.pbarCollectionSize.Visible = false;
|
||||
this.lblProgressValue.Visible = false;
|
||||
|
||||
if (string.IsNullOrEmpty(filename)) return;
|
||||
Process.Start(filename);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Method ] ====================================================
|
||||
|
||||
private DateTime StatusLabelDisplay(RadLabelElement control, string name, DateTime start, DateTime end)
|
||||
{
|
||||
TimeSpan span = end.Subtract(start);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (!string.IsNullOrEmpty(name)) sb.Append($"{name} ");
|
||||
sb.Append($"[{span.Seconds}.{span.Milliseconds.ToString("D3")}sec] ");
|
||||
sb.Append($"{start.ToString("HH:mm:ss.fff")}~{end.ToString("HH:mm:ss.fff")}");
|
||||
control.Text = sb.ToString();
|
||||
|
||||
return end;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Tree: Equipment & VID List ] ================================
|
||||
|
||||
private void SetTree()
|
||||
{
|
||||
DateTime timeStart = DateTime.Now;
|
||||
SortedDictionary<string, List<string>> dicEquipment = new SortedDictionary<string, List<string>>();
|
||||
try
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
this.ssName.Text = "TREE";
|
||||
|
||||
timeStart = DateTime.Now;
|
||||
List<BsonDocument> lst = FDCMongoDB.GetListCollection();
|
||||
|
||||
timeStart = this.StatusLabelDisplay(this.ssStatus01, "수집", timeStart, DateTime.Now);
|
||||
foreach (BsonDocument doc in lst)
|
||||
{
|
||||
string[] values = doc.GetElement("name").Value.ToString().Split(new char[] { '=', '.' });
|
||||
if (values.Length != 2)
|
||||
{
|
||||
XLogger.Instance.Error($"Split Fail: {doc.GetElement(0)}");
|
||||
continue;
|
||||
}
|
||||
string name = values[0];
|
||||
string vid = values[1];
|
||||
|
||||
if (!dicEquipment.ContainsKey(name))
|
||||
dicEquipment[name] = new List<string>();
|
||||
dicEquipment[name].Add(vid);
|
||||
}
|
||||
|
||||
DataTable dt = this.GetMesEquipment();
|
||||
this.tree.Nodes.Clear();
|
||||
foreach (string equipmentID in dicEquipment.Keys)
|
||||
{
|
||||
string text = equipmentID;
|
||||
RadTreeNode nodeParent = null;
|
||||
|
||||
DataRow[] drEquipmnet = dt.Select($"EQUIPMENTID='{equipmentID}'");
|
||||
if (drEquipmnet?.Length > 0)
|
||||
{
|
||||
string facilityName = drEquipmnet[0]["FACILITYNAME"].ToString();
|
||||
string equipmentName = drEquipmnet[0]["DESCRIPTION"].ToString();
|
||||
string segmentID = drEquipmnet[0]["PROCESSSEGMENTID"].ToString();
|
||||
string segmentName = drEquipmnet[0]["PROCESSSEGMENTNAME"].ToString();
|
||||
|
||||
if (!this.tree.Nodes.Contains(facilityName))
|
||||
this.tree.Nodes.Add(facilityName).Name = facilityName;
|
||||
nodeParent = this.tree.Nodes[facilityName];
|
||||
|
||||
//if (!nodeParent.Nodes.Contains(segmentID))
|
||||
// nodeParent.Nodes.Add($"[{segmentID}] {segmentName}").Name = segmentID;
|
||||
//nodeParent = nodeParent.Nodes[segmentID];
|
||||
|
||||
text = $"[{equipmentID}] {equipmentName}({dicEquipment[equipmentID].Count})";
|
||||
}
|
||||
|
||||
RadTreeNode node = new RadTreeNode(text);
|
||||
node.Name = equipmentID;
|
||||
if (nodeParent != null) nodeParent.Nodes.Add(node);
|
||||
else this.tree.Nodes.Add(node);
|
||||
|
||||
foreach (string vid in dicEquipment[equipmentID])
|
||||
{
|
||||
RadTreeNode nodeVID = node.Nodes.Add(vid);
|
||||
nodeVID.Name = $"{equipmentID}.{vid}";
|
||||
nodeVID.Tag = $"{equipmentID}.{vid}";
|
||||
}
|
||||
}
|
||||
|
||||
this.tree.SortOrder = System.Windows.Forms.SortOrder.Ascending;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.StatusLabelDisplay(this.ssStatus02, "출력", timeStart, DateTime.Now);
|
||||
this.ssMessage.Text = $"Equipment is {dicEquipment.Count.ToString("#,##0")}";
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private DataTable GetMesEquipment()
|
||||
{
|
||||
SqlConnection sqlConnection = null;
|
||||
DataSet ds = null;
|
||||
DataTable dt = null;
|
||||
try
|
||||
{
|
||||
string connectionString = string.Empty;
|
||||
StringBuilder query = new StringBuilder();
|
||||
query.AppendLine($" SELECT A.SITEID, ");
|
||||
query.AppendLine($" A.FACILITYID, ");
|
||||
query.AppendLine($" D.FACILITYNAME, ");
|
||||
query.AppendLine($" B.PROCESSSEGMENTID, ");
|
||||
query.AppendLine($" B.PROCESSSEGMENTNAME, ");
|
||||
query.AppendLine($" A.SUBCATEGORY, ");
|
||||
query.AppendLine($" C.EQUIPMENTID AS MAINEQUIPMENTID, ");
|
||||
query.AppendLine($" C.EQUIPMENTNAME AS MAINEQUIPMENTNAME, ");
|
||||
query.AppendLine($" A.EQUIPMENTID, ");
|
||||
query.AppendLine($" A.EQUIPMENTNAME, ");
|
||||
query.AppendLine($" A.DESCRIPTION, ");
|
||||
query.AppendLine($" A.OPERATIONMODE, ");
|
||||
query.AppendLine($" A.CONTROLMODE, ");
|
||||
query.AppendLine($" A.LASTTRACKINLOTID, ");
|
||||
query.AppendLine($" A.LASTTRACKOUTLOTID, ");
|
||||
query.AppendLine($" A.MAKER, ");
|
||||
query.AppendLine($" A.EQPSTATE, ");
|
||||
query.AppendLine($" A.LOCATION ");
|
||||
query.AppendLine($" FROM CIM_EQUIPMENT A (nolock) ");
|
||||
query.AppendLine($" INNER JOIN CIM_PROCESSSEGMENT B (nolock) ON A.PROCESSSEGMENTID = B.PROCESSSEGMENTID AND A.SITEID = B.SITEID ");
|
||||
query.AppendLine($" INNER JOIN CIM_EQUIPMENT C (nolock) ON A.PARENTID = C.EQUIPMENTID AND A.SITEID = C.SITEID ");
|
||||
query.AppendLine($" INNER JOIN CIM_FACILITY D (nolock) ON A.PHYSICALLOCATION = D.FACILITYID AND a.SITEID = d.SITEID ");
|
||||
query.AppendLine($" WHERE A.SITEID='1130' ");
|
||||
|
||||
connectionString = $@"server=192.168.8.232;database=ddmes;uid=DDB2MESAdmin;pwd=Yhqe4csJXJ4W5$%;";
|
||||
sqlConnection = new SqlConnection();
|
||||
sqlConnection.ConnectionString = connectionString;
|
||||
sqlConnection.Open();
|
||||
|
||||
SqlCommand sqlCommand = new SqlCommand();
|
||||
sqlCommand.Connection = sqlConnection;
|
||||
sqlCommand.CommandType = CommandType.Text;
|
||||
sqlCommand.CommandText = query.ToString();
|
||||
|
||||
ds = new DataSet();
|
||||
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
|
||||
sqlAdapter.Fill(ds);
|
||||
sqlConnection.Close();
|
||||
|
||||
if (ds != null && ds.Tables.Count > 0) dt = ds.Tables[0];
|
||||
return dt;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
return null;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
|
||||
{
|
||||
sqlConnection.Close();
|
||||
sqlConnection.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Tree_SelectedNodeChanged(object sender, RadTreeViewEventArgs e)
|
||||
{
|
||||
if (e.Node == null || e.Node.Tag == null) return;
|
||||
|
||||
string[] values = e.Node.Tag.ToString().Split('.');
|
||||
if (values.Length != 2) return;
|
||||
|
||||
this.EquipmentID = values[0];
|
||||
this.VID = values[1];
|
||||
this.BtnRefresh_Click(null, null);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Grid: TraceCollection ] =====================================
|
||||
|
||||
private void GridSetting()
|
||||
{
|
||||
this.grid.MultiSelect = true;
|
||||
this.grid.Columns.Clear();
|
||||
this.grid.TableElement.RowHeight = 20;
|
||||
this.grid.HeaderTextToTitleCase = false;
|
||||
|
||||
this.grid.AddColumn("EVENTTIME", "EventTime");
|
||||
this.grid.AddColumn("VIDName");
|
||||
this.grid.AddColumn("Value");
|
||||
this.grid.AddColumn("LotID");
|
||||
this.grid.AddColumn("MaterialID");
|
||||
this.grid.AddColumn("ProductID");
|
||||
this.grid.AddColumn("Recipe");
|
||||
this.grid.AddColumn("UnitNO");
|
||||
this.grid.AddColumn("ProcessID");
|
||||
this.grid.AddColumn("VORNR");
|
||||
this.grid.AddColumn("UnitState");
|
||||
this.grid.AddColumn("Sign");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/MONGO/FrmFDCMongo.resx
Normal file
120
DDUtilityApp/MONGO/FrmFDCMongo.resx
Normal 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>
|
||||
220
DDUtilityApp/Program.cs
Normal file
220
DDUtilityApp/Program.cs
Normal file
@@ -0,0 +1,220 @@
|
||||
using DDUtilityApp.LOGPARSER;
|
||||
using DDUtilityApp.LOGPARSER.PARSER;
|
||||
using DDUtilityApp.MONGO;
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Principal;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DDUtilityApp
|
||||
{
|
||||
|
||||
static class Program
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 해당 응용 프로그램의 주 진입점입니다.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main(params string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
XLogger.Instance.Info("START");
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
Form frm = null;
|
||||
|
||||
if (args.Length > 0)
|
||||
{
|
||||
if (string.Compare(args[0], "FrmLogParser", true) == 0 && args.Length >= 3)
|
||||
{
|
||||
FrmLogParser frmLogParser = new FrmLogParser(new EisParser0(), args[1], args[2]);
|
||||
frm = frmLogParser;
|
||||
}
|
||||
if (string.Compare(args[0], "FrmFDCMongo", true) == 0)
|
||||
{
|
||||
FrmFDCMongo frmFDCMongo = new FrmFDCMongo();
|
||||
if (args.Length > 1) frmFDCMongo.EquipmentID = args[1];
|
||||
if (args.Length > 2)
|
||||
{
|
||||
DateTime dateTime = DateTime.Now.Date;
|
||||
DateTime.TryParse(args[2], out dateTime);
|
||||
frmFDCMongo.DateTimeStart = dateTime;
|
||||
}
|
||||
if (args.Length > 3)
|
||||
{
|
||||
DateTime dateTime = DateTime.Now.AddDays(1).Date;
|
||||
DateTime.TryParse(args[3], out dateTime);
|
||||
frmFDCMongo.DateTimeEnd = dateTime;
|
||||
}
|
||||
frm = frmFDCMongo;
|
||||
}
|
||||
}
|
||||
|
||||
if (frm == null)
|
||||
{
|
||||
#region [ FrmMain ]
|
||||
|
||||
FrmMain frmMain = new FrmMain();
|
||||
frmMain.Text = $"[EverOne] DDUtility - Ver. {Application.ProductVersion}";
|
||||
frmMain.MinimizeBox = false;
|
||||
frmMain.MaximizeBox = false;
|
||||
frmMain.FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
|
||||
#region [ 버튼 생성 정보 ]
|
||||
frmMain.Buttons.Add("EIS Log Viewer", new EisParser0());
|
||||
frmMain.Buttons.Add("MIS Log Viewer", new AgvParser());
|
||||
frmMain.Buttons.Add("FDC Mongo Viewer", typeof(MONGO.FrmFDCMongo));
|
||||
frmMain.Buttons.Add("TIB Simulator", typeof(TIBRENDEZVOUS.FrmSimulator01));
|
||||
frmMain.Buttons.Add("HSMS Converter", typeof(LOGPARSER.FrmHsmsViewer));
|
||||
frmMain.Buttons.Add("TibcoConfig.Xml", typeof(ETC.FrmTIbcoConfig));
|
||||
#if DEBUG
|
||||
frmMain.Buttons.Add("FTP Test", typeof(SPECDOCUMENT.FrmSpecDocument));
|
||||
#endif
|
||||
#endregion
|
||||
|
||||
Application.Run(frmMain);
|
||||
|
||||
if (frmMain.DialogResult != DialogResult.OK) return;
|
||||
if (frmMain.SelectedObject == null) return;
|
||||
if (frmMain.SelectedObject is Type)
|
||||
{
|
||||
Type frmType = frmMain.SelectedObject as Type;
|
||||
// 관리자 권한으로 실행
|
||||
if (new string[] { "FRMTIBCOCONFIG" }.Contains(frmType.Name.ToUpper()))
|
||||
{
|
||||
if (IsAdministrator() == false)
|
||||
{
|
||||
try
|
||||
{
|
||||
ProcessStartInfo processStartInfo = new ProcessStartInfo();
|
||||
processStartInfo.UseShellExecute = true;
|
||||
processStartInfo.FileName = Application.ExecutablePath;
|
||||
processStartInfo.WorkingDirectory = Environment.CurrentDirectory;
|
||||
processStartInfo.Verb = "runas";
|
||||
Process process = Process.Start(processStartInfo);
|
||||
|
||||
return;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Warn(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Assembly assembly = Assembly.GetAssembly(frmType);
|
||||
frm = assembly.CreateInstance(frmType.FullName) as Form;
|
||||
}
|
||||
else if (frmMain.SelectedObject is LogParser)
|
||||
{
|
||||
FrmLogParser frmLogParser = new FrmLogParser();
|
||||
frmLogParser.LogParser = frmMain.SelectedObject as LogParser;
|
||||
frm = frmLogParser;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
if (frm == null) return;
|
||||
|
||||
frm.StartPosition = GlobalVariable.Instance.FormStartPosition;
|
||||
frm.WindowState = GlobalVariable.Instance.FormWindowState;
|
||||
|
||||
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(GlobalVariable.Instance.FormLocation, GlobalVariable.Instance.FormSize);
|
||||
Screen screen = Screen.FromRectangle(rectangle);
|
||||
|
||||
System.Drawing.Size minimumSize = frm.MinimumSize;
|
||||
if (screen.WorkingArea.Width < frm.MinimumSize.Width) minimumSize.Width = screen.WorkingArea.Width;
|
||||
if (screen.WorkingArea.Height < frm.MinimumSize.Height) minimumSize.Height = screen.WorkingArea.Height;
|
||||
frm.MinimumSize = minimumSize;
|
||||
|
||||
frm.Location = GlobalVariable.Instance.FormLocation;
|
||||
frm.Size = GlobalVariable.Instance.FormSize;
|
||||
if ((frm.MinimumSize.Width > GlobalVariable.Instance.FormSize.Width)
|
||||
|| (frm.MinimumSize.Height > GlobalVariable.Instance.FormSize.Height)
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
// Exception Handling
|
||||
AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
|
||||
Application.ThreadException += Application_ThreadException;
|
||||
|
||||
Application.Run(frm);
|
||||
|
||||
GlobalVariable.Instance.FormStartPosition = frm.StartPosition;
|
||||
GlobalVariable.Instance.FormWindowState = frm.WindowState;
|
||||
GlobalVariable.Instance.FormLocation = frm.Location;
|
||||
if (frm.WindowState == FormWindowState.Normal) GlobalVariable.Instance.FormSize = frm.Size;
|
||||
GlobalVariable.Instance.SaveSetting();
|
||||
|
||||
XLogger.Instance.Info("END");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsAdministrator()
|
||||
{
|
||||
WindowsIdentity identity = WindowsIdentity.GetCurrent();
|
||||
|
||||
if (identity != null)
|
||||
{
|
||||
WindowsPrincipal principal = new WindowsPrincipal(identity);
|
||||
return principal.IsInRole(WindowsBuiltInRole.Administrator);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AppDomain.UnhandledException
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private static void AppDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Exception ex = e.ExceptionObject as Exception;
|
||||
XLogger.Instance.Fatal(ex);
|
||||
if (e.IsTerminating) throw new Exception(ex.Message);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Application.ThreadException
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Exception ex = e.Exception as Exception;
|
||||
XLogger.Instance.Fatal(ex);
|
||||
MessageBox.Show(ex.Message, "Application Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
36
DDUtilityApp/Properties/AssemblyInfo.cs
Normal file
36
DDUtilityApp/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
|
||||
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
|
||||
// 이러한 특성 값을 변경하세요.
|
||||
[assembly: AssemblyTitle("EverOne EES Utility")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Copyright 2024. Jungwoo.Han all rights reserved")]
|
||||
[assembly: AssemblyCopyright("Copyright ©2024")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
|
||||
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
|
||||
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
|
||||
[assembly: Guid("b8459f14-92d3-482c-a932-65e76e6d11f6")]
|
||||
|
||||
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
|
||||
//
|
||||
// 주 버전
|
||||
// 부 버전
|
||||
// 빌드 번호
|
||||
// 수정 버전
|
||||
//
|
||||
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
|
||||
// 지정되도록 할 수 있습니다.
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2025.01.07.0")]
|
||||
[assembly: AssemblyFileVersion("2025.01.07.0")]
|
||||
63
DDUtilityApp/Properties/Resources.Designer.cs
generated
Normal file
63
DDUtilityApp/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
// 런타임 버전:4.0.30319.42000
|
||||
//
|
||||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
// 이러한 변경 내용이 손실됩니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DDUtilityApp.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
|
||||
/// </summary>
|
||||
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
|
||||
// 클래스에서 자동으로 생성되었습니다.
|
||||
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
|
||||
// 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DDUtilityApp.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
|
||||
/// 재정의합니다.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
DDUtilityApp/Properties/Resources.resx
Normal file
117
DDUtilityApp/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?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.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: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" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</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" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
DDUtilityApp/Properties/Settings.Designer.cs
generated
Normal file
26
DDUtilityApp/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
// 런타임 버전:4.0.30319.42000
|
||||
//
|
||||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
// 이러한 변경 내용이 손실됩니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DDUtilityApp.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.10.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
DDUtilityApp/Properties/Settings.settings
Normal file
7
DDUtilityApp/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
11
DDUtilityApp/Properties/licenses.licx
Normal file
11
DDUtilityApp/Properties/licenses.licx
Normal file
@@ -0,0 +1,11 @@
|
||||
Telerik.WinControls.UI.RadListView, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadChartView, Telerik.WinControls.ChartView, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadTreeView, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadTimePicker, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadDateTimePicker, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadStatusStrip, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadDropDownList, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadCheckedDropDownList, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadLabel, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
Telerik.WinControls.UI.RadTextBox, Telerik.WinControls.UI, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
2
DDUtilityApp/Properties/licenses.licx.Backup
Normal file
2
DDUtilityApp/Properties/licenses.licx.Backup
Normal file
@@ -0,0 +1,2 @@
|
||||
DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v18.2, Version=18.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
Telerik.WinControls.UI.RadGridView, Telerik.WinControls.GridView, Version=2019.1.219.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
|
||||
5
DDUtilityApp/ReadMe.txt
Normal file
5
DDUtilityApp/ReadMe.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
# Ver 0.1.0.3
|
||||
- [Patch] 1024라인을 초과하는 문자열 관련하여 SelectionStart() 위치 조정.
|
||||
# Ver 0.1.0.4
|
||||
- [Add] Download 옵션 추가.
|
||||
갱신중인 파일의 경우 로컬 다운로드 후에 파일 오픈을 실행합니다.
|
||||
135
DDUtilityApp/SECS/CEID.cs
Normal file
135
DDUtilityApp/SECS/CEID.cs
Normal file
@@ -0,0 +1,135 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
|
||||
namespace DDUtilityApp.SECS
|
||||
{
|
||||
|
||||
public class CEID
|
||||
{
|
||||
|
||||
public static CEID CreateCEID(XmlNode node)
|
||||
{
|
||||
CEID ceid = new CEID();
|
||||
try
|
||||
{
|
||||
foreach (XmlAttribute attribute in node.Attributes)
|
||||
{
|
||||
if (string.Compare(attribute.Name, "ID", true) == 0) ceid.ID = attribute.Value;
|
||||
if (string.Compare(attribute.Name, "Name", true) == 0) ceid.Name = attribute.Value;
|
||||
if (string.Compare(attribute.Name, "Description", true) == 0) ceid.Description = attribute.Value;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(ceid.ID))
|
||||
{
|
||||
XLogger.Instance.Warn($"CEID.ID 값이 존재하지 않습니다.");
|
||||
return null;
|
||||
}
|
||||
|
||||
int seq = 1;
|
||||
foreach (XmlNode child in node.ChildNodes)
|
||||
{
|
||||
RPT rpt = RPT.CreateRPT(child);
|
||||
if (rpt.Seq == -1) rpt.Seq = seq++;
|
||||
else seq = rpt.Seq + 1;
|
||||
if (rpt != null) ceid.RptDictionary.Add(rpt.ID, rpt);
|
||||
}
|
||||
|
||||
return ceid;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#region [ Properties ] ------------------------------------------------
|
||||
|
||||
public string ID { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Description { get; set; }
|
||||
|
||||
public bool Enable { get; set; } = true;
|
||||
|
||||
public Dictionary<string, RPT> RptDictionary { get; set; } = new Dictionary<string, RPT>();
|
||||
|
||||
public IEnumerable<RPT> RptCollection { get { return this.RptDictionary.Values; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ CEID ] ------------------------------------------------------
|
||||
|
||||
public CEID()
|
||||
{
|
||||
}
|
||||
|
||||
public CEID(string id, string name = "", string description = "", bool enable = true)
|
||||
{
|
||||
this.ID = id;
|
||||
this.Name = name;
|
||||
this.Description = description;
|
||||
this.Enable = enable;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Method ] ----------------------------------------------------
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append($"ID={this.ID}");
|
||||
sb.Append($", Name={this.Name}");
|
||||
if (!string.IsNullOrEmpty(this.Description)) sb.Append($", Description={this.Description}");
|
||||
if (this.Enable == false) sb.Append($", Enable={this.Enable}");
|
||||
|
||||
StringBuilder sbRpt = new StringBuilder();
|
||||
sbRpt.Append($"RPT[{this.RptCollection.Count()}] {{ ");
|
||||
foreach (RPT rpt in this.RptCollection)
|
||||
sbRpt.Append($"{rpt.ID} ");
|
||||
|
||||
sbRpt.Append($"}}");
|
||||
|
||||
return $"{sb.ToString()}, {sbRpt.ToString()}";
|
||||
}
|
||||
|
||||
public string ToXml(string indent = "", bool inReport = true, bool inSvid = true)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (inReport)
|
||||
{
|
||||
sb.Append($"{indent}<CEID ID='{this.ID}'");
|
||||
sb.Append($" NAME='{this.Name}'");
|
||||
sb.Append($" ENABLE='{this.Enable}' ");
|
||||
if (!string.IsNullOrEmpty(this.Description)) sb.Append($" DESCRIPTION='{this.Description}'");
|
||||
sb.AppendLine($">");
|
||||
|
||||
foreach (RPT rpt in this.RptCollection.OrderBy(x => x.Seq))
|
||||
sb.AppendLine($"{indent}{rpt.ToXml($" ", inSvid)}");
|
||||
sb.Append($"{indent}</CEID>");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append($"{indent}<CEID ID='{this.ID}'");
|
||||
sb.Append($" NAME='{this.Name}'");
|
||||
sb.Append($" ENABLE='{this.Enable}' ");
|
||||
if (!string.IsNullOrEmpty(this.Description)) sb.Append($" DESCRIPTION='{this.Description}'");
|
||||
sb.Append($" />");
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
134
DDUtilityApp/SECS/RPT.cs
Normal file
134
DDUtilityApp/SECS/RPT.cs
Normal file
@@ -0,0 +1,134 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
|
||||
namespace DDUtilityApp.SECS
|
||||
{
|
||||
|
||||
public class RPT
|
||||
{
|
||||
|
||||
public static RPT CreateRPT(XmlNode node)
|
||||
{
|
||||
RPT rpt = new RPT();
|
||||
try
|
||||
{
|
||||
foreach (XmlAttribute attribute in node.Attributes)
|
||||
{
|
||||
if (string.Compare(attribute.Name, "ID", true) == 0) rpt.ID = attribute.Value;
|
||||
if (string.Compare(attribute.Name, "Seq", true) == 0) { int nSeq; int.TryParse(attribute.Value, out nSeq); rpt.Seq = nSeq; };
|
||||
if (string.Compare(attribute.Name, "Name", true) == 0) rpt.Name = attribute.Value;
|
||||
if (string.Compare(attribute.Name, "Description", true) == 0) rpt.Description = attribute.Value;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(rpt.ID))
|
||||
{
|
||||
XLogger.Instance.Warn($"RPT.ID 값이 존재하지 않습니다.");
|
||||
return null;
|
||||
}
|
||||
|
||||
int seq = 1;
|
||||
foreach (XmlNode child in node.ChildNodes)
|
||||
{
|
||||
VID vid = VID.CreateVID(child);
|
||||
if (vid.Seq == -1) vid.Seq = seq++;
|
||||
else seq = rpt.Seq + 1;
|
||||
if (vid != null) rpt.VidDictionary.Add(vid.ID, vid);
|
||||
}
|
||||
|
||||
return rpt;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#region [ Properties ] ------------------------------------------------
|
||||
|
||||
public string ID { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Description { get; set; }
|
||||
|
||||
public int Seq { get; set; } = -1;
|
||||
|
||||
public Dictionary<string, VID> VidDictionary { get; set; } = new Dictionary<string, VID>();
|
||||
|
||||
public IEnumerable<VID> VidCollection { get { return this.VidDictionary.Values; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ RPT ] -------------------------------------------------------
|
||||
|
||||
public RPT()
|
||||
{
|
||||
}
|
||||
|
||||
public RPT(string id, string name = "", string description = "")
|
||||
{
|
||||
this.ID = id;
|
||||
this.Name = name;
|
||||
this.Description = description;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Method ] ----------------------------------------------------
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append($"ID={this.ID}");
|
||||
sb.Append($", Name={this.Name}");
|
||||
if (!string.IsNullOrEmpty(this.Description)) sb.Append($", Description={this.Description}");
|
||||
|
||||
StringBuilder sbVid = new StringBuilder();
|
||||
sbVid.Append($"VID[{this.VidCollection.Count()}] {{ ");
|
||||
foreach(VID vid in this.VidCollection)
|
||||
sbVid.Append($"{vid.ID} ");
|
||||
|
||||
sbVid.Append($"}}");
|
||||
|
||||
return $"{sb.ToString()}, {sbVid.ToString()}";
|
||||
}
|
||||
|
||||
public string ToXml(string indent = "", bool inSvid = true)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (inSvid)
|
||||
{
|
||||
sb.Append($"{indent}<RPT ID='{this.ID}'");
|
||||
if (!string.IsNullOrEmpty(this.Name)) sb.Append($" NAME='{this.Name}'");
|
||||
if (!string.IsNullOrEmpty(this.Description)) sb.Append($" DESCRIPTION='{this.Description}'");
|
||||
sb.AppendLine($">");
|
||||
|
||||
foreach (VID vid in this.VidCollection.OrderBy(x => x.Seq))
|
||||
sb.AppendLine($"{indent}{vid.ToXml($" ", true)}");
|
||||
|
||||
sb.Append($"{indent}</RPT>");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append($"{indent}<RPT");
|
||||
sb.Append($" SEQ ='{this.Seq}'");
|
||||
sb.Append($" ID ='{this.ID}'");
|
||||
if (!string.IsNullOrEmpty(this.Name)) sb.Append($" NAME='{this.Name}'");
|
||||
sb.Append($" />");
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
272
DDUtilityApp/SECS/SECSDefine.cs
Normal file
272
DDUtilityApp/SECS/SECSDefine.cs
Normal file
@@ -0,0 +1,272 @@
|
||||
using EIS.Framework.Service.GEM;
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
|
||||
namespace DDUtilityApp.SECS
|
||||
{
|
||||
|
||||
public class SECSDefine
|
||||
{
|
||||
|
||||
#region [ Properties ] ------------------------------------------------
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public Dictionary<string, CEID> CeidDictionary { get; set; } = new Dictionary<string, CEID>();
|
||||
|
||||
public Dictionary<string, RPT> RptDictionary { get; set; } = new Dictionary<string, RPT>();
|
||||
|
||||
public Dictionary<string, VID> VidDictionary { get; set; } = new Dictionary<string, VID>();
|
||||
|
||||
public IEnumerable<CEID> CeidCollection { get { return CeidDictionary.Values; } }
|
||||
|
||||
public IEnumerable<RPT> RptCollection { get { return RptDictionary.Values; } }
|
||||
|
||||
public IEnumerable<VID> VidCollection { get { return VidDictionary.Values; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ SECSSetting ] -----------------------------------------------
|
||||
|
||||
public SECSDefine()
|
||||
{
|
||||
}
|
||||
|
||||
public SECSDefine(XmlNode node)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.Name = node.Attributes["NAME"].Value;
|
||||
foreach (XmlNode child in node.ChildNodes)
|
||||
{
|
||||
if (string.Compare(child.Name, "CEID_LIST", true) == 0) this.Load_CEID(child);
|
||||
else if (string.Compare(child.Name, "RPT_LIST", true) == 0) this.Load_RPT(child);
|
||||
}
|
||||
this.VidDictionary = this.GetVidDictionary();
|
||||
|
||||
Trace.WriteLine($" <MODEL NAME='{this.Name}'>");
|
||||
Trace.WriteLine($" <CEID_LIST>");
|
||||
foreach (CEID ceid in this.CeidCollection.OrderBy(x => x.ID))
|
||||
Trace.WriteLine($"{ceid.ToXml(" ")}");
|
||||
Trace.WriteLine($" </CEID_LIST>");
|
||||
|
||||
Trace.WriteLine($" <RPT_LIST>");
|
||||
foreach (RPT rpt in this.RptCollection.OrderBy(x => x.ID))
|
||||
Trace.WriteLine($"{rpt.ToXml(" ")}");
|
||||
Trace.WriteLine($" </RPT_LIST>");
|
||||
|
||||
Trace.WriteLine($" <VID_LIST>");
|
||||
foreach (VID vid in this.VidCollection.OrderBy(x => x.ID))
|
||||
Trace.WriteLine($"{vid.ToXml(" ")}");
|
||||
Trace.WriteLine($" </VID_LIST>");
|
||||
Trace.WriteLine($" </MODEL>");
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public SECSDefine(EIS.Framework.Service.GEM.GEMSettings gem)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (VIDInfo gemVid in gem.VIDList.Values)
|
||||
{
|
||||
VID vid = new VID(gemVid.ID, gemVid.Name, gemVid.Class.ToString(), "", gemVid.Description);
|
||||
this.VidDictionary.Add(vid.ID, vid);
|
||||
//Trace.WriteLine($"<VID ID='{gemVid.ID}' NAME='{gemVid.Name}' CLASS='{gemVid.Class}' DESCRIPTION='{gemVid.Description}' />");
|
||||
}
|
||||
|
||||
foreach (RPTIDInfo gemRpt in gem.RPTIDList.Values)
|
||||
{
|
||||
RPT rpt = new RPT(gemRpt.ID, "", gemRpt.Description);
|
||||
this.RptDictionary.Add(rpt.ID, rpt);
|
||||
|
||||
int vidSeq = 1;
|
||||
foreach (string strVid in gemRpt.VIDList)
|
||||
{
|
||||
VID vid = this.VidDictionary[strVid].Clone();
|
||||
vid.Seq = vidSeq++;
|
||||
rpt.VidDictionary.Add(strVid, vid);
|
||||
}
|
||||
//Trace.WriteLine($"<RPT ID='{gemRpt.ID}'>");
|
||||
//foreach (string vID in gemRpt.VIDList)
|
||||
// Trace.WriteLine($" <VID ID='{vID}' />");
|
||||
//Trace.WriteLine($"</RPT>");
|
||||
}
|
||||
|
||||
foreach (CEIDInfo gemCeid in gem.CEIDList.Values)
|
||||
{
|
||||
CEID ceid = new CEID(gemCeid.ID, gemCeid.Name, gemCeid.Description, gemCeid.Enable);
|
||||
this.CeidDictionary.Add(ceid.ID, ceid);
|
||||
|
||||
int rptSeq = 1;
|
||||
foreach (string strRpt in gemCeid.RPTIDList)
|
||||
{
|
||||
RPT rpt = this.RptDictionary[strRpt].Clone();
|
||||
rpt.Seq = rptSeq++;
|
||||
ceid.RptDictionary.Add(rpt.ID, rpt);
|
||||
}
|
||||
//Trace.WriteLine($"<CEID ID='{gemCeid.ID}' NAME='{gemCeid.Name}' ENABLE='{gemCeid.Enable}' DESCRIPTION='{gemCeid.Description}'>");
|
||||
//foreach (string rptID in gemCeid.RPTIDList)
|
||||
// Trace.WriteLine($" <RPT ID='{rptID}' />");
|
||||
//Trace.WriteLine($"</CEID>");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Method ] ----------------------------------------------------
|
||||
|
||||
private void Load_CEID(XmlNode root)
|
||||
{
|
||||
try
|
||||
{
|
||||
CEID ceid = null;
|
||||
foreach (XmlNode node in root.ChildNodes)
|
||||
{
|
||||
ceid = CEID.CreateCEID(node);
|
||||
if (ceid != null)
|
||||
{
|
||||
if (this.CeidDictionary.ContainsKey(ceid.ID))
|
||||
XLogger.Instance.Warn($"CEID.ID={ceid.ID} 가 이미 존재합니다.");
|
||||
else
|
||||
this.CeidDictionary.Add(ceid.ID, ceid);
|
||||
}
|
||||
else
|
||||
{
|
||||
XLogger.Instance.Warn($"CEID를 생성하지 못하였습니다.");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void Load_RPT(XmlNode root)
|
||||
{
|
||||
try
|
||||
{
|
||||
RPT rpt = null;
|
||||
foreach (XmlNode node in root.ChildNodes)
|
||||
{
|
||||
rpt = RPT.CreateRPT(node);
|
||||
if (rpt != null)
|
||||
{
|
||||
if (this.RptDictionary.ContainsKey(rpt.ID))
|
||||
XLogger.Instance.Warn($"RPT.ID={rpt.ID} 가 이미 존재합니다.");
|
||||
else
|
||||
this.RptDictionary.Add(rpt.ID, rpt);
|
||||
}
|
||||
else
|
||||
{
|
||||
XLogger.Instance.Warn($"RPT를 생성하지 못하였습니다.");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private Dictionary<string, VID> GetVidDictionary()
|
||||
{
|
||||
Dictionary<string, VID> dicVID = new Dictionary<string, VID>();
|
||||
try
|
||||
{
|
||||
foreach (RPT rpt in this.RptCollection)
|
||||
{
|
||||
foreach (VID vid in rpt.VidCollection)
|
||||
{
|
||||
if (dicVID.ContainsKey(vid.ID)) continue;
|
||||
dicVID.Add(vid.ID, vid);
|
||||
}
|
||||
}
|
||||
|
||||
return dicVID;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
return dicVID;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetInformation(SECSItem item)
|
||||
{
|
||||
try
|
||||
{
|
||||
if ($"S{item.Stream}F{item.Function}" == "S6F11")
|
||||
{
|
||||
if (item.ChildItems.Count != 3)
|
||||
{
|
||||
XLogger.Instance.Warn($"S6F11 하위 항목의 갯수가 일치하지 않습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(item.ChildItems[0].Name)) item.ChildItems[0].Name = "DATAID";
|
||||
if (string.IsNullOrEmpty(item.ChildItems[1].Name)) item.ChildItems[1].Name = "CEID";
|
||||
if (!this.CeidDictionary.ContainsKey(item.ChildItems[1].Value))
|
||||
{
|
||||
XLogger.Instance.Warn($"CEID={item.ChildItems[1].Value}가 정의되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
CEID ceid = this.CeidDictionary[item.ChildItems[1].Value];
|
||||
item.ChildItems[1].Description = ceid.Name;
|
||||
foreach (SECSItem itemRPT in item.ChildItems[2].ChildItems)
|
||||
{
|
||||
if (itemRPT.ChildItems.Count != 2)
|
||||
{
|
||||
XLogger.Instance.Warn($"CEID={item.ChildItems[1].Value}의 레포트 갯수가 일치하지 않습니다.");
|
||||
continue;
|
||||
}
|
||||
if (string.IsNullOrEmpty(itemRPT.ChildItems[0].Name)) itemRPT.ChildItems[0].Name = "RPTID";
|
||||
if (!this.RptDictionary.ContainsKey(itemRPT.ChildItems[0].Value))
|
||||
{
|
||||
XLogger.Instance.Warn($"RPTID={itemRPT.ChildItems[0].Value}가 정의되지 않았습니다.");
|
||||
continue;
|
||||
}
|
||||
|
||||
RPT rpt = this.RptDictionary[itemRPT.ChildItems[0].Value];
|
||||
if (rpt.VidDictionary.Count != itemRPT.ChildItems[1].Count)
|
||||
{
|
||||
XLogger.Instance.Warn($"RPTID={itemRPT.ChildItems[0].Value}의 VID 갯수가 일치하지 않습니다.");
|
||||
continue;
|
||||
}
|
||||
int index = 0;
|
||||
foreach (VID vid in rpt.VidCollection)
|
||||
{
|
||||
if (string.IsNullOrEmpty(itemRPT.ChildItems[1][index].Name)) itemRPT.ChildItems[1][index].Name = vid.Name;
|
||||
if (string.IsNullOrEmpty(itemRPT.ChildItems[1][index].Description)) itemRPT.ChildItems[1][index].Description = vid.Description;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
163
DDUtilityApp/SECS/SECSItem.cs
Normal file
163
DDUtilityApp/SECS/SECSItem.cs
Normal file
@@ -0,0 +1,163 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace DDUtilityApp.SECS
|
||||
{
|
||||
|
||||
public class SECSItem : IList<SECSItem>
|
||||
{
|
||||
|
||||
#region [ Propeties ] -------------------------------------------------
|
||||
|
||||
public string Stream { get; set; } = string.Empty;
|
||||
|
||||
public string Function { get; set; } = string.Empty;
|
||||
|
||||
public string ID { get; set; } = string.Empty;
|
||||
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
public string Format { get; set; } = string.Empty;
|
||||
|
||||
public int Length { get; set; } = 0;
|
||||
|
||||
public string Value { get; set; } = string.Empty;
|
||||
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
|
||||
public SECSItem Parent { get; set; } = null;
|
||||
|
||||
public List<SECSItem> ChildItems { get; set; } = new List<SECSItem>();
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ SECSItem ] -------------------------------------------------
|
||||
|
||||
public SECSItem()
|
||||
{
|
||||
}
|
||||
|
||||
public SECSItem(SECSItem parent)
|
||||
{
|
||||
this.Parent = parent;
|
||||
}
|
||||
|
||||
public SECSItem(string stream, string function)
|
||||
{
|
||||
this.Stream = stream;
|
||||
this.Function = function;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Method ] ----------------------------------------------------
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
try
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendFormat($"<{this.Format} ");
|
||||
sb.AppendFormat($"[{this.Length}] ");
|
||||
if (!string.IsNullOrEmpty(this.Name)) sb.AppendFormat($"{this.Name} ");
|
||||
if (new string[] { "L" }.Contains(this.Format) == false) sb.AppendFormat($"'{this.Value}' ");
|
||||
if (new string[] { "L" }.Contains(this.Format) == false) sb.AppendFormat($">");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public string ToFullString(string intendted = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine(intendted + this.ToString());
|
||||
foreach(SECSItem item in this.ChildItems)
|
||||
sb.AppendFormat(item.ToFullString(intendted + " "));
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ IList<SECSItem> ] -------------------------------------------
|
||||
|
||||
public int Count => this.ChildItems.Count;
|
||||
|
||||
public bool IsReadOnly => throw new NotImplementedException();
|
||||
|
||||
public SECSItem this[int index] { get => this.ChildItems[index]; set => this.ChildItems[index] = value; }
|
||||
|
||||
public int IndexOf(SECSItem item)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void Insert(int index, SECSItem item)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void RemoveAt(int index)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void Add(SECSItem item)
|
||||
{
|
||||
item.Parent = this;
|
||||
this.ChildItems.Add(item);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool Contains(SECSItem item)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void CopyTo(SECSItem[] array, int arrayIndex)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool Remove(SECSItem item)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public IEnumerator<SECSItem> GetEnumerator()
|
||||
{
|
||||
return this.ChildItems.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
71
DDUtilityApp/SECS/SECSLib.cs
Normal file
71
DDUtilityApp/SECS/SECSLib.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace DDUtilityApp.SECS
|
||||
{
|
||||
|
||||
|
||||
static class SECSLib
|
||||
{
|
||||
|
||||
public static Dictionary<string, Type> ItemFormat = new Dictionary<string, Type>()
|
||||
{
|
||||
{ "L", typeof(IList) }, { "A", typeof(string) }, { "B", typeof(byte) }, { "BOOL", typeof(bool) },
|
||||
{ "J", typeof(int) }, { "F4", typeof(float) }, { "F8", typeof(float) },
|
||||
{ "I1", typeof(Int16) }, { "I2", typeof(Int16) }, { "I4", typeof(Int32) }, { "I8", typeof(Int64) },
|
||||
{ "U1", typeof(UInt16) }, { "U2", typeof(UInt16) }, { "U4", typeof(UInt32) }, { "U8", typeof(UInt64) },
|
||||
};
|
||||
|
||||
public enum ItemType { None, Format, Length, Name, Value }
|
||||
|
||||
public static SECSItem[] GetItemByName(this SECSItem item, params string[] names)
|
||||
{
|
||||
List<SECSItem> items = new List<SECSItem>();
|
||||
|
||||
foreach (string name in names)
|
||||
if (string.Compare(item.Name, name, true) == 0) items.Add(item);
|
||||
|
||||
foreach(SECSItem childItem in item)
|
||||
items.AddRange(childItem.GetItemByName(names));
|
||||
|
||||
return items.ToArray();
|
||||
}
|
||||
|
||||
public static SECSItem[] GetItemCPValue(this SECSItem item, params string[] names)
|
||||
{
|
||||
List<SECSItem> items = new List<SECSItem>();
|
||||
if (item.ChildItems.Count != 2) return items.ToArray();
|
||||
|
||||
foreach (SECSItem childItem in item.ChildItems[1])
|
||||
{
|
||||
if (childItem.Format != "L") continue;
|
||||
if (childItem.ChildItems.Count != 2) continue;
|
||||
foreach(string name in names)
|
||||
{
|
||||
if (string.Compare(childItem.ChildItems[0].Value, name, true) == 0)
|
||||
{
|
||||
items.Add(childItem.ChildItems[1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return items.ToArray();
|
||||
}
|
||||
|
||||
public static SECSItem[] GetItemByID(this SECSItem item, string id)
|
||||
{
|
||||
List<SECSItem> items = new List<SECSItem>();
|
||||
|
||||
if (string.Compare(item.ID, id, true) == 0) items.Add(item);
|
||||
foreach (SECSItem childItem in item)
|
||||
items.AddRange(childItem.GetItemByID(id));
|
||||
|
||||
return items.ToArray();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
115
DDUtilityApp/SECS/VID.cs
Normal file
115
DDUtilityApp/SECS/VID.cs
Normal file
@@ -0,0 +1,115 @@
|
||||
using JWH;
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
|
||||
namespace DDUtilityApp.SECS
|
||||
{
|
||||
|
||||
public class VID
|
||||
{
|
||||
|
||||
public static VID CreateVID(XmlNode node)
|
||||
{
|
||||
VID vid = new VID();
|
||||
try
|
||||
{
|
||||
foreach (XmlAttribute attribute in node.Attributes)
|
||||
{
|
||||
if (string.Compare(attribute.Name, "ID", true) == 0) vid.ID = attribute.Value;
|
||||
if (string.Compare(attribute.Name, "Seq", true) == 0) { int seq; int.TryParse(attribute.Value, out seq); vid.Seq = seq; };
|
||||
if (string.Compare(attribute.Name, "Name", true) == 0) vid.Name = attribute.Value;
|
||||
if (string.Compare(attribute.Name, "Format", true) == 0) vid.Format = attribute.Value;
|
||||
if (string.Compare(attribute.Name, "Length", true) == 0) { int length; int.TryParse(attribute.Value, out length); vid.Length = length; };
|
||||
if (string.Compare(attribute.Name, "Description", true) == 0) vid.Description = attribute.Value;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(vid.ID))
|
||||
{
|
||||
XLogger.Instance.Warn($"VID.ID 값이 존재하지 않습니다.");
|
||||
return null;
|
||||
}
|
||||
|
||||
return vid;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#region [ Properties ] ------------------------------------------------
|
||||
|
||||
public string ID { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Class { get; set; } = "SVID";
|
||||
|
||||
public string Format { get; set; }
|
||||
|
||||
public int Length { get; set; } = 1;
|
||||
|
||||
public string Description { get; set; }
|
||||
|
||||
public int Seq { get; set; } = -1;
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ VID ] -------------------------------------------------------
|
||||
|
||||
public VID()
|
||||
{
|
||||
}
|
||||
|
||||
public VID(string id, string name="", string vidClass="", string format="", string description="")
|
||||
{
|
||||
this.ID = id;
|
||||
this.Name = name;
|
||||
this.Class = vidClass;
|
||||
this.Format = format;
|
||||
this.Description = description;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Method ] ----------------------------------------------------
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append($"ID={this.ID}");
|
||||
sb.Append($", Name={this.Name}");
|
||||
if (string.IsNullOrEmpty(this.Format) == false) sb.Append($", Format={this.Format}");
|
||||
if (string.IsNullOrEmpty(this.Description) == false) sb.Append($", Description={this.Description}");
|
||||
|
||||
return $"{sb.ToString()}";
|
||||
}
|
||||
|
||||
public string ToXml(string indent = "", bool inSeq = false)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (inSeq) sb.Append($"{indent}<SVID SEQ='{this.Seq}'");
|
||||
else sb.Append($"{indent}<VID");
|
||||
|
||||
sb.Append($" ID='{this.ID}'");
|
||||
sb.Append($" NAME='{this.Name}'");
|
||||
if (!string.IsNullOrEmpty(this.Format))
|
||||
{
|
||||
sb.Append($" FORMAT='{this.Format}'");
|
||||
sb.Append($" LENGTH='{this.Length}'");
|
||||
}
|
||||
if (!string.IsNullOrEmpty(this.Description)) sb.Append($" DESCRIPTION='{this.Description}'");
|
||||
sb.Append($" />");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
41
DDUtilityApp/SPECDOCUMENT/DocumentInfo.cs
Normal file
41
DDUtilityApp/SPECDOCUMENT/DocumentInfo.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DDUtilityApp.SPECDOCUMENT
|
||||
{
|
||||
|
||||
[Serializable]
|
||||
public class DocumentInfo
|
||||
{
|
||||
|
||||
#region [ Variables ] =================================================
|
||||
#endregion
|
||||
|
||||
#region [ Properties ] ================================================
|
||||
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
public string Version { get; set; } = string.Empty;
|
||||
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
public string Path { get; set; } = string.Empty;
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ DocumentInfo ] ==============================================
|
||||
#endregion
|
||||
|
||||
#region [ Public Methods ] ============================================
|
||||
#endregion
|
||||
|
||||
#region [ Methods ] ===================================================
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
92
DDUtilityApp/SPECDOCUMENT/FrmSpecDocument.Designer.cs
generated
Normal file
92
DDUtilityApp/SPECDOCUMENT/FrmSpecDocument.Designer.cs
generated
Normal file
@@ -0,0 +1,92 @@
|
||||
namespace DDUtilityApp.SPECDOCUMENT
|
||||
{
|
||||
partial class FrmSpecDocument
|
||||
{
|
||||
/// <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.pnlForm = new System.Windows.Forms.Panel();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.tree = new System.Windows.Forms.TreeView();
|
||||
this.pnlForm.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pnlForm
|
||||
//
|
||||
this.pnlForm.Controls.Add(this.splitContainer1);
|
||||
this.pnlForm.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlForm.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlForm.Name = "pnlForm";
|
||||
this.pnlForm.Size = new System.Drawing.Size(800, 450);
|
||||
this.pnlForm.TabIndex = 0;
|
||||
//
|
||||
// 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.tree);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(800, 450);
|
||||
this.splitContainer1.SplitterDistance = 266;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// tree
|
||||
//
|
||||
this.tree.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tree.Location = new System.Drawing.Point(0, 0);
|
||||
this.tree.Name = "tree";
|
||||
this.tree.Size = new System.Drawing.Size(266, 450);
|
||||
this.tree.TabIndex = 0;
|
||||
//
|
||||
// FrmSpecDocument
|
||||
//
|
||||
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.pnlForm);
|
||||
this.Name = "FrmSpecDocument";
|
||||
this.Text = "FrmSpecDocument";
|
||||
this.pnlForm.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel pnlForm;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.TreeView tree;
|
||||
}
|
||||
}
|
||||
98
DDUtilityApp/SPECDOCUMENT/FrmSpecDocument.cs
Normal file
98
DDUtilityApp/SPECDOCUMENT/FrmSpecDocument.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
using JWH.NETWORK;
|
||||
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.SPECDOCUMENT
|
||||
{
|
||||
|
||||
public partial class FrmSpecDocument : Form
|
||||
{
|
||||
|
||||
#region [ Variables ] =================================================
|
||||
|
||||
private SpecDocument SpecDocument { get; set; } = null;
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Properties ] ================================================
|
||||
#endregion
|
||||
|
||||
#region [ FrmSpecDocument ] ===========================================
|
||||
|
||||
public FrmSpecDocument()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.SetLayout();
|
||||
this.SetEventHandler();
|
||||
this.SpecDocument = new SpecDocument("ftp://127.0.0.1:2100", "", "");
|
||||
//this.SpecDocument = new SpecDocument("ftp://192.168.8.217", "", "");
|
||||
//192.168.8.217
|
||||
}
|
||||
|
||||
private void SetLayout()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void SetEventHandler()
|
||||
{
|
||||
this.Load += this.FrmSpecDocument_Load;
|
||||
this.FormClosed += this.FrmSpecDocument_FormClosed;
|
||||
|
||||
this.tree.AfterExpand += this.Tree_AfterExpand;
|
||||
}
|
||||
|
||||
private string TreeNodeLastFullPath { get; set; } = string.Empty;
|
||||
|
||||
private void Tree_AfterExpand(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
FtpDirectory ftpDirectory = e.Node.Tag as FtpDirectory;
|
||||
if (ftpDirectory == null) return;
|
||||
if (string.Compare(this.TreeNodeLastFullPath, e.Node.FullPath) == 0) return;
|
||||
|
||||
int index = e.Node.Index;
|
||||
this.TreeNodeLastFullPath = e.Node.FullPath;
|
||||
TreeNode parent = e.Node.Parent;
|
||||
|
||||
FtpClient ftpClient = this.SpecDocument.GetFtpClient();
|
||||
ftpDirectory.GetChilds(ftpClient, 1);
|
||||
TreeNode newNode = ftpDirectory.GetTreeNode();
|
||||
newNode.Expand();
|
||||
|
||||
this.tree.SuspendLayout();
|
||||
parent.Nodes.Insert(index, newNode);
|
||||
e.Node.Remove();
|
||||
this.tree.ResumeLayout();
|
||||
}
|
||||
|
||||
private void FrmSpecDocument_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.SpecDocument.ReBuild(1);
|
||||
TreeNode node = this.SpecDocument.GetTreeNode();
|
||||
this.tree.Nodes.Add(node);
|
||||
}
|
||||
|
||||
private void FrmSpecDocument_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Events ] ====================================================
|
||||
#endregion
|
||||
|
||||
#region [ Methods ] ===================================================
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/SPECDOCUMENT/FrmSpecDocument.resx
Normal file
120
DDUtilityApp/SPECDOCUMENT/FrmSpecDocument.resx
Normal 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>
|
||||
128
DDUtilityApp/SPECDOCUMENT/SpecDocument.cs
Normal file
128
DDUtilityApp/SPECDOCUMENT/SpecDocument.cs
Normal file
@@ -0,0 +1,128 @@
|
||||
using JWH;
|
||||
using JWH.NETWORK;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DDUtilityApp.SPECDOCUMENT
|
||||
{
|
||||
|
||||
[Serializable]
|
||||
public class SpecDocument
|
||||
{
|
||||
|
||||
#region [ Variables ] =================================================
|
||||
#endregion
|
||||
|
||||
#region [ Properties ] ================================================
|
||||
|
||||
public string URI { get; set; } = string.Empty;
|
||||
|
||||
public string UID { get; set; } = string.Empty;
|
||||
|
||||
public string PWD { get; set; } = string.Empty;
|
||||
|
||||
public List<SpecInfo> SpecInfos { get; set; } = new List<SpecInfo>();
|
||||
|
||||
public List<FtpObject> Childs { get; set; } = new List<FtpObject>();
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ SpecDocument ] ==============================================
|
||||
|
||||
public SpecDocument()
|
||||
{
|
||||
}
|
||||
|
||||
public SpecDocument(string uri, string uid, string pwd)
|
||||
{
|
||||
this.URI = uri;
|
||||
this.UID = uid;
|
||||
this.PWD = pwd;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Public Methods ] ============================================
|
||||
|
||||
public bool ReBuild(int depth = 0)
|
||||
{
|
||||
FtpObject[] ftpObjects = this.GetChilds(depth);
|
||||
|
||||
this.Childs.Clear();
|
||||
this.Childs.AddRange(ftpObjects);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public TreeNode GetTreeNode()
|
||||
{
|
||||
TreeNode node = new TreeNode(this.URI, 1, 0);
|
||||
foreach(FtpObject child in this.Childs)
|
||||
{
|
||||
node.Nodes.Add(child.GetTreeNode());
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
public void Refresh(FtpObject ftpObject, int depth = 0)
|
||||
{
|
||||
}
|
||||
|
||||
public void Refresh(TreeNode node, int depth = 0)
|
||||
{
|
||||
FtpObject ftpObject = node.Tag as FtpObject;
|
||||
if (ftpObject == null) return;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Methods ] ===================================================
|
||||
|
||||
public FtpClient GetFtpClient()
|
||||
{
|
||||
try
|
||||
{
|
||||
FtpClient ftpClient = new FtpClient(this.URI, this.UID, this.PWD);
|
||||
return ftpClient;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
private FtpObject[] GetChilds(int depth = 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<FtpObject> lstChild = new List<FtpObject>();
|
||||
|
||||
FtpClient ftpClient = this.GetFtpClient();
|
||||
foreach(FtpObject child in ftpClient.GetFtpObjects(""))
|
||||
{
|
||||
lstChild.Add(child);
|
||||
if (child.GetType() == typeof(FtpDirectory) && depth > 0)
|
||||
{
|
||||
FtpDirectory ftpDirectory = child as FtpDirectory;
|
||||
ftpDirectory.GetChilds(ftpClient, depth - 1);
|
||||
}
|
||||
}
|
||||
|
||||
return lstChild.ToArray();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
38
DDUtilityApp/SPECDOCUMENT/SpecInfo.cs
Normal file
38
DDUtilityApp/SPECDOCUMENT/SpecInfo.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DDUtilityApp.SPECDOCUMENT
|
||||
{
|
||||
|
||||
[Serializable]
|
||||
public class SpecInfo
|
||||
{
|
||||
|
||||
#region [ Variables ] =================================================
|
||||
#endregion
|
||||
|
||||
#region [ Properties ] ================================================
|
||||
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
public List<DocumentInfo> DocumentInfos { get; set; } = new List<DocumentInfo>();
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ SpecInfo ] ==================================================
|
||||
#endregion
|
||||
|
||||
#region [ Public Methods ] ============================================
|
||||
#endregion
|
||||
|
||||
#region [ Methods ] ===================================================
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
71
DDUtilityApp/TEST/FrmTest01.Designer.cs
generated
Normal file
71
DDUtilityApp/TEST/FrmTest01.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
namespace DDUtilityApp.TEST
|
||||
{
|
||||
partial class FrmTest01
|
||||
{
|
||||
/// <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.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(69, 64);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(106, 30);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.Text = "button1";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(181, 64);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(106, 30);
|
||||
this.button2.TabIndex = 1;
|
||||
this.button2.Text = "button2";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// FrmTest01
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Name = "FrmTest01";
|
||||
this.Text = "FrmTest01";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
}
|
||||
}
|
||||
105
DDUtilityApp/TEST/FrmTest01.cs
Normal file
105
DDUtilityApp/TEST/FrmTest01.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using EIS.Framework.Service.GEM;
|
||||
using JWH;
|
||||
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.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DDUtilityApp.TEST
|
||||
{
|
||||
|
||||
public partial class FrmTest01 : Form
|
||||
{
|
||||
|
||||
public string FileName { get; set; }
|
||||
|
||||
public FrmTest01()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.SetLayout();
|
||||
this.SetEventHandler();
|
||||
}
|
||||
|
||||
protected void SetLayout()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected void SetEventHandler()
|
||||
{
|
||||
this.button1.Click += Button1_Click;
|
||||
this.button2.Click += Button2_Click;
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog dlg = new OpenFileDialog();
|
||||
dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
|
||||
if (dlg.ShowDialog() != DialogResult.OK) return;
|
||||
|
||||
this.FileName = dlg.FileName;
|
||||
}
|
||||
|
||||
private void Button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
FileInfo file = new FileInfo(this.FileName);
|
||||
Decompress(file);
|
||||
}
|
||||
|
||||
private static string directoryPath = @".\temp";
|
||||
|
||||
public static 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(directoryPath + Path.DirectorySeparatorChar + fileToCompress.Name + ".gz");
|
||||
Console.WriteLine($"Compressed {fileToCompress.Name} from {fileToCompress.Length.ToString()} to {info.Length.ToString()} bytes.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void Decompress(FileInfo fileToDecompress)
|
||||
{
|
||||
using (FileStream originalFileStream = fileToDecompress.OpenRead())
|
||||
{
|
||||
string currentFileName = fileToDecompress.FullName;
|
||||
string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);
|
||||
|
||||
using (FileStream decompressedFileStream = File.Create(newFileName))
|
||||
{
|
||||
using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
|
||||
{
|
||||
decompressionStream.CopyTo(decompressedFileStream);
|
||||
Console.WriteLine($"Decompressed: {fileToDecompress.Name}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
DDUtilityApp/TEST/FrmTest01.resx
Normal file
120
DDUtilityApp/TEST/FrmTest01.resx
Normal 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>
|
||||
BIN
DDUtilityApp/TIBCO.Rendezvous.dll
Normal file
BIN
DDUtilityApp/TIBCO.Rendezvous.dll
Normal file
Binary file not shown.
13
DDUtilityApp/TIBCO.Rendezvous.dll.config
Normal file
13
DDUtilityApp/TIBCO.Rendezvous.dll.config
Normal file
@@ -0,0 +1,13 @@
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="TIBCO.Rendezvous"
|
||||
publicKeyToken="1A696D1F90F6158A"
|
||||
culture="" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-1.0.5155.23393"
|
||||
newVersion="1.0.5155.23393" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
BIN
DDUtilityApp/TIBCO.Rendezvous.netmodule
Normal file
BIN
DDUtilityApp/TIBCO.Rendezvous.netmodule
Normal file
Binary file not shown.
83
DDUtilityApp/TIBRENDEZVOUS/DATA/Daemon.cs
Normal file
83
DDUtilityApp/TIBRENDEZVOUS/DATA/Daemon.cs
Normal file
@@ -0,0 +1,83 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using JWH;
|
||||
using JWH.DATA;
|
||||
|
||||
namespace DDUtilityApp.TIBRENDEZVOUS.DATA
|
||||
{
|
||||
|
||||
public class Daemon : DataTableBase
|
||||
{
|
||||
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
public string Value { get; set; } = string.Empty;
|
||||
|
||||
[ReadOnly(true)]
|
||||
public string Description { get { return $"[{this.Name}] {this.Value}"; } }
|
||||
|
||||
public Daemon()
|
||||
{
|
||||
}
|
||||
|
||||
public Daemon(string name, string value)
|
||||
{
|
||||
this.Name = name;
|
||||
this.Value = value;
|
||||
}
|
||||
|
||||
public Daemon(XmlNode node)
|
||||
{
|
||||
try
|
||||
{
|
||||
node.PropertiesCopyAttribute(this);
|
||||
this.Value = node.InnerText;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public string ToXmlString(string indent = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine($"{indent}<{this.GetType().Name}>{this.Value}</{this.GetType().Name}>");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"[{this.Name}] {this.Value}";
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
Daemon other = obj as Daemon;
|
||||
if (other == null) return false;
|
||||
|
||||
if (!this.Name.Equals(other.Name)) return false;
|
||||
if (!this.Value.Equals(other.Value)) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
123
DDUtilityApp/TIBRENDEZVOUS/DATA/Mode.cs
Normal file
123
DDUtilityApp/TIBRENDEZVOUS/DATA/Mode.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using JWH;
|
||||
using JWH.DATA;
|
||||
|
||||
namespace DDUtilityApp.TIBRENDEZVOUS.DATA
|
||||
{
|
||||
|
||||
public class Mode : DataTableBase
|
||||
{
|
||||
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
public List<Service> Services { get; set; } = new List<Service>();
|
||||
|
||||
public List<Network> Networks { get; set; } = new List<Network>();
|
||||
|
||||
public List<Daemon> Daemons { get; set; } = new List<Daemon>();
|
||||
|
||||
public List<Subject> Subjects { get; set; } = new List<Subject>();
|
||||
|
||||
public List<SendSubject> SendSubjects { get; set; } = new List<SendSubject>();
|
||||
|
||||
[ReadOnly(true)]
|
||||
public string Description { get { return $"{this.Name}"; } }
|
||||
|
||||
public Mode()
|
||||
{
|
||||
}
|
||||
|
||||
public Mode(string name)
|
||||
{
|
||||
this.Name = name;
|
||||
}
|
||||
|
||||
public Mode(XmlNode node)
|
||||
{
|
||||
try
|
||||
{
|
||||
node.PropertiesCopyAttribute(this);
|
||||
XmlNode[] nodes = null;
|
||||
|
||||
// Services
|
||||
nodes = node.GetNodesByName("Service");
|
||||
foreach (XmlNode item in nodes)
|
||||
this.Services.Add(new Service(item));
|
||||
|
||||
// Networks
|
||||
nodes = node.GetNodesByName("Network");
|
||||
foreach (XmlNode item in nodes)
|
||||
this.Networks.Add(new Network(item));
|
||||
|
||||
// Daemons
|
||||
nodes = node.GetNodesByName("Daemon");
|
||||
foreach (XmlNode item in nodes)
|
||||
this.Daemons.Add(new Daemon(item));
|
||||
|
||||
// Subjects
|
||||
nodes = node.GetNodesByName("Subject");
|
||||
foreach (XmlNode item in nodes)
|
||||
this.Subjects.Add(new Subject(item));
|
||||
|
||||
// SendSubjects
|
||||
nodes = node.GetNodesByName("SendSubject");
|
||||
foreach (XmlNode item in nodes)
|
||||
this.SendSubjects.Add(new SendSubject(item));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public string ToXmlString(string indent = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
string indent02 = $"{indent} ";
|
||||
string indent04 = $"{indent02} ";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine($"{indent}<{this.GetType().Name} Name=\"{this.Name}\">");
|
||||
|
||||
// Services
|
||||
foreach (Service value in this.Services)
|
||||
sb.Append(value.ToXmlString(indent04));
|
||||
|
||||
// Networks
|
||||
foreach (Network value in this.Networks)
|
||||
sb.Append(value.ToXmlString(indent04));
|
||||
|
||||
// Daemons
|
||||
foreach (Daemon value in this.Daemons)
|
||||
sb.Append(value.ToXmlString(indent04));
|
||||
|
||||
// Subjects
|
||||
foreach (Subject value in this.Subjects)
|
||||
sb.Append(value.ToXmlString(indent04));
|
||||
|
||||
// SendSubjects
|
||||
foreach (SendSubject value in this.SendSubjects)
|
||||
sb.Append(value.ToXmlString(indent04));
|
||||
|
||||
sb.AppendLine($"{indent}</{this.GetType().Name}>");
|
||||
return sb.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{this.Name}";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
83
DDUtilityApp/TIBRENDEZVOUS/DATA/Network.cs
Normal file
83
DDUtilityApp/TIBRENDEZVOUS/DATA/Network.cs
Normal file
@@ -0,0 +1,83 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using JWH;
|
||||
using JWH.DATA;
|
||||
|
||||
namespace DDUtilityApp.TIBRENDEZVOUS.DATA
|
||||
{
|
||||
|
||||
public class Network : DataTableBase
|
||||
{
|
||||
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
public string Value { get; set; } = string.Empty;
|
||||
|
||||
[ReadOnly(true)]
|
||||
public string Description { get { return $"[{this.Name}] {this.Value}"; } }
|
||||
|
||||
public Network()
|
||||
{
|
||||
}
|
||||
|
||||
public Network(string name, string value)
|
||||
{
|
||||
this.Name = name;
|
||||
this.Value = value;
|
||||
}
|
||||
|
||||
public Network(XmlNode node)
|
||||
{
|
||||
try
|
||||
{
|
||||
node.PropertiesCopyAttribute(this);
|
||||
this.Value = node.InnerText;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public string ToXmlString(string indent = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine($"{indent}<{this.GetType().Name}>{this.Value}</{this.GetType().Name}>");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
XLogger.Instance.Fatal(ex);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"[{this.Name}] {this.Value}";
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
Network other = obj as Network;
|
||||
if (other == null) return false;
|
||||
|
||||
if (!this.Name.Equals(other.Name)) return false;
|
||||
if (!this.Value.Equals(other.Value)) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user