/******************************************************************************* * Created by Orlando Aliaga * Copyright 2015 Prey Inc. All rights reserved. * License: GPLv3 * Full license at "/LICENSE" ******************************************************************************/ package com.prey.actions.fileretrieval; import android.content.Context; import android.os.Environment; import com.prey.PreyConfig; import com.prey.PreyLogger; import com.prey.managers.PreyWifiManager; import com.prey.net.PreyWebServices; import java.io.File; import java.util.List; public class FileretrievalController { private static FileretrievalController instance= null; private static Object mutex= new Object(); private FileretrievalController(){ } public static FileretrievalController getInstance(){ if(instance==null){ synchronized (mutex){ if(instance==null) instance= new FileretrievalController(); } } return instance; } public void run(Context ctx){ PreyLogger.d("______________ FileretrievalController run _____________________"); boolean connect = false; int j=0; do { connect = (PreyConfig.getPreyConfig(ctx).isConnectionExists()|| PreyWifiManager.getInstance(ctx).isOnline()); PreyLogger.d("______________ FileretrievalController connect2+"+connect+" _____________________"); if (connect) { break; } else { try{Thread.sleep(2000);}catch(Exception e){} } j++; }while(j<10); if (connect) { FileretrievalDatasource datasource = new FileretrievalDatasource(ctx); List<FileretrievalDto> list = datasource.getAllFileretrieval(); for (int i = 0; list != null && i < list.size(); i++) { FileretrievalDto dto = list.get(i); String fileId = dto.getFileId(); PreyLogger.d("id:" + dto.getFileId() + " " + dto.getPath()); try { FileretrievalDto dtoStatus = PreyWebServices.getInstance().uploadStatus(ctx, fileId); PreyLogger.d("dtoStatus:" + dtoStatus.getStatus()); if (dtoStatus.getStatus() == 1) { datasource.deleteFileretrieval(fileId); } if (dtoStatus.getStatus() == 2 || dtoStatus.getStatus() == 0) { long total = dtoStatus.getTotal(); File file = new File(Environment.getExternalStorageDirectory() + "/" + dto.getPath()); PreyLogger.d("total:"+total+" size:"+dtoStatus.getSize()+" length:"+file.length()); int responseCode = PreyWebServices.getInstance().uploadFile(ctx, file, fileId, total); PreyLogger.d("responseCode:" + responseCode); if (responseCode == 200 || responseCode == 201) { datasource.deleteFileretrieval(fileId); } } if (dtoStatus.getStatus()==404){ datasource.deleteFileretrieval(fileId); } } catch (Exception e) { PreyLogger.i("FileretrievalController Error:" + e.getMessage()); } } } } public void deleteAll(Context ctx){ FileretrievalDatasource datasource = new FileretrievalDatasource(ctx); datasource.deleteAllFileretrieval(); } }