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 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(); }