#The ListReports() Method

public override Izenda.AdHoc.ReportInfo[] ListReports()
{
  /* BEGIN Database Mode Code Sample */
  
  ArrayList reportNames = new ArrayList();
  string sql = String.Format("SELECT Name, CreatedDate, ModifiedDate FROM {0} ORDER BY Name", 
  SavedReportsTable);
  System.Data.IDbCommand command = null;
  try
    {
      command = Izenda.AdHoc.AdHocContext.Driver.CreateCommand(sql);
      System.Data.IDataReader reader = command.ExecuteReader();
      
      while (reader.Read())
        {
          string reportName = reader["Name"].ToString();
          DateTime createdDate = (DateTime)reader["CreatedDate"];
          DateTime modifiedDate = (DateTime)reader["ModifiedDate"];
          if (reportName != "")
          reportNames.Add(new Izenda.AdHoc.ReportInfo(reportName, false, createdDate, modifiedDate));
        }
    }
      catch (Exception) { }
    
      if (command.Connection.State == System.Data.ConnectionState.Open)
      command.Connection.Close();
      return (Izenda.AdHoc.ReportInfo[])reportNames.ToArray(typeof(Izenda.AdHoc.ReportInfo));
      /* END Database Mode Code Sample */
      /* BEGIN Filesystem Mode Code Sample */
      ArrayList reportNames = new ArrayList();
    
      if (ReportPath != null)
        {
          DirectoryInfo dir = new DirectoryInfo(ReportPath);
          if (dir.Exists)
            {
              string dirName = Path.GetFullPath(dir.FullName);
              ArrayList fileArray = new ArrayList();
              GetAllXmlFiles(dir, fileArray);
              FileInfo[] files = (FileInfo[])fileArray.ToArray(typeof(FileInfo));
              foreach (FileInfo file in files)
                {
                  if (file.Extension == ".xml")
                    {
                      try
                        {
                          StreamReader reader = file.OpenText();
                          reader.Close();
                        }
                      catch (Exception)
                        {
                          continue;
                        }
                      bool readOnly = false;
                      try
                        {
                          StreamWriter writer = file.AppendText();
                          writer.Close();
                        }
                      catch (Exception)
                        {
                          readOnly = true;
                        }
                        
                      string fileName = Path.GetFullPath(file.FullName);
                      string reportName = fileName.Substring(dirName.Length + (dirName.EndsWith("\\")?0:1));
                      reportName = StringHelper.TrimEnd(reportName, ".xml");
                      reportNames.Add(new ReportInfo(reportName, readOnly, file.CreationTime, 
                      file.LastWriteTime));
                    }//end if
                }//end foreach
            }//end if
        }//end if
         //string[] reportNamesArray = new string[reportNames.Count];
         //reportNames.CopyTo(reportNamesArray, 0);
         //return (ReportInfo[])reportNames.ToArray(typeof(ReportInfo));
         
         /* END Filesystem Mode Code Sample */
}