package aws.apps.usbDeviceEnumerator.ui.usbinfo.fragments; import android.graphics.Bitmap; import android.text.TextUtils; import aws.apps.usbDeviceEnumerator.data.DataProviderCompanyInfo; import aws.apps.usbDeviceEnumerator.data.DataProviderCompanyLogo; import aws.apps.usbDeviceEnumerator.data.DataProviderUsbInfo; /*package*/ class DataFetcher { private final DataProviderCompanyInfo dbComp; private final DataProviderUsbInfo dbUsb; private final DataProviderCompanyLogo zipComp; public DataFetcher(DataProviderCompanyInfo dbComp, DataProviderUsbInfo dbUsb, DataProviderCompanyLogo zipComp) { this.dbComp = dbComp; this.dbUsb = dbUsb; this.zipComp = zipComp; } public void fetchData(final String vid, final String pid, final String reportedVendorName, final Callback callback) { final Runnable runnable = new Runnable() { @Override public void run() { final String vendorFromDb; final String productFromDb; final Bitmap bitmap; if (dbUsb.isDataAvailable()) { vendorFromDb = dbUsb.getVendorName(vid); productFromDb = dbUsb.getProductName(vid, pid); if (dbComp.isDataAvailable()) { final String searchFor; if (!TextUtils.isEmpty(vendorFromDb)) { searchFor = vendorFromDb; } else { searchFor = reportedVendorName; } final String logo = dbComp.getLogoName(searchFor); bitmap = zipComp.getLogoBitmap(logo); } else { bitmap = null; } } else { vendorFromDb = null; productFromDb = null; bitmap = null; } callback.onSuccess(vendorFromDb, productFromDb, bitmap); } }; final Thread thread = new Thread(runnable); thread.start(); } public interface Callback { void onSuccess(String vendorFromDb, String productFromDb, Bitmap bitmap); } }