From 410dc2d04dbecf019129cd8cd65a3be2c62b4d0c Mon Sep 17 00:00:00 2001
From: ulysseskao <ulysseskao@gmail.com>
Date: Tue, 03 May 2016 18:36:41 +0800
Subject: [PATCH] refator code

---
 CCSTrace/CCS/Object/Addr_Contrast.cs |   82 ++++++++++++++++++++++------------------
 1 files changed, 45 insertions(+), 37 deletions(-)

diff --git a/CCSTrace/CCS/Object/Addr_Contrast.cs b/CCSTrace/CCS/Object/Addr_Contrast.cs
index 9d18779..2e60d5b 100644
--- a/CCSTrace/CCS/Object/Addr_Contrast.cs
+++ b/CCSTrace/CCS/Object/Addr_Contrast.cs
@@ -1,7 +1,9 @@
 using System;
 
 using System.Collections;
+using System.Collections.Generic;
 using System.Data.OracleClient;
+using CCSTrace.TPower.DMMS.Model.CCS;
 using NLog;
 
 namespace CCSTrace.CCS.Object
@@ -10,79 +12,85 @@
     {
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 
-        public static Hashtable MTotalData = null;
-        public static string DefaultDept = "市區巡修課";
-        private OracleConnection _connectionTpc;
+        public const string DefaultDept = "市區巡修課";
 
-        public AddrContrast(OracleConnection conn, OracleTransaction trx)
+        public static AddrContrast Instance { get; } = new AddrContrast();
+
+        private Dictionary<string, List<ADDRCONTRAST>> totalAddrData = null;
+
+        private AddrContrast()
         {
-            _connectionTpc = conn;
+        }
 
-            ArrayList mData = new ArrayList();
-            string tmp = "";
+        public void initialize(OracleConnection conn)
+        {
 
-            if (MTotalData != null)
+            if (totalAddrData != null)
                 return;
 
-            MTotalData = new Hashtable();
+            totalAddrData = new Dictionary<string, List<ADDRCONTRAST>>();
+
             var sqlStmt = "SELECT DEPTID,CITY,TOWN,ROAD FROM CCS.ADDR_CONTRAST ORDER BY CITY,TOWN,ROAD";
 
             OracleCommand command = null;
             OracleDataReader reader = null;
             try
             {
-                command = new OracleCommand(sqlStmt, _connectionTpc, trx);
+                command = new OracleCommand(sqlStmt, conn);
                 reader = command.ExecuteReader();
+
+                List<ADDRCONTRAST> addrcontrasts = new List<ADDRCONTRAST>();
+                string tmp = "";
 
                 while (reader.Read())
                 {
                     ArrayList mRecord = new ArrayList();
-                    var city = reader["CITY"].ToString();
-                    mRecord.Add(city);
-                    mRecord.Add(reader["TOWN"].ToString());
-                    mRecord.Add(reader["ROAD"].ToString());
-                    mRecord.Add(Convert.ToInt32(reader["DEPTID"].ToString()));
+                    ADDRCONTRAST item = new ADDRCONTRAST
+                    {
+                        CITY = reader["CITY"].ToString(),
+                        TOWN = reader["TOWN"].ToString(),
+                        ROAD = reader["ROAD"].ToString(),
+                        DEPTID = Convert.ToInt32(reader["DEPTID"].ToString())
+                    };
 
-                    if (tmp.Equals(city))
-                        mData.Add(mRecord);
+
+                    if (tmp.Equals(item.CITY))
+                    {
+                        addrcontrasts.Add(item);
+                    }
                     else
                     {
-                        MTotalData.Add(tmp, mData);
-                        tmp = city;
-                        mData = new ArrayList();
-                        mData.Add(mRecord);
+                        totalAddrData.Add(tmp, addrcontrasts);
+                        tmp = item.CITY;
+                        addrcontrasts = new List<ADDRCONTRAST> { item };
                     }
                 }
-                MTotalData.Add(tmp, mData);
+                totalAddrData.Add(tmp, addrcontrasts);
             }
             catch (Exception e)
             {
-                Console.WriteLine(e.StackTrace);
-                MTotalData = null;
+                Logger.Warn(e, e.Message);
+                totalAddrData = null;
             }
             finally
             {
-                reader.Close();
-                command.Dispose();
+                reader?.Close();
+                command?.Dispose();
             }
         }
 
         public int FindDeptId(string city, string region, string road)
         {
-            int dept = 0;
-            ArrayList mData = (ArrayList)MTotalData[city];
+            var addrcontrasts = totalAddrData[city];
 
             try
             {
-                for (int i = 0; i < mData.Count; i++)
+                foreach (ADDRCONTRAST tmp in addrcontrasts)
                 {
-                    ArrayList tmp = (ArrayList)mData[i];
-                    string mRegion = tmp[1].ToString().Trim();
-                    string mRoad = tmp[2].ToString().Trim();
-                    int deptId = Convert.ToInt32(tmp[3].ToString());
-
-                    if ((region.Trim().Equals(mRegion)) && (road.Trim().Equals(mRoad)))
-                        return deptId;
+                    if (region.Trim().Equals(tmp.TOWN) && road.Trim().Equals(tmp.ROAD))
+                    {
+                        return tmp.DEPTID;
+                    }
                 }
             }
             catch (Exception e)
@@ -91,7 +99,7 @@
                 Logger.Warn("無法取得所屬巡修部門代號,預設案件所屬巡修部門為市區巡修課!");
             }
             // 當找不到部門別時,Default 設定為市巡
-            dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
+            var dept = GlobalVariable.EosCodelist.GetKeyId(GlobalVariable.Dept, DefaultDept);
             return dept;
         }
     }

--
Gitblit v0.0.0-SNAPSHOT