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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 5
0
 public void AddFilesystemInfo(FilesystemMetadataEntity dirEntity)
 {
     throw new NotImplementedException();
 }