/// <summary> /// Gets the details of a file. /// </summary> /// <param name="fullName">The full name of the file.</param> /// <returns>The details, or <c>null</c> if the file does not exist.</returns> /// <exception cref="ArgumentNullException">If <paramref name="fullName"/> is <c>null</c>.</exception> /// <exception cref="ArgumentException">If <paramref name="fullName"/> is empty.</exception> public FileDetails GetFileDetails(string fullName) { if(fullName == null) throw new ArgumentNullException("fullName"); if(fullName.Length == 0) throw new ArgumentException("Full Name cannot be empty", "fullName"); ICommandBuilder builder = GetCommandBuilder(); QueryBuilder queryBuilder = new QueryBuilder(builder); string directory, filename; SplitFileFullName(fullName, out directory, out filename); string query = queryBuilder.SelectFrom("File", new string[] { "Size", "Downloads", "LastModified" }); query = queryBuilder.Where(query, "Name", WhereOperator.Equals, "Name"); query = queryBuilder.AndWhere(query, "Directory", WhereOperator.Equals, "Directory"); List<Parameter> parameters = new List<Parameter>(2); parameters.Add(new Parameter(ParameterType.String, "Name", filename)); parameters.Add(new Parameter(ParameterType.String, "Directory", directory)); DbCommand command = builder.GetCommand(connString, query, parameters); DbDataReader reader = ExecuteReader(command); if(reader != null) { FileDetails details = null; if(reader.Read()) { details = new FileDetails((long)reader["Size"], (DateTime)reader["LastModified"], (int)reader["Downloads"]); } CloseReader(command, reader); return details; } else return null; }
/// <summary> /// Gets the details of a page attachment. /// </summary> /// <param name="pageInfo">The page that owns the attachment.</param> /// <param name="name">The name of the attachment, for example "myfile.jpg".</param> /// <returns>The details of the attachment, or <c>null</c> if the attachment does not exist.</returns> /// <exception cref="ArgumentNullException">If <paramref name="pageInfo"/> or <paramref name="name"/> are <c>null</c>.</exception> /// <exception cref="ArgumentException">If <paramref name="name"/> is empty.</exception> public FileDetails GetPageAttachmentDetails(PageInfo pageInfo, string name) { if(pageInfo == null) throw new ArgumentNullException("pageInfo"); if(name == null) throw new ArgumentNullException("name"); if(name.Length == 0) throw new ArgumentException("Name cannot be empty"); ICommandBuilder builder = GetCommandBuilder(); QueryBuilder queryBuilder = new QueryBuilder(builder); string query = queryBuilder.SelectFrom("Attachment", new string[] { "Size", "Downloads", "LastModified" }); query = queryBuilder.Where(query, "Name", WhereOperator.Equals, "Name"); query = queryBuilder.AndWhere(query, "Page", WhereOperator.Equals, "Page"); List<Parameter> parameters = new List<Parameter>(2); parameters.Add(new Parameter(ParameterType.String, "Name", name)); parameters.Add(new Parameter(ParameterType.String, "Page", pageInfo.FullName)); DbCommand command = builder.GetCommand(connString, query, parameters); DbDataReader reader = ExecuteReader(command); if(reader != null) { FileDetails details = null; if(reader.Read()) { details = new FileDetails((long)reader["Size"], (DateTime)reader["LastModified"], (int)reader["Downloads"]); } CloseReader(command, reader); return details; } else return null; }
/// <summary> /// Initializes a new instance of the <see cref="StFileInfo" /> class. /// </summary> /// <param name="details">The file details.</param> /// <param name="fullName">The full name.</param> /// <param name="provider">The provider.</param> public StFileInfo(FileDetails details, string fullName, IFilesStorageProviderV30 provider) : this(details.Size, details.LastModified, details.RetrievalCount, fullName, provider) { }