package net.ion.rosetta.query;
import java.util.HashMap;
public enum Constants {
daap_browsealbumlisting("abal", 12), daap_browseartistlisting("abar", 12), daap_browsecomposerlisting("abcp", 12), daap_browsegenrelisting("abgn", 12), daap_baseplaylist("abpl", 1), daap_databasebrowse("abro", 12), daap_databasesongs("adbs", 12), daap_albumgrouping("agal", 12), // guess
daap_songgrouping("agrp", 9), daap_databaseplaylists("aply", 12), daap_playlistrepeatmode("aprm", 1), daap_protocolversion("apro", 11), daap_playlistshufflemode("apsm", 1), daap_playlistsongs("apso", 12), daap_resolveinfo("arif", 12), daap_resolve("arsv", 12), daap_songalbumartist("asaa", 9), daap_songalbumid(
"asai", 7), daap_songalbum("asal", 9), daap_songartist("asar", 9), daap_bookmarkable("asbk", 1), daap_songbookmark("asbo", 5), daap_songbitrate("asbr", 3), daap_songbeatsperminute("asbt", 3), daap_songcodectype("ascd", 5), daap_songcomment("ascm", 9), daap_songcontentdescription("ascn",
9), daap_songcompilation("asco", 1), daap_songcomposer("ascp", 9), daap_songcontentrating("ascr", 1), daap_songcodecsubtype("ascs", 5), daap_songcategory("asct", 9), daap_songdateadded("asda", 10), daap_songdisabled("asdb", 1), daap_songdisccount("asdc", 3), daap_songdatakind("asdk", 1), daap_songdatemodified(
"asdm", 10), daap_songdiscnumber("asdn", 3), daap_songdatepurchased("asdp", 10), daap_songdatereleased("asdr", 10), daap_songdescription("asdt", 9), daap_songextradata("ased", 3), daap_songeqpreset("aseq", 9), daap_songformat("asfm", 9), daap_songgenre("asgn", 9), daap_songgapless(
"asgp", 1), daap_songhasbeenplayed("ashp", 1), daap_songkeywords("asky", 9), daap_songlongcontentdescription("aslc", 9), daap_songpodcasturl("aspu", 9), daap_songrelativevolume("asrv", 2), daap_sortartist("assa", 9), daap_sortcomposer("assc", 9), daap_sortalbumartist("assl", 9), daap_sortname(
"assn", 9), daap_songstoptime("assp", 5), daap_songsamplerate("assr", 5), daap_sortseriesname("asss", 9), daap_songstarttime("asst", 5), daap_sortalbum("assu", 9), daap_songsize("assz", 5), daap_songtrackcount("astc", 3), daap_songtime("astm", 5), daap_songtracknumber("astn", 3), daap_songdataurl(
"asul", 9), daap_songuserrating("asur", 1), daap_songyear("asyr", 3), daap_supportsextradata("ated", 3), daap_serverdatabases("avdb", 12),
com_apple_itunes_itmsArtistid("aeAI", 5), com_apple_itunes_itmsComposerid("aeCI", 5), com_apple_itunes_contentRating("aeCR", 9), com_apple_itunes_episodeNumStr("aeEN", 9), com_apple_itunes_episodeSort("aeES", 5), com_apple_itunes_aeFP("aeFP", 1), // unknown (dmap.serverinforesponse)
com_apple_itunes_gaplessEncDr("aeGD", 5), com_apple_itunes_gaplessEncDel("aeGE", 5), com_apple_itunes_gaplessHeur("aeGH", 5), com_apple_itunes_itmsGenreid("aeGI", 5), com_apple_itunes_gaplessResy("aeGR", 7), com_apple_itunes_gaplessDur("aeGU", 7), com_apple_itunes_hasVideo("aeHV", 1), com_apple_itunes_mediakind(
"aeMK", 1), com_apple_itunes_networkName("aeNN", 9), com_apple_itunes_normVolume("aeNV", 5), com_apple_itunes_isPodcast("aePC", 1), com_apple_itunes_itmsPlaylistid("aePI", 5), com_apple_itunes_isPodcastPlaylist("aePP", 1), com_apple_itunes_specialPlaylist("aePS", 1), com_apple_itunes_itmsStorefrontid(
"aeSF", 5), com_apple_itunes_itmsSongid("aeSI", 5), com_apple_itunes_seriesName("aeSN", 9), com_apple_itunes_smartPlaylist("aeSP", 1), com_apple_itunes_seasonNum("aeSU", 5), com_apple_itunes_musicSharingVersion("aeSV", 5),
dacp_controlint("caci", 12), dacp_state("caps", 1), dacp_shuffle("cash", 1), dacp_repeat("carp", 1), dacp_albumshuffle("caas", 5), // guess, only seen '2'
dacp_albumrepeat("caar", 5), // guess, only seen '6'
dacp_isavailable("caia", 1), // something to do with speakers (true)
dacp_nowplaying("canp", 0), // 4 ids: dbid, plid, playlistItem, itemid
dacp_nowplayingname("cann", 9), dacp_nowplayingartist("cana", 9), dacp_nowplayingalbum("canl", 9), dacp_nowplayinggenre("cang", 9), dacp_remainingtime("cant", 5), dacp_speakers("casp", 12), // guess
dacp_ss("cass", 1), // no idea
dacp_songtime("cast", 5), dacp_su("casu", 1), // no idea
dacp_sg("ceSG", 1), // no idea
dmcp_controlprompt("cmcp", 12), // used when control state changes (eg server exit)
dmcp_getpropertyresponse("cmgt", 12), // guess
dmcp_ik("cmik", 1), // unknown (1) is...?
dmcp_sp("cmsp", 1), // unknown (1) speakers? supports...?
dmcp_status("cmst", 12), dmcp_sv("cmsv", 1), // unknown (1)
dmcp_mediarevision("cmsr", 5), dmcp_mediakind("cmmk", 5), dmcp_volume("cmvo", 5),
dmap_bag("mbcl", 12), dmap_contentcodesresponse("mccr", 12), dmap_contentcodesname("mcna", 9), dmap_contentcodesnumber("mcnm", 5), dmap_container("mcon", 12), dmap_containercount("mctc", 5), dmap_containeritemid("mcti", 5), dmap_contentcodestype("mcty", 3), dmap_dictionary("mdcl", 12), dmap_editdictionary(
"medc", 12), dmap_editstatus("meds", 5), dmap_itemid("miid", 5), dmap_itemkind("mikd", 1), dmap_itemcount("mimc", 5), dmap_itemname("minm", 9), dmap_listing("mlcl", 12), dmap_sessionid("mlid", 5), dmap_listingitem("mlit", 12), dmap_loginresponse("mlog", 12), dmap_parentcontainerid(
"mpco", 5), dmap_persistentid("mper", 7), dmap_protocolversion("mpro", 11), dmap_returnedcount("mrco", 5), dmap_supportsautologout("msal", 1), dmap_authenticationschemes("msas", 1), dmap_authenticationmethod("msau", 1), dmap_supportsbrowse("msbr", 1), dmap_databasescount("msdc", 5), dmap_supportsedit(
"msed", 1), dmap_supportsextensions("msex", 1), dmap_supportsindex("msix", 1), dmap_loginrequired("mslr", 1), dmap_speakermachineaddress("msma", 7), // not idea! only seen '0'
dmap_speakermachinelist("msml", 12), dmap_supportspersistentids("mspi", 1), dmap_supportsquery("msqy", 1), dmap_supportsresolve("msrs", 1), dmap_serverinforesponse("msrv", 12), dmap_utctime("mstc", 10), dmap_timeoutinterval("mstm", 5), dmap_utcoffset("msto", 6), dmap_statusstring("msts", 9), dmap_status(
"mstt", 5), dmap_supportsupdate("msup", 1), dmap_specifiedtotalcount("mtco", 5), dmap_deletedidlisting("mudl", 12), dmap_updateresponse("mupd", 12), dmap_serverrevision("musr", 5), dmap_updatetype("muty", 1);
public static final int BYTE = 1;
public static final int SIGNED_BYTE = 2;
public static final int SHORT = 3;
public static final int SIGNED_SHORT = 4;
public static final int INTEGER = 5;
public static final int SIGNED_INTEGER = 6;
public static final int LONG = 7;
public static final int SIGNED_LONG = 8;
public static final int STRING = 9;
public static final int DATE = 10;
public static final int VERSION = 11;
public static final int COMPOSITE = 12;
public static final int LONG_LONG = 0;
public final int code;
public final String shortName;
public final String longName;
public final int type;
private Constants(String code, int type) {
this.code = stringToCode(code);
this.shortName = code;
this.type = type;
String name = "";
for (char c : this.name().toCharArray()) {
if (c == '_') {
name += ".";
} else if (Character.isUpperCase(c)) {
name += "-" + Character.toLowerCase(c);
} else {
name += c;
}
}
this.longName = name;
}
public String toString() {
return longName;
}
private static int stringToCode(String code) {
char[] b = code.toCharArray();
int v = 0;
for (int i = 0; i < 4; i++) {
v <<= 8;
v += b[i] & 255;
}
return v;
}
public static Constants get(int code) {
return lookup.get(code);
}
public static Constants get(String name) {
return names.get(name);
}
private static HashMap<Integer, Constants> lookup = new HashMap<Integer, Constants>();
private static HashMap<String, Constants> names = new HashMap<String, Constants>();
static {
for (Constants c : Constants.values()) {
lookup.put(c.code, c);
names.put(c.longName, c);
}
}
}