package com.lateensoft.pathfinder.toolkit.db.dao.table; import android.content.ContentValues; import android.content.Context; import com.lateensoft.pathfinder.toolkit.db.dao.OwnedObject; import com.lateensoft.pathfinder.toolkit.db.dao.OwnedWeakTableDAO; import com.lateensoft.pathfinder.toolkit.db.dao.Table; import com.lateensoft.pathfinder.toolkit.model.character.stats.AbilityType; import com.lateensoft.pathfinder.toolkit.model.character.stats.Save; import com.lateensoft.pathfinder.toolkit.model.character.stats.SaveType; import java.util.Hashtable; public class SaveDAO extends OwnedWeakTableDAO<Long, Integer, Save> { static final String TABLE = "Save"; private static final String CHARACTER_ID = "character_id"; private static final String SAVE_KEY = "save_key"; private static final String BASE_VALUE = "BaseValue"; private static final String ABILITY_KEY = "ability_key"; private static final String MAGIC_MOD = "MagicMod"; private static final String MISC_MOD = "MiscMod"; private static final String TEMP_MOD = "TempMod"; public SaveDAO(Context context) { super(context); } @Override protected Table initTable() { return new Table(TABLE, CHARACTER_ID, SAVE_KEY, BASE_VALUE, ABILITY_KEY, MAGIC_MOD, MISC_MOD, TEMP_MOD); } @Override protected String getOwnerIdSelector(Long characterId) { return CHARACTER_ID + "=" + characterId; } @Override protected String getIdSelector(OwnedObject<Long, Integer> rowId) { return andSelectors(getOwnerIdSelector(rowId.getOwnerId()), SAVE_KEY + "=" + Integer.toString(rowId.getObject())); } @Override protected OwnedObject<Long, Integer> getIdFromRowData(OwnedObject<Long, Save> rowData) { return new OwnedObject<Long, Integer>(rowData.getOwnerId(), rowData.getObject().getType().getKey()); } @Override protected ContentValues getContentValues(OwnedObject<Long, Save> rowData) { Save object = rowData.getObject(); ContentValues values = new ContentValues(); values.put(SAVE_KEY, object.getType().getKey()); values.put(CHARACTER_ID, rowData.getOwnerId()); values.put(BASE_VALUE, object.getBaseSave()); values.put(ABILITY_KEY, object.getAbilityType().getKey()); values.put(MAGIC_MOD, object.getMagicMod()); values.put(MISC_MOD, object.getMiscMod()); values.put(TEMP_MOD, object.getTempMod()); return values; } @Override protected Save buildFromHashTable(Hashtable<String, Object> hashTable) { SaveType saveKey = SaveType.forKey(((Long) hashTable.get(SAVE_KEY)).intValue()); int baseValue = ((Long) hashTable.get(BASE_VALUE)).intValue(); AbilityType abilityKey = AbilityType.forKey(((Long) hashTable.get(ABILITY_KEY)).intValue()); int magicMod = ((Long) hashTable.get(MAGIC_MOD)).intValue(); int miscMod = ((Long) hashTable.get(MISC_MOD)).intValue(); int tempMod = ((Long) hashTable.get(TEMP_MOD)).intValue(); return new Save(saveKey, baseValue, abilityKey, magicMod, miscMod, tempMod); } }