}// End OpenSubjectFile() #endregion OpenSubjectFile #region SaveSubjectsFile /// <summary> /// Transfers the data in AlhaBase, NumberOfRoots and _ItemsDictionary /// int a List, OutputSubjectFileList, which is /// written to the SubjectName.txt file /// </summary> public static void SaveSubjectsFile() { // Create a List<string> OutputSubjectFileList to hold the strings to be written to the Subjects file List <string> OutputSubjectFileList = new List <string>(); // Enter the AlphaBase OutputSubjectFileList.Add(AlphaBase.ToString()); // Enter the Number of Roots OutputSubjectFileList.Add(NumberOfRoots.ToString()); //Get each itme in the dictionary and convert its properties to a delimited string to story foreach (KeyValuePair <string, Items> kvp in _ItemsDictionary) { string Key = kvp.Key; Items Value = kvp.Value; char LeedingChar = Value.LeedingChar; string ItemText = Value.ItemText; string ItemID = Value.ItemID; int ItemsNumberOfChildren = Value.ItemsNumberOfChildren; string ItemsNumberOfChildrenString = ItemsNumberOfChildren.ToString(); string ParentID = Value.ParentsID; int ParentsNumberOfChildren = Value.ParentsNumberOfChildren; string ParentsNumberOfChildrenString = ParentsNumberOfChildren.ToString(); bool TerminalNode = Value.TerminalNode; string TerminalNodeString = TerminalNode.ToString(); char D = '\u0240'; string OutputString = LeedingChar.ToString() + D + ItemText + D + ItemID + D + ItemsNumberOfChildrenString + D + ParentID + D + ParentsNumberOfChildrenString + D + TerminalNodeString; OutputSubjectFileList.Add(OutputString); } var DictionaryFilePath = SubjectsFolderPath + "ItemsDictionaryStrings.txt"; File.WriteAllLines(SubjectFilePath, OutputSubjectFileList); }
/// <summary> /// 1. Receives a path to the Subject of Interest Folder /// 2. Opens the SubjectName.txt file /// 3. Loads its data into /// a. AlphaBase /// b. NumberOfRoots /// c. ItemsDictionary /// 4. Add all of the root items IDs into ItemsListBoxStringsList /// </summary> public static void OpenSubjectFile() { // Create path to this subjects data file var SubjectsDataFile = SubjectsFolderPath + SubjectName + ".txt"; SubjectFilePath = SubjectsDataFile; #region Create a SubjectsName.txt file if it doesn't exist // Test to see if this file exist and if not create it if (!File.Exists(SubjectsDataFile)) { // Create a string array to hold the first two lines string[] InitialLinesArray = new string[2]; // the first line is the default AlphaNumberBase string AlphaBase = 1; InitialLinesArray[0] = AlphaBase.ToString(); // The initial number of Roots is 0 NumberOfRoots = 0; InitialLinesArray[1] = NumberOfRoots.ToString(); //Write all of these lines to the SubjectsDataFile File.WriteAllLines(SubjectsDataFile, InitialLinesArray); return; } #endregion Create a SubjectsName.txt file if it doesn't exist #region Read the lines of the SubjectName.txt file into its holding properties // The SubjectsDataFile already exists so read in all of its lines string[] SubjectsDataFileStringArray = File.ReadAllLines(SubjectsDataFile); List <string> DelimitedDictionaryItems = new List <string>(); #region Load AlphaBase and Number of Roots and create List of Dictionary Items // Cycle through SubjectsDataFileStringArray assiginig the to their values for (int i = 0; i < SubjectsDataFileStringArray.Length; i++) { // Assign Alpha base if (i == 0) { AlphaBase = Int32.Parse(SubjectsDataFileStringArray[i]); } else if (i == 1) { NumberOfRoots = Int32.Parse(SubjectsDataFileStringArray[i]); } else { // These are all dictionary lines DelimitedDictionaryItems.Add(SubjectsDataFileStringArray[i]); } }// END Cycle through SubjectsDataFileStringArray assiginig the to their values #endregion Load AlphaBase and Number of Roots and create List of Dictionary Items #region Create ItemsDictionary and a list of RootIDs // Create a List<string> RootIDs List <string> RootIDs = new List <string>(); // Cycle through DictionaryLinesArray extracting the properties of each Item object and Add Root ID to for (int i = 0; i < DelimitedDictionaryItems.Count; i++) { // get the next line in DictionaryLinesArray var thisLine = DelimitedDictionaryItems[i]; // create thisItemsPropertyStringsArray to hold the properties of each new item string[] thisItemsPropertyStringsArray = thisLine.Split('ɀ'); // create a new Item object Items NewItemObj = new Items(); // get the leeding character char[] leedingCharStringChars = thisItemsPropertyStringsArray[0].ToCharArray(); char leedingChar = leedingCharStringChars[0]; NewItemObj.LeedingChar = leedingChar; NewItemObj.ItemText = thisItemsPropertyStringsArray[1]; NewItemObj.ItemID = thisItemsPropertyStringsArray[2]; // Deteermine if this is a root ID and if so add it to RootIDs if (NewItemObj.ItemID.Length == 1) { RootIDs.Add(NewItemObj.ItemID); } NewItemObj.ItemsNumberOfChildren = Int32.Parse(thisItemsPropertyStringsArray[3]); NewItemObj.ParentsID = thisItemsPropertyStringsArray[4]; NewItemObj.ParentsNumberOfChildren = Int32.Parse(thisItemsPropertyStringsArray[5]); var TreminalCharStr = thisItemsPropertyStringsArray[6]; if (TreminalCharStr == "False") { NewItemObj.TerminalNode = false; } else { NewItemObj.TerminalNode = true; } var thisItemsID = NewItemObj.ItemID; // Add this item to the ItemsDictionary ItemsDictionary.Add(thisItemsID, NewItemObj); }// END Cycle through DictionaryLinesArray extracting the properties of each Item object #endregion Create ItemsDictionary and a list of RootIDs #endregion Read the lines of the SubjectName.txt file into its holding properties #region Add all of the RootIDs to ItemsListBoxStringsList // Cycle through RootIDs creating ItemsListBoxStringsList, //a list of root display strings to display upone opening foreach (string ID in RootIDs) { Items NewItemsObject = new Items(); NewItemsObject = ReturnItemInDictionary(ID); var DisplayString = CreateDisplayString(NewItemsObject); ItemsListBoxStringsList.Add(DisplayString); }// END Cycle through RootIDs creating ItemsListBoxStringsList, a list of root display strings to display upone opening #endregion Add all of the RootIDs to ItemsListBoxStringsList }// End OpenSubjectFile()