using System; using System.Collections; using System.Collections.Generic; using System.Data.OracleClient; using System.Linq; using CCSTrace.CCS.Domain; namespace CCSTrace.CCS.Object { public class EosCodelist { private readonly Dictionary> _mTotalData = new Dictionary>(); public EosCodelist(OracleConnection connection) { var sqlStmt = "SELECT INDEXID,KEYID,ITEM,CONTENT FROM EOS.CODELIST ORDER BY INDEXID,KEYID"; OracleCommand command = new OracleCommand(sqlStmt, connection); 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()); } Dictionary keys = _mTotalData[indexId]; if (keys.ContainsKey(keyId)) { keys.Add(keyId, codelist); } } } catch (Exception e) { Console.WriteLine("Error on Startup EOSCodelist: " + e.Message); Console.WriteLine(e.StackTrace); } 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 mTmp = _mTotalData[mIndexId]; foreach (KeyValuePair pair in mTmp) { if (pair.Value.Item.Equals(mItem)) { mResult = pair.Value.Content; break; } } return mResult; } public int GetKeyId(int mIndexId, string mContent) { Dictionary mTmp = _mTotalData[mIndexId]; int mResult = 0; foreach (KeyValuePair pair in mTmp) { if (pair.Value.Content.Equals(mContent)) { mResult = pair.Key; break; } } return mResult; } public int GetContentNumber(int mIndexId) { return (_mTotalData[mIndexId]).Count; } public int Count => _mTotalData.Count; } }