package com.darkrockstudios.apps.tminus.loaders; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import com.darkrockstudios.apps.tminus.database.DatabaseHelper; import com.darkrockstudios.apps.tminus.launchlibrary.Rocket; import com.j256.ormlite.android.apptools.OpenHelperManager; import com.j256.ormlite.dao.Dao; import java.sql.SQLException; /** * Created by Adam on 7/28/13. * Dark Rock Studios * darkrockstudios.com */ public class RocketLoader extends AsyncTask<Integer, Void, Rocket> { private static final String TAG = RocketLoader.class.getSimpleName(); public static interface RocketLoadListener { public void rocketLoaded( Rocket rocket ); public void rocketLoadFailed( int rocketId ); } private final Context m_context; private final RocketLoadListener m_listener; private int m_rocketId; public RocketLoader( final RocketLoadListener listener, final Context context ) { m_listener = listener; m_context = context; } @Override protected Rocket doInBackground( final Integer... ids ) { Rocket rocket = null; m_rocketId = ids[ 0 ]; final DatabaseHelper databaseHelper = OpenHelperManager.getHelper( m_context, DatabaseHelper.class ); if( databaseHelper != null ) { try { Dao<Rocket, Integer> rocketDao = databaseHelper.getDao( Rocket.class ); rocket = rocketDao.queryForId( m_rocketId ); rocket.refreshFamily( databaseHelper ); } catch( final SQLException e ) { e.printStackTrace(); } OpenHelperManager.releaseHelper(); } return rocket; } @Override protected void onPostExecute( final Rocket result ) { if( m_listener != null ) { if( result != null ) { Log.i( TAG, "Rocket loaded: " + result.name ); m_listener.rocketLoaded( result ); } else { Log.w( TAG, "Rocket failed to load: " + m_rocketId ); m_listener.rocketLoadFailed( m_rocketId ); } } } }