package uk.co.imallan.tuchongdaily.model; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import java.util.ArrayList; import uk.co.imallan.tuchongdaily.db.DBHelper; /** * Created by allan on 15/2/20. */ abstract public class AbstractModel { protected String tableName; protected ContentValues modelValues; protected ArrayList<AbstractModel> nestedModels; protected AbstractModel(String tableName) { this.tableName = tableName; } abstract void saveToTable(ContentValues contentValues); abstract void saveNestedModels(ArrayList<AbstractModel> nestedModels); public void save(Context context) { modelValues = new ContentValues(); nestedModels = new ArrayList<AbstractModel>() { }; saveToTable(modelValues); saveNestedModels(nestedModels); if (TextUtils.isEmpty(tableName)) { throw new RuntimeException("A Table name must be assigned to the model before saving"); } SQLiteDatabase db = DBHelper.instance(context).getWritableDatabase(); if (modelValues != null) { db.insert(tableName, null, modelValues); } if (nestedModels != null && nestedModels.size() > 0) { for (AbstractModel model : nestedModels) { model.save(context); } } } }