FAQ/ListReports.md
... ...
@@ -53,8 +53,6 @@ In [[Database Mode|http://wiki.izenda.us/FAQ/Storing-Reports#Database-Mode]], yo
53 53
### [[FileSystemAdHocConfig|http://wiki.izenda.us/FAQ/Storing-Reports#File-System-Mode]]
54 54
55 55
```csharp
56
-/* BEGIN Filesystem Mode Code Sample */
57
-
58 56
public override ReportInfo[] ListReports() {
59 57
ArrayList reportNames = new ArrayList();
60 58
... ...
@@ -91,7 +89,25 @@ public override ReportInfo[] ListReports() {
91 89
}//end foreach
92 90
}//end if
93 91
}//end if
92
+ string[] reportNamesArray = new string[reportNames.Count];
93
+ reportNames.CopyTo(reportNamesArray, 0);
94
+ return (ReportInfo[])reportNames.ToArray(typeof(ReportInfo));
94 95
}//end method
96
+
97
+private static void GetAllXmlFiles(System.IO.DirectoryInfo dir, ArrayList files)
98
+{
99
+ try
100
+ {
101
+ files.AddRange(dir.GetFiles("*.xml"));
102
+ System.IO.DirectoryInfo[] subDirs = dir.GetDirectories();
103
+ foreach (System.IO.DirectoryInfo subDir in subDirs)
104
+ if (!subDir.Name.StartsWith("~"))
105
+ GetAllXmlFiles(subDir, files);
106
+ }
107
+ catch (UnauthorizedAccessException)
108
+ {
109
+ }
110
+}
95 111
```
96 112
97 113
##Sample VB.NET Methods
... ...
@@ -126,4 +142,60 @@ Public Class CustomAdHocConfig
126 142
Return DirectCast(reportNames.ToArray(GetType(Izenda.AdHoc.ReportInfo)), Izenda.AdHoc.ReportInfo())
127 143
End Sub
128 144
End Class
145
+```
146
+
147
+###FileSystemAdHocConfig
148
+
149
+```visualbasic
150
+'BEGIN Filesystem Mode Code Sample
151
+
152
+Public Overrides Function ListReports() As ReportInfo()
153
+ Dim reportNames As New ArrayList()
154
+
155
+ If AdHocSettings.ReportsPath IsNot Nothing Then
156
+ Dim dir As DirectoryInfo = New DirectoryInfo(AdHocSettings.ReportsPath)
157
+ If dir.Exists Then
158
+ Dim dirName As String = Path.GetFullPath(dir.FullName)
159
+ Dim fileArray As New ArrayList()
160
+ GetAllXmlFiles(dir, fileArray)
161
+ Dim files As FileInfo() = (FileInfo[])fileArray.ToArray(typeof(FileInfo))
162
+ For Each file As FileInfo In files
163
+ If file.Extension = ".xml" Then
164
+ Try
165
+ Dim reader As StreamReader = file.OpenText()
166
+ reader.Close()
167
+ Catch e As Exception
168
+ Continue For
169
+ End Try
170
+ Dim readOnly As Boolean = False
171
+ Try
172
+ Dim writer As StreamWriter = file.AppendText()
173
+ writer.Close()
174
+ catch e As Exception
175
+ readOnly = True
176
+ End Try
177
+ Dim fileName As String = Path.GetFullPath(file.FullName)
178
+ Dim reportName As String = fileName.Substring(dirName.Length + CStr(IIf((dirName.EndsWith("\\"), 0, 1))))
179
+ reportName = StringHelper.TrimEnd(reportName, ".xml")
180
+ reportNames.Add(New ReportInfo(reportName, readOnly, file.CreationTime, _
181
+ file.LastWriteTime))
182
+ End If
183
+ Next
184
+ End If
185
+ End If
186
+ Dim reportNamesArray As New String(reportNames.Count)
187
+ reportNames.CopyTo(reportNamesArray, 0)
188
+ Return (ReportInfo[])reportNames.ToArray(typeof(ReportInfo))
189
+End Function
190
+
191
+Private Shared Sub GetAllXmlFiles(ByVal dir As System.IO.DirectoryInfo, ByVal files As ArrayList)
192
+ Try
193
+ files.AddRange(dir.GetFiles("*.xml"))
194
+ Dim subDirs As System.IO.DirectoryInfo[] = dir.GetDirectories()
195
+ For Each subDir As System.IO.DirectoryInfo In subDirs
196
+ If Not subDir.Name.StartsWith("~"))
197
+ GetAllXmlFiles(subDir, files)
198
+ Catch uae As UnauthorizedAccessException
199
+ End Try
200
+End Sub
129 201
```
... ...
\ No newline at end of file