package com.mechinn.android.ouralliance.gson.frc2015; import android.content.Context; import android.net.Uri; import com.activeandroid.ActiveAndroid; import com.activeandroid.query.Select; import com.google.gson.reflect.TypeToken; import com.mechinn.android.ouralliance.data.Event; import com.mechinn.android.ouralliance.data.EventTeam; import com.mechinn.android.ouralliance.data.JsonWrapper; import com.mechinn.android.ouralliance.data.Match; import com.mechinn.android.ouralliance.data.Team; import com.mechinn.android.ouralliance.data.frc2015.MatchScouting2015; import com.mechinn.android.ouralliance.data.frc2015.MatchScouting2015Wrapper; import com.mechinn.android.ouralliance.data.frc2015.TeamScouting2015; import com.mechinn.android.ouralliance.event.ToastEvent; import com.mechinn.android.ouralliance.gson.ImportJson; import com.mechinn.android.ouralliance.gson.OurAllianceGson; import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import timber.log.Timber; /** * Created by mechinn on 3/28/15. */ public class ImportJsonEventMatchScouting2015 extends ImportJson { public ImportJsonEventMatchScouting2015(Context context, Uri uri) { super(context, uri); } public ImportJsonEventMatchScouting2015(Context context, JsonWrapper jsonWrapper) { super(context,jsonWrapper); } public void run() throws IOException { super.run(); MatchScouting2015Wrapper jsonTeams = (MatchScouting2015Wrapper) getJsonWrapper(); if(null==getJsonWrapper()) { jsonTeams = OurAllianceGson.BUILDER.fromJson(getJson(), MatchScouting2015Wrapper.class); } List<MatchScouting2015> dbTeams = new Select().from(MatchScouting2015.class).execute(); ActiveAndroid.beginTransaction(); try { for(MatchScouting2015 jsonTeam : jsonTeams.getData()) { boolean found = false; if(null!=dbTeams) { for (MatchScouting2015 dbTeam : dbTeams) { // Timber.d("checking if "+jsonTeam+" equal to "+dbTeam); if (jsonTeam.getTeamScouting2015().equals(dbTeam.getTeamScouting2015()) && jsonTeam.getMatch().equals(dbTeam.getMatch())) { Timber.d(jsonTeam.getModified()+" after "+dbTeam.getModified()); if (jsonTeam.getModified().after(dbTeam.getModified())) { dbTeam.copy(jsonTeam); Timber.d("saving "+dbTeam); dbTeam.saveMod(); } else { // Timber.d("ignore "+jsonTeam); } dbTeams.remove(dbTeam); found = true; break; } } } if(!found) { jsonTeam.saveMod(); EventTeam newEventTeam = new EventTeam(); newEventTeam.setEvent(jsonTeam.getMatch().getEvent()); newEventTeam.setTeam(jsonTeam.getTeamScouting2015().getTeam()); newEventTeam.saveMod(); } } ActiveAndroid.setTransactionSuccessful(); ToastEvent.toast("Restore complete"); } finally { ActiveAndroid.endTransaction(); } } }