| |
SystiN » Systin.Library » FileReader.cs | using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections;
namespace Systin.Library{
public sealed class TestFileLoader : ILoader
{
#region Fields
private string _testFileContent;
private string _testFileName;
private FileInfo _fileHandle;
private Queue<Instruction> _instructions = null;
#endregion
#region Properties
/// <summary>
/// Gets the instructions.
/// </summary>
/// <value>The instructions.</value>
public Queue<Instruction> Instructions
{
get
{
Queue<Instruction> newInstructions = new Queue<Instruction>(this._instructions);
return newInstructions;
}
}
/// <summary>
/// Content of the input test file
/// </summary>
public string TestFileContent
{
get
{
return this._testFileContent;
}
}
#endregion
#region Constructors
private TestFileLoader()
{
}
#endregion
#region Public Methods
/// <summary>
/// Returns a TestFileLoader object with an instantiated file Handle
/// </summary>
/// <param name="testFile">Text file to read test input from</param>
/// <returns>TestFileLoader object</returns>
public static TestFileLoader OpenTestFile(FileInfo testFile)
{
TestFileLoader fr = new TestFileLoader();
fr._fileHandle = testFile;
return fr;
}
/// <summary>
/// Creates an empty TestFileLoader class.
/// </summary>
/// <returns>TestFileLoader</returns>
public static TestFileLoader Factory()
{
TestFileLoader file = new TestFileLoader();
file._testFileName = String.Empty;
file._testFileContent = String.Empty;
file._fileHandle = null;
return file;
}
/// <summary>
/// This Method will load all instructions from a test input file.
/// </summary>
/// <param name="inputFile">Input Test File</param>
/// <returns>Newly changed TestFileLoader Object</returns>
public static void LoadInstructionFileContent(TestFileLoader inputFile)
{
//Check to see if inputFile is null
if (inputFile == null)
{
throw new ArgumentNullException("inputFile");
}
//If File handle is null throw an argument Exception
if (inputFile._fileHandle == null)
{
throw new ArgumentException();
}
//Open the file
using (StreamReader reader = new StreamReader(inputFile._fileHandle.OpenRead()))
{
//Read entire file into contents
inputFile._testFileContent = reader.ReadToEnd();
}
}
/// <summary>
/// Opens the file and begins processing it.
/// </summary>
/// <param name="testFile">The test file.</param>
/// <returns><seealso cref="TestFileLoader"/> A TestFileLoader to work with</returns>
public static TestFileLoader OpenAndProcessInputFile(FileInfo testFile)
{
TestFileLoader returnFile = TestFileLoader.OpenTestFile(testFile);
TestFileLoader.LoadInstructionFileContent(returnFile);
InstructionParser parsedInstructions = InstructionParser.Parse(returnFile.TestFileContent);
returnFile._instructions = parsedInstructions.Instructions;
return returnFile;
}
#endregion
#region ILoader Members
public FileInfo FileHandle
{
get { return this._fileHandle; }
}
public string FileName
{
get { return this._testFileName; }
}
#endregion
}
}
|
|