using System;
using System.IO;
using System.Runtime.Serialization;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models
{
///
/// Represents an abstract file which provides basic functionality for a File with an Alias and Name
///
[Serializable]
[DataContract(IsReference = true)]
public abstract class File : Entity, IFile
{
protected File(string path)
{
Path = path;
}
///
/// Gets or sets the Name of the File including extension
///
[DataMember]
public virtual string Name
{
get
{
return new FileInfo(Path).Name;
}
}
///
/// Gets or sets the Alias of the File, which is the name without the extension
///
[DataMember]
public virtual string Alias
{
get
{
var fileInfo = new FileInfo(Path);
var name = fileInfo.Name;
int lastIndexOf = name.LastIndexOf(".", StringComparison.InvariantCultureIgnoreCase);
return name.Substring(0, lastIndexOf);
}
}
///
/// Gets or sets the Path to the File from the root of the site
///
[DataMember]
public virtual string Path { get; set; }
///
/// Gets or sets the Content of a File
///
[DataMember]
public virtual string Content { get; set; }
///
/// Boolean indicating whether the file could be validated
///
/// True if file is valid, otherwise false
public abstract bool IsValid();
///
/// Indicates whether the current entity has an identity, which in this case is a path/name.
///
///
/// Overrides the default Entity identity check.
///
public override bool HasIdentity
{
get { return string.IsNullOrEmpty(Path) == false; }
}
}
}