/**
   * Loads all metadata from the local music library into the in-app database.
   *
   * @param Activity activity
   * @param Globals globals
   */
  private void loadAllSongs(Activity activity, Globals g) {
    for (int i = 0; i < artists.size(); i++) {

      String artist = artists.get(i);
      final String where =
          MediaStore.Audio.AlbumColumns.ARTIST + "='" + artist.replace("'", "''") + "'";

      Cursor cursor =
          activity
              .getContentResolver()
              .query(
                  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                  null,
                  where,
                  null,
                  MediaStore.Audio.Albums.ARTIST + " ASC");

      ArrayList<String> albumList = new ArrayList<String>();

      while (cursor.moveToNext()) {
        String songTitle = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
        String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
        Song song = new Song(songTitle, path, true);

        String albumTitle = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
        song.setAlbum(albumTitle);
        song.setArtist(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));

        String artPath = "";
        if (albumTitle != "") {
          String trackNumString =
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TRACK));

          int trackNum;

          if (trackNumString != null && !trackNumString.equals("null")) {
            trackNum = Integer.parseInt(trackNumString);
          } else {
            trackNum = 0;
          }

          song.setTrackNum(trackNum);

          Cursor artCursor =
              activity
                  .getContentResolver()
                  .query(
                      MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                      new String[] {
                        MediaStore.Audio.Albums.ALBUM, MediaStore.Audio.Albums.ALBUM_ART
                      },
                      MediaStore.Audio.Albums.ALBUM + "=?",
                      new String[] {albumTitle},
                      null);

          if (artCursor.moveToFirst() && artCursor.getString(1) != null) {
            artPath = artCursor.getString(1);
          }

          song.setAlbumArt(artPath);
          artCursor.close();
        } else {
          song.setTrackNum(0);

          // SET DEFAULT ALBUM ART??
        }

        song.setIpAddr(g.getIpAddr());

        if (!albumList.contains(albumTitle)) {
          Song albumSong = new Song("DISPLAY_ALBUM", "", true);
          albumSong.setAlbum(albumTitle);
          albumSong.setArtist(
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
          albumSong.setTrackNum(-1);
          albumSong.setAlbumArt(artPath);
          albumSong.setIpAddr(g.getIpAddr());
          g.db.addSongToLibrary(albumSong);
          albumList.add(albumTitle);
        }

        g.db.addSongToLibrary(song);
      }
      cursor.close();

      g.sendUIMessage(0);
    }
  }