package io.github.mayubao.kuaichuan;
import android.app.Application;
import com.tencent.bugly.Bugly;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import io.github.mayubao.kuaichuan.core.entity.FileInfo;
/**
* 全局的Application Context
*
* Created by mayubao on 2016/11/25.
* Contact me 345269374@qq.com
*/
public class AppContext extends Application {
/**
* Bugly App Id
*/
public static final String BUGLY_APP_ID = "fc178c6e5c";
/**
* 主要的线程池
*/
public static Executor MAIN_EXECUTOR = Executors.newFixedThreadPool(5);
/**
* 文件发送单线程
*/
public static Executor FILE_SENDER_EXECUTOR = Executors.newSingleThreadExecutor();
/**
* 全局应用的上下文
*/
static AppContext mAppContext;
//文件发送方
Map<String, FileInfo> mFileInfoMap = new HashMap<String, FileInfo>(); //采用HashMap结构,文件地址--->>>FileInfo 映射结构,重复加入FileInfo
Map<String, FileInfo> mReceiverFileInfoMap = new HashMap<String, FileInfo>();
@Override
public void onCreate() {
super.onCreate();
this.mAppContext = this;
//初始化Bugly
Bugly.init(getApplicationContext(), BUGLY_APP_ID, true);
}
/**
* 获取全局的AppContext
* @return
*/
public static AppContext getAppContext(){
return mAppContext;
}
//==========================================================================
//==========================================================================
//发送方
/**
* 添加一个FileInfo
* @param fileInfo
*/
public void addFileInfo(FileInfo fileInfo){
// if(!mFileInfoSet.contains(fileInfo)){
// mFileInfoSet.add(fileInfo);
// }
if(!mFileInfoMap.containsKey(fileInfo.getFilePath())){
mFileInfoMap.put(fileInfo.getFilePath(), fileInfo);
}
}
/**
* 更新FileInfo
* @param fileInfo
*/
public void updateFileInfo(FileInfo fileInfo){
mFileInfoMap.put(fileInfo.getFilePath(), fileInfo);
}
/**
* 删除一个FileInfo
* @param fileInfo
*/
public void delFileInfo(FileInfo fileInfo){
// if(mFileInfoSet.contains(fileInfo)){
// mFileInfoSet.remove(fileInfo);
// }
if(mFileInfoMap.containsKey(fileInfo.getFilePath())){
mFileInfoMap.remove(fileInfo.getFilePath());
}
}
/**
* 是否存在FileInfo
* @param fileInfo
* @return
*/
public boolean isExist(FileInfo fileInfo){
if(mFileInfoMap == null) return false;
return mFileInfoMap.containsKey(fileInfo.getFilePath());
}
/**
* 判断文件集合是否有元素
* @return 有返回true, 反之
*/
public boolean isFileInfoMapExist(){
if(mFileInfoMap == null || mFileInfoMap.size() <= 0){
return false;
}
return true;
}
/**
* 获取全局变量中的FileInfoMap
* @return
*/
public Map<String, FileInfo> getFileInfoMap(){
return mFileInfoMap;
}
/**
* 获取即将发送文件列表的总长度
* @return
*/
public long getAllSendFileInfoSize(){
long total = 0;
for(FileInfo fileInfo : mFileInfoMap.values()){
if(fileInfo != null){
total = total + fileInfo.getSize();
}
}
return total;
}
//==========================================================================
//==========================================================================
//==========================================================================
//==========================================================================
//发送方
/**
* 添加一个FileInfo
* @param fileInfo
*/
public void addReceiverFileInfo(FileInfo fileInfo){
if(!mReceiverFileInfoMap.containsKey(fileInfo.getFilePath())){
mReceiverFileInfoMap.put(fileInfo.getFilePath(), fileInfo);
}
}
/**
* 更新FileInfo
* @param fileInfo
*/
public void updateReceiverFileInfo(FileInfo fileInfo){
mReceiverFileInfoMap.put(fileInfo.getFilePath(), fileInfo);
}
/**
* 删除一个FileInfo
* @param fileInfo
*/
public void delReceiverFileInfo(FileInfo fileInfo){
if(mReceiverFileInfoMap.containsKey(fileInfo.getFilePath())){
mReceiverFileInfoMap.remove(fileInfo.getFilePath());
}
}
/**
* 是否存在FileInfo
* @param fileInfo
* @return
*/
public boolean isReceiverInfoExist(FileInfo fileInfo){
if(mReceiverFileInfoMap == null) return false;
return mReceiverFileInfoMap.containsKey(fileInfo.getFilePath());
}
/**
* 判断文件集合是否有元素
* @return 有返回true, 反之
*/
public boolean isReceiverFileInfoMapExist(){
if(mReceiverFileInfoMap == null || mReceiverFileInfoMap.size() <= 0){
return false;
}
return true;
}
/**
* 获取全局变量中的FileInfoMap
* @return
*/
public Map<String, FileInfo> getReceiverFileInfoMap(){
return mReceiverFileInfoMap;
}
/**
* 获取即将接收文件列表的总长度
* @return
*/
public long getAllReceiverFileInfoSize(){
long total = 0;
for(FileInfo fileInfo : mReceiverFileInfoMap.values()){
if(fileInfo != null){
total = total + fileInfo.getSize();
}
}
return total;
}
//==========================================================================
//==========================================================================
}