private void ParseFile(String filename, TermCSV csv, String languageCd) { int countEntries = 0; int countAxis = 0; String[] lines = File.ReadAllLines(filename, Encoding.Default); int currentLevel = 0; TermCSVEntry currentAxis = null; String upperCode = "", currentCode = ""; foreach(String line in lines) { if (string.IsNullOrEmpty(line)) continue; if(line.StartsWith("**")) { String axisName = line.Replace("*","").Trim(); currentAxis = new TermCSVEntry(); currentAxis.Code = axisName[0].ToString().ToUpper(); TermCSVEntry existingEntry = csv.GetEntry(currentAxis.Code); if (existingEntry == null) { currentAxis.Term = axisName; currentAxis.IsAxis = true; currentAxis.IsMainclass = false; currentAxis.IsPreferred = true; currentAxis.Metadata.Add("code", currentAxis.Code); csv.Entries.Add(currentAxis); countAxis++; } else { existingEntry.Translations.Add(languageCd, ExtractTerm(line)); } continue; } if(currentAxis != null) { TermCSVEntry entry = new TermCSVEntry(); String code = ExtractCode(line); entry.Code = currentAxis.Code + "-" + code; TermCSVEntry existingEntry = csv.GetEntry(entry.Code); if (existingEntry == null) { entry.Term = ExtractTerm(line); entry.IsAxis = false; entry.IsMainclass = false; entry.AssociationKind = "2"; entry.AssociationType = "is part of"; entry.AssociationTypeReverse = "is parent of"; entry.IsPreferred = true; int level = GetLevel(line); if (level == 0) { entry.RelationCode = currentAxis.Code; } else { entry.RelationCode = entry.Code.Substring(0, entry.Code.Length - 1); } entry.Metadata.Add("code", code); csv.Entries.Add(entry); countEntries++; } else { existingEntry.Translations.Add(languageCd, ExtractTerm(line)); } //Console.WriteLine("Found code: " + entry.Code + ", Term: " + entry.Term); } else { Console.WriteLine("Invalid file format, file must begin with axis information."); break; } } Console.WriteLine("File imported. Axis count: " + countAxis + ", Entry count: " + countEntries); }