/// <date>10/03/19</date> /// <summary> /// Reads contents of an individual unit file and returns them to the caller. /// </summary> /// <param name="className">name of the class the unit file is in</param> /// <param name="fileName">name of the file/unit identifier</param> /// <returns>Contents of the file which has been read</returns> public static IndividualUnitFileContents ReadIndividualUnitFile( string className, string fileName) { string fullFilePath = IndividualUnitIOController.GetFilePath( className, fileName); if (!File.Exists(fullFilePath)) { string loggerError = $"ERROR: File {fullFilePath} does not exist"; Logger.Instance.WriteLog( loggerError); return(null); } try { using (StreamReader sr = new StreamReader(GetFilePath(className, fileName))) { string currentLine = string.Empty; // {Number} // Version 1 does not have a version number, so in version 1 this would be the unit id. currentLine = sr.ReadLine(); if (currentLine.Substring(0, VersionString.Length) == VersionString) { int version = 0; if (int.TryParse(currentLine.Substring(VersionString.Length), out version)) { return(ReadIndividualUnitFileLaterVersion( sr, version)); } else { Logger.Instance.WriteLog($"ERROR: Error reading {fullFilePath}. Invalid Version: {currentLine}"); return(null); } } else { // This is a version 1 file. return(IndividualUnitIOController.ReadIndividualUnitFileVersion1( sr, currentLine)); } } } catch (Exception ex) { Logger.Instance.WriteLog($"ERROR: Error reading {fullFilePath}. Error is {ex}"); return(null); } }
/// <date>10/03/19</date> /// <summary> /// Rename a unit file from one number to another, update the contents to include the /// new id and story the old id in the former number collection. /// </summary> /// <param name="newNumber">new unit number</param> /// <param name="className">name of the class which the unit is part of</param> /// <param name="formerNumber">former unit number</param> /// <returns>success flag</returns> public static bool RenameIndividualUnitFile( int newNumber, string className, int formerNumber) { string originalFullPath = string.Empty; string newFullPath = string.Empty; try { originalFullPath = IndividualUnitIOController.GetFilePath( className, formerNumber.ToString()); newFullPath = IndividualUnitIOController.GetFilePath( className, newNumber.ToString()); if (!File.Exists(originalFullPath)) { Logger.Instance.WriteLog( $"Rename Unit File failed, can't find the original file: {originalFullPath}"); return(false); } // read the file IndividualUnitFileContents unit = IndividualUnitIOController.ReadIndividualUnitFile( className, formerNumber.ToString()); if (unit == null) { Logger.Instance.WriteLog( "ERROR: IndividualUnitIOController.renameIndividualUnitFile: Read File failed"); return(false); } // change the number in the file. unit.UnitNumber = newNumber.ToString(); // update the former numbers list unit.AddFormerNumber(formerNumber); // save the file. if (!WriteIndividualUnitFile(unit, className)) { Logger.Instance.WriteLog("ERROR: IndividualUnitIOController.renameIndividualUnitFile: Write File failed"); return(false); } // A copy of the old file has now been saved under the new number, // delete the old file. File.Delete(originalFullPath); //File.Move( // originalFullPath, // newFullPath); } catch (Exception ex) { Logger.Instance.WriteLog($"ERROR: Error renumbering unit file. Error is {ex}"); return(false); } return(true); }