| | |
| | | using System;
|
| | | using System.Collections;
|
| | | using System.Data.OracleClient;
|
| | | using NLog;
|
| | | using TRACEROBJECTLib;
|
| | |
|
| | | namespace CCSTrace.CCS.EventAI
|
| | | {
|
| | | public class TraceSubject
|
| | | {
|
| | | private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
| | |
|
| | | private string _mDbConnectionString;
|
| | | private static bool _isNewCase;
|
| | | private static ArrayList _mLinkList; // store the switch of the new case path
|
| | |
| | | private static Hashtable _mTreeMap; // store the switch of the old case path
|
| | | private static int _sFsc;
|
| | | private static int _sUfid;
|
| | | private readonly RecordLog _plogger;
|
| | | private readonly ArrayList _mTmp = new ArrayList();
|
| | | private NetworkContext _mPContext;
|
| | |
|
| | | private readonly OracleConnection _connectionTpc;
|
| | | private readonly OracleTransaction _transaction;
|
| | |
|
| | | public TraceSubject(OracleConnection conn, OracleTransaction trx, string traceConnectionString, RecordLog log)
|
| | | public TraceSubject(OracleConnection conn, OracleTransaction trx, string traceConnectionString)
|
| | | {
|
| | | _connectionTpc = conn;
|
| | | _transaction = trx;
|
| | | _plogger = log;
|
| | | _mDbConnectionString = traceConnectionString;
|
| | |
|
| | | try
|
| | |
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | _plogger.Error(ex.Message);
|
| | | Logger.Error(ex, ex.Message);
|
| | | throw ex;
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | _plogger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | throw e;
|
| | | Logger.Error(e, e.Message);
|
| | | throw;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | _plogger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | _plogger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | }
|
| | | finally
|
| | | {
|
| | | if (command != null)
|
| | | command.Dispose();
|
| | | command?.Dispose();
|
| | |
|
| | | if (reader != null)
|
| | | reader.Close();
|
| | | reader?.Close();
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | Console.WriteLine(node.ClassID + "----->" + node.ObjectID);
|
| | | _plogger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | |
|
| | | iti.MoveDescent((short)0);
|
| | | }
|
| | |
| | | }
|
| | | i++; //後面直接就FINISH,所以就不用判斷tracecount
|
| | |
|
| | | Console.WriteLine(node.ClassID + "----->" + node.ObjectID);
|
| | | _plogger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | Console.WriteLine("Trace Finish....");
|
| | | _plogger.Info("Trace Finish....");
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | Logger.Info("Trace Finish....");
|
| | | break;
|
| | | }
|
| | | // 當追蹤到被切開的開關且該上一層設備只有該開關一個child)
|
| | |
| | | }
|
| | | i++; //後面直接就FINISH,所以就不用判斷tracecount
|
| | |
|
| | | Console.WriteLine(node.ClassID + "----->" + node.ObjectID);
|
| | | _plogger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | Console.WriteLine("Trace Finish....");
|
| | | _plogger.Info("Trace Finish....");
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | Logger.Info("Trace Finish....");
|
| | | break;
|
| | | }
|
| | |
|
| | |
| | | _mTmp.Add(equip);
|
| | | }
|
| | |
|
| | | Console.WriteLine(node.ClassID + "----->" + node.ObjectID);
|
| | | _plogger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | i++;
|
| | |
|
| | | /* if (getTraceCount(node.ClassID, node.ObjectID) > 2)
|
| | |
| | | _mTmp.Add(equip);
|
| | | }
|
| | |
|
| | | Console.WriteLine(node.ClassID + "----->" + node.ObjectID);
|
| | | _plogger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | Logger.Info(node.ClassID + "----->" + node.ObjectID);
|
| | | i++;
|
| | |
|
| | | /* if (getTraceCount(node.ClassID, node.ObjectID) > 2)
|
| | |
| | | }
|
| | | } // for
|
| | | } // while
|
| | | Console.WriteLine("Tree Node Count = " + i);
|
| | | _plogger.Info("Tree Node Count = " + i);
|
| | | Logger.Info("Tree Node Count = " + i);
|
| | | }
|
| | | else
|
| | | {
|
| | | Console.WriteLine("Tree is null");
|
| | | _plogger.Info("Tree is null");
|
| | | Logger.Info("Tree is null");
|
| | | throw new Exception("無法追蹤到任何設備,可能是該用戶所在變壓器設備連結性有問題。");
|
| | | }
|
| | | }
|
| | |
| | | try
|
| | | {
|
| | | ConfigTrace();
|
| | | _plogger.Info("configTrace OK.");
|
| | | Logger.Info("configTrace OK.");
|
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | _plogger.Error(e.Message);
|
| | | Logger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | return tree;
|
| | | }
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | _plogger.Error(e.Message);
|
| | | Logger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | _plogger.Error(ex.Message);
|
| | | Logger.Error(ex, ex.Message);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | | _mPContext.ResetContext();
|
| | |
|
| | | _plogger.Info("Set ModeTrace OK.");
|
| | | Logger.Info("Set ModeTrace OK.");
|
| | | ResultTreeBuilder trBuilder = _mPContext.CreateTreeBuilder();
|
| | | if (!trBuilder.constructResultTree(tContext, TRAVELTHREADMODE.CONMODE_SYNCHRONOUS)) { return null; }
|
| | | _plogger.Info("ConstructResultTree OK.");
|
| | | Logger.Info("ConstructResultTree OK.");
|
| | | ResultTree result = trBuilder.ResultTree;
|
| | |
|
| | | _plogger.Info("getResultTree OK.");
|
| | | Logger.Info("getResultTree OK.");
|
| | | return result;
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | _plogger.Error(e.Message);
|
| | | Console.WriteLine(e.StackTrace);
|
| | | Logger.Error(e, e.Message);
|
| | | return false;
|
| | | }
|
| | | finally
|