2 using System.Collections;
\r
3 using System.Collections.Generic;
\r
8 namespace MLSFileTrimmer
\r
10 public class CSVTrimmer
\r
12 private String filename = String.Empty;
\r
13 private Hashtable mlsFields = new Hashtable();
\r
15 public CSVTrimmer(ThirdCouncelorMLSFilesMLSFile xmlData)
\r
17 this.filename = xmlData.Name;
\r
19 foreach (String s in xmlData.MLSField)
\r
21 this.mlsFields.Add(s, -1);
\r
25 public void ExtractData(StreamReader readFile, StreamWriter outFile)
\r
30 // get headers and create mapping
\r
31 if ((line = readFile.ReadLine()) != null)
\r
33 row = line.Split('"');
\r
34 for (int x = 0; x < row.Length; x++)
\r
36 if (!(row[x].Equals(",")) && !(row[x].Equals("")))
\r
38 if (this.mlsFields.ContainsKey(row[x]) || this.mlsFields.ContainsKey("*"))
\r
40 this.mlsFields[row[x]] = x;
\r
46 // write headers in new file
\r
47 ICollection headers = this.mlsFields.Keys;
\r
48 StringBuilder sb = new StringBuilder();
\r
49 foreach (string s in headers)
\r
51 int index = Convert.ToInt32(this.mlsFields[s]);
\r
59 //sb.Remove(sb.Length - 1, 1); // remove trailing comma
\r
60 outFile.WriteLine(sb.ToString());
\r
62 // only write specified fields in new file
\r
63 while ((line = readFile.ReadLine()) != null)
\r
65 sb.Remove(0, sb.Length);
\r
66 row = line.Split('"');
\r
67 foreach (string s in headers)
\r
69 int index = Convert.ToInt32(this.mlsFields[s]);
\r
73 sb.Append(row[index]);
\r
77 //sb.Remove(sb.Length - 1, 1); // remove trailing comma
\r
78 outFile.WriteLine(sb.ToString());
\r