3be0d4e6322ddf71513c47d4939732e6012379f2
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 |