diff --git a/core/src/cz/nic/tablexia/Tablexia.java b/core/src/cz/nic/tablexia/Tablexia.java index 7847e5932bc16622125fcf0e554ee41ca2ec7d41..dd026cd5f75f8d0a12eff2f1c5dadfe01776724d 100644 --- a/core/src/cz/nic/tablexia/Tablexia.java +++ b/core/src/cz/nic/tablexia/Tablexia.java @@ -141,7 +141,7 @@ public class Tablexia extends TablexiaApplication { Log.setLoglevel(TablexiaSettings.getInstance().getLogLevel()); // init data storage - TablexiaStorage.init(sqlConnectionType); + TablexiaStorage.init(sqlConnectionType, resetState); // init event bus handlers ApplicationBus.getInstance().subscribe(this); diff --git a/core/src/cz/nic/tablexia/TablexiaStorage.java b/core/src/cz/nic/tablexia/TablexiaStorage.java index 0581c5f1ad1d96b16054c8c4678ce79006609b6a..079bc84f2044d042bdc9258bea59fd8cdefbb2fc 100644 --- a/core/src/cz/nic/tablexia/TablexiaStorage.java +++ b/core/src/cz/nic/tablexia/TablexiaStorage.java @@ -30,7 +30,7 @@ public class TablexiaStorage { this.connection = connection; } - static void init(Tablexia.SQLConnectionType connectionType) { + static void init(Tablexia.SQLConnectionType connectionType, boolean resetState) { if (instance == null) { if (!DATABASE_DIRECTORY.exists()) { DATABASE_DIRECTORY.mkdirs(); @@ -40,6 +40,9 @@ public class TablexiaStorage { Connection connection = DriverManager.getConnection(connectionType.getConnectionString() + DATABASE_DIRECTORY.file().getAbsolutePath() + "/" + DATABASE_NAME); instance = new TablexiaStorage(connection); instance.initTables(); + if (resetState) { + instance.resetScreenState(); + } } catch (ClassNotFoundException e) { Log.err(TablexiaStorage.class, "Cannot find class for database driver!", e); } catch (SQLException e) { @@ -133,12 +136,21 @@ public class TablexiaStorage { return screenState; } - public void saveScreenState(Class<? extends AbstractTablexiaScreen> screenClass, Map<String, String> screenState) { + private void resetScreenState() { + Statement statement = createStatement(); try { - connection.setAutoCommit(false); - Statement statement = createStatement(); statement.executeUpdate(SCREEN_STATE_DROP_TABLE); statement.executeUpdate(SCREEN_STATE_CREATE_TABLE); + statement.close(); + } catch (SQLException e) { + Log.err(getClass(), "Cannot reset screen state in DB!", e); + } + } + + public void saveScreenState(Class<? extends AbstractTablexiaScreen> screenClass, Map<String, String> screenState) { + try { + connection.setAutoCommit(false); + resetScreenState(); try { for (String key: screenState.keySet()) { @@ -147,8 +159,6 @@ public class TablexiaStorage { } catch (SQLException e) { Log.err(getClass(), "Cannot insert screen state into DB!", e); } - - statement.close(); connection.commit(); connection.setAutoCommit(true); } catch (SQLException e) {