cleanup: store db schema as arrays of arrays rather than arrays whose

odd- and even-indexed members have different roles.  Uses slightly
more memory but is better code.
This commit is contained in:
Eric House 2013-08-07 23:48:33 -07:00
parent d00e9edf55
commit d8e6979bcc

View file

@ -88,67 +88,67 @@ public class DBHelper extends SQLiteOpenHelper {
private Context m_context; private Context m_context;
private static final String[] s_summaryColsAndTypes = { private static final String[][] s_summaryColsAndTypes = {
"rowid", "INTEGER PRIMARY KEY AUTOINCREMENT" { "rowid", "INTEGER PRIMARY KEY AUTOINCREMENT" }
,VISID, "INTEGER" ,{ VISID, "INTEGER" }
,GAME_NAME, "TEXT" ,{ GAME_NAME, "TEXT" }
,NUM_MOVES, "INTEGER" ,{ NUM_MOVES, "INTEGER" }
,TURN, "INTEGER" ,{ TURN, "INTEGER" }
,GIFLAGS, "INTEGER" ,{ GIFLAGS, "INTEGER" }
,NUM_PLAYERS, "INTEGER" ,{ NUM_PLAYERS, "INTEGER" }
,MISSINGPLYRS,"INTEGER" ,{ MISSINGPLYRS,"INTEGER" }
,PLAYERS, "TEXT" ,{ PLAYERS, "TEXT" }
,GAME_OVER, "INTEGER" ,{ GAME_OVER, "INTEGER" }
,SERVERROLE, "INTEGER" ,{ SERVERROLE, "INTEGER" }
,CONTYPE, "INTEGER" ,{ CONTYPE, "INTEGER" }
,ROOMNAME, "TEXT" ,{ ROOMNAME, "TEXT" }
,INVITEID, "TEXT" ,{ INVITEID, "TEXT" }
,RELAYID, "TEXT" ,{ RELAYID, "TEXT" }
,SEED, "INTEGER" ,{ SEED, "INTEGER" }
,DICTLANG, "INTEGER" ,{ DICTLANG, "INTEGER" }
,DICTLIST, "TEXT" ,{ DICTLIST, "TEXT" }
,SMSPHONE, "TEXT" // unused ,{ SMSPHONE, "TEXT" } // unused
,SCORES, "TEXT" ,{ SCORES, "TEXT" }
,CHAT_HISTORY, "TEXT" ,{ CHAT_HISTORY, "TEXT" }
,GAMEID, "INTEGER" ,{ GAMEID, "INTEGER" }
,REMOTEDEVS, "TEXT" ,{ REMOTEDEVS, "TEXT" }
,LASTMOVE, "INTEGER DEFAULT 0" ,{ LASTMOVE, "INTEGER DEFAULT 0" }
,GROUPID, "INTEGER" ,{ GROUPID, "INTEGER" }
// HASMSGS: sqlite doesn't have bool; use 0 and 1 // HASMSGS: sqlite doesn't have bool; use 0 and 1
,HASMSGS, "INTEGER DEFAULT 0" ,{ HASMSGS, "INTEGER DEFAULT 0" }
,CONTRACTED, "INTEGER DEFAULT 0" ,{ CONTRACTED, "INTEGER DEFAULT 0" }
,CREATE_TIME, "INTEGER" ,{ CREATE_TIME, "INTEGER" }
,LASTPLAY_TIME,"INTEGER" ,{ LASTPLAY_TIME,"INTEGER" }
,SNAPSHOT, "BLOB" ,{ SNAPSHOT, "BLOB" }
}; };
private static final String[] s_obitsColsAndTypes = { private static final String[][] s_obitsColsAndTypes = {
RELAYID, "TEXT" { RELAYID, "TEXT" }
,SEED, "INTEGER" ,{ SEED, "INTEGER" }
}; };
private static final String[] s_dictInfoColsAndTypes = { private static final String[][] s_dictInfoColsAndTypes = {
DICTNAME, "TEXT" { DICTNAME, "TEXT" }
,LOC, "UNSIGNED INTEGER(1)" ,{ LOC, "UNSIGNED INTEGER(1)" }
,MD5SUM, "TEXT(32)" ,{ MD5SUM, "TEXT(32)" }
,WORDCOUNT,"INTEGER" ,{ WORDCOUNT,"INTEGER" }
,LANGCODE, "INTEGER" ,{ LANGCODE, "INTEGER" }
}; };
private static final String[] s_dictBrowseColsAndTypes = { private static final String[][] s_dictBrowseColsAndTypes = {
DICTNAME, "TEXT" { DICTNAME, "TEXT" }
,LOC, "UNSIGNED INTEGER(1)" ,{ LOC, "UNSIGNED INTEGER(1)" }
,WORDCOUNTS, "TEXT" ,{ WORDCOUNTS, "TEXT" }
,ITERMIN, "INTEGRE(4)" ,{ ITERMIN, "INTEGRE(4)" }
,ITERMAX, "INTEGER(4)" ,{ ITERMAX, "INTEGER(4)" }
,ITERPOS, "INTEGER" ,{ ITERPOS, "INTEGER" }
,ITERTOP, "INTEGER" ,{ ITERTOP, "INTEGER" }
,ITERPREFIX, "TEXT" ,{ ITERPREFIX, "TEXT" }
}; };
private static final String[] s_groupsSchema = { private static final String[][] s_groupsSchema = {
GROUPNAME, "TEXT" { GROUPNAME, "TEXT" }
,EXPANDED, "INTEGER(1)" ,{ EXPANDED, "INTEGER(1)" }
}; };
public DBHelper( Context context ) public DBHelper( Context context )
@ -225,9 +225,9 @@ public class DBHelper extends SQLiteOpenHelper {
private void addSumColumn( SQLiteDatabase db, String colName ) private void addSumColumn( SQLiteDatabase db, String colName )
{ {
String colType = null; String colType = null;
for ( int ii = 0; ii < s_summaryColsAndTypes.length; ii += 2 ) { for ( int ii = 0; ii < s_summaryColsAndTypes.length; ++ii ) {
if ( s_summaryColsAndTypes[ii].equals( colName ) ) { if ( s_summaryColsAndTypes[ii][0].equals( colName ) ) {
colType = s_summaryColsAndTypes[ii+1]; colType = s_summaryColsAndTypes[ii][1];
break; break;
} }
} }
@ -237,13 +237,13 @@ public class DBHelper extends SQLiteOpenHelper {
db.execSQL( cmd ); db.execSQL( cmd );
} }
private void createTable( SQLiteDatabase db, String name, String[] data ) private void createTable( SQLiteDatabase db, String name, String[][] data )
{ {
StringBuilder query = StringBuilder query =
new StringBuilder( String.format("CREATE TABLE %s (", name ) ); new StringBuilder( String.format("CREATE TABLE %s (", name ) );
for ( int ii = 0; ii < data.length; ii += 2 ) { for ( int ii = 0; ii < data.length; ++ii ) {
String col = String.format( " %s %s,", data[ii], data[ii+1] ); String col = String.format( " %s %s,", data[ii][0], data[ii][1] );
query.append( col ); query.append( col );
} }
query.setLength(query.length() - 1); // nuke the last comma query.setLength(query.length() - 1); // nuke the last comma
@ -292,7 +292,8 @@ public class DBHelper extends SQLiteOpenHelper {
cursor.close(); cursor.close();
} }
private void makeAutoincrement( SQLiteDatabase db, String name, String[] data ) private void makeAutoincrement( SQLiteDatabase db, String name,
String[][] data )
{ {
db.beginTransaction(); db.beginTransaction();
try { try {
@ -319,8 +320,8 @@ public class DBHelper extends SQLiteOpenHelper {
// because we're in a transaction and nothing's been // because we're in a transaction and nothing's been
// committed. // committed.
ArrayList<String> newCols = new ArrayList<String>(); ArrayList<String> newCols = new ArrayList<String>();
for ( int ii = 0; ii < data.length; ii += 2 ) { for ( int ii = 0; ii < data.length; ++ii ) {
newCols.add( data[ii] ); newCols.add( data[ii][0] );
} }
oldCols.retainAll( newCols ); oldCols.retainAll( newCols );