private void ExportReleaseArtists(XmlWriter writer, Release release) { writer.WriteStartElement(Keys.Artists); ReleaseArtist[] artists; try { artists = release.Artists.ToArray(); release.Artists.Select(a => a.Artist.Name).ToArray(); // get names to verify } catch { artists = new ReleaseArtist[] { new ReleaseArtist() { Artist = new Artist() { Name = release.JoinedAlbumArtists } } }; } foreach (ReleaseArtist releaseArtist in artists) { this.ExportReleaseArtist(writer, releaseArtist); } writer.WriteEndElement(); }
private void ExportReleaseArtist(XmlWriter writer, ReleaseArtist releaseArtist) { writer.WriteStartElement(Keys.Artist); writer.WriteAttributeString(Keys.Name, releaseArtist.Artist.Name); if (!string.IsNullOrEmpty(releaseArtist.JoinString)) { writer.WriteAttributeString(Keys.JoinString, releaseArtist.JoinString); } writer.WriteEndElement(); }
private void Merge() { foreach (MatchItem matchItem in matchItems) { matchItem.Item.Position = matchItem.Track; ReleaseArtist[] releaseArtists; if (matchItem == null || matchItem.Source == null || matchItem.Source.Artists == null) { releaseArtists = new ReleaseArtist[0]; } else { releaseArtists = matchItem.Source.Artists; } bool matchNames = Enumerable.SequenceEqual( matchItem.Item.Artists.Select(a => a.Artist.Name), releaseArtists.Select(a => a.Aggregate.NameVariationFixed)); bool matchJoins = Enumerable.SequenceEqual( matchItem.Item.Artists.Select(a => a.JoinString), releaseArtists.Select(a => a.Join)); if (!matchNames || !matchJoins) { matchItem.Item.Artists.Clear(); foreach (ReleaseArtist releaseArtist in releaseArtists) { matchItem.Item.Artists.Add(new Engine.Entities.TrackArtist() { Artist = this.collectionManager.GetOrCreateArtist(releaseArtist.Aggregate.NameVariationFixed), JoinString = releaseArtist.Join }); } matchItem.Item.JoinedArtists = releaseArtists.JoinFixed(); } matchItem.Item.Title = matchItem.Title; } }
public ReleaseArtistAggregate(ReleaseArtist releaseArtist) { this.releaseArtist = releaseArtist; }