package com.fancl.iloyalty.asynctask;
import android.os.AsyncTask;
import com.fancl.iloyalty.AndroidProjectApplication;
import com.fancl.iloyalty.asynctask.callback.TillIdDatabaseDownloadAsyncTaskCallback;
import com.fancl.iloyalty.exception.GeneralException;
import com.fancl.iloyalty.factory.GeneralServiceFactory;
import com.fancl.iloyalty.pojo.DatabaseVersionCheckResult;
import com.fancl.iloyalty.service.DatabaseDownloadService;
import com.fancl.iloyalty.util.LogController;
import com.fancl.iloyalty.util.NetworkConnective;
public class TillIdDatabaseDownloadAsyncTask extends AsyncTask<Void, Void, Boolean>{
private TillIdDatabaseDownloadAsyncTaskCallback callback;
private DatabaseDownloadService databaseDownloadService;
private String databaseVersionCheckingLink;
private String savePath;
private boolean isNoNeedDownloadDb = false;
public TillIdDatabaseDownloadAsyncTask(String databaseVersionCheckingLink, String savePath, TillIdDatabaseDownloadAsyncTaskCallback callback)
{
this.databaseDownloadService = GeneralServiceFactory.getDatabaseDownloadService();
this.databaseVersionCheckingLink = databaseVersionCheckingLink;
this.savePath = savePath;
this.callback = callback;
}
@Override
protected void onPreExecute () {
super.onPreExecute();
//process of thread before start(UI Thread)
if(NetworkConnective.checkNetwork(AndroidProjectApplication.application))
{
databaseDownloadService.addTillIdDatabaseDownloadServiceCallback(callback);
}
}
@Override
protected Boolean doInBackground(Void... params) {
//process of thread(background thread)
LogController.log("TillIdDatabaseDownloadAsyncTask doInBackground >>> " + params[0]);
if(NetworkConnective.checkNetwork(AndroidProjectApplication.application))
{
try
{
DatabaseVersionCheckResult databaseVersionCheckResult = databaseDownloadService.dbVersionChecking(databaseVersionCheckingLink);
if(databaseVersionCheckResult != null)
{
if(databaseDownloadService.isNeedDownloadTillIdDb(databaseVersionCheckResult))
{
boolean successDownload = databaseDownloadService.tillIdDatabaseDownloadProcessing(databaseVersionCheckResult.getDbLink(), savePath);
if(successDownload)
{
return Boolean.valueOf(true);
}
else
{
return Boolean.valueOf(false);
}
}
else
{
isNoNeedDownloadDb = true;
return Boolean.valueOf(false);
}
}
else
{
return Boolean.valueOf(false);
}
}
catch (GeneralException e)
{
return Boolean.valueOf(false);
}
}
return Boolean.valueOf(false);
}
@Override
protected void onPostExecute (Boolean isSuccess) {
super.onPostExecute(isSuccess);
//process of thread ended(UI Thread)
if(callback != null)
{
if(isSuccess.booleanValue())
{
callback.tillIdDatabaseDownloadFinished();
}
else
{
if(isNoNeedDownloadDb)
{
callback.noNeedToDownloadNewTillIdDatabase();
}
else
{
callback.tillIdDatabaseDownloadFailed();
}
}
databaseDownloadService.removeTillIdDatabaseDownloadServiceCallback(callback);
}
}
}