From d03d6a015c64046e12afa13b7d1f3247489ac19c Mon Sep 17 00:00:00 2001 From: tsmsogn Date: Fri, 21 Apr 2017 14:07:46 +0900 Subject: [PATCH] Fix to create table when the table doesn't exist in database --- .../datastore/db/UnencryptedDataTables.java | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/ubhave/datastore/db/UnencryptedDataTables.java b/src/main/java/com/ubhave/datastore/db/UnencryptedDataTables.java index 13666a5..db63595 100644 --- a/src/main/java/com/ubhave/datastore/db/UnencryptedDataTables.java +++ b/src/main/java/com/ubhave/datastore/db/UnencryptedDataTables.java @@ -56,17 +56,35 @@ public Set getTableNames() private UnencryptedDataTable getTable(final String tableName) { - UnencryptedDataTable table = dataTableMap.get(tableName); - if (table == null) + synchronized (lock) { - if (DataHandlerConfig.shouldLog()) + if (!dataTableMap.containsKey(tableName)) { - Log.d(DatabaseStorage.TAG, "Adding: "+tableName+" to table map."); + if (DataHandlerConfig.shouldLog()) + { + Log.d(DatabaseStorage.TAG, "Adding: "+tableName+" to table map."); + } + SQLiteDatabase database = getWritableDatabase(); + database.beginTransaction(); + try + { + UnencryptedDataTable table = new UnencryptedDataTable(tableName); + table.createTable(database); + dataTableMap.put(tableName, table); + database.setTransactionSuccessful(); + } + catch (Exception e) + { + e.printStackTrace(); + } + finally + { + database.endTransaction(); + database.close(); + } } - table = new UnencryptedDataTable(tableName); - dataTableMap.put(tableName, table); + return dataTableMap.get(tableName); } - return table; } @Override