Implement base DictionaryBase with tests.
This commit is contained in:
@ -17,6 +17,7 @@
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
@ -27,7 +28,87 @@ namespace zaaReloaded2.Dictionaries
|
||||
/// and the <see cref="UnitDictionary"/>; implements methods
|
||||
/// to read configuration files.
|
||||
/// </summary>
|
||||
abstract class DictionaryBase
|
||||
public abstract class DictionaryBase
|
||||
{
|
||||
#region Public properties
|
||||
|
||||
public SortedDictionary<string, string[]> Records { get; protected set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
public DictionaryBase()
|
||||
{
|
||||
Records = new SortedDictionary<string, string[]>();
|
||||
LoadDefaultValues();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Abstract methods
|
||||
|
||||
/// <summary>
|
||||
/// Returns a content stream with a default configuration file.
|
||||
/// </summary>
|
||||
abstract protected Stream GetDefaultStream();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Protected methods
|
||||
|
||||
/// <summary>
|
||||
/// Reads a text file from a TextReader and fills the dictionary
|
||||
/// with the data.
|
||||
/// </summary>
|
||||
/// <param name="s">TextReader that provides a text file.</param>
|
||||
protected void ReadFile(TextReader text)
|
||||
{
|
||||
LineParser lp = new LineParser();
|
||||
string line;
|
||||
string key;
|
||||
while ((line = text.ReadLine()) != null)
|
||||
{
|
||||
lp.Line = line;
|
||||
if (lp.HasFields)
|
||||
{
|
||||
key = lp.Fields[0];
|
||||
if (Records.ContainsKey(key))
|
||||
{
|
||||
Records[key] = lp.Fields;
|
||||
}
|
||||
else
|
||||
{
|
||||
Records.Add(key, lp.Fields);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads a text file from a stream and fills the dictionary
|
||||
/// with the data.
|
||||
/// </summary>
|
||||
/// <param name="s">TextReader that provides a text file.</param>
|
||||
protected void ReadFile(Stream stream)
|
||||
{
|
||||
StreamReader sr = new StreamReader(stream);
|
||||
ReadFile(sr);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private methods
|
||||
|
||||
/// <summary>
|
||||
/// Loads default dictionary values from a text file that is built
|
||||
/// into the assembly as an embbedded resource.
|
||||
/// </summary>
|
||||
private void LoadDefaultValues()
|
||||
{
|
||||
ReadFile(GetDefaultStream());
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace zaaReloaded2.Dictionaries
|
||||
@ -29,5 +30,9 @@ namespace zaaReloaded2.Dictionaries
|
||||
/// </summary>
|
||||
class ParameterDictionary : DictionaryBase
|
||||
{
|
||||
protected override System.IO.Stream GetDefaultStream()
|
||||
{
|
||||
return Assembly.GetExecutingAssembly().GetManifestResourceStream("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,5 +28,9 @@ namespace zaaReloaded2.Dictionaries
|
||||
/// </summary>
|
||||
class UnitDictionary : DictionaryBase
|
||||
{
|
||||
protected override System.IO.Stream GetDefaultStream()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user