package com.mechinn.android.ouralliance.event; import com.activeandroid.ActiveAndroid; import com.mechinn.android.ouralliance.data.OurAllianceObject; import java.util.List; import de.greenrobot.event.EventBus; import de.greenrobot.event.util.AsyncExecutor; /** * Created by mechinn on 2/22/15. */ public class Transaction implements AsyncExecutor.RunnableEx { private Class type; private List<? extends OurAllianceObject> objects; private boolean delete; private Transaction(Class type, List<? extends OurAllianceObject> objects, boolean delete) { this.type = type; this.objects = objects; this.delete = delete; } public static void save(Class type, List<? extends OurAllianceObject> objects) { new Transaction(type,objects,false).run(); } public static void delete(Class type, List<? extends OurAllianceObject> objects) { new Transaction(type,objects,true).run(); } public static void asyncSave(Class type, List<? extends OurAllianceObject> objects) { AsyncExecutor.create().execute(new Transaction(type,objects,false)); } public static void asyncDelete(Class type, List<? extends OurAllianceObject> objects) { AsyncExecutor.create().execute(new Transaction(type,objects,true)); } @Override public void run() { if(null!=objects && objects.size()>0) { ActiveAndroid.beginTransaction(); try { for (OurAllianceObject object : objects) { if (delete) { object.delete(); } else { object.saveMod(); } } ActiveAndroid.setTransactionSuccessful(); EventBus.getDefault().post(type.cast(objects.get(0))); } finally { ActiveAndroid.endTransaction(); } } } }