/* * Copyright (c) 2005-2006 Erik Tigerholm * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ namespace OpenTraffic.Model.Importer { using System; using System.Collections.Generic; public class Lookup { private static Lookup lookup; private Dictionary> nDict; private Dictionary> sDict; private Dictionary>> listDict; public void Clear() { nDict.Clear(); sDict.Clear(); listDict.Clear(); } private Lookup() { nDict = new Dictionary>(); sDict = new Dictionary>(); listDict = new Dictionary>>(); } public static Lookup Get() { if (lookup == null) { lookup = new Lookup(); } return lookup; } public void Add(int key, T o) { if (!nDict.ContainsKey(typeof(T))) { nDict.Add(typeof(T), new Dictionary()); } nDict[typeof(T)].Add(key, o); } public void Add(string key, T o) { if (!sDict.ContainsKey(typeof(T))) { sDict.Add(typeof(T), new Dictionary()); } sDict[typeof(T)].Add(key, o); } public T GetObject(int key) { if (!nDict.ContainsKey(typeof(T))) return default(T); if (!nDict[typeof(T)].ContainsKey(key)) return default(T); return (T)nDict[typeof(T)][key]; } public T GetObject(string key) { if (!sDict.ContainsKey(typeof(T))) return default(T); if (!sDict[typeof(T)].ContainsKey(key)) return default(T); return (T)sDict[typeof(T)][key]; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter")] public bool ContainsKey(string key) { return (sDict.ContainsKey(typeof(T)) && sDict[typeof(T)].ContainsKey(key)); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter")] public bool ContainsKey(int key) { return (nDict.ContainsKey(typeof(T)) && nDict[typeof(T)].ContainsKey(key)); } public void AddToList(string name, int key, Object o) { if (!listDict.ContainsKey(name)) { listDict.Add(name, new Dictionary>()); } if (!listDict[name].ContainsKey(key)) { listDict[name].Add(key, new List()); } listDict[name][key].Add(o); } public List GetList(string name, int key) { if (!listDict.ContainsKey(name) || !listDict[name].ContainsKey(key)) return null; return listDict[name][key]; } } }