[mb-commits] r13672 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/test/java/org/musicbrainz/search/servlet

[email protected] Wed, 01 May 2013 19:21:00 +0000
Newsgroups gmane.comp.audio.musicbrainz.cvs
Message-ID <E1UXcaK-0008GN-Ae@wiley>
Author: ijabz
Date: 2013-05-01 19:20:38 +0000 (Wed, 01 May 2013)
New Revision: 13672

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/ReleaseIndex.java
   search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java
   search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java
   search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java
Log:
SchemaChnages:More stuff for release and recordings

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-01 15:40:23 UTC (rev 13671)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java	2013-05-01 19:20:38 UTC (rev 13672)
@@ -749,6 +749,7 @@
                         String type = ReleaseGroupHelper.calculateOldTypeFromPrimaryType(primaryType,
                                 rg.getSecondaryTypeList().getSecondaryType());
                         doc.addFieldOrNoValue(RecordingIndexField.RELEASE_TYPE, type);
+                        rg.setType(type);
                     } else {
                         doc.addFieldOrNoValue(RecordingIndexField.RELEASE_TYPE, release.getReleaseGroup().getPrimaryType());
                     }
@@ -783,6 +784,16 @@
                             doc.addFieldOrNoValue(RecordingIndexField.RELEASE_DATE, re.getDate());
                             doc.addFieldOrNoValue(RecordingIndexField.COUNTRY, re.getCountry());
                         }
+
+                        ReleaseEvent firstReleaseEvent = release.getReleaseEventList().getReleaseEvent().get(0);
+                        if (!Strings.isNullOrEmpty(firstReleaseEvent.getDate())) {
+                            release.setDate(firstReleaseEvent.getDate());
+                        }
+                        if (!Strings.isNullOrEmpty(firstReleaseEvent.getCountry())) {
+                            release.setCountry(firstReleaseEvent.getCountry());
+                        }
+                        release.setCountry(firstReleaseEvent.getCountry());
+
                     } else {
                         doc.addFieldOrNoValue(RecordingIndexField.RELEASE_DATE, null);
                         doc.addFieldOrNoValue(RecordingIndexField.COUNTRY, null);

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.java	2013-05-01 15:40:23 UTC (rev 13671)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.java	2013-05-01 19:20:38 UTC (rev 13672)
@@ -610,6 +610,7 @@
             release.setTagList(tagList);
         }
 
+        System.out.println("ReleaseEventsCheck");
         if (releaseEvents.containsKey(id)) {
             ReleaseEventList rel = of.createReleaseEventList();
             for (ReleaseEvent releaseEvent : releaseEvents.get(id)) {
@@ -624,8 +625,10 @@
             release.setReleaseEventList(rel);
 
             //backwards compatability
+            System.out.println("ReleaseCountryCheck");
             ReleaseEvent firstReleaseEvent = rel.getReleaseEvent().get(0);
             if (!Strings.isNullOrEmpty(firstReleaseEvent.getCountry())) {
+                System.out.println("ReleaseCountry1");
                 release.setCountry(firstReleaseEvent.getCountry());
             }
             if (!Strings.isNullOrEmpty(firstReleaseEvent.getDate())) {

Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java	2013-05-01 15:40:23 UTC (rev 13671)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java	2013-05-01 19:20:38 UTC (rev 13672)
@@ -8,9 +8,7 @@
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.NumericUtils;
 import org.junit.Test;
-import org.musicbrainz.mmd2.ArtistCredit;
-import org.musicbrainz.mmd2.Recording;
-import org.musicbrainz.mmd2.Release;
+import org.musicbrainz.mmd2.*;
 
 import java.sql.Statement;
 
@@ -691,7 +689,7 @@
     }
 
     /**
-     * Test tracknum
+     * Test Free Text Track Number
      *
      * @throws Exception exception
      */
@@ -711,7 +709,7 @@
     }
 
     /**
-     * Test tracknum
+     * Test Track Position
      *
      * @throws Exception exception
      */
@@ -725,9 +723,7 @@
         IndexReader ir = DirectoryReader.open(ramDir);
         assertEquals(2, ir.numDocs());
         {
-            Document doc = ir.document(1);
-            assertEquals(1, doc.getFields(RecordingIndexField.TRACKNUM.getName()).length);
-     //       assertEquals(4, NumericUtils.prefixCodedToInt(doc.getField(RecordingIndexField.TRACKNUM.getName()).stringValue()));
+            checkTerm(ir, RecordingIndexField.TRACKNUM, 4);
         }
         ir.close();
     }
@@ -796,11 +792,9 @@
             checkTerm(ir, RecordingIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134e");
             checkTerm(ir, RecordingIndexField.POSITION, "1");
 
-            checkTermX(ir, RecordingIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134f",1);
+            checkTermX(ir, RecordingIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134f", 1);
             checkTermX(ir, RecordingIndexField.RELEASE_TYPE, "single",1);
             checkTermX(ir, RecordingIndexField.RELEASE_STATUS, "promotion",1);
-            //checkTermX(ir, RecordingIndexField.POSITION, "1",1);
-
             checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
             checkTerm(ir, RecordingIndexField.TRACKNUM, 4);
             checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
@@ -808,4 +802,55 @@
         }
         ir.close();
     }
+
+    /**
+     * @throws Exception exception
+     */
+    @Test
+    public void testStoredRecording() throws Exception {
+
+        addTrackOne();
+        RAMDirectory ramDir = new RAMDirectory();
+        createIndex(ramDir);
+
+        IndexReader ir = DirectoryReader.open(ramDir);
+        assertEquals(2, ir.numDocs());
+        {
+
+            Document doc = ir.document(1);
+            Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE.getName()), Recording.class);
+            assertEquals("2f250ed2-6285-40f1-aa2a-14f1c05e9765", recording.getId());
+            assertEquals("Do It Clean", recording.getTitle());
+
+            ReleaseList releaseList = recording.getReleaseList();
+            Release     release     = releaseList.getRelease().get(0);
+            assertNotNull(release);
+            assertEquals("Crocodiles (bonus disc)", release.getTitle());
+            assertEquals("Official", release.getStatus());
+            assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134e", release.getId());
+            assertEquals("GB", release.getCountry());
+            assertEquals("1970-01-01", release.getDate());
+
+            ReleaseGroup releaseGroup = release.getReleaseGroup();
+            assertNotNull(releaseGroup);
+            assertEquals("efd2ace2-b3b9-305f-8a53-9803595c0e37",releaseGroup.getId());
+            assertEquals("Compilation",releaseGroup.getType());
+            assertEquals("Album",releaseGroup.getPrimaryType());
+
+            SecondaryTypeList secondaryTypeList = releaseGroup.getSecondaryTypeList();
+            assertNotNull(secondaryTypeList);
+            assertEquals("Compilation",secondaryTypeList.getSecondaryType().get(0));
+            assertEquals("Interview",secondaryTypeList.getSecondaryType().get(1));
+
+            MediumList mediumList = release.getMediumList();
+            assertNotNull(mediumList);
+            assertEquals(2,mediumList.getTrackCount().intValue());
+
+            Medium medium = mediumList.getMedium().get(0);
+            assertNotNull(medium);
+            assertEquals(1, medium.getPosition().intValue());
+            assertEquals("Vinyl", medium.getFormat());
+        }
+        ir.close();
+    }
 }
\ No newline at end of file

Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java	2013-05-01 15:40:23 UTC (rev 13671)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java	2013-05-01 19:20:38 UTC (rev 13672)
@@ -259,7 +259,6 @@
         IndexReader ir = DirectoryReader.open(ramDir);
         assertEquals(2, ir.numDocs());
         {
-            Document doc = ir.document(1);
             checkTerm(ir, ReleaseIndexField.RELEASE, "bonus");
             checkTerm(ir, ReleaseIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134e");
             checkTerm(ir, ReleaseIndexField.TYPE, "ep");
@@ -852,4 +851,56 @@
         }
         ir.close();
     }
+
+    /**
+     * @throws Exception exception
+     */
+    @Test
+    public void testStoredRelease1() throws Exception {
+
+        addReleaseOne();
+        RAMDirectory ramDir = new RAMDirectory();
+        createIndex(ramDir);
+
+        IndexReader ir = DirectoryReader.open(ramDir);
+        assertEquals(2, ir.numDocs());
+        {
+
+            Document doc = ir.document(1);
+            Release release = (Release) MMDSerializer.unserialize(doc.get(ReleaseIndexField.RELEASE_STORE.getName()), Release.class);
+            assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134e", release.getId());
+            assertEquals("Crocodiles (bonus disc)", release.getTitle());
+            assertEquals("B00005NTQ7", release.getAsin());
+
+
+        }
+        ir.close();
+    }
+
+    /**
+     * @throws Exception exception
+     */
+    @Test
+    public void testStoredRelease2() throws Exception {
+
+        addReleaseThree();
+        RAMDirectory ramDir = new RAMDirectory();
+        createIndex(ramDir);
+
+        IndexReader ir = DirectoryReader.open(ramDir);
+        assertEquals(2, ir.numDocs());
+        {
+
+            Document doc = ir.document(1);
+            Release release = (Release) MMDSerializer.unserialize(doc.get(ReleaseIndexField.RELEASE_STORE.getName()), Release.class);
+            assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134e", release.getId());
+            assertEquals("Crocodiles (bonus disc)", release.getTitle());
+            assertEquals("B00005NTQ7", release.getAsin());
+            assertEquals("GB", release.getCountry());
+            assertEquals("1970-01-01", release.getDate());
+
+
+        }
+        ir.close();
+    }
 }
\ No newline at end of file

Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java	2013-05-01 15:40:23 UTC (rev 13671)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java	2013-05-01 19:20:38 UTC (rev 13672)
@@ -25,124 +25,63 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-/**
- * Assumes an index has been built stored and in the data folder, I've picked a fairly obscure bside so hopefully
- * will not get added to another release
- */
-public class IssueSearch240Test
-{
+public class IssueSearch240Test {
 
 
-  private AbstractSearchServer ss;
-  private AbstractDismaxSearchServer sd;
+    private AbstractSearchServer ss;
+    private AbstractDismaxSearchServer sd;
 
 
+    @Before
+    public void setUp() throws Exception {
+        ObjectFactory of = new ObjectFactory();
 
-  @Before
-  public void setUp() throws Exception {
-    ObjectFactory of = new ObjectFactory();
+        RAMDirectory ramDir = new RAMDirectory();
+        Analyzer analyzer = DatabaseIndex.getAnalyzer(RecordingIndexField.class);
+        IndexWriterConfig writerConfig = new IndexWriterConfig(LuceneVersion.LUCENE_VERSION, analyzer);
+        IndexWriter writer = new IndexWriter(ramDir, writerConfig);
 
-    RAMDirectory ramDir = new RAMDirectory();
-    Analyzer analyzer = DatabaseIndex.getAnalyzer(RecordingIndexField.class);
-    IndexWriterConfig writerConfig = new IndexWriterConfig(LuceneVersion.LUCENE_VERSION,analyzer);
-    IndexWriter writer = new IndexWriter(ramDir, writerConfig);
+        {
+            MbDocument doc = new MbDocument();
+            Recording recording = of.createRecording();
+            doc.addField(RecordingIndexField.RECORDING_ID, "7ca7782b-a602-448b-b108-bb881a7be2d6");
+            recording.setId("7ca7782b-a602-448b-b108-bb881a7be2d6");
+            doc.addField(RecordingIndexField.RECORDING, "I Don\u001at Dance");
+            recording.setTitle("I Don\u001at Dance");
+            doc.addField(RecordingIndexField.RECORDING_STORE, MMDSerializer.serialize(recording));
+            writer.addDocument(doc.getLuceneDocument());
+        }
 
-    {
-      MbDocument doc = new MbDocument();
-      doc.addField(RecordingIndexField.RECORDING_ID, "7ca7782b-a602-448b-b108-bb881a7be2d6");
-      doc.addField(RecordingIndexField.RECORDING, "I Don\u001at Dance");
-      doc.addField(RecordingIndexField.RELEASE_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
-      doc.addField(RecordingIndexField.RELEASE, "Our Glorious 5 Year Plan");
-      doc.addField(RecordingIndexField.ARTIST_ID, "4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
-      doc.addField(RecordingIndexField.ARTIST, "Farming Incident");
-      doc.addField(RecordingIndexField.ARTIST_NAME, "Farming Incident");
-      doc.addField(RecordingIndexField.PUID, "1d9e8ed6-3893-4d3b-aa7d-72e79609e386");
-      doc.addField(RecordingIndexField.COMMENT, "demo");
-      doc.addField(RecordingIndexField.COUNTRY, "UK");
-      doc.addField(RecordingIndexField.FORMAT, "Vinyl");
+        {
+            MbDocument doc = new MbDocument();
+            doc.addField(MetaIndexField.META, MetaIndexField.META_VALUE);
+            doc.addNumericField(MetaIndexField.LAST_UPDATED, new Date().getTime());
+            writer.addDocument(doc.getLuceneDocument());
+        }
 
-      ArtistCredit ac = of.createArtistCredit();
-      NameCredit nc = of.createNameCredit();
-      Artist artist = of.createArtist();
-      artist.setId("4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
-      artist.setName("Farming Incident");
-      artist.setSortName("Incident, Farming");
-      nc.setArtist(artist);
-      ac.getNameCredit().add(nc);
-      doc.addField(RecordingIndexField.ARTIST_CREDIT, MMDSerializer.serialize(ac));
+        writer.close();
+        SearcherManager searcherManager = new SearcherManager(ramDir,
+                new MusicBrainzSearcherFactory(ResourceType.RECORDING));
+        ss = new RecordingSearch(searcherManager);
+        sd = new RecordingDismaxSearch(ss);
+    }
 
-      //Track Artist different to Recording Artist
-      ac = of.createArtistCredit();
-      nc = of.createNameCredit();
-      artist = of.createArtist();
-      artist.setId("2302e264-1cf0-4d1f-aca7-2a6f89e34b36");
-      artist.setName("Pig Incident");
-      artist.setSortName("Incident, Pig");
-      nc.setArtist(artist);
-      ac.getNameCredit().add(nc);
 
-      doc.addNumericField(RecordingIndexField.DURATION, 234000);
+    @Test
+    public void testOutputAsXml() throws Exception {
 
-      doc.addNumericField(RecordingIndexField.QUANTIZED_DURATION, (234000 / 2000));
-      doc.addNumericField(RecordingIndexField.NUM_TRACKS,10);
-      doc.addNumericField(RecordingIndexField.NUM_TRACKS_RELEASE,10);
-      doc.addNumericField(RecordingIndexField.TRACKNUM, 5);
-      doc.addField(RecordingIndexField.NUMBER, "A4");
-      doc.addField(RecordingIndexField.RECORDING, "Gravitational Lens");
-      doc.addField(RecordingIndexField.RELEASEGROUP_ID, "4444e264-1cf0-4d1f-aca7-2a6f89e34b36");
-
-      doc.addField(RecordingIndexField.POSITION, "1");
-      doc.addField(RecordingIndexField.RELEASE_TYPE, "Compilation");
-      doc.addField(RecordingIndexField.RELEASE_PRIMARY_TYPE, "Album");
-      doc.addField(RecordingIndexField.RELEASE_SECONDARY_TYPE, "Compilation");
-
-      SecondaryTypeList stl = of.createSecondaryTypeList();
-      stl.getSecondaryType().add("Compilation");
-
-      doc.addField(RecordingIndexField.RELEASE_STATUS, "Official");
-      doc.addField(RecordingIndexField.RELEASE_DATE, "1970-01-01");
-      doc.addField(RecordingIndexField.ISRC, "123456789");
-      doc.addField(RecordingIndexField.ISRC, "abcdefghi");
-      doc.addNumericField(RecordingIndexField.DURATION, 233000);
-
-      doc.addField(RecordingIndexField.TAG, "indie");
-      doc.addField(RecordingIndexField.RELEASE_AC_VA,"1");
-      writer.addDocument(doc.getLuceneDocument());
-
+        Results res = ss.search("rid:7ca7782b-a602-448b-b108-bb881a7be2d6", 0, 10);
+        ResultsWriter writer = ss.getMmd2Writer();
+        StringWriter sw = new StringWriter();
+        PrintWriter pr = new PrintWriter(sw);
+        writer.write(pr, res, SearchServerServlet.RESPONSE_XML);
+        pr.close();
+        String output = sw.toString();
+        System.out.println("Xml is" + output);
+        assertTrue(output.contains("xmlns:ext=\"http://musicbrainz.org/ns/ext#-2.0\""));
+        assertTrue(output.contains("id=\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
+        //IllegalAccessError control char converted toString() apostrophe
+        //assertTrue(output.contains("<title>I Don't Dance</title"));
     }
 
-    {
-      MbDocument doc = new MbDocument();
-      doc.addField(MetaIndexField.META, MetaIndexField.META_VALUE);
-      doc.addNumericField(MetaIndexField.LAST_UPDATED, new Date().getTime());
-      writer.addDocument(doc.getLuceneDocument());
-    }
-
-    writer.close();
-    SearcherManager searcherManager = new SearcherManager(ramDir,
-        new MusicBrainzSearcherFactory(ResourceType.RECORDING));
-    ss = new RecordingSearch(searcherManager);
-    sd = new RecordingDismaxSearch(ss);
-  }
-
-
-  @Test
-  public void testOutputAsXml() throws Exception {
-
-    Results res = ss.search("rid:7ca7782b-a602-448b-b108-bb881a7be2d6", 0, 10);
-    ResultsWriter writer = ss.getMmd2Writer();
-    StringWriter sw = new StringWriter();
-    PrintWriter pr = new PrintWriter(sw);
-    writer.write(pr, res,SearchServerServlet.RESPONSE_XML);
-    pr.close();
-    String output = sw.toString();
-    System.out.println("Xml is" + output);
-    assertTrue(output.contains("count=\"1\""));
-    assertTrue(output.contains("offset=\"0\""));
-    assertTrue(output.contains("xmlns:ext=\"http://musicbrainz.org/ns/ext#-2.0\""));
-    assertTrue(output.contains("id=\"4444e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
-    //IllegalAccessError control char convetted toString() apostrophe
-    //assertTrue(output.contains("<title>I Don't Dance</title"));
-  }
-
 }