Пример #1
0
        public SQLiteCollectionManager(SQLiteConnection connection, ICollectionImageHandler imageHandler)
        {
            this.connection   = connection;
            this.ImageHandler = imageHandler;

            this.bsonWriterSettings = new BsonBinaryWriterSettings()
            {
                MaxDocumentSize = 24 * 1024 * 1024
            };
            this.bsonReaderSettings = new BsonBinaryReaderSettings()
            {
                MaxDocumentSize = this.bsonWriterSettings.MaxDocumentSize
            };

            this.Operations = new CollectionManagerOperations(this);

            this.loadSettings             = this.connection.CreateCommand();
            this.loadSettings.CommandText = "SELECT * FROM settings;";

            this.saveSettings             = this.connection.CreateCommand();
            this.saveSettings.CommandText = "DELETE FROM settings; INSERT INTO settings (bson) VALUES (@bson);";
            this.saveSettings.Parameters.Add("bson", DbType.Binary);

            this.loadTrackCaches             = this.connection.CreateCommand();
            this.loadTrackCaches.CommandText = "SELECT * FROM track_info_caches;";

            this.saveTrackCache             = this.connection.CreateCommand();
            this.saveTrackCache.CommandText = "INSERT INTO track_info_caches (bson) VALUES (@bson);";
            this.saveTrackCache.Parameters.Add("bson", DbType.Binary);

            this.loadReleases             = this.connection.CreateCommand();
            this.loadReleases.CommandText = "SELECT * FROM releases;";

            this.countReleases             = this.connection.CreateCommand();
            this.countReleases.CommandText = "SELECT COUNT(*) FROM releases;";

            this.loadReleaseById             = this.connection.CreateCommand();
            this.loadReleaseById.CommandText = "SELECT * FROM releases WHERE id = @id;";
            this.loadReleaseById.Parameters.Add("id", DbType.Int64);

            this.saveRelease             = this.connection.CreateCommand();
            this.saveRelease.CommandText = "INSERT INTO releases (bson) VALUES (@bson);";
            this.saveRelease.Parameters.Add("bson", DbType.Binary);

            this.updateRelease             = this.connection.CreateCommand();
            this.updateRelease.CommandText = "UPDATE releases SET bson = @bson WHERE id = @id;";
            this.updateRelease.Parameters.Add("id", DbType.Int64);
            this.updateRelease.Parameters.Add("bson", DbType.Binary);

            this.deleteRelease             = this.connection.CreateCommand();
            this.deleteRelease.CommandText = "DELETE FROM releases WHERE id = @id;";
            this.deleteRelease.Parameters.Add("id", DbType.Int64);

            this.ReloadSettings();
        }
        public MongoCollectionManager(MongoDatabase database, ICollectionImageHandler imageHandler)
        {
            this.database = database;
            this.releasesCollection = this.database.GetCollection<Release>(ReleasesCollectionName);
            this.settingsCollection = this.database.GetCollection<CollectionSettings>(SettingsCollectionName);
            this.trackInfosCollection = this.database.GetCollection<TrackInfoCache>(TrackInfosCollectionName);

            this.ImageHandler = imageHandler;
            this.Operations = new CollectionManagerOperations(this);

            this.artistCache = new Dictionary<string, Artist>();
            this.ReloadSettings();
        }
        public MongoCollectionManager(MongoDatabase database, ICollectionImageHandler imageHandler)
        {
            this.database = database;
            this.releasesCollection = this.database.GetCollection<Release>(ReleasesCollectionName);
            this.settingsCollection = this.database.GetCollection<CollectionSettings>(SettingsCollectionName);
            this.trackInfosCollection = this.database.GetCollection<TrackInfoCache>(TrackInfosCollectionName);

            this.ImageHandler = imageHandler;
            this.Operations = new CollectionManagerOperations(this);

            this.artistCache = new Dictionary<string, Artist>();
            this.ReloadSettings();
        }
 public static void UpdateReleaseThumbnail(Release release, ICollectionImageHandler imageHandler)
 {
     Image mainImage = release.Images.FirstOrDefault(i => i.IsMain);
     if (mainImage != null)
     {
         byte[] thumbnail = null;
         string thumbExtension = null, thumbMimeType = null;
         thumbnail = ThumbnailGenerator.CreateThumbnail(
                       imageHandler.LoadImage(mainImage),
                       MusicDatabase.Engine.Entities.Release.ThumbnailSize,
                       out thumbExtension,
                       out thumbMimeType);
         release.Thumbnail = thumbnail;
         Assert.IsTrue(thumbMimeType == MusicDatabase.Engine.Entities.Release.ThumbnailMimeType);
     }
     else
     {
         release.Thumbnail = null;
     }
 }
Пример #5
0
        public static void UpdateReleaseThumbnail(Release release, ICollectionImageHandler imageHandler)
        {
            Image mainImage = release.Images.FirstOrDefault(i => i.IsMain);

            if (mainImage != null)
            {
                byte[] thumbnail = null;
                string thumbExtension = null, thumbMimeType = null;
                thumbnail = ThumbnailGenerator.CreateThumbnail(
                    imageHandler.LoadImage(mainImage),
                    MusicDatabase.Engine.Entities.Release.ThumbnailSize,
                    out thumbExtension,
                    out thumbMimeType);
                release.Thumbnail = thumbnail;
                Assert.IsTrue(thumbMimeType == MusicDatabase.Engine.Entities.Release.ThumbnailMimeType);
            }
            else
            {
                release.Thumbnail = null;
            }
        }
 public MemoryCollectionManager(ICollectionImageHandler imageHandler)
 {
     this.ImageHandler = imageHandler;
     this.Operations   = new CollectionManagerOperations(this);
     this.Settings     = new CollectionSettings();
 }
        public void LoadDataFromRelease(Release release, ICollectionImageHandler imageHandler)
        {
            if (release.DiscCount != this.DatabaseRelease.DiscCount || release.Tracklist.Count != this.DatabaseRelease.Tracklist.Count)
            {
                Dialogs.Error("Tracklists do not match. Can not continue.");
                return;
            }

            this.DatabaseRelease.AdditionalFiles.Clear();
            this.DatabaseRelease.AdditionalFiles.AddRange(release.AdditionalFiles);

            this.DatabaseRelease.Artists.Clear();
            this.DatabaseRelease.Artists.AddRange(release.Artists.Select(ra => new ReleaseArtist()
            {
                Artist     = this.CollectionManager.GetOrCreateArtist(ra.Artist.Name),
                JoinString = ra.JoinString
            }));

            this.DatabaseRelease.CatalogNumber = release.CatalogNumber;
            this.DatabaseRelease.Country       = release.Country;
            //this.DatabaseRelease.DateAdded = release.DateAdded;
            //this.DatabaseRelease.DateModified = release.DateModified;
            //this.DatabaseRelease.DateAudioModified = release.DateAudioModified;
            this.DatabaseRelease.DiscogsReleaseId    = release.DiscogsReleaseId;
            this.DatabaseRelease.DiscogsMasterId     = release.DiscogsMasterId;
            this.DatabaseRelease.FlagMessage         = release.FlagMessage;
            this.DatabaseRelease.Genre               = release.Genre;
            this.DatabaseRelease.IsFlagged           = release.IsFlagged;
            this.DatabaseRelease.JoinedAlbumArtists  = release.JoinedAlbumArtists;
            this.DatabaseRelease.Label               = release.Label;
            this.DatabaseRelease.Notes               = release.Notes;
            this.DatabaseRelease.WikipediaPageName   = release.WikipediaPageName;
            this.DatabaseRelease.OriginalReleaseDate = release.OriginalReleaseDate;
            this.DatabaseRelease.ReleaseDate         = release.ReleaseDate;
            this.DatabaseRelease.Title               = release.Title;

            this.additionalFilesEditor.Release = null;
            this.additionalFilesEditor.Release = this.DatabaseRelease;

            this.DatabaseRelease.Images.Clear();
            this.imagesEditor.Release = null;
            this.imagesEditor.Release = this.DatabaseRelease;
            foreach (var image in release.Images)
            {
                var newImage = new MusicDatabase.Engine.Entities.Image()
                {
                    Description = image.Description,
                    Extension   = image.Extension,
                    IsMain      = image.IsMain,
                    MimeType    = image.MimeType,
                    Type        = image.Type
                };
                this.DatabaseRelease.Images.Add(newImage);
                this.imagesEditor.AddImage(newImage, imageHandler.LoadImage(image));
            }

            for (int i = 0; i < release.Tracklist.Count; ++i)
            {
                this.DatabaseRelease.Tracklist[i].Artists.Clear();
                this.DatabaseRelease.Tracklist[i].Artists.AddRange(release.Tracklist[i].Artists.Select(a => new TrackArtist()
                {
                    Artist     = this.CollectionManager.GetOrCreateArtist(a.Artist.Name),
                    JoinString = a.JoinString
                }));
                this.DatabaseRelease.Tracklist[i].JoinedArtists = release.Tracklist[i].JoinedArtists;
                this.DatabaseRelease.Tracklist[i].Title         = release.Tracklist[i].Title;
            }

            this.detailsEditor.Release = null;
            this.detailsEditor.Release = this.DatabaseRelease;
            this.RefreshAllDiscs();
        }
        public void LoadDataFromRelease(Release release, ICollectionImageHandler imageHandler)
        {
            if (release.DiscCount != this.DatabaseRelease.DiscCount || release.Tracklist.Count != this.DatabaseRelease.Tracklist.Count)
            {
                Dialogs.Error("Tracklists do not match. Can not continue.");
                return;
            }

            this.DatabaseRelease.AdditionalFiles.Clear();
            this.DatabaseRelease.AdditionalFiles.AddRange(release.AdditionalFiles);

            this.DatabaseRelease.Artists.Clear();
            this.DatabaseRelease.Artists.AddRange(release.Artists.Select(ra => new ReleaseArtist()
            {
                Artist = this.CollectionManager.GetOrCreateArtist(ra.Artist.Name),
                JoinString = ra.JoinString
            }));

            this.DatabaseRelease.CatalogNumber = release.CatalogNumber;
            this.DatabaseRelease.Country = release.Country;
            //this.DatabaseRelease.DateAdded = release.DateAdded;
            //this.DatabaseRelease.DateModified = release.DateModified;
            //this.DatabaseRelease.DateAudioModified = release.DateAudioModified;
            this.DatabaseRelease.DiscogsReleaseId = release.DiscogsReleaseId;
            this.DatabaseRelease.DiscogsMasterId = release.DiscogsMasterId;
            this.DatabaseRelease.FlagMessage = release.FlagMessage;
            this.DatabaseRelease.Genre = release.Genre;
            this.DatabaseRelease.IsFlagged = release.IsFlagged;
            this.DatabaseRelease.JoinedAlbumArtists = release.JoinedAlbumArtists;
            this.DatabaseRelease.Label = release.Label;
            this.DatabaseRelease.Notes = release.Notes;
            this.DatabaseRelease.WikipediaPageName = release.WikipediaPageName;
            this.DatabaseRelease.OriginalReleaseDate = release.OriginalReleaseDate;
            this.DatabaseRelease.ReleaseDate = release.ReleaseDate;
            this.DatabaseRelease.Title = release.Title;

            this.additionalFilesEditor.Release = null;
            this.additionalFilesEditor.Release = this.DatabaseRelease;

            this.DatabaseRelease.Images.Clear();
            this.imagesEditor.Release = null;
            this.imagesEditor.Release = this.DatabaseRelease;
            foreach (var image in release.Images)
            {
                var newImage = new MusicDatabase.Engine.Entities.Image()
                {
                    Description = image.Description,
                    Extension = image.Extension,
                    IsMain = image.IsMain,
                    MimeType = image.MimeType,
                    Type = image.Type
                };
                this.DatabaseRelease.Images.Add(newImage);
                this.imagesEditor.AddImage(newImage, imageHandler.LoadImage(image));
            }

            for (int i = 0; i < release.Tracklist.Count; ++i)
            {
                this.DatabaseRelease.Tracklist[i].Artists.Clear();
                this.DatabaseRelease.Tracklist[i].Artists.AddRange(release.Tracklist[i].Artists.Select(a => new TrackArtist()
                {
                    Artist = this.CollectionManager.GetOrCreateArtist(a.Artist.Name),
                    JoinString = a.JoinString
                }));
                this.DatabaseRelease.Tracklist[i].JoinedArtists = release.Tracklist[i].JoinedArtists;
                this.DatabaseRelease.Tracklist[i].Title = release.Tracklist[i].Title;
            }

            this.detailsEditor.Release = null;
            this.detailsEditor.Release = this.DatabaseRelease;
            this.RefreshAllDiscs();
        }
 public MemoryCollectionManager(ICollectionImageHandler imageHandler)
 {
     this.ImageHandler = imageHandler;
     this.Operations = new CollectionManagerOperations(this);
     this.Settings = new CollectionSettings();
 }