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