ulysseskao
2016-05-01 8f5c8891aba521570fa63c4baf616e3a3c8d9526
CCSTrace/CCS/EventAI/TraceSubject.cs
@@ -1,12 +1,15 @@
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
@@ -14,18 +17,16 @@
        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
@@ -37,7 +38,7 @@
            }
            catch (Exception ex)
            {
                _plogger.Error(ex.Message);
                Logger.Error(ex, ex.Message);
                throw ex;
            }
        }
@@ -72,9 +73,8 @@
            }
            catch (Exception e)
            {
                _plogger.Error(e.Message);
                Console.WriteLine(e.StackTrace);
                throw e;
                Logger.Error(e, e.Message);
                throw;
            }
        }
@@ -100,8 +100,7 @@
            }
            catch (Exception e)
            {
                _plogger.Error(e.Message);
                Console.WriteLine(e.StackTrace);
                Logger.Error(e, e.Message);
            }
            finally
            {
@@ -133,16 +132,13 @@
            }
            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;
        }
@@ -193,7 +189,7 @@
                        }
                        Console.WriteLine(node.ClassID + "----->" + node.ObjectID);
                        _plogger.Info(node.ClassID + "----->" + node.ObjectID);
                        Logger.Info(node.ClassID + "----->" + node.ObjectID);
                        iti.MoveDescent((short)0);
                    }
@@ -220,10 +216,8 @@
                        }
                        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)
@@ -245,10 +239,8 @@
                            }
                            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;
                        }
@@ -309,8 +301,7 @@
                                        _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)
@@ -344,8 +335,7 @@
                                            _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)
@@ -370,13 +360,11 @@
                        }
                    } // 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("無法追蹤到任何設備,可能是該用戶所在變壓器設備連結性有問題。");
            }
        }
@@ -388,11 +376,11 @@
            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;
            }
@@ -403,7 +391,7 @@
            }
            catch (Exception e)
            {
                _plogger.Error(e.Message);
                Logger.Error(e.Message);
                Console.WriteLine(e.StackTrace);
            }
@@ -427,7 +415,7 @@
            }
            catch (Exception ex)
            {
                _plogger.Error(ex.Message);
                Logger.Error(ex, ex.Message);
            }
        }
@@ -459,13 +447,13 @@
            _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;
        }
@@ -546,8 +534,7 @@
            }
            catch (Exception e)
            {
                _plogger.Error(e.Message);
                Console.WriteLine(e.StackTrace);
                Logger.Error(e, e.Message);
                return false;
            }
            finally