[mb-commits] r13684 - search_server/trunk/index/src/main/java/org/musicbrainz/search/index

[email protected] Thu, 09 May 2013 21:01:55 +0000
Newsgroups gmane.comp.audio.musicbrainz.cvs
Message-ID <E1UaXyN-0004hY-15@wiley>
Author: ijabz
Date: 2013-05-09 21:01:54 +0000 (Thu, 09 May 2013)
New Revision: 13684

Modified:
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java
Log:
Fixed multiple mediums being displayed under recoridng releases

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java	2013-05-09 15:25:01 UTC (rev 13683)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java	2013-05-09 21:01:54 UTC (rev 13684)
@@ -738,14 +738,26 @@
 
             // For each track that uses recording
             for (TrackWrapper trackWrapper : tracks.get(id)) {
-                //Set the release details for this track
-                Release release = releases.get(trackWrapper.getReleaseId());
-                releaseList.getRelease().add(release);
+                //Get the release details for this track
+                Release origRelease = releases.get(trackWrapper.getReleaseId());
 
-                if (release != null) {
 
+                if (origRelease != null) {
+                    //This release instance will be shared by all recordings that have a track on the release so we need
+                    //to copy details so we can append track specific details
+                    Release release = of.createRelease();
+                    release.setId(origRelease.getId());
+                    release.setTitle(origRelease.getTitle());
+                    MediumList ml = of.createMediumList();
+                    release.setReleaseGroup(origRelease.getReleaseGroup());
+                    release.setStatus(origRelease.getStatus());
+                    ml.setTrackCount(origRelease.getMediumList().getTrackCount());
+                    release.setMediumList(ml);
+                    release.setReleaseEventList(origRelease.getReleaseEventList());
+                    releaseList.getRelease().add(release);
+
+                    ReleaseGroup rg = release.getReleaseGroup();
                     doc.addNonEmptyField(RecordingIndexField.TRACK_ID, trackWrapper.getTrackGuid());
-                    ReleaseGroup rg = release.getReleaseGroup();
                     String primaryType = rg.getPrimaryType();
                     doc.addFieldOrUnknown(RecordingIndexField.RELEASEGROUP_ID, rg.getId());
                     doc.addFieldOrUnknown(RecordingIndexField.RELEASE_PRIMARY_TYPE, primaryType);
@@ -785,12 +797,11 @@
                     release.getMediumList().getMedium().add(medium);
                     medium.setTrackList(tl);
                     tl.getDefTrack().add(track);
-
                     doc.addFieldOrNoValue(RecordingIndexField.RELEASE_STATUS, release.getStatus());
 
                     if (
                             (release.getReleaseEventList() != null) &&
-                                    (release.getReleaseEventList().getReleaseEvent() != null)
+                                    (release.getReleaseEventList().getReleaseEvent().size()>0)
                             ) {
                         for (ReleaseEvent re : release.getReleaseEventList().getReleaseEvent()) {
                             doc.addNonEmptyField(RecordingIndexField.RELEASE_DATE, re.getDate());