public FilesystemMetadataTreeViewItem(FilesystemMetadataEntity entity) { Entity = entity; this.Text = Path.GetFileName(entity.FullName); if (string.IsNullOrEmpty(this.Text)) { string[] vines = entity.FullName.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); if (vines.Length == 0) { this.Text = "/"; } else { this.Text = vines[vines.GetUpperBound(0)]; } } if (entity.ParentId == -1) { //Root ImageIndex = 0; } else if (entity.IsDirectory) { ImageIndex = 1; SelectedImageIndex = 3; } else { //File ImageIndex = 2; SelectedImageIndex = 2; } }
private static void Gather(Media medium, XDvdFsFileSystemEntry entry, FilesystemMetadataEntity parent) { IDatabaseDriver dbDriver = AzusaContext.GetInstance().DatabaseDriver; FilesystemMetadataEntity dirEntity = new FilesystemMetadataEntity(); dirEntity.FullName = entry.FullPath; dirEntity.IsDirectory = entry.IsFolder; dirEntity.MediaId = medium.Id; dirEntity.Modified = null; dirEntity.ParentId = parent != null ? parent.Id : -1; if (entry.IsFolder) { dbDriver.AddFilesystemInfo(dirEntity); foreach (XDvdFsFileSystemEntry subfile in entry.Files) { Gather(medium, subfile, dirEntity); } } else { int readSize = (int)Math.Min(2048, entry.LogicalFileSize); byte[] buffer = new byte[readSize]; Stream inStream = entry.GetStream(); readSize = inStream.Read(buffer, 0, readSize); inStream.Close(); Array.Resize(ref buffer, readSize); dirEntity.Header = buffer; dbDriver.AddFilesystemInfo(dirEntity); } }
public IEnumerable <FilesystemMetadataEntity> GetFilesystemMetadata(int currentMediaId, bool dirs) { if (getFilesystemMetadataCommand == null) { getFilesystemMetadataCommand = GetConnectionForTable("azusa.filesysteminfo").CreateCommand(); getFilesystemMetadataCommand.CommandText = "SELECT * FROM azusa.filesysteminfo " + "WHERE mediaid = @mediaid " + "AND isdirectory = @isdirectory " + "ORDER BY parent ASC"; getFilesystemMetadataCommand.Parameters.Add("@mediaid", DbType.Int32); getFilesystemMetadataCommand.Parameters.Add("@isdirectory", DbType.Boolean); } getFilesystemMetadataCommand.Parameters["@mediaid"].Value = currentMediaId; getFilesystemMetadataCommand.Parameters["@isdirectory"].Value = dirs; SQLiteDataReader dataReader = getFilesystemMetadataCommand.ExecuteReader(); while (dataReader.Read()) { FilesystemMetadataEntity child = new FilesystemMetadataEntity(); child.Id = dataReader.GetInt64(0); child.MediaId = dataReader.GetInt32(1); child.DateAdded = dataReader.GetDateTime(2); child.IsDirectory = dataReader.GetBoolean(3); child.FullName = dataReader.GetString(4); if (!dataReader.IsDBNull(5)) { child.Size = dataReader.GetInt64(5); } if (!dataReader.IsDBNull(6)) { child.Modified = dataReader.GetDateTime(6); } if (!dataReader.IsDBNull(7)) { child.Header = dataReader.GetByteArray(7); } child.ParentId = dataReader.GetInt64(8); yield return(child); } dataReader.Close(); }
private static void Gather(Media medium, DirectoryInfo di, FilesystemMetadataEntity parent) { IDatabaseDriver dbDriver = AzusaContext.GetInstance().DatabaseDriver; FilesystemMetadataEntity dirEntity = new FilesystemMetadataEntity(); dirEntity.FullName = di.FullName.Replace(di.Root.FullName, ""); dirEntity.IsDirectory = true; dirEntity.MediaId = medium.Id; dirEntity.Modified = di.LastWriteTime; dirEntity.ParentId = parent != null ? parent.Id : -1; dbDriver.AddFilesystemInfo(dirEntity); foreach (DirectoryInfo subdir in di.GetDirectories()) { Gather(medium, subdir, dirEntity); } foreach (FileInfo file in di.GetFiles()) { FilesystemMetadataEntity fileEntity = new FilesystemMetadataEntity(); fileEntity.FullName = file.FullName; fileEntity.IsDirectory = false; fileEntity.MediaId = medium.Id; fileEntity.Modified = file.LastWriteTime; fileEntity.ParentId = dirEntity.Id; fileEntity.Size = file.Length; int readSize = (int)Math.Min(2048, file.Length); byte[] buffer = new byte[readSize]; Stream inStream = file.OpenRead(); readSize = inStream.Read(buffer, 0, readSize); inStream.Close(); Array.Resize(ref buffer, readSize); fileEntity.Header = buffer; dbDriver.AddFilesystemInfo(fileEntity); } }
public void AddFilesystemInfo(FilesystemMetadataEntity dirEntity) { throw new NotImplementedException(); }