示例#1
0
        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);
        }