package com.lateensoft.pathfinder.toolkit.db;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
public class TableCreator {
private static final String TAG = TableCreator.class.getSimpleName();
public void createTables(SQLiteDatabase db) {
db.execSQL(createCharacter());
db.execSQL(createSkill());
db.execSQL(createSave());
db.execSQL(createCombatStatSet());
db.execSQL(createAbility());
db.execSQL(createItem());
db.execSQL(createArmor());
db.execSQL(createWeapon());
db.execSQL(createSpell());
db.execSQL(createFeat());
db.execSQL(createFluffInfo());
db.execSQL(createParty());
db.execSQL(createEncounter());
db.execSQL(createEncounterParticipant());
db.execSQL(createPartyMembership());
}
public String createSkill() {
Log.d(TAG, "Creating skill table");
return "CREATE TABLE Skill (" +
"skill_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"skill_key INTEGER, " +
"character_id INTEGER, " +
"SubType TEXT, " +
"ClassSkill INTEGER, " +
"Rank INTEGER, " +
"MiscMod INTEGER, " +
"ability_key INTEGER, " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createSave() {
Log.d(TAG, "Creating save table");
return "CREATE TABLE Save (" +
"save_key INTEGER, " +
"character_id INTEGER, " +
"BaseValue INTEGER, " +
"ability_key INTEGER, " +
"MagicMod INTEGER, " +
"MiscMod INTEGER, " +
"TempMod INTEGER, " +
"PRIMARY KEY (save_key, character_id) " +
"FOREIGN KEY(character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createCombatStatSet() {
Log.d(TAG, "Creating combat skill set table");
return "CREATE TABLE CombatStatSet (" +
"character_id INTEGER PRIMARY KEY, " +
"TotalHP INTEGER, " +
"Wounds INTEGER, " +
"NonLethalDamage INTEGER, " +
"DamageReduction INTEGER, " +
"BaseSpeedFt INTEGER, " +
"InitAbilityKey INTEGER, " +
"InitMiscMod INTEGER, " +
"ACArmor INTEGER, " +
"ACShield INTEGER, " +
"ACAbilityKey INTEGER," +
"SizeMod INTEGER, " +
"ACNaturalArmor, INTEGER, " +
"DeflectionMod INTEGER, " +
"ACMiscMod INTEGER, " +
"BABPrimary INTEGER, " +
"BABSecondary TEXT, " +
"CMBAbilityKey INTEGER, " +
"CMDAbilityKey INTEGER, " +
"CMDMiscMod INTEGER, " +
"SpellResist INTEGER, " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createAbility() {
Log.d(TAG, "Creating ability table");
return "CREATE TABLE Ability (" +
"ability_key INTEGER," +
"character_id INTEGER, " +
"Score INTEGER, " +
"Temp INTEGER, " +
"PRIMARY KEY (ability_key, character_id) " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createItem() {
Log.d(TAG, "Creating item table");
return "CREATE TABLE Item (" +
"item_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"character_id INTEGER, " +
"Name TEXT, " +
"Weight REAL, " +
"Quantity INTEGER, " +
"IsContained INTEGER, " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createArmor() {
Log.d(TAG, "Creating armor table");
return "CREATE TABLE Armor (" +
"item_id INTEGER PRIMARY KEY, " +
"Worn INTEGER," +
"ACBonus INTEGER, " +
"CheckPen INTEGER, " +
"MaxDex INTEGER, " +
"SpellFail INTEGER," +
"Speed INTEGER, " +
"SpecialProperties TEXT," +
"Size TEXT, " +
"FOREIGN KEY (item_id) REFERENCES Item(item_id) " +
"ON DELETE CASCADE " +
");";
}
public String createWeapon() {
Log.d(TAG, "Creating weapon table");
return "CREATE TABLE Weapon (" +
"item_id INTEGER PRIMARY KEY, " +
"TotalAttackBonus INTEGER, " +
"Damage TEXT, " +
"Critical TEXT, " +
"Range INTEGER, " +
"SpecialProperties TEXT, " +
"Ammunition INTEGER, " +
"Type TEXT, " +
"Size TEXT, " +
"FOREIGN KEY (item_id) REFERENCES Item(item_id) " +
"ON DELETE CASCADE " +
");";
}
public String createSpell() {
Log.d(TAG, "Creating spell table");
return "CREATE TABLE Spell (" +
"spell_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"character_id INTEGER, " +
"Name TEXT," +
"Prepared INTEGER," +
"Level INTEGER," +
"Description TEXT, " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createFeat() {
Log.d(TAG, "Creating feat table");
return "CREATE TABLE Feat (" +
"feat_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"character_id INTEGER, " +
"Name TEXT, " +
"Description TEXT, " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createFluffInfo() {
Log.d(TAG, "Creating fluff info table");
return "CREATE TABLE FluffInfo (" +
"character_id INTEGER PRIMARY KEY, " +
"Alignment TEXT, " +
"XP TEXT, " +
"NextLevelXP TEXT, " +
"PlayerClass TEXT, " +
"Race TEXT, " +
"Deity TEXT, " +
"Level TEXT, " +
"Size TEXT, " +
"Gender TEXT, " +
"Height TEXT, " +
"Weight TEXT, " +
"Eyes TEXT, " +
"Hair TEXT, " +
"Languages TEXT, " +
"Description TEXT, " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE " +
");";
}
public String createCharacter() {
Log.d(TAG, "Creating character table");
return "CREATE TABLE Character (" +
"character_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"Name TEXT, " +
"Gold REAL " +
");";
}
public String createParty() {
Log.d(TAG, "Creating party table");
return "CREATE TABLE Party (" +
"party_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"Name TEXT " +
");";
}
public String createPartyMembership() {
Log.d(TAG, "Creating party membership table");
return "CREATE TABLE PartyMembership (" +
"party_id INTEGER, " +
"character_id INTEGER, " +
"PRIMARY KEY (party_id, character_id) " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE, " +
"FOREIGN KEY (party_id) REFERENCES Party(party_id) " +
"ON DELETE CASCADE " +
");";
}
public String createEncounter() {
Log.d(TAG, "Creating encounter table");
return "CREATE TABLE Encounter (" +
"encounter_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"Name TEXT, " +
"IsInCombat INTEGER, " +
"CurrentTurnParticipantId INTEGER, " +
"FOREIGN KEY (CurrentTurnParticipantId) REFERENCES Character(character_id) " +
"ON DELETE SET NULL " +
");";
}
public String createEncounterParticipant() {
Log.d(TAG, "Creating encounter participant table");
return "CREATE TABLE EncounterParticipant (" +
"encounter_id INTEGER, " +
"character_id INTEGER, " +
"InitiativeScore INTEGER, " +
"TurnOrder INTEGER, " +
"PRIMARY KEY (encounter_id, character_id) " +
"FOREIGN KEY (character_id) REFERENCES Character(character_id) " +
"ON DELETE CASCADE, " +
"FOREIGN KEY (encounter_id) REFERENCES Encounter(encounter_id) " +
"ON DELETE CASCADE " +
");";
}
}