/* * Copyright (c) 2008, 2009, 2010, 2011 Denis Tulskiy * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * version 3 along with this work. If not, see <http://www.gnu.org/licenses/>. */ package com.tulskiy.musique.util; import java.util.LinkedHashMap; import java.util.Map; import org.jaudiotagger.tag.FieldKey; import org.jaudiotagger.tag.KeyNotFoundException; /** * @Author: Maksim Liauchuk * @Date: 08.05.2011 */ public class FieldKeyMetaHelper { private static final FieldKeyMetaHelper instance = new FieldKeyMetaHelper(); private static Map<FieldKey, FieldKeyMeta> meta = new LinkedHashMap<FieldKey, FieldKeyMeta>(); static { FieldKeyMeta keyMeta; int i = 0; keyMeta = instance.new FieldKeyMeta(FieldKey.ARTIST, "Artist", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.BAND, "Band", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ALBUM_ARTIST, "Album Artist", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.TITLE, "Title", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ALBUM, "Album", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.YEAR, "Year", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.COMMENT, "Comment", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.GENRE, "Genre", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.TRACK, "Track", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.TRACK_TOTAL, "Total Tracks", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.DISC_NO, "Disc", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.DISC_TOTAL, "Total Discs", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.IS_COMPILATION, "Is Compilation", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.RECORD_LABEL, "Record Label", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.CATALOG_NO, "Catalog No", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.LYRICS, "Lyrics", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.RATING, "Rating", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ARTIST_SORT, "Artist (sort)", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ALBUM_ARTIST_SORT, "Album Artist (sort)", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.TITLE_SORT, "Title (sort)", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ALBUM_SORT, "Album (sort)", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.AMAZON_ID, "Amazon Id", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.BARCODE, "Barcode", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.BPM, "BPM", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.COMPOSER, "Composer", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.COMPOSER_SORT, "Composer (sort)", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.CONDUCTOR, "Conductor", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.COVER_ART, "Cover Art", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.CUSTOM1, "Custom 1", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.CUSTOM2, "Custom 2", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.CUSTOM3, "Custom 3", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.CUSTOM4, "Custom 4", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.CUSTOM5, "Custom 5", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ENCODER, "Encoder", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.FBPM, "FBPM", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.GROUPING, "Grouping", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ISRC, "ISRC", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.KEY, "Key", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.LANGUAGE, "Language", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.LYRICIST, "Lyricist", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MEDIA, "Media", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MOOD, "Mood", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_ARTISTID, "MusicBrainz Artist ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_DISC_ID, "MusicBrainz Disc ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_RELEASEARTISTID, "MusicBrainz Release Artist ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_RELEASEID, "MusicBrainz Release ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_RELEASE_COUNTRY, "MusicBrainz Release Country", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_RELEASE_GROUP_ID, "MusicBrainz Release Group ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_RELEASE_STATUS, "MusicBrainz Release Status", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_RELEASE_TYPE, "MusicBrainz Release Type", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_TRACK_ID, "MusicBrainz Track ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICBRAINZ_WORK_ID, "MusicBrainz Work ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MUSICIP_ID, "MusicIP ID", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.OCCASION, "Occasion", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ORIGINAL_ARTIST, "Original Artist", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ORIGINAL_ALBUM, "Original Album", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ORIGINAL_YEAR, "Original Year", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ORIGINAL_LYRICIST, "Original Lyricist", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.QUALITY, "Quality", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.REMIXER, "Remixer", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.SCRIPT, "Script", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.TAGS, "Tags", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.TEMPO, "Tempo", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.URL_DISCOGS_ARTIST_SITE, "URL Discogs Artist Site", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.URL_DISCOGS_RELEASE_SITE, "URL Discogs Release Site", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.URL_LYRICS_SITE, "URL Lyrics Site", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.URL_OFFICIAL_ARTIST_SITE, "URL Official Artist Site", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.URL_OFFICIAL_RELEASE_SITE, "URL Official Release Site", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.URL_WIKIPEDIA_ARTIST_SITE, "URL Wikipedia Artist Site", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.URL_WIKIPEDIA_RELEASE_SITE, "URL Wikipedia Release Site", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ENGINEER, "Engineer", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.PRODUCER, "Producer", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.DJMIXER, "DJ Mixer", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.MIXER, "Mixer", ++i); meta.put(keyMeta.getKey(), keyMeta); keyMeta = instance.new FieldKeyMeta(FieldKey.ARRANGER, "Arranger", ++i); meta.put(keyMeta.getKey(), keyMeta); }; private FieldKeyMetaHelper() { // hide constructor } public static FieldKeyMeta getFieldKeyMeta(FieldKey key) { FieldKeyMeta keyMeta = meta.get(key); if (keyMeta == null) { throw new KeyNotFoundException(); } return keyMeta; } /** * Returns human readable field name. * * @param key field key const * @return human readable field name */ public static String getDisplayName(FieldKey key) throws KeyNotFoundException { FieldKeyMeta keyMeta = meta.get(key); if (keyMeta == null) { throw new KeyNotFoundException(); } return keyMeta.getDisplayName(); } /** * Returns priority of displaying field for user. * * @param key field key const * @return priority of displaying field for user */ public static int getPriority(FieldKey key) throws KeyNotFoundException { FieldKeyMeta keyMeta = meta.get(key); if (keyMeta == null) { throw new KeyNotFoundException(); } return keyMeta.getPriority(); } public class FieldKeyMeta { private FieldKey key; private String displayName; private int priority; public FieldKeyMeta(FieldKey key, String displayName, int priority) { this.key = key; this.displayName = displayName; this.priority = priority; } public FieldKey getKey() { return key; } public String getDisplayName() { return displayName; } int getPriority() { return priority; } @Override public String toString() { return displayName; } } }