package com.kitty.poclient.bean;
import java.util.ArrayList;
import java.util.List;
import android.util.Log;
import com.kitty.poclient.common.WatchDog;
import com.kitty.poclient.data.VirtualData;
import com.kitty.poclient.domain.Music;
import com.kitty.poclient.domain.Pack;
import com.kitty.poclient.service.impl.PackServiceImpl;
public class LocalThemes extends ArrayList<LocalTheme> {
private static final String TAG = LocalThemes.class.getSimpleName() + ":";
private static final long serialVersionUID = -6046819392530389977L;
public static LocalThemes translatePacks(List<Pack> packs) {
LocalThemes themes = new LocalThemes();
for (int themeIndex = 0; themeIndex < packs.size(); themeIndex++) {
LocalTheme theme = new LocalTheme();
Pack pack = packs.get(themeIndex);
pack = new PackServiceImpl().getPackDetailById(pack); // @see: MymusicThemesFragment.initListeners()
if(pack == null){
packs.remove(themeIndex);
continue;
}
List<Music> musicList = pack.getLi();
theme.setName(pack.getName()); // name
int totalMusicNum = musicList.size();
if(totalMusicNum == 0){
packs.remove(themeIndex);
continue;
}
theme.setTotalMusicNum(totalMusicNum); // total music number
int waitMusicNum = 0;
int loadedMusicNum = 0;
int loadingMusicNum = 0;
int cacheFailMusicNum = 0;
Log.e("BUG580", TAG+ pack.getName()+":WatchDog.cacheStateMap.size()="+WatchDog.cacheStateMap.size());
for (int musicIndex = 0; musicIndex < totalMusicNum; musicIndex++) {
long id = musicList.get(musicIndex).getId();
if (WatchDog.cacheStateMap.containsKey(id) == false) {
waitMusicNum++;
} else{
if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_WAIT)) {
waitMusicNum++;
} else if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_DOWNLOADED)) {
loadedMusicNum++;
} else if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_DOWNLOADING)) {
loadingMusicNum++;
} else if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_FAILURE_NOSPACE)){
cacheFailMusicNum++;
} else {
//不明状态
waitMusicNum++;
}
}
}
Log.e("BUG580", TAG+ pack.getName()+":loadedMusicNum="+loadedMusicNum);
Log.e("BUG580", TAG+ pack.getName()+":waitMusicNum="+waitMusicNum);
Log.e("BUG580", TAG+ pack.getName()+":loadingMusicNum="+loadingMusicNum);
Log.e("BUG580", TAG+ pack.getName()+":cacheFailMusicNum="+cacheFailMusicNum);
theme.setWaitMusicNum(waitMusicNum); // wait music number
theme.setdownloadingMusicNum(loadingMusicNum); // loading music number
theme.setDownloadedMusicNum(loadedMusicNum); // loaded music number
theme.setFailCachedMusicNum(cacheFailMusicNum); // failcache music number
int cacheStatus;
if(loadedMusicNum == totalMusicNum){
cacheStatus = LocalCache.CACHE_STATUS_DOWNLOADED;
} else {
if(loadingMusicNum > 0){
cacheStatus = LocalCache.CACHE_STATUS_DOWNLOADING;
} else if(cacheFailMusicNum > 0){
cacheStatus = LocalCache.CACHE_STATUS_FAILURE_NOSPACE;
} else {
cacheStatus = LocalCache.CACHE_STATUS_WAIT;
}
}
theme.setCacheStatus(cacheStatus); // theme cache status
themes.add(theme);
}
return themes;
}
public void refreshThemeCacheStatus(int position) {
Pack pack = VirtualData.packs.get(position);
pack = new PackServiceImpl().getPackDetailById(pack); // @see: MymusicThemesFragment.initListeners()
List<Music> musicList = pack.getLi();
// theme.setName(pack.getName()); // name
int totalMusicNum = musicList.size();
// theme.setTotalMusicNum(totalMusicNum); // total music number
int waitMusicNum = 0;
int loadedMusicNum = 0;
int loadingMusicNum = 0;
int cacheFailMusicNum = 0;
for (int musicIndex = 0; musicIndex < totalMusicNum; musicIndex++) {
long id = musicList.get(musicIndex).getId();
if (WatchDog.cacheStateMap.containsKey(id) == false) {
waitMusicNum++;
} else{
if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_WAIT)) {
waitMusicNum++;
} else if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_DOWNLOADED)) {
loadedMusicNum++;
} else if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_DOWNLOADING)) {
loadingMusicNum++;
} else if (WatchDog.cacheStateMap.get(id).equals(Music.CACHE_FAILURE_NOSPACE)){
cacheFailMusicNum++;
} else {
//不明状态
waitMusicNum++;
}
}
}
int cacheStatus;
if(loadedMusicNum == totalMusicNum){
cacheStatus = LocalCache.CACHE_STATUS_DOWNLOADED;
} else {
if(loadingMusicNum > 0){
cacheStatus = LocalCache.CACHE_STATUS_DOWNLOADING;
} else if(cacheFailMusicNum > 0){
cacheStatus = LocalCache.CACHE_STATUS_FAILURE_NOSPACE;
} else {
cacheStatus = LocalCache.CACHE_STATUS_WAIT;
}
}
LocalTheme relevantTheme = get(position);
relevantTheme.setWaitMusicNum(waitMusicNum); // wait music number
relevantTheme.setdownloadingMusicNum(loadingMusicNum); // loading music number
relevantTheme.setDownloadedMusicNum(loadedMusicNum); // loaded music number
relevantTheme.setFailCachedMusicNum(cacheFailMusicNum); // failcache music number
relevantTheme.setCacheStatus(cacheStatus); // theme cache status
}
public int getParentPackIndex(long musicId){
int packIndex = -1;
for (int index = 0; index < VirtualData.packs.size(); index++) {
Pack pack = VirtualData.packs.get(index);
pack = new PackServiceImpl().getPackDetailById(pack);
List<Music> musicList = pack.getLi();
for(int musicIndex = 0; musicIndex < musicList.size(); musicIndex++){
if(musicList.get(musicIndex).getId() == musicId){
packIndex = index;
break;
}
}
}
return packIndex;
}
}