2 using System.Collections;
\r
6 namespace MLSFileTrimmer
\r
8 public class CSVTrimmer
\r
10 private String filename = String.Empty;
\r
11 private Hashtable mlsFields = new Hashtable();
\r
13 public CSVTrimmer(ThirdCouncelorMLSFilesMLSFile xmlData)
\r
15 this.filename = xmlData.Name;
\r
17 foreach (String s in xmlData.MLSField)
\r
19 this.mlsFields.Add(s, -1);
\r
23 public void ExtractData(StreamReader readFile, StreamWriter outFile)
\r
28 // get headers and create mapping
\r
29 if ((line = readFile.ReadLine()) != null)
\r
31 row = line.Split('"');
\r
32 for (int x = 0; x < row.Length; x++)
\r
34 if (!(row[x].Equals(",")) && !(row[x].Equals("")))
\r
36 if (this.mlsFields.ContainsKey(row[x]) || this.mlsFields.ContainsKey("*"))
\r
38 this.mlsFields[row[x]] = x;
\r
44 // write headers in new file
\r
45 ICollection headers = this.mlsFields.Keys;
\r
46 StringBuilder sb = new StringBuilder();
\r
47 foreach (string s in headers)
\r
49 int index = Convert.ToInt32(this.mlsFields[s]);
\r
57 //sb.Remove(sb.Length - 1, 1); // remove trailing comma
\r
58 outFile.WriteLine(sb.ToString());
\r
60 // only write specified fields in new file
\r
61 while ((line = readFile.ReadLine()) != null)
\r
63 sb.Remove(0, sb.Length);
\r
64 row = line.Split('"');
\r
65 foreach (string s in headers)
\r
67 int index = Convert.ToInt32(this.mlsFields[s]);
\r
71 sb.Append(row[index]);
\r
75 //sb.Remove(sb.Length - 1, 1); // remove trailing comma
\r
76 outFile.WriteLine(sb.ToString());
\r