package com.ringtone.music;
import java.util.ArrayList;
import android.os.Handler;
import android.content.Context;
import android.util.Log;
public class MergedMusicSearcher implements IMusicSearcher {
private boolean mBackupMode = false;
private IMusicSearcher mSogou;
private IMusicSearcher mSecondSearcher;
private int mPage;
private static int sNumQueries = 0;
public MergedMusicSearcher() {
mSogou = MusicSearcherFactory.getInstance(MusicSearcherFactory.ID_SOGOU);
mSecondSearcher = MusicSearcherFactory.getInstance(MusicSearcherFactory.ID_SKREEMR);
//mSecondSearcher = MusicSearcherFactory.getInstance(MusicSearcherFactory.ID_BAIDU);
}
@Override
public ArrayList<MusicInfo> getNextResultList(Context context) {
sNumQueries++;
if (!mBackupMode) {
ArrayList<MusicInfo> infos = mSogou.getNextResultList(context);
if (infos == null) // Error
return null;
if (infos.size() == 0 && mPage == 1) {
if (sNumQueries <= 2) { // Retry
Log.i(Utils.TAG, "Retry " + sNumQueries);
return getNextResultList(context);
}
mBackupMode = true;
Log.i(Utils.TAG, "Switching to backup mode");
// fall through
} else {
mPage++;
return infos;
}
}
if (mBackupMode) {
return mSecondSearcher.getNextResultList(context);
}
// Will not reach here.
return new ArrayList<MusicInfo>();
}
@Override
public void setMusicDownloadUrl(Context context, MusicInfo info) {
if (!mBackupMode) {
mSogou.setMusicDownloadUrl(context, info);
return;
}
mSecondSearcher.setMusicDownloadUrl(context, info);
}
@Override
public void setQuery(String query) {
mSogou.setQuery(query);
mSecondSearcher.setQuery(query);
mPage = 1;
}
}