ulysseskao
2016-05-01 8f5c8891aba521570fa63c4baf616e3a3c8d9526
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
 
using System.Collections;
using System.Collections.Generic;
using System.Data.OracleClient;
using System.Linq;
using CCSTrace.CCS.Domain;
using CCSTrace.TPower.DMMS.Model.CCS;
using NLog;
 
namespace CCSTrace.CCS.Object
{
    public class CcsCodelist
    {
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 
        private readonly Dictionary<int, Dictionary<int, CODELIST>> _mTotalData = new Dictionary<int, Dictionary<int, CODELIST>>();
 
        public CcsCodelist(OracleConnection connectionTpc)
        {
            var sqlStmt = "SELECT INDEXID,KEYID,ITEM,CONTENT FROM CCS.CODELIST ORDER BY INDEXID,KEYID";
            OracleCommand command = new OracleCommand(sqlStmt, connectionTpc);
            OracleDataReader reader = command.ExecuteReader();
 
            try
            {
                while (reader.Read())
                {
                    var indexId = Convert.ToInt32(reader["INDEXID"].ToString());
                    var keyId = Convert.ToInt32(reader["KEYID"].ToString());
                    var item = (reader["ITEM"].ToString());
                    var content = (reader["CONTENT"].ToString());
                    CODELIST codelist = new CODELIST(indexId, keyId, item, content);
                    if (!_mTotalData.ContainsKey(indexId))
                    {
                        _mTotalData.Add(indexId, new Dictionary<int, CODELIST>());
                    }
                    Dictionary<int, CODELIST> keys = _mTotalData[indexId];
                    if (keys.ContainsKey(keyId))
                    {
                        keys.Add(keyId, codelist);
                    }
 
                }
            }
            catch (Exception e)
            {
                Logger.Warn(e, "Error on Startup CCSCodelist: " + e.Message);
            }
            finally
            {
                reader.Close();
                command.Dispose();
            }
        }
 
        public CODELIST[] GetAllContent(int mIndexId)
        {
            return _mTotalData[mIndexId].Values.ToArray();
        }
 
        public string GetContent(int mIndexId, int mKeyId)
        {
            return _mTotalData[mIndexId][mKeyId].CONTENT;
        }
 
        public string GetContent(int mIndexId, string mItem)
        {
            string mResult = "";
 
            Dictionary<int, CODELIST> mTmp = _mTotalData[mIndexId];
 
            foreach (KeyValuePair<int, CODELIST> pair in mTmp)
            {
                if (pair.Value.ITEM.Equals(mItem))
                {
                    mResult = pair.Value.CONTENT;
                    break;
                }
            }
            return mResult;
        }
 
        public int GetKeyId(int mIndexId, string mContent)
        {
            Dictionary<int, CODELIST> mTmp = _mTotalData[mIndexId];
            int mResult = 0;
 
            foreach (KeyValuePair<int, CODELIST> pair in mTmp)
            {
                if (pair.Value.CONTENT.Equals(mContent))
                {
                    mResult = pair.Key;
                    break;
                }
            }
            return mResult;
        }
 
        public string GetItem(int mIndexId, string mContent)
        {
            Dictionary<int, CODELIST> mTmp = _mTotalData[mIndexId];
            string mResult = "";
 
            foreach (KeyValuePair<int, CODELIST> pair in mTmp)
            {
                if (pair.Value.CONTENT.Equals(mContent))
                {
                    mResult = pair.Value.ITEM;
                    break;
                }
            }
            return mResult;
        }
 
        public int GetContentNumber(int mIndexId)
        {
            return _mTotalData[mIndexId].Count;
        }
 
        public int Count => _mTotalData.Count;
    }
}