You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
640 lines
24 KiB
640 lines
24 KiB
/*
|
|
* This is the source code of Telegram Bot v. 2.0
|
|
* It is licensed under GNU GPL v. 3 or later.
|
|
* You should have received a copy of the license in this archive (see LICENSE).
|
|
*
|
|
* Copyright Ruben Bermudez, 3/12/14.
|
|
*/
|
|
package org.telegram.database;
|
|
|
|
import org.telegram.structure.WeatherAlert;
|
|
import org.telegram.telegrambots.meta.logging.BotLogger;
|
|
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Types;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @author Ruben Bermudez
|
|
* @version 2.0
|
|
* @brief Database Manager to perform database operations
|
|
* @date 3/12/14
|
|
*/
|
|
public class DatabaseManager {
|
|
private static final String LOGTAG = "DATABASEMANAGER";
|
|
|
|
private static volatile DatabaseManager instance;
|
|
private static volatile ConectionDB connetion;
|
|
|
|
/**
|
|
* Private constructor (due to Singleton)
|
|
*/
|
|
private DatabaseManager() {
|
|
connetion = new ConectionDB();
|
|
final int currentVersion = connetion.checkVersion();
|
|
BotLogger.info(LOGTAG, "Current db version: " + currentVersion);
|
|
if (currentVersion < CreationStrings.version) {
|
|
recreateTable(currentVersion);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get Singleton instance
|
|
*
|
|
* @return instance of the class
|
|
*/
|
|
public static DatabaseManager getInstance() {
|
|
final DatabaseManager currentInstance;
|
|
if (instance == null) {
|
|
synchronized (DatabaseManager.class) {
|
|
if (instance == null) {
|
|
instance = new DatabaseManager();
|
|
}
|
|
currentInstance = instance;
|
|
}
|
|
} else {
|
|
currentInstance = instance;
|
|
}
|
|
return currentInstance;
|
|
}
|
|
|
|
/**
|
|
* Recreates the DB
|
|
*/
|
|
private void recreateTable(int currentVersion) {
|
|
try {
|
|
connetion.initTransaction();
|
|
if (currentVersion == 0) {
|
|
currentVersion = createNewTables();
|
|
}
|
|
if (currentVersion == 1) {
|
|
currentVersion = updateToVersion2();
|
|
}
|
|
if (currentVersion == 2) {
|
|
currentVersion = updateToVersion3();
|
|
}
|
|
if (currentVersion == 3) {
|
|
currentVersion = updateToVersion4();
|
|
}
|
|
if (currentVersion == 4) {
|
|
currentVersion = updateToVersion5();
|
|
}
|
|
if (currentVersion == 5) {
|
|
currentVersion = updateToVersion6();
|
|
}
|
|
if (currentVersion == 6) {
|
|
currentVersion = updateToVersion7();
|
|
}
|
|
if (currentVersion == 7) {
|
|
currentVersion = updateToVersion8();
|
|
}
|
|
connetion.commitTransaction();
|
|
} catch (SQLException e) {
|
|
BotLogger.error(LOGTAG, e);
|
|
}
|
|
}
|
|
|
|
private int updateToVersion2() throws SQLException {
|
|
connetion.executeQuery(CreationStrings.createRecentWeatherTable);
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 2));
|
|
return 2;
|
|
}
|
|
|
|
private int updateToVersion3() throws SQLException {
|
|
connetion.executeQuery(CreationStrings.createDirectionsDatabase);
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 3));
|
|
return 3;
|
|
}
|
|
|
|
private int updateToVersion4() throws SQLException {
|
|
connetion.executeQuery(CreationStrings.createLastUpdateDatabase);
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 4));
|
|
return 4;
|
|
}
|
|
|
|
private int updateToVersion5() throws SQLException {
|
|
connetion.executeQuery(CreationStrings.createUserLanguageDatabase);
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 5));
|
|
return 5;
|
|
}
|
|
|
|
private int updateToVersion6() throws SQLException {
|
|
connetion.executeQuery(CreationStrings.createWeatherStateTable);
|
|
connetion.executeQuery(CreationStrings.createUserWeatherOptionDatabase);
|
|
connetion.executeQuery(CreationStrings.createWeatherAlertTable);
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 6));
|
|
return 6;
|
|
}
|
|
|
|
private int updateToVersion7() throws SQLException {
|
|
connetion.executeQuery("ALTER TABLE WeatherState MODIFY chatId BIGINT NOT NULL");
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 7));
|
|
return 7;
|
|
}
|
|
|
|
private int updateToVersion8() throws SQLException {
|
|
connetion.executeQuery(CreationStrings.CREATE_COMMANDS_TABLE);
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, 8));
|
|
return 8;
|
|
}
|
|
|
|
private int createNewTables() throws SQLException {
|
|
connetion.executeQuery(CreationStrings.createVersionTable);
|
|
connetion.executeQuery(CreationStrings.createFilesTable);
|
|
connetion.executeQuery(String.format(CreationStrings.insertCurrentVersion, CreationStrings.version));
|
|
connetion.executeQuery(CreationStrings.createUsersForFilesTable);
|
|
connetion.executeQuery(CreationStrings.createRecentWeatherTable);
|
|
connetion.executeQuery(CreationStrings.createDirectionsDatabase);
|
|
connetion.executeQuery(CreationStrings.createUserLanguageDatabase);
|
|
connetion.executeQuery(CreationStrings.createWeatherStateTable);
|
|
connetion.executeQuery(CreationStrings.createUserWeatherOptionDatabase);
|
|
connetion.executeQuery(CreationStrings.createWeatherAlertTable);
|
|
connetion.executeQuery(CreationStrings.CREATE_COMMANDS_TABLE);
|
|
return CreationStrings.version;
|
|
}
|
|
|
|
public boolean setUserStateForCommandsBot(Integer userId, boolean active) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("INSERT INTO CommandUsers (userId, status) VALUES(?, ?) ON DUPLICATE KEY UPDATE status=?");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setInt(2, active ? 1 : 0);
|
|
preparedStatement.setInt(3, active ? 1 : 0);
|
|
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public boolean getUserStateForCommandsBot(Integer userId) {
|
|
int status = -1;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("Select status FROM CommandUsers WHERE userId=?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
status = result.getInt("status");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return status == 1;
|
|
}
|
|
|
|
public boolean addFile(String fileId, Integer userId, String caption) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("REPLACE INTO Files (fileId, userId, caption) VALUES(?, ?, ?)");
|
|
preparedStatement.setString(1, fileId);
|
|
preparedStatement.setInt(2, userId);
|
|
preparedStatement.setString(3, caption);
|
|
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public HashMap<String, String> getFilesByUser(Integer userId) {
|
|
HashMap<String, String> files = new HashMap<>();
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT * FROM Files WHERE userId = ?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
while (result.next()) {
|
|
files.put(result.getString("fileId"), result.getString("caption"));
|
|
}
|
|
result.close();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return files;
|
|
}
|
|
|
|
public boolean addUserForFile(Integer userId, int status) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("REPLACE INTO FilesUsers (userId, status) VALUES(?, ?)");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setInt(2, status);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public boolean deleteUserForFile(Integer userId) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("DELETE FROM FilesUsers WHERE userId=?;");
|
|
preparedStatement.setInt(1, userId);
|
|
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public int getUserStatusForFile(Integer userId) {
|
|
int status = -1;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("Select status FROM FilesUsers WHERE userId=?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
status = result.getInt("status");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return status;
|
|
}
|
|
|
|
public boolean doesFileExists(String fileId) {
|
|
boolean exists = false;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("Select fileID FROM Files WHERE fileId=?");
|
|
preparedStatement.setString(1, fileId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
exists = result.next();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return exists;
|
|
}
|
|
|
|
public boolean deleteFile(String fileId) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("DELETE FROM Files WHERE fileId=?;");
|
|
preparedStatement.setString(1, fileId);
|
|
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public boolean addRecentWeather(Integer userId, Integer cityId, String cityName) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("REPLACE INTO RecentWeather (userId, cityId, cityName) VALUES(?, ?, ?)");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setInt(2, cityId);
|
|
preparedStatement.setString(3, cityName);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
cleanUpRecent(userId);
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public List<String> getRecentWeather(Integer userId) {
|
|
List<String> recentWeather = new ArrayList<>();
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("select * FROM RecentWeather WHERE userId=? order by date desc");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
while (result.next()) {
|
|
recentWeather.add(result.getString("cityName"));
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return recentWeather;
|
|
}
|
|
|
|
private void cleanUpRecent(Integer userId) {
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("DELETE FROM RecentWeather WHERE userid = ? AND ID <= (SELECT ID FROM (SELECT id From RecentWeather where userId = ? ORDER BY id DESC LIMIT 1 OFFSET 4 ) AS T1 )");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setInt(2, userId);
|
|
preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public boolean addUserForDirection(Integer userId, int status, int messageId, String origin) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("REPLACE INTO Directions (userId, status, messageId, origin) VALUES(?, ?, ?, ?)");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setInt(2, status);
|
|
preparedStatement.setInt(3, messageId);
|
|
if (origin == null || origin.isEmpty()) {
|
|
preparedStatement.setNull(4, Types.VARCHAR);
|
|
} else {
|
|
preparedStatement.setString(4, origin);
|
|
}
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public int getUserDestinationStatus(Integer userId) {
|
|
int status = -1;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT status FROM Directions WHERE userId = ?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
status = result.getInt("status");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return status;
|
|
}
|
|
|
|
public int getUserDestinationMessageId(Integer userId) {
|
|
int messageId = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT messageId FROM Directions WHERE userId = ?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
messageId = result.getInt("messageId");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return messageId;
|
|
}
|
|
|
|
public String getUserOrigin(Integer userId) {
|
|
String origin = "";
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT origin FROM Directions WHERE userId = ?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
origin = result.getString("origin");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return origin;
|
|
}
|
|
|
|
public boolean deleteUserForDirections(Integer userId) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("DELETE FROM Directions WHERE userId=?;");
|
|
preparedStatement.setInt(1, userId);
|
|
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
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;
|
|
}
|
|
|
|
public String getUserLanguage(Integer userId) {
|
|
String languageCode = "en";
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT languageCode FROM UserLanguage WHERE userId = ?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
languageCode = result.getString("languageCode");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return languageCode;
|
|
}
|
|
|
|
public boolean putUserLanguage(Integer userId, String language) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("REPLACE INTO UserLanguage (userId, languageCode) VALUES(?, ?)");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setString(2, language);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public int getWeatherState(Integer userId, Long chatId) {
|
|
int state = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT state FROM WeatherState WHERE userId = ? AND chatId = ?");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setLong(2, chatId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
state = result.getInt("state");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return state;
|
|
}
|
|
|
|
public boolean insertWeatherState(Integer userId, Long chatId, int state) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("REPLACE INTO WeatherState (userId, chatId, state) VALUES (?, ?, ?)");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setLong(2, chatId);
|
|
preparedStatement.setInt(3, state);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public Integer getRecentWeatherIdByCity(Integer userId, String city) {
|
|
Integer cityId = null;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("select cityId FROM RecentWeather WHERE userId=? AND cityName=?");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setString(2, city);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
cityId = result.getInt("cityId");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return cityId;
|
|
}
|
|
|
|
public String[] getUserWeatherOptions(Integer userId) {
|
|
String[] options = new String[] {"en", "metric"};
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("SELECT * FROM UserWeatherOptions WHERE userId = ?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
if (result.next()) {
|
|
options[0] = result.getString("languageCode");
|
|
options[1] = result.getString("units");
|
|
} else {
|
|
addNewUserWeatherOptions(userId);
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return options;
|
|
}
|
|
|
|
private boolean addNewUserWeatherOptions(Integer userId) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("INSERT INTO UserWeatherOptions (userId) VALUES (?)");
|
|
preparedStatement.setInt(1, userId);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public boolean putUserWeatherLanguageOption(Integer userId, String language) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("UPDATE UserWeatherOptions SET languageCode = ? WHERE userId = ?");
|
|
preparedStatement.setString(1, language);
|
|
preparedStatement.setInt(2, userId);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public boolean putUserWeatherUnitsOption(Integer userId, String units) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("UPDATE UserWeatherOptions SET units = ? WHERE userId = ?");
|
|
preparedStatement.setString(1, units);
|
|
preparedStatement.setInt(2, userId);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public boolean createNewWeatherAlert(int userId, Integer cityId, String cityName) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("INSERT INTO WeatherAlert (userId, cityId, cityName) VALUES (?,?,?)");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setInt(2, cityId);
|
|
preparedStatement.setString(3, cityName);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public List<String> getAlertCitiesNameByUser(int userId) {
|
|
List<String> alertCitiesNames = new ArrayList<>();
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("select cityName FROM WeatherAlert WHERE userId=?");
|
|
preparedStatement.setInt(1, userId);
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
while (result.next()) {
|
|
alertCitiesNames.add(result.getString("cityName"));
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return alertCitiesNames;
|
|
}
|
|
|
|
public boolean deleteAlertCity(Integer userId, String cityName) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("DELETE FROM WeatherAlert WHERE userId=? AND cityName=?;");
|
|
preparedStatement.setInt(1, userId);
|
|
preparedStatement.setString(2, cityName);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public boolean deleteAlertsForUser(Integer userId) {
|
|
int updatedRows = 0;
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("DELETE FROM WeatherAlert WHERE userId=?");
|
|
preparedStatement.setInt(1, userId);
|
|
updatedRows = preparedStatement.executeUpdate();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return updatedRows > 0;
|
|
}
|
|
|
|
public List<WeatherAlert> getAllAlerts() {
|
|
List<WeatherAlert> allAlerts = new ArrayList<>();
|
|
|
|
try {
|
|
final PreparedStatement preparedStatement = connetion.getPreparedStatement("select * FROM WeatherAlert");
|
|
final ResultSet result = preparedStatement.executeQuery();
|
|
while (result.next()) {
|
|
WeatherAlert weatherAlert = new WeatherAlert();
|
|
weatherAlert.setId(result.getInt("id"));
|
|
weatherAlert.setUserId(result.getInt("userId"));
|
|
weatherAlert.setCityId(result.getInt("cityId"));
|
|
allAlerts.add(weatherAlert);
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return allAlerts;
|
|
}
|
|
}
|
|
|