Fixed form bug exposed by IE related to not saving pri/notes properly.
[eq/.git] / mls / windowsGUI / MLSFileTrimmer / CSVTrimmer.cs
1 using System;\r
2 using System.Collections;\r
3 using System.Collections.Generic;\r
4 using System.Linq;\r
5 using System.Text;\r
6 using System.IO;\r
7 \r
8 namespace MLSFileTrimmer\r
9 {\r
10     public class CSVTrimmer\r
11     {\r
12         private String filename = String.Empty;\r
13         private Hashtable mlsFields = new Hashtable();\r
14 \r
15         public CSVTrimmer(ThirdCouncelorMLSFilesMLSFile xmlData)\r
16         {\r
17             this.filename = xmlData.Name;\r
18 \r
19             foreach (String s in xmlData.MLSField)\r
20             {\r
21                 this.mlsFields.Add(s, -1);\r
22             }\r
23         }\r
24 \r
25         public void ExtractData(StreamReader readFile, StreamWriter outFile)\r
26         {\r
27             string line;\r
28             string[] row;\r
29 \r
30             // get headers and create mapping\r
31             if ((line = readFile.ReadLine()) != null)\r
32             {\r
33                 row = line.Split('"');\r
34                 for (int x = 0; x < row.Length; x++)\r
35                 {\r
36                     if (!(row[x].Equals(",")) && !(row[x].Equals("")))\r
37                     {\r
38                         if (this.mlsFields.ContainsKey(row[x]) || this.mlsFields.ContainsKey("*"))\r
39                         {\r
40                             this.mlsFields[row[x]] = x;\r
41                         }\r
42                     }\r
43                 }\r
44             }\r
45 \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
50             {\r
51                 int index = Convert.ToInt32(this.mlsFields[s]);\r
52                 if (index >= 0)\r
53                 {\r
54                     sb.Append("\"");\r
55                     sb.Append(s);\r
56                     sb.Append("\",");\r
57                 }\r
58             }\r
59             //sb.Remove(sb.Length - 1, 1);   // remove trailing comma\r
60             outFile.WriteLine(sb.ToString());\r
61 \r
62             // only write specified fields in new file\r
63             while ((line = readFile.ReadLine()) != null)\r
64             {\r
65                 sb.Remove(0, sb.Length);\r
66                 row = line.Split('"');\r
67                 foreach (string s in headers)\r
68                 {\r
69                     int index = Convert.ToInt32(this.mlsFields[s]);\r
70                     if (index >= 0)\r
71                     {\r
72                         sb.Append("\"");\r
73                         sb.Append(row[index]);\r
74                         sb.Append("\",");\r
75                     }\r
76                 }\r
77                 //sb.Remove(sb.Length - 1, 1);   // remove trailing comma\r
78                 outFile.WriteLine(sb.ToString());\r
79             }\r
80         }\r
81     }\r
82 }\r