package com.mozu.mozuandroidinstoreassistant.app.product.loaders; import android.content.AsyncTaskLoader; import android.content.Context; import com.crashlytics.android.Crashlytics; import com.mozu.api.MozuApiContext; import com.mozu.api.contracts.productruntime.Product; import com.mozu.api.resources.commerce.catalog.storefront.ProductResource; public class ProductDetailLoader extends AsyncTaskLoader<Product> { private Product mProduct; private Integer mTenantId; private Integer mSiteId; private String mProductCode; public ProductDetailLoader(Context context, Integer tenantId, Integer siteId, String productCode) { super(context); mTenantId = tenantId; mSiteId = siteId; mProductCode = productCode; } @Override protected void onForceLoad() { super.onForceLoad(); } @Override public Product loadInBackground() { mProduct = loadProductFromWeb(); return mProduct; } @Override public void deliverResult(Product data) { if (isReset()) return; if (isStarted()) super.deliverResult(data); } @Override protected void onStartLoading() { if (mProduct == null) { mProduct = new Product(); } if (takeContentChanged()) forceLoad(); } @Override protected void onStopLoading() { cancelLoad(); } @Override public void onCanceled(Product data) { super.onCanceled(data); } @Override protected void onReset() { onStopLoading(); mProduct = null; super.onReset(); } private Product loadProductFromWeb() { Product product = new Product(); ProductResource productResource = new ProductResource(new MozuApiContext(mTenantId, mSiteId)); try { product = productResource.getProduct(mProductCode); } catch (Exception e) { Crashlytics.logException(e); } return product; } }