[mb-commits] r13666 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/main/java/org/musicbrainz/search/servlet/mmd2 servlet/src/test/java/org/musicbrainz/search/servlet
[email protected] Tue, 30 Apr 2013 12:09:36 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1UX9NI-0005qe-AP@wiley> |
Author: ijabz
Date: 2013-04-30 12:09:34 +0000 (Tue, 30 Apr 2013)
New Revision: 13666
Added:
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseEventHelper.java
Modified:
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java
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/AbstractIndexTest.java
search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java
search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.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/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java
Log:
Schema Changes:Basic Indexing compatible with new schema.
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -123,12 +123,12 @@
"SELECT artist.id, gid, n0.name as name, n1.name as sort_name, " +
" artist_type.name as type, begin_date_year, begin_date_month, begin_date_day, " +
" end_date_year, end_date_month, end_date_day,ended, " +
- " comment, lower(iso_code) as country, lower(gender.name) as gender " +
+ " comment, lower(i.code) as country, lower(gender.name) as gender " +
" FROM artist " +
" LEFT JOIN artist_name n0 ON artist.name = n0.id " +
" LEFT JOIN artist_name n1 ON artist.sort_name = n1.id " +
" LEFT JOIN artist_type ON artist.type = artist_type.id " +
- " LEFT JOIN country ON artist.country = country.id " +
+ " LEFT JOIN iso_3166_1 i on artist.area=i.area" +
" LEFT JOIN gender ON artist.gender=gender.id " +
" WHERE artist.id BETWEEN ? AND ?");
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -113,7 +113,7 @@
"CREATE TEMPORARY TABLE tmp_release_puid AS " +
" SELECT m.release, rp.recording, p.puid " +
" FROM medium m " +
- " INNER JOIN track t ON t.tracklist = m.tracklist " +
+ " INNER JOIN track t ON t.medium = m.id " +
" INNER JOIN recording_puid rp ON rp.recording = t.recording " +
" INNER JOIN puid p ON rp.puid = p.id");
clock.stop();
@@ -141,24 +141,22 @@
getDbConnection().createStatement().execute(
"CREATE TEMPORARY TABLE tmp_release AS " +
"SELECT r.id, r.gid, rn.name as name, " +
- " barcode, country.iso_code as country, " +
- " date_year, date_month, date_day, rgt.name as type, rg.id as rg_id, rg.gid as rg_gid, rm.amazon_asin, " +
+ " barcode, " +
+ " rgt.name as type, rg.id as rg_id, rg.gid as rg_gid, rm.amazon_asin, " +
" language.iso_code_3 as language, language.iso_code_2t as language_2t, script.iso_code as script, rs.name as status, " +
- " sum(tr.track_count) as tracks," +
+ " sum(m.track_count) as tracks," +
" r.artist_credit," +
" r.comment" +
" FROM release r " +
" LEFT JOIN release_meta rm ON r.id = rm.id " +
" LEFT JOIN release_group rg ON rg.id = r.release_group " +
" LEFT JOIN release_group_primary_type rgt ON rg.type = rgt.id " +
- " LEFT JOIN country ON r.country=country.id " +
" LEFT JOIN release_name rn ON r.name = rn.id " +
" LEFT JOIN release_status rs ON r.status = rs.id " +
" LEFT JOIN language ON r.language=language.id " +
" LEFT JOIN script ON r.script=script.id " +
" LEFT JOIN medium m ON m.release=r.id" +
- " LEFT JOIN tracklist tr ON m.tracklist=tr.id " +
- " GROUP BY r.id,r.gid,rn.name,barcode,country.iso_code,date_year,date_month,date_day,rgt.name,rg.id, rg.gid," +
+ " GROUP BY r.id,r.gid,rn.name,barcode,rgt.name,rg.id, rg.gid," +
" rm.amazon_asin, language.iso_code_3, language.iso_code_2t, script.iso_code,rs.name,r.artist_credit, r.comment");
clock.stop();
System.out.println("tmp_release :Finished:" + Utils.formatClock(clock));
@@ -181,12 +179,11 @@
getDbConnection().createStatement().execute(
"CREATE TEMPORARY TABLE tmp_track AS " +
- "SELECT t.id, t.recording, t.length, tn.name as track_name, t.position as track_position, t.number as track_number, tl.track_count, " +
+ "SELECT t.id, t.recording, t.length, tn.name as track_name, t.position as track_position, t.number as track_number, m.track_count, " +
" m.release as release_id, m.position as medium_position, mf.name as format " +
" FROM track t " +
" INNER JOIN track_name tn ON t.name=tn.id" +
- " INNER JOIN tracklist tl ON t.tracklist=tl.id " +
- " INNER JOIN medium m ON m.tracklist=tl.id " +
+ " INNER JOIN medium m ON t.medium=m.id " +
" LEFT JOIN medium_format mf ON m.format=mf.id ");
clock.stop();
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -105,12 +105,12 @@
"SELECT label.id, gid, n0.name as name, n1.name as sort_name, " +
" label_type.name as type, begin_date_year, begin_date_month, begin_date_day, " +
" end_date_year, end_date_month, end_date_day, ended," +
- " comment, label_code, lower(iso_code) as country " +
+ " comment, label_code, lower(i.code) as country " +
" FROM label " +
" LEFT JOIN label_name n0 ON label.name = n0.id " +
" LEFT JOIN label_name n1 ON label.sort_name = n1.id " +
" LEFT JOIN label_type ON label.type = label_type.id " +
- " LEFT JOIN country ON label.country = country.id " +
+ " LEFT JOIN iso_3166_1 i on label.area=i.area" +
" WHERE label.id BETWEEN ? AND ?");
addPreparedStatement("IPICODES",
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-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -99,6 +99,7 @@
}
String releases;
+ String releaseEvents;
String releaseSecondaryTypes;
@Override
@@ -127,12 +128,11 @@
" AND recording between ? AND ?");
addPreparedStatement("TRACKS",
- "SELECT t.id, tn.name as track_name, t.length as duration, t.recording, t.position as track_position, t.number as track_number, tl.track_count, " +
+ "SELECT t.id, tn.name as track_name, t.length as duration, t.recording, t.position as track_position, t.number as track_number, m.track_count, " +
" m.release as release_id, m.position as medium_position,mf.name as format " +
" FROM track t " +
" INNER JOIN track_name tn ON t.name=tn.id AND t.recording BETWEEN ? AND ?" +
- " INNER JOIN tracklist tl ON t.tracklist=tl.id " +
- " INNER JOIN medium m ON m.tracklist=tl.id " +
+ " INNER JOIN medium m ON t.medium=m.id " +
" LEFT JOIN medium_format mf ON m.format=mf.id "
);
}
@@ -184,10 +184,18 @@
releases =
"SELECT " +
" id as releaseKey, gid as releaseid, name as releasename, type, " +
- " status, date_year, date_month, date_day, tracks,artist_credit, country,rg_gid " +
+ " status, tracks,artist_credit, rg_gid " +
" FROM tmp_release r1 " +
" WHERE r1.id in ";
+ releaseEvents =
+ " SELECT re.release as releaseKey, r2.code as country, " +
+ " date_year, date_month, date_day"+
+ " FROM release_country re " +
+ " LEFT JOIN iso_3166_1 r2 " +
+ " ON re.country = r2.area " +
+ " WHERE re.release in ";
+
releaseSecondaryTypes =
"SELECT rg.name as type, r.id as releaseKey" +
" FROM tmp_release r " +
@@ -446,6 +454,22 @@
}
+ private PreparedStatement createReleaseEventStatement(int noOfElements) throws SQLException {
+ StringBuilder inClause = new StringBuilder();
+ boolean firstValue = true;
+ for (int i = 0; i < noOfElements; i++) {
+ if (firstValue) {
+ firstValue = false;
+ } else {
+ inClause.append(',');
+ }
+ inClause.append('?');
+ }
+ PreparedStatement stmt = dbConnection.prepareStatement(
+ releaseEvents + "(" + inClause.toString() + ')');
+ return stmt;
+
+ }
/**
* Create the release secondary types statement
*
@@ -529,8 +553,6 @@
rg.setId(rs.getString("rg_gid"));
release.setReleaseGroup(rg);
release.setStatus(rs.getString("status"));
- release.setCountry(rs.getString("country"));
- release.setDate(Utils.formatDate(rs.getInt("date_year"), rs.getInt("date_month"), rs.getInt("date_day")));
ml.setTrackCount(BigInteger.valueOf(rs.getInt("tracks")));
release.setReleaseGroup(rg);
release.setMediumList(ml);
@@ -542,7 +564,27 @@
}
rs.close();
+ //Add ReleaseEvents for each Release
+ stmt = createReleaseEventStatement(releaseKeys.size());
+ count = 1;
+ for (Integer key : releaseKeys) {
+ stmt.setInt(count, key);
+ count++;
+ }
+ rs = stmt.executeQuery();
+ while (rs.next()) {
+ int releaseKey = rs.getInt("releaseKey");
+ release = releases.get(releaseKey);
+ if (release.getReleaseEventList() == null) {
+ release.setReleaseEventList(of.createReleaseEventList());
+ }
+ ReleaseEvent re = of.createReleaseEvent();
+ re.setDate(Utils.formatDate(rs.getInt("date_year"), rs.getInt("date_month"), rs.getInt("date_day")));
+ re.setCountry((rs.getString("country")));
+ release.getReleaseEventList().getReleaseEvent().add(re);
+ }
+ //Add secondary types of the releasegroup that each release is part of
stmt = createReleaseSecondaryTypesStatement(releaseKeys.size());
count = 1;
for (Integer key : releaseKeys) {
@@ -686,8 +728,23 @@
doc.addNumericField(RecordingIndexField.TRACKNUM, track.getTrackPosition());
doc.addFieldOrNoValue(RecordingIndexField.NUMBER, track.getTrackNumber());
doc.addFieldOrNoValue(RecordingIndexField.RELEASE_STATUS, release.getStatus());
- doc.addFieldOrNoValue(RecordingIndexField.RELEASE_DATE, release.getDate());
- doc.addFieldOrNoValue(RecordingIndexField.COUNTRY, release.getCountry());
+
+ if(
+ (release.getReleaseEventList()!=null) &&
+ (release.getReleaseEventList().getReleaseEvent()!=null)
+ ) {
+ for(ReleaseEvent re:release.getReleaseEventList().getReleaseEvent())
+ {
+ doc.addFieldOrNoValue(RecordingIndexField.RELEASE_DATE, re.getDate());
+ doc.addFieldOrNoValue(RecordingIndexField.COUNTRY, re.getCountry());
+ }
+ }
+ else {
+ doc.addFieldOrNoValue(RecordingIndexField.RELEASE_DATE, null);
+ doc.addFieldOrNoValue(RecordingIndexField.COUNTRY, null);
+ }
+
+
doc.addField(RecordingIndexField.RELEASE_ID, release.getId());
doc.addField(RecordingIndexField.RELEASE, release.getTitle());
doc.addNumericField(RecordingIndexField.NUM_TRACKS_RELEASE, release.getMediumList().getTrackCount().intValue());
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-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -32,6 +32,7 @@
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
+import org.musicbrainz.mmd2.Release;
import org.musicbrainz.mmd2.Tag;
import org.musicbrainz.search.MbDocument;
@@ -108,7 +109,7 @@
addPreparedStatement("PUIDS",
"SELECT m.release, p.puid " +
"FROM medium m " +
- " INNER JOIN track t ON (t.tracklist=m.tracklist AND m.release BETWEEN ? AND ?) " +
+ " INNER JOIN track t ON (t.medium=m.id AND m.release BETWEEN ? AND ?) " +
" INNER JOIN recording_puid rp ON rp.recording = t.recording " +
" INNER JOIN puid p ON rp.puid=p.id");
}
@@ -121,13 +122,12 @@
" WHERE rl.release BETWEEN ? AND ?");
addPreparedStatement("MEDIUMS",
- "SELECT m.release as releaseId, mf.name as format, tr.track_count as numTracksOnMedium, count(mc.id) as discidsOnMedium " +
+ "SELECT m.release as releaseId, mf.name as format, m.track_count as numTracksOnMedium, count(mc.id) as discidsOnMedium " +
" FROM medium m " +
" LEFT JOIN medium_format mf ON m.format=mf.id " +
- " LEFT JOIN tracklist tr ON m.tracklist=tr.id " +
" LEFT JOIN medium_cdtoc mc ON mc.medium=m.id " +
" WHERE m.release BETWEEN ? AND ? " +
- " GROUP BY m.release, m.position, m.id, mf.name, tr.track_count" +
+ " GROUP BY m.release, m.position, m.id, mf.name, m.track_count" +
" ORDER BY m.release, m.position, m.id "
);
@@ -158,12 +158,20 @@
addPreparedStatement("RELEASES",
" SELECT id, gid, name, " +
- " barcode, country, " +
- " date_year, date_month, date_day, type, rg_gid, amazon_asin, " +
+ " barcode, " +
+ " type, rg_gid, amazon_asin, " +
" language, language_2t, script, status, comment " +
" FROM tmp_release rl " +
" WHERE id BETWEEN ? AND ? ");
+ addPreparedStatement("RELEASE_COUNTRY",
+ " SELECT release, r2.code as country, " +
+ " date_year, date_month, date_day"+
+ " FROM release_country r1 " +
+ " LEFT JOIN iso_3166_1 r2 " +
+ " ON r1.country = r2.area " +
+ " WHERE release BETWEEN ? AND ? ");
+
addPreparedStatement("TAGS",
"SELECT release_tag.release, tag.name as tag, release_tag.count as count " +
" FROM release_tag " +
@@ -244,10 +252,24 @@
}
+ private Map<Integer, List<Release>> loadReleaseEvents(int min, int max) throws SQLException, IOException {
+ // Get Release Country
+ PreparedStatement st = getPreparedStatement("RELEASE_COUNTRY");
+ st.setInt(1, min);
+ st.setInt(2, max);
+ ResultSet rs = st.executeQuery();
+ //TODO Will Become ReleaseEvent when MMD updated
+ Map<Integer,List<Release>> releaseEvents = ReleaseEventHelper.completeReleaseEventsFromDbResults(rs,"release");
+ rs.close();
+ return releaseEvents;
+
+ }
+
public void indexData(IndexWriter indexWriter, int min, int max) throws SQLException, IOException {
Map<Integer, List<Tag>> tags = loadTags(min, max);
+ Map<Integer, List<Release>> releaseEvents = loadReleaseEvents(min, max);
//A particular release can have multiple catalog nos, labels when released as an imprint, typically used
//by major labels
@@ -357,7 +379,7 @@
rs = st.executeQuery();
releaseClock.suspend();
while (rs.next()) {
- indexWriter.addDocument(documentFromResultSet(rs, secondaryTypes, tags, labelInfo, mediums, puidWrapper, artistCredits));
+ indexWriter.addDocument(documentFromResultSet(rs, secondaryTypes, tags, releaseEvents, labelInfo, mediums, puidWrapper, artistCredits));
}
rs.close();
}
@@ -365,6 +387,7 @@
public Document documentFromResultSet(ResultSet rs,
Map<Integer, List<String>> secondaryTypes,
Map<Integer,List<Tag>> tags,
+ Map<Integer,List<Release>> releaseEvents,
Map<Integer,List<List<String>>> labelInfo,
Map<Integer,List<List<String>>> mediums,
Map<Integer, List<String>> puids,
@@ -391,10 +414,8 @@
doc.addNonEmptyField(ReleaseIndexField.RELEASEGROUP_ID, rs.getString("rg_gid"));
doc.addFieldOrUnknown(ReleaseIndexField.STATUS, rs.getString("status"));
- doc.addFieldOrUnknown(ReleaseIndexField.COUNTRY, rs.getString("country"));
- doc.addNonEmptyField(ReleaseIndexField.DATE,
- Utils.formatDate(rs.getInt("date_year"), rs.getInt("date_month"), rs.getInt("date_day")));
+
String barcode = rs.getString("barcode");
if(barcode==null) {
doc.addField(ReleaseIndexField.BARCODE,Index.NO_VALUE);
@@ -492,7 +513,17 @@
}
}
+ if (releaseEvents.containsKey(id)) {
+ for (Release releaseEvent : releaseEvents.get(id)) {
+ doc.addFieldOrUnknown(ReleaseIndexField.COUNTRY, releaseEvent.getCountry());
+ doc.addFieldOrUnknown(ReleaseIndexField.DATE, releaseEvent.getDate());
+ }
+ }
+ else {
+ doc.addFieldOrUnknown(ReleaseIndexField.COUNTRY, null);
+ doc.addFieldOrUnknown(ReleaseIndexField.DATE, null);
+ }
return doc.getLuceneDocument();
}
-}
+}
\ No newline at end of file
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -214,12 +214,63 @@
}
protected void setupCommonTables(Statement stmt) throws Exception {
- stmt.addBatch("CREATE TABLE country (" +
- " id serial NOT NULL," +
- " iso_code character varying(2) NOT NULL," +
- " name character varying(100) NOT NULL" +
- ")");
+ stmt.addBatch("CREATE TABLE area_type (id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL);");
+
+
+ stmt.addBatch("CREATE TABLE area (id INTEGER PRIMARY KEY," +
+ " gid uuid," +
+ " name VARCHAR ," +
+ " sort_name VARCHAR ," +
+ " type INTEGER," +
+ " edits_pending INTEGER NOT NULL DEFAULT 0," +
+ " last_updated TIMESTAMP," +
+ " begin_date_year SMALLINT," +
+ " begin_date_month SMALLINT," +
+ " begin_date_day SMALLINT," +
+ " end_date_year SMALLINT," +
+ " end_date_month SMALLINT," +
+ " end_date_day SMALLINT," +
+ " ended BOOLEAN NOT NULL DEFAULT FALSE" +
+ " );");
+
+ stmt.addBatch("CREATE TABLE area_gid_redirect (" +
+ " gid UUID NOT NULL PRIMARY KEY," +
+ " new_id INTEGER NOT NULL," +
+ " created TIMESTAMP" +
+ ");");
+
+ stmt.addBatch("CREATE TABLE iso_3166_1 (area INTEGER NOT NULL," +
+ " code CHAR(2) PRIMARY KEY);" +
+ "");
+
+ stmt.addBatch("CREATE TABLE iso_3166_2 (area INTEGER NOT NULL," +
+ " code VARCHAR(10) PRIMARY KEY);");
+
+ stmt.addBatch("CREATE TABLE iso_3166_3 (area INTEGER NOT NULL," +
+ " code CHAR(4) PRIMARY KEY);");
+
+
+ stmt.addBatch("CREATE TABLE area_alias_type (id SERIAL PRIMARY KEY, name TEXT NOT NULL);");
+
+
+ stmt.addBatch("CREATE TABLE area_alias (id SERIAL PRIMARY KEY," +
+ " area INTEGER NOT NULL," +
+ " name VARCHAR NOT NULL," +
+ " locale TEXT," +
+ " edits_pending INTEGER NOT NULL DEFAULT 0 ," +
+ " last_updated TIMESTAMP," +
+ " type INTEGER," +
+ " sort_name VARCHAR NOT NULL," +
+ " begin_date_year SMALLINT," +
+ " begin_date_month SMALLINT," +
+ " begin_date_day SMALLINT," +
+ " end_date_year SMALLINT," +
+ " end_date_month SMALLINT," +
+ " end_date_day SMALLINT," +
+ " primary_for_locale BOOLEAN NOT NULL DEFAULT false"+
+ ");");
+
stmt.addBatch("CREATE TABLE tag (" +
" id serial NOT NULL," +
" name character varying(255) NOT NULL," +
@@ -242,7 +293,9 @@
" end_date_month integer," +
" end_date_day integer," +
" type integer," +
- " country integer," +
+ " area integer," +
+ " begin_area integer," +
+ " end_area integer," +
" gender integer," +
" comment character varying(255)," +
" last_updated timestamp," +
@@ -338,7 +391,7 @@
" end_date_day integer," +
" label_code integer," +
" type integer," +
- " country integer," +
+ " area integer," +
" comment character varying(255)," +
" last_updated timestamp," +
" edits_pending integer DEFAULT 0," +
@@ -403,12 +456,8 @@
" release_group integer NOT NULL," +
" status integer," +
" packaging integer," +
- " country integer," +
" language integer," +
" script integer," +
- " date_year integer," +
- " date_month integer," +
- " date_day integer," +
" barcode character varying(255)," +
" comment character varying(255)," +
" last_updated timestamp," +
@@ -440,7 +489,7 @@
stmt.addBatch("CREATE TABLE medium (" +
" id serial NOT NULL," +
- " tracklist integer NOT NULL," +
+ " track_count integer NOT NULL," +
" release integer NOT NULL," +
" position integer NOT NULL," +
" format integer," +
@@ -502,6 +551,15 @@
" count integer NOT NULL," +
" last_updated timestamp" +
")");
+
+ stmt.addBatch("CREATE TABLE release_country" +
+ "(" +
+ " release integer NOT NULL," +
+ " country integer NOT NULL," +
+ " date_year smallint NOT NULL," +
+ " date_month smallint NOT NULL," +
+ " date_day smallint NOT NULL" +
+ ")");
}
protected void setupReleaseGroupTables(Statement stmt) throws Exception {
@@ -549,9 +607,10 @@
")");
stmt.addBatch("CREATE TABLE track (" +
- " id serial NOT NULL," +
+ " id serial," +
+ " gid uuid," +
" recording integer NOT NULL," +
- " tracklist integer NOT NULL," +
+ " medium integer NOT NULL," +
" position integer NOT NULL," +
" number text, " +
" name integer NOT NULL," +
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -34,10 +34,11 @@
Statement stmt = conn.createStatement();
stmt.addBatch("INSERT INTO artist_name (id, name) VALUES (1, 'Farming Incident')");
- stmt.addBatch("INSERT INTO artist (id, name, gid, sort_name, begin_date_year, begin_date_month, type, gender, country,ended)" +
+ stmt.addBatch("INSERT INTO artist (id, name, gid, sort_name, begin_date_year, begin_date_month, type, gender, area,ended)" +
" VALUES (521316, 1, '4302e264-1cf0-4d1f-aca7-2a6f89e34b36', 1, 1999, 4, 2, 1, 1,true)");
stmt.addBatch("INSERT INTO artist_ipi (artist,ipi) values(521316,'10001')");
- stmt.addBatch("INSERT INTO country (id, iso_code, name) VALUES (1, 'AF', 'Afghanistan')");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (1, 'Afghanistan')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (1, 'AF')");
stmt.executeBatch();
stmt.close();
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -60,12 +60,12 @@
private void addLabelTwo() throws Exception {
Statement stmt = conn.createStatement();
-
- stmt.addBatch("INSERT INTO country (id, iso_code, name) VALUES (38, 'CA','Canada')");
- stmt.addBatch("INSERT INTO label_name (id, name) VALUES (3, 'MusicBrainz Data Testing Label')");
- stmt.addBatch("INSERT INTO label_name (id, name) VALUES (4, 'Data Testing Label, MusicBrainz')");
-
- stmt.addBatch("INSERT INTO label(id, gid, name, sort_name, type, label_code, country, comment, " +
+
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (38, 'Canada')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (38, 'CA')");
+ stmt.addBatch("INSERT INTO label_name (id, name) VALUES (3, 'MusicBrainz Data Testing Label')");
+ stmt.addBatch("INSERT INTO label_name (id, name) VALUES (4, 'Data Testing Label, MusicBrainz')");
+ stmt.addBatch("INSERT INTO label(id, gid, name, sort_name, type, label_code, area, comment, " +
" begin_date_year, begin_date_month, begin_date_day, end_date_year, end_date_month,ended) " +
"VALUES (2, 'd8caa692-704d-412b-a410-4fbcf5b9c796', 3, 4, 1, 0099998, 38, 'DO NOT EDIT THIS LABEL', " +
" 2009, 1, 1, 2009, 4,false)");
@@ -82,12 +82,13 @@
private void addLabelThree() throws Exception {
Statement stmt = conn.createStatement();
-
- stmt.addBatch("INSERT INTO country (id, iso_code, name) VALUES (1, 'AF','Afghanistan')");
- stmt.addBatch("INSERT INTO label_name (id, name) VALUES (1, '4AD')");
+
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (1, 'Afghanistan')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (1, 'AF')");
+ stmt.addBatch("INSERT INTO label_name (id, name) VALUES (1, '4AD')");
stmt.addBatch("INSERT INTO label_name (id, name) VALUES (2, '4AD US')");
- stmt.addBatch("INSERT INTO label (id, gid, name, sort_name, country, ended)" +
+ stmt.addBatch("INSERT INTO label (id, gid, name, sort_name, area, ended)" +
"VALUES (3, 'a539bb1e-f2e1-4b45-9db8-8053841e7503', 1, 1, 1, true)");
stmt.addBatch("INSERT INTO label_alias (label, name) VALUES (3, 2)");
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-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -60,13 +60,17 @@
stmt.addBatch("INSERT INTO release_group_secondary_type_join (release_group, secondary_type) VALUES (491240,2)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, country, " +
- " language, script, date_year, date_month, date_day) " +
- " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1, 1, 1970, 1, 1)");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format) VALUES (1, 1, 491240, 1, 7)");
- stmt.addBatch("INSERT INTO tracklist (id, track_count) VALUES (1, 2)");
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, " +
+ " language, script) " +
+ " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1)");
- stmt.addBatch("INSERT INTO track (id, recording, tracklist, position, number, name, artist_credit, length) "
+ stmt.addBatch("INSERT INTO release_country (release, country, date_year, date_month, date_day) values (491240, 221, 1970,1,1)");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (221, 'United Kingdom')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (221, 'GB')");
+
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 2, 491240, 1, 7)");
+
+ stmt.addBatch("INSERT INTO track (id, recording, medium, position, number, name, artist_credit, length) "
+ " VALUES (1, 1, 1, 4, 'A4', 2, 1, 33100)");
stmt.addBatch("INSERT INTO recording (id, gid, name, artist_credit, length, comment)"
+ " VALUES (1, '2f250ed2-6285-40f1-aa2a-14f1c05e9765', 1, 1, 33000, 'demo')");
@@ -80,7 +84,8 @@
stmt.addBatch("INSERT INTO puid (id, puid) VALUES (1, 'efd2ace2-b3b9-305f-8a53-9803595c0e38')");
stmt.addBatch("INSERT INTO recording_puid (id, puid, recording) VALUES (1, 1, 1)");
- stmt.addBatch("INSERT INTO country (id, iso_code, name) VALUES (1, 'UK','United Kingdom')");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (1, 'United Kingdom')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (1, 'UK')");
stmt.executeBatch();
stmt.close();
@@ -117,12 +122,11 @@
stmt.addBatch("INSERT INTO release_group (id, gid, name, artist_credit)" +
" VALUES (491240, 'efd2ace2-b3b9-305f-8a53-9803595c0e37', 1, 1)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, packaging, country, " +
- " language, script, date_year, date_month, date_day) " +
- " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1, 1, 1, 1)");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format) VALUES (1, 1, 491240, 1, 7)");
- stmt.addBatch("INSERT INTO tracklist (id, track_count) VALUES (1, 2)");
- stmt.addBatch("INSERT INTO track (id, recording, tracklist, position, name, artist_credit, length) "
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, packaging, " +
+ " language, script) " +
+ " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1)");
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 2, 491240, 1, 7)");
+ stmt.addBatch("INSERT INTO track (id, recording, medium, position, name, artist_credit, length) "
+ " VALUES (1, 1, 1, 4, 1, 2, 33100)");
stmt.addBatch("INSERT INTO recording (id, gid, name, artist_credit, length)"
+ " VALUES (1, '2f250ed2-6285-40f1-aa2a-14f1c05e9765', 1, 1, 33000)");
@@ -158,26 +162,28 @@
" VALUES (491240, 'efd2ace2-b3b9-305f-8a53-9803595c0e37', 1, 1, 1)");
stmt.addBatch("INSERT INTO release_group (id, gid, name, artist_credit, type)" +
" VALUES (491243, 'efd2ace2-b3b9-305f-8a53-9803595c0e67', 2, 1, 2)");
-
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, country, " +
- " language, script, date_year, date_month, date_day) " +
- " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1, 1, 1970, 1, 1)");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format, name) VALUES (1, 1, 491240, 1, 7, null)");
- stmt.addBatch("INSERT INTO tracklist (id, track_count) VALUES (1, 2)");
-
- stmt.addBatch("INSERT INTO track (id, recording, tracklist, position, name, artist_credit, length) "
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, " +
+ " language, script) " +
+ " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1)");
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format, name) VALUES (1, 2, 491240, 1, 7, null)");
+ stmt.addBatch("INSERT INTO track (id, recording, medium, position, name, artist_credit, length) "
+ " VALUES (1, 1, 1, 7, 2, 1, 33100)");
stmt.addBatch("INSERT INTO recording (id, gid, name, artist_credit, length)"
+ " VALUES (1, '2f250ed2-6285-40f1-aa2a-14f1c05e9765', 1, 1, 33000)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, country, " +
- " language, script, date_year, date_month, date_day) " +
- " VALUES (491241, 'c3b8dbc9-c1ff-4743-9015-8d762819134f', 1, 1, 491243, 2, 1, 1, 1, 1970, 1, 1)");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format) VALUES (2, 2, 491241, 1, 7)");
- stmt.addBatch("INSERT INTO tracklist (id, track_count) VALUES (2, 2)");
- stmt.addBatch("INSERT INTO track (id, recording, tracklist, position, name, artist_credit, length) "
+
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, " +
+ " language, script) " +
+ " VALUES (491241, 'c3b8dbc9-c1ff-4743-9015-8d762819134f', 1, 1, 491243, 2, 1, 1)");
+
+
+
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (2, 2, 491241, 1, 7)");
+
+ stmt.addBatch("INSERT INTO track (id, recording, medium, position, name, artist_credit, length) "
+ " VALUES (2, 1, 2, 4, 2, 1, 33100)");
+
stmt.addBatch("INSERT INTO track_name (id, name) VALUES (1, 'Do It Clean')");
stmt.addBatch("INSERT INTO track_name (id, name) VALUES (2, 'Do It Cleans')");
@@ -186,7 +192,6 @@
stmt.addBatch("INSERT INTO puid (id, puid) VALUES (1, 'efd2ace2-b3b9-305f-8a53-9803595c0e38')");
stmt.addBatch("INSERT INTO recording_puid (id, puid, recording) VALUES (1, 1, 1)");
-
stmt.executeBatch();
stmt.close();
}
@@ -407,7 +412,7 @@
Document doc = ir.document(1);
assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
assertEquals(1, doc.getFields(RecordingIndexField.COUNTRY.getName()).length);
- assertEquals("UK", doc.getField(RecordingIndexField.COUNTRY.getName()).stringValue());
+ assertEquals("GB", doc.getField(RecordingIndexField.COUNTRY.getName()).stringValue());
}
ir.close();
}
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-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -53,21 +53,21 @@
stmt.addBatch("INSERT INTO release_group (id, gid, name, artist_credit, type) " +
" VALUES (491240, 'efd2ace2-b3b9-305f-8a53-9803595c0e37', 1, 1, 3)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, country, " +
- " language, script, date_year, date_month, date_day,comment) " +
- " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1, 1, 1, 1, 1,'demo')");
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, " +
+ " language, script, comment) " +
+ " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1,'demo')");
stmt.addBatch("INSERT INTO release_meta (id, amazon_asin) VALUES (491240, 'B00005NTQ7')");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format) VALUES (1, 1, 491240, 1, 7)");
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 1, 491240, 1, 7)");
stmt.addBatch("INSERT INTO medium_cdtoc (id, medium, cdtoc) VALUES (1, 1, 1)");
stmt.addBatch("INSERT INTO puid (id, puid) VALUES (1, 'efd2ace2-b3b9-305f-8a53-9803595c0e38')");
stmt.addBatch("INSERT INTO recording_puid (id, puid, recording) VALUES (1, 1, 2)");
- stmt.addBatch("INSERT INTO tracklist (id, track_count) VALUES (1, 1)");
- stmt.addBatch("INSERT INTO track (id, recording, tracklist, position, name, artist_credit, length) "
+
+ stmt.addBatch("INSERT INTO track (id, recording, medium, position, name, artist_credit, length) "
+ " VALUES (1, 2, 1, 4, 2, 1, 33100)");
+
stmt.addBatch("INSERT INTO recording(id, gid, name, artist_credit, length)"
+ " VALUES (2, '2f250ed2-6285-40f1-aa2a-14f1c05e9765', 1, 1, 33000)");
-
stmt.executeBatch();
stmt.close();
}
@@ -93,11 +93,11 @@
stmt.addBatch("INSERT INTO release_group (id, gid, name, artist_credit)" +
" VALUES (491240, 'efd2ace2-b3b9-305f-8a53-9803595c0e37', 1, 1)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, country, " +
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging," +
" language, script) " +
- " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1,1, 1)");
+ " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1)");
stmt.addBatch("INSERT INTO release_meta (id, amazon_asin) VALUES (491240, 'B00005NTQ7')");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position) VALUES (1, 1, 491240, 1)");
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position) VALUES (1, 1, 491240, 1)");
stmt.executeBatch();
stmt.close();
@@ -124,14 +124,13 @@
stmt.addBatch("INSERT INTO release_group (id, gid, name, artist_credit)" +
" VALUES (491240, 'efd2ace2-b3b9-305f-8a53-9803595c0e37', 1, 1)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, packaging, country, " +
- " language, script, date_year, date_month, date_day) " +
- " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1, 1, 1, 1)");
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, packaging," +
+ " language, script) " +
+ " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1)");
stmt.addBatch("INSERT INTO release_meta (id, amazon_asin) VALUES (491240, 'B00005NTQ7')");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format) VALUES (1, 1, 491240, 1, 7)");
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 10, 491240, 1, 7)");
stmt.addBatch("INSERT INTO medium_cdtoc (id, medium, cdtoc) VALUES (1, 1, 1)");
stmt.addBatch("INSERT INTO medium_cdtoc (id, medium, cdtoc) VALUES (2, 1, 3)");
- stmt.addBatch("INSERT INTO tracklist (id, track_count) VALUES (1, 10)");
stmt.executeBatch();
stmt.close();
}
@@ -160,14 +159,14 @@
stmt.addBatch("INSERT INTO release_group_secondary_type_join (release_group, secondary_type) VALUES (491240,1)");
stmt.addBatch("INSERT INTO release_group_secondary_type_join (release_group, secondary_type) VALUES (491240,2)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, country, " +
- "language, script, date_year, date_month, date_day) " +
- " VALUES (491240,'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1, 28, 1, 1, 1)");
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging," +
+ "language, script) " +
+ " VALUES (491240,'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 28)");
stmt.addBatch("INSERT INTO language (id, iso_code_3, iso_code_2t, iso_code_2b, iso_code_2, name, frequency) " +
" VALUES (1, null, 'eng', 'eng', 'en', 'English', 1)");
stmt.addBatch("INSERT INTO script (id, iso_code, iso_number, name, frequency) VALUES (28, 'Latn' , 215, 'Latin', 4)");
stmt.addBatch("INSERT INTO release_meta (id, amazon_asin) VALUES (491240, 'B00005NTQ7')");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format) VALUES (1, 1, 491240, 1, 7)");
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 1, 491240, 1, 7)");
stmt.addBatch("INSERT INTO tag (id, name, ref_count) VALUES (1, 'punk', 2)");
stmt.addBatch("INSERT INTO release_tag (release, tag, count) VALUES (491240, 1, 10)");
@@ -199,22 +198,26 @@
stmt.addBatch("INSERT INTO release_group (id, gid, name, artist_credit) " +
" VALUES (491240, 'efd2ace2-b3b9-305f-8a53-9803595c0e37', 1, 1)");
- stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, country, " +
- " language, script, date_year, date_month, date_day, barcode) " +
- " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 221, 1, 28, 1970, 1, 1, '5060180310066')");
+ stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging, " +
+ " language, script, barcode) " +
+ " VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 28,'5060180310066')");
stmt.addBatch("INSERT INTO language (id, iso_code_3, iso_code_2t, iso_code_2b, iso_code_2, name, frequency) " +
" VALUES (1, null, 'end', 'eng', 'en', 'English', 1)");
stmt.addBatch("INSERT INTO script (id, iso_code, iso_number, name, frequency) VALUES (28, 'Latn' , 215, 'Latin', 4)");
- stmt.addBatch("INSERT INTO country (id, iso_code, name) VALUES (221, 'GB', 'United Kingdom')");
+ stmt.addBatch("INSERT INTO release_country (release, country, date_year, date_month, date_day) values (491240, 221, 1970,1,1)");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (221, 'United Kingdom')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (221, 'GB')");
+
+
stmt.addBatch("INSERT INTO label_name (id, name) VALUES (1, 'korova')");
- stmt.addBatch("INSERT INTO label (id, gid, name, sort_name, country) " +
+ stmt.addBatch("INSERT INTO label (id, gid, name, sort_name,area) " +
" VALUES (1, 'a539bb1e-f2e1-4b45-9db8-8053841e7503', 1, 1, 1)");
+
stmt.addBatch("INSERT INTO release_label (id, release, label, catalog_number) VALUES (1, 491240, 1, 'ECHO1')");
-
stmt.addBatch("INSERT INTO release_meta (id, amazon_asin) VALUES (491240, 'B00005NTQ7')");
- stmt.addBatch("INSERT INTO medium (id, tracklist, release, position, format) VALUES (1, 1, 491240, 1, 7)");
+ stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 1, 491240, 1, 7)");
stmt.executeBatch();
stmt.close();
@@ -518,7 +521,7 @@
{
Document doc = ir.document(1);
assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(0, doc.getFields(ReleaseIndexField.DATE.getName()).length);
+ assertEquals(1, doc.getFields(ReleaseIndexField.DATE.getName()).length);
}
ir.close();
}
@@ -781,8 +784,6 @@
assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
assertEquals(1, doc.getFields(ReleaseIndexField.COUNTRY.getName()).length);
assertEquals(1, doc.getFields(ReleaseIndexField.BARCODE.getName()).length);
- assertEquals(0, doc.getFields(ReleaseIndexField.DATE.getName()).length);
- assertEquals(0, doc.getFields(ReleaseIndexField.CATALOG_NO.getName()).length);
assertEquals(0, doc.getFields(ReleaseIndexField.LABEL.getName()).length);
assertEquals(1, doc.getFields(ReleaseIndexField.FORMAT.getName()).length);
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -198,6 +198,7 @@
release.setStatus(releaseStatus[i]);
}
+
if (isNotNoValue(releaseDate[i])) {
release.setDate(releaseDate[i].toLowerCase(Locale.US));
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -140,15 +140,39 @@
release.setStatus(status);
}
- String country = doc.get(ReleaseIndexField.COUNTRY);
- if (isNotUnknown(country)){
+ String[] countrys = doc.getValues(ReleaseIndexField.COUNTRY);
+ String[] dates = doc.getValues(ReleaseIndexField.DATE);
+ ReleaseEventList rel = of.createReleaseEventList();
+ for(int i=0;i<countrys.length; i++)
+ {
+ String nextCountry = countrys[i];
+ String nextDate = dates[i];
+ if(isNotUnknown(nextCountry) || isNotUnknown(nextDate))
+ {
+ ReleaseEvent re = of.createReleaseEvent();
+ if(isNotUnknown(nextCountry))
+ {
+ re.setCountry(nextCountry);
+ }
+ if(isNotUnknown(nextDate))
+ {
+ re.setDate(nextDate);
+ }
+ rel.getReleaseEvent().add(re);
+ }
+ }
+ if(rel.getReleaseEvent().size()>0) {
+ release.setReleaseEventList(rel);
+ }
- release.setCountry(country);
+ //For backwards compatability
+ if (isNotUnknown(countrys[0])){
+
+ release.setCountry(countrys[0]);
}
+ if (isNotUnknown(dates[0])){
- String date = doc.get(ReleaseIndexField.DATE);
- if (date != null) {
- release.setDate(date);
+ release.setDate(dates[0]);
}
String barcode = doc.get(ReleaseIndexField.BARCODE);
Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java 2013-04-25 20:54:39 UTC (rev 13665)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java 2013-04-30 12:09:34 UTC (rev 13666)
@@ -802,7 +802,7 @@
ResultsWriter writer = ss.getMmd2Writer();
StringWriter sw = new StringWriter();
PrintWriter pr = new PrintWriter(sw);
- writer.write(pr, res, SearchServerServlet.RESPONSE_XML);
+ writer.write(pr, res, SearchServerServlet.RESPONSE_XML, true);
pr.close();
String output = sw.toString();
System.out.println("Xml is" + output);
@@ -828,12 +828,14 @@
assertTrue(output.contains("<format>Vinyl</format>"));
assertTrue(output.contains("<asin>B00004Y6O9</asin>"));
assertTrue(output.contains("<track-count>17</track-count>"));
- assertTrue(output.contains("<label><name>Wrath Records</name></label>"));
- assertTrue(output.contains("<label id=\"c1dfaf9c-d498-4f6c-b040-f7714315fcea\"><name>Major Records</name></label>"));
+ assertTrue(output.contains("<name>Wrath Records</name>"));
+ assertTrue(output.contains("<label id=\"c1dfaf9c-d498-4f6c-b040-f7714315fcea\">"));
+ assertTrue(output.contains("<name>Major Records</name>"));
assertTrue(output.contains("<catalog-number>WRATHCD-25</catalog-number>"));
assertTrue(output.contains("<medium-list count=\"2\">"));
- assertTrue(output.contains("<secondary-type-list><secondary-type>Live</secondary-type><secondary-type>Compilation</secondary-type></secondary-type-list>"));
- assertTrue(output.contains("<tag-list><tag count=\"10\"><name>punk</name></tag></tag-list>"));
+ assertTrue(output.contains("<secondary-type>Live</secondary-type>"));
+ assertTrue(output.contains("<secondary-type>Compilation</secondary-type>"));
+ assertTrue(output.contains("<name>punk</name>"));
}
@Test