package com.darkrockstudios.apps.tminus.database;
import com.darkrockstudios.apps.tminus.database.tables.AgencyPad;
import com.darkrockstudios.apps.tminus.database.tables.AgencyRocket;
import com.darkrockstudios.apps.tminus.launchlibrary.Agency;
import com.darkrockstudios.apps.tminus.launchlibrary.Location;
import com.darkrockstudios.apps.tminus.launchlibrary.Pad;
import com.darkrockstudios.apps.tminus.launchlibrary.Rocket;
import com.darkrockstudios.apps.tminus.launchlibrary.RocketFamily;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.PreparedQuery;
import java.sql.SQLException;
import java.util.List;
/**
* Created by Adam on 2/18/14.
*/
public class DatabaseUtilities
{
private static final String TAG = DatabaseUtilities.class.getSimpleName();
public static void saveRocket( final Rocket rocket, final DatabaseHelper databaseHelper ) throws SQLException
{
final Dao<Rocket, Integer> rocketDao = databaseHelper.getDao( Rocket.class );
final Dao<RocketFamily, Integer> rocketFamilyDao = databaseHelper.getDao( RocketFamily.class );
final Dao<Agency, Integer> agencyDao = databaseHelper.getDao( Agency.class );
final Dao<AgencyRocket, Integer> agencyRocketDao = databaseHelper.getDao( AgencyRocket.class );
if( rocket.family != null )
{
if( rocket.family.agencies != null )
{
for( final Agency agency : rocket.family.agencies )
{
agencyDao.createOrUpdate( agency );
AgencyRocket agencyRocket = new AgencyRocket( agency, rocket.family );
PreparedQuery<AgencyRocket> preexistingCheck = agencyRocketDao.queryBuilder()
.where()
.eq( "agency_id", agency.id )
.and()
.eq( "rocketFamily_id", rocket.family.id )
.prepare();
List<AgencyRocket> existingRelationship = agencyRocketDao.query( preexistingCheck );
if( existingRelationship == null || existingRelationship.size() == 0 )
{
agencyRocketDao.createOrUpdate( agencyRocket );
}
}
}
rocketFamilyDao.createOrUpdate( rocket.family );
}
rocketDao.createOrUpdate( rocket );
}
public static void saveLocation( final Location location, final DatabaseHelper databaseHelper ) throws SQLException
{
final Dao<Location, Integer> locationDao = databaseHelper.getDao( Location.class );
final Dao<Pad, Integer> padDao = databaseHelper.getDao( Pad.class );
final Dao<Agency, Integer> agencyDao = databaseHelper.getDao( Agency.class );
final Dao<AgencyPad, Integer> agencyPadDao = databaseHelper.getDao( AgencyPad.class );
locationDao.createOrUpdate( location );
for( final Pad pad : location.pads )
{
// Ensure the parent/child relationship is setup for the DB
pad.location = location;
padDao.createOrUpdate( pad );
if( pad.agencies != null )
{
for( final Agency agency : pad.agencies )
{
agencyDao.createOrUpdate( agency );
AgencyPad agencyProperty = new AgencyPad( agency, pad );
PreparedQuery<AgencyPad> preexistingCheck = agencyPadDao.queryBuilder()
.where()
.eq( "agency_id", agency.id )
.and()
.eq( "pad_id", pad.id )
.prepare();
List<AgencyPad> existingRelationship = agencyPadDao.query( preexistingCheck );
if( existingRelationship == null || existingRelationship.size() == 0 )
{
agencyPadDao.createOrUpdate( agencyProperty );
}
}
}
}
}
}