diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index ab1f337..ecb83ef 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -3,7 +3,10 @@
+
+
+
@@ -30,16 +33,28 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -81,8 +96,6 @@
-
-
@@ -123,8 +136,10 @@
-
+
+
+
@@ -257,6 +272,8 @@
+
+
@@ -423,10 +440,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
@@ -845,7 +890,8 @@
-
+
+
1434854005227
@@ -979,11 +1025,17 @@
1435324633695
-
+
+ 1435326238547
+
+
+ 1435326238547
+
+
-
+
@@ -1005,9 +1057,11 @@
+
+
@@ -1016,30 +1070,28 @@
-
+
-
-
-
+
-
+
-
+
@@ -1051,8 +1103,8 @@
-
+
@@ -1086,9 +1138,9 @@
-
-
+
+
@@ -1119,13 +1171,13 @@
file://$PROJECT_DIR$/src/main/java/org/telegram/updatesreceivers/UpdatesThread.java
- 113
+ 114
file://$PROJECT_DIR$/src/main/java/org/telegram/updatesreceivers/UpdatesThread.java
- 107
+ 108
@@ -1148,28 +1200,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1296,18 +1326,10 @@
-
-
-
-
-
-
-
-
@@ -1369,13 +1391,6 @@
-
-
-
-
-
-
-
@@ -1403,26 +1418,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1452,7 +1447,6 @@
-
@@ -1476,17 +1470,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -1512,7 +1495,6 @@
-
@@ -1544,18 +1526,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/org/telegram/database/CreationStrings.java b/src/main/java/org/telegram/database/CreationStrings.java
index 5fb2621..e68e978 100644
--- a/src/main/java/org/telegram/database/CreationStrings.java
+++ b/src/main/java/org/telegram/database/CreationStrings.java
@@ -9,7 +9,7 @@ package org.telegram.database;
public class CreationStrings {
public static final int version = 3;
public static final String createVersionTable = "CREATE TABLE IF NOT EXISTS Versions(ID INTEGER PRIMARY KEY AUTO_INCREMENT, Version INTEGER);";
- public static final String insertCurrentVersion = "INSERT IGNORE INTO Versions (Version) VALUES(" + version + ");";
+ public static final String insertCurrentVersion = "INSERT IGNORE INTO Versions (Version) VALUES(%d);";
public static final String createFilesTable = "CREATE TABLE IF NOT EXISTS Files (fileId VARCHAR(100) PRIMARY KEY, userId INTEGER NOT NULL, caption TEXT NOT NULL)";
public static final String createUsersForFilesTable = "CREATE TABLE IF NOT EXISTS FilesUsers (userId INTEGER PRIMARY KEY, status INTEGER NOT NULL DEFAULT 0)";
public static final String createRecentWeatherTable = "CREATE TABLE IF NOT EXISTS RecentWeather (ID INTEGER PRIMARY KEY AUTO_INCREMENT, userId INTEGER NOT NULL, " +
@@ -17,6 +17,7 @@ public class CreationStrings {
"CONSTRAINT unique_cistyuser UNIQUE (userId,cityId))";
public static final String createDirectionsDatabase = "CREATE TABLE IF NOT EXISTS Directions (userId INTEGER PRIMARY KEY, status INTEGER NOT NULL, " +
"messageId INTEGER NOT NULL DEFAULT 0, origin VARCHAR(100));";
+ public static final String createLastUpdateDatabase = "CREATE TABLE IF NOT EXISTS LastUpdate (token STRING PRIMARY KEY, updateId INTEGER NOT NULL DEFAULT -1);";
/*public static final String createOperatingSystemsVersion = "CREATE TABLE IF NOT EXISTS OperatingSystems (operatingSystem VARCHAR(20) PRIMARY KEY);";
diff --git a/src/main/java/org/telegram/database/DatabaseManager.java b/src/main/java/org/telegram/database/DatabaseManager.java
index 28a175b..81f8bd9 100644
--- a/src/main/java/org/telegram/database/DatabaseManager.java
+++ b/src/main/java/org/telegram/database/DatabaseManager.java
@@ -73,6 +73,9 @@ public class DatabaseManager {
if (currentVersion == 2) {
currentVersion = updateToVersion3();
}
+ if (currentVersion == 3) {
+ currentVersion = updateToVersion4();
+ }
connetion.commitTransaction();
} catch (SQLException e) {
log.error(e);
@@ -81,20 +84,26 @@ public class DatabaseManager {
private int updateToVersion2() throws SQLException {
connetion.executeQuery(CreationStrings.createRecentWeatherTable);
- connetion.executeQuery("INSERT IGNORE INTO Versions (Version) VALUES(2);");
+ connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 2));
return 2;
}
private int updateToVersion3() throws SQLException {
connetion.executeQuery(CreationStrings.createDirectionsDatabase);
- connetion.executeQuery("INSERT IGNORE INTO Versions (Version) VALUES(3);");
+ connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 3));
return 2;
}
+ private int updateToVersion4() throws SQLException {
+ connetion.executeQuery(CreationStrings.createLastUpdateDatabase);
+ connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 4));
+ return 4;
+ }
+
private int createNewTables() throws SQLException {
connetion.executeQuery(CreationStrings.createVersionTable);
connetion.executeQuery(CreationStrings.createFilesTable);
- connetion.executeQuery(CreationStrings.insertCurrentVersion);
+ connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, CreationStrings.version));
connetion.executeQuery(CreationStrings.createUsersForFilesTable);
connetion.executeQuery(CreationStrings.createRecentWeatherTable);
connetion.executeQuery(CreationStrings.createDirectionsDatabase);
@@ -317,4 +326,32 @@ public class DatabaseManager {
}
return updatedRows > 0;
}
+
+ public boolean putLastUpdate(String token, Integer updateId) {
+ int updatedRows = 0;
+ try {
+ final PreparedStatement preparedStatement = connetion.getPreparedStatement("REPLACE INTO LastUpdate (token, updateId) VALUES(?, ?)");
+ preparedStatement.setString(1, token);
+ preparedStatement.setInt(2, updateId);
+ updatedRows = preparedStatement.executeUpdate();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return updatedRows > 0;
+ }
+
+ public Integer getLastUpdate(String token) {
+ Integer updateId = -1;
+ try {
+ final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT updateId FROM LastUpdate WHERE token = ?");
+ preparedStatement.setString(1, token);
+ final ResultSet result = preparedStatement.executeQuery();
+ if (result.next()) {
+ updateId = result.getInt("updateId");
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return updateId;
+ }
}
diff --git a/src/main/java/org/telegram/services/BotLogger.java b/src/main/java/org/telegram/services/BotLogger.java
index 9aec686..752fffd 100644
--- a/src/main/java/org/telegram/services/BotLogger.java
+++ b/src/main/java/org/telegram/services/BotLogger.java
@@ -65,8 +65,6 @@ public class BotLogger {
file.createNewFile();
}
logginFile = new PrintWriter(new BufferedWriter(new FileWriter(currentFileName, true)));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
@@ -330,7 +328,7 @@ public class BotLogger {
}
private void logMsgToFile(Level level, String msg, String dateForLog) {
- dateForLog += level.toString() + " - " + msg;
+ dateForLog += " [" + logger.getName() + "]" + level.toString() + " - " + msg;
logsToFile.add(dateForLog);
synchronized (logsToFile) {
logsToFile.notifyAll();
diff --git a/src/main/java/org/telegram/updatesreceivers/UpdatesThread.java b/src/main/java/org/telegram/updatesreceivers/UpdatesThread.java
index 2fc2d94..f05b2e3 100644
--- a/src/main/java/org/telegram/updatesreceivers/UpdatesThread.java
+++ b/src/main/java/org/telegram/updatesreceivers/UpdatesThread.java
@@ -1,5 +1,6 @@
package org.telegram.updatesreceivers;
+import com.sun.corba.se.impl.oa.toa.TOA;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
@@ -17,6 +18,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import org.telegram.BuildVars;
import org.telegram.api.Update;
+import org.telegram.database.DatabaseManager;
import org.telegram.methods.Constants;
import org.telegram.methods.GetUpdates;
import org.telegram.methods.SendMessage;
@@ -50,7 +52,7 @@ public class UpdatesThread {
public UpdatesThread(String token, UpdatesCallback callback) {
this.token = token;
this.callback = callback;
- this.lastReceivedUpdate = -1;
+ this.lastReceivedUpdate = DatabaseManager.getInstance().getLastUpdate(this.token);
this.readerThread = new ReaderThread();
this.readerThread.start();
this.handlerThread = new HandlerThread();
@@ -132,23 +134,27 @@ public class UpdatesThread {
public void run() {
setPriority(Thread.MIN_PRIORITY);
while(true) {
- Update update = receivedUpdates.poll();
- if (update == null) {
- synchronized (receivedUpdates) {
- try {
- receivedUpdates.wait();
- } catch (InterruptedException e) {
- log.error(e);
- continue;
- }
- update = receivedUpdates.poll();
- if (update == null) {
- continue;
+ try {
+ Update update = receivedUpdates.poll();
+ if (update == null) {
+ synchronized (receivedUpdates) {
+ try {
+ receivedUpdates.wait();
+ } catch (InterruptedException e) {
+ log.error(e);
+ continue;
+ }
+ update = receivedUpdates.poll();
+ if (update == null) {
+ continue;
+ }
}
}
+ DatabaseManager.getInstance().putLastUpdate(token, update.getUpdateId());
+ callback.onUpdateReceived(update);
+ } catch (Exception e) {
+ log.error(e);
}
-
- callback.onUpdateReceived(update);
}
}
}