772 lines
26 KiB
Java
772 lines
26 KiB
Java
package jnet.server;
|
|
|
|
import java.sql.Timestamp;
|
|
import java.sql.Connection;
|
|
import java.sql.DriverManager;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Statement;
|
|
import java.util.ArrayList;
|
|
import jnet.lib.LogFile;
|
|
import jnet.lib.object.Event;
|
|
import jnet.lib.object.Map;
|
|
import jnet.lib.object.MapObject;
|
|
import jnet.lib.object.ObjectType;
|
|
import jnet.lib.object.SnmpProbe;
|
|
import jnet.lib.object.SnmpProfile;
|
|
import jnet.lib.object.User;
|
|
|
|
public class Database {
|
|
|
|
private static Connection connection = null;
|
|
private static String host;
|
|
private static String port;
|
|
private static String database;
|
|
private static String user;
|
|
private static String password;
|
|
|
|
|
|
public void connect(String host, String port, String database, String user, String password) {
|
|
this.host = host;
|
|
this.port = port;
|
|
this.database = database;
|
|
this.user = user;
|
|
this.password = password;
|
|
|
|
connection = connect();
|
|
}
|
|
|
|
private static Connection connect() {
|
|
try {
|
|
LogFile.printInfo("Connecting to a selected database ...");
|
|
Connection connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + ""
|
|
+ "?useUnicode=true"
|
|
+ "&characterEncoding=UTF-8"
|
|
+ "&autoReconnect=true"
|
|
+ "&serverTimezone=UTC", user, password);
|
|
LogFile.printInfo(" successfully");
|
|
return connection;
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL connection exception: " + ex.getMessage());
|
|
LogFile.printErr("MySQL host: " + host + " port: " + port + " database: " + database + " user: " + user);
|
|
System.exit(0);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* vrati aktualni spojeni
|
|
*
|
|
* @return
|
|
* @throws SQLException
|
|
*/
|
|
public static Connection getCurrentConnection() throws SQLException {
|
|
if (connection != null || connection.isClosed()) {
|
|
return connection;
|
|
} else {
|
|
connection = connect();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* insert
|
|
*
|
|
* @param sql dotaz
|
|
* @return pri uspesnem vlozeni vrati posledni vlozeny id
|
|
*/
|
|
public static int insert(String sqlQuery) {
|
|
long id = -1;
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
statement.executeUpdate(sqlQuery, Statement.RETURN_GENERATED_KEYS);
|
|
|
|
PreparedStatement getLastInsertId = getCurrentConnection().prepareStatement("SELECT LAST_INSERT_ID()");
|
|
ResultSet rs = getLastInsertId.executeQuery();
|
|
if (rs.next()) {
|
|
id = rs.getLong("last_insert_id()");
|
|
}
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + " SQL: " + sqlQuery);
|
|
}
|
|
return (int) id;
|
|
}
|
|
|
|
/**
|
|
* update
|
|
*
|
|
* @param sql sql dotaz
|
|
*/
|
|
public static void update(String sql) {
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
statement.executeUpdate(sql);
|
|
statement.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + " SQL: " + sql);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* smaze zaznam z tabulky
|
|
*
|
|
* @param table nazev tabulky
|
|
* @param id id rádku
|
|
* @return
|
|
*/
|
|
static boolean remove(String table, int id) {
|
|
try {
|
|
String sql = "DELETE FROM " + table + " WHERE id = ?";
|
|
|
|
PreparedStatement stmt = getCurrentConnection().prepareStatement(sql);
|
|
|
|
stmt.setInt(1, id);
|
|
|
|
int affectedRows = stmt.executeUpdate();
|
|
if (affectedRows > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("Database error: " + ex.getMessage());
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* vytvoří tabulku
|
|
*
|
|
* @param sql string
|
|
*/
|
|
public static void createTable(String sql) {
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
statement.executeUpdate(sql);
|
|
} catch (SQLException e) {
|
|
System.out.println("An error has occured on Table Creation: " + e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* vráti seznam vsech map
|
|
*
|
|
* @return ArrayList<Map>
|
|
*/
|
|
public static ArrayList<Map> getMapList() {
|
|
String sql = "SELECT * FROM maps";
|
|
ArrayList<Map> list = new ArrayList<Map>();
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet rs = statement.executeQuery(sql);
|
|
while (rs.next()) {
|
|
Map m = new Map(
|
|
rs.getInt("id"),
|
|
rs.getString("name"),
|
|
rs.getBoolean("locked"),
|
|
getMapObject(rs.getInt("id")),
|
|
getMapConnection(rs.getInt("id"))
|
|
);
|
|
list.add(m);
|
|
}
|
|
rs.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + "query: " + sql);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* vrati seznam objektu odpovidajici mape
|
|
*
|
|
* @param mapId id mapy
|
|
* @return ArrayList<MapObject>
|
|
*/
|
|
public static ArrayList<MapObject> getMapObject(int mapId) {
|
|
ArrayList<MapObject> list = new ArrayList<>();
|
|
String sql = "SELECT * FROM objects WHERE map = " + mapId;
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet r = statement.executeQuery(sql);
|
|
while (r.next()) {
|
|
int objId = r.getInt("id");
|
|
list.add(new MapObject(
|
|
objId,
|
|
r.getString("name"),
|
|
r.getInt("map"),
|
|
r.getInt("objectType"),
|
|
r.getString("ip"),
|
|
r.getInt("x"),
|
|
r.getInt("y"),
|
|
r.getString("user"),
|
|
r.getString("password"),
|
|
r.getString("description"),
|
|
r.getString("location"),
|
|
r.getInt("snmpProfile"),
|
|
getSnmpProbe(objId),
|
|
(boolean) (r.getInt("active") == 1),
|
|
(r.getInt("winbox") == 1),
|
|
r.getString("winboxPort"),
|
|
(boolean) (r.getInt("ssh") == 1),
|
|
r.getString("sshPort"),
|
|
(boolean) (r.getInt("web") == 1),
|
|
r.getString("webPort"),
|
|
r.getInt("webVerze"),
|
|
(boolean) (r.getInt("telnet") == 1),
|
|
r.getString("telnetPort"),
|
|
(boolean) (r.getInt("sms") == 1),
|
|
r.getString("smsPort"),
|
|
r.getInt("smsVerze")
|
|
));
|
|
}
|
|
r.close();
|
|
statement.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + "query: " + sql);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* vráti seznam cpojeni v dane mape
|
|
* @param mapId
|
|
* @return
|
|
*/
|
|
public static ArrayList<jnet.lib.object.Connection> getMapConnection(int mapId) {
|
|
ArrayList<jnet.lib.object.Connection> list = new ArrayList<>();
|
|
String sql = "SELECT * FROM objectConnection WHERE map = " + mapId;
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet r = statement.executeQuery(sql);
|
|
while (r.next()) {
|
|
int objId = r.getInt("id");
|
|
list.add(new jnet.lib.object.Connection(
|
|
objId,
|
|
r.getInt("sourceObject"),
|
|
r.getInt("destinationObject"),
|
|
r.getInt("type"),
|
|
r.getInt("map"),
|
|
r.getBoolean("readTraffic"),
|
|
r.getInt("sourceTraffic"),
|
|
r.getInt("sourceInterface")
|
|
));
|
|
}
|
|
r.close();
|
|
statement.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + "query: " + sql);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* vrati seznam objektu
|
|
*
|
|
* @return ArrayList<MapObject>
|
|
*/
|
|
public static ArrayList<MapObject> getAllMapObject() {
|
|
ArrayList<MapObject> list = new ArrayList<>();
|
|
String sql = "SELECT * FROM objects";
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet r = statement.executeQuery(sql);
|
|
while (r.next()) {
|
|
int objId = r.getInt("id");
|
|
list.add(new MapObject(
|
|
objId,
|
|
r.getString("name"),
|
|
r.getInt("map"),
|
|
r.getInt("objectType"),
|
|
r.getString("ip"),
|
|
r.getInt("x"),
|
|
r.getInt("y"),
|
|
r.getString("user"),
|
|
r.getString("password"),
|
|
r.getString("description"),
|
|
r.getString("location"),
|
|
r.getInt("snmpProfile"),
|
|
getSnmpProbe(objId),
|
|
(boolean) (r.getInt("active") == 1),
|
|
(r.getInt("winbox") == 1),
|
|
r.getString("winboxPort"),
|
|
(boolean) (r.getInt("ssh") == 1),
|
|
r.getString("sshPort"),
|
|
(boolean) (r.getInt("web") == 1),
|
|
r.getString("webPort"),
|
|
r.getInt("webVerze"),
|
|
(boolean) (r.getInt("telnet") == 1),
|
|
r.getString("telnetPort"),
|
|
(boolean) (r.getInt("sms") == 1),
|
|
r.getString("smsPort"),
|
|
r.getInt("smsVerze")
|
|
));
|
|
}
|
|
r.close();
|
|
statement.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + "query: " + sql);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* vrati seznam SNMP probe
|
|
*
|
|
* @return ArrayList<SnmpProbe>
|
|
*/
|
|
public static ArrayList<SnmpProbe> getSnmpProbe(int objId) {
|
|
ArrayList<SnmpProbe> list = new ArrayList<>();
|
|
String sql = "SELECT * FROM snmpProbe WHERE object = " + objId;
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet r = statement.executeQuery(sql);
|
|
while (r.next()) {
|
|
list.add(new SnmpProbe(
|
|
r.getInt("id"),
|
|
r.getString("name"),
|
|
r.getInt("object")
|
|
));
|
|
}
|
|
r.close();
|
|
statement.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + "query: " + sql);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* vrati informace o uzivateli podle jmena
|
|
*
|
|
* @param username
|
|
* @return User
|
|
*/
|
|
static User getUserInfo(String username) {
|
|
User u = null;
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet r_con = statement.executeQuery("SELECT * FROM users WHERE username = '" + username + "'");
|
|
while (r_con.next()) {
|
|
u = new User(r_con.getInt("id"),
|
|
username,
|
|
r_con.getString("password"),
|
|
r_con.getBoolean("add_map"),
|
|
r_con.getBoolean("remove_map"),
|
|
r_con.getBoolean("edit_map"),
|
|
r_con.getBoolean("add_object"),
|
|
r_con.getBoolean("remove_object"),
|
|
r_con.getBoolean("edit_object"),
|
|
r_con.getBoolean("edit_server")
|
|
);
|
|
}
|
|
r_con.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage());
|
|
|
|
}
|
|
return u;
|
|
}
|
|
|
|
/**
|
|
* vrati seznam object type
|
|
*
|
|
* @return ArrayList<ObjectType>
|
|
*/
|
|
static ArrayList<ObjectType> getObjectType() {
|
|
ArrayList<ObjectType> objectType = new ArrayList<>();
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet so = statement.executeQuery("SELECT * FROM objectType");
|
|
while (so.next()) {
|
|
objectType.add(new ObjectType(
|
|
so.getInt("id"),
|
|
so.getString("name"),
|
|
so.getString("image")
|
|
));
|
|
}
|
|
so.close();
|
|
} catch (SQLException ex) {
|
|
System.out.println("MySQL exception: " + ex.getMessage());
|
|
}
|
|
return objectType;
|
|
}
|
|
|
|
/**
|
|
* vrati seznam uzivatelu
|
|
*
|
|
* @return ArrayList<User>
|
|
*/
|
|
static ArrayList<User> getUsers() {
|
|
ArrayList<User> users = new ArrayList<>();
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet su = statement.executeQuery("SELECT * FROM users");
|
|
while (su.next()) {
|
|
users.add(new User(
|
|
su.getInt("id"),
|
|
su.getString("username"),
|
|
"",
|
|
su.getBoolean("add_map"),
|
|
su.getBoolean("remove_map"),
|
|
su.getBoolean("edit_map"),
|
|
su.getBoolean("add_object"),
|
|
su.getBoolean("remove_object"),
|
|
su.getBoolean("edit_object"),
|
|
su.getBoolean("edit_server")
|
|
));
|
|
}
|
|
su.close();
|
|
} catch (SQLException ex) {
|
|
System.out.println("MySQL exception: " + ex.getMessage());
|
|
}
|
|
return users;
|
|
}
|
|
|
|
/**
|
|
* vrati snmp profily
|
|
*
|
|
* @return ArrayList<SnmpProfile>
|
|
*/
|
|
static ArrayList<SnmpProfile> getSnmpProfile() {
|
|
ArrayList<SnmpProfile> snmpProfile = new ArrayList<>();
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet rs = statement.executeQuery("SELECT * FROM snmpProfile");
|
|
while (rs.next()) {
|
|
snmpProfile.add(new SnmpProfile(
|
|
rs.getInt("id"),
|
|
rs.getString("name"),
|
|
rs.getInt("version"),
|
|
rs.getString("port"),
|
|
rs.getString("communityRead"),
|
|
rs.getString("communityRead")
|
|
));
|
|
}
|
|
rs.close();
|
|
} catch (SQLException ex) {
|
|
System.out.println("MySQL exception: " + ex.getMessage());
|
|
}
|
|
return snmpProfile;
|
|
}
|
|
|
|
/**
|
|
* vrati seznam udalosti
|
|
*
|
|
* @param
|
|
* @return ArrayList<Event>
|
|
*/
|
|
public static ArrayList<Event> getEvents() {
|
|
ArrayList<Event> list = new ArrayList<>();
|
|
String sql = "SELECT * FROM events";
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
ResultSet r = statement.executeQuery(sql);
|
|
while (r.next()) {
|
|
list.add(new Event(
|
|
r.getInt("id"),
|
|
r.getInt("object"),
|
|
r.getLong("start"),
|
|
r.getLong("finish"),
|
|
r.getString("description"),
|
|
r.getInt("type")
|
|
));
|
|
}
|
|
r.close();
|
|
statement.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + "query: " + sql);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* pridá objekt
|
|
*
|
|
* @param mo MapObject
|
|
* @return
|
|
*/
|
|
static MapObject addMapObject(MapObject mo) {
|
|
String query = "INSERT INTO objects ("
|
|
+ "name,"
|
|
+ "ip,"
|
|
+ "x,"
|
|
+ "y,"
|
|
+ "map,"
|
|
+ "objectType,"
|
|
+ "active,"
|
|
+ "user,"
|
|
+ "password,"
|
|
+ "description,"
|
|
+ "location,"
|
|
+ "snmpProfile,"
|
|
+ "winbox,"
|
|
+ "winboxPort,"
|
|
+ "ssh,"
|
|
+ "sshPort,"
|
|
+ "web,"
|
|
+ "webPort,"
|
|
+ "webVerze,"
|
|
+ "telnet,"
|
|
+ "telnetPort,"
|
|
+ "sms,"
|
|
+ "smsPort,"
|
|
+ "smsVerze"
|
|
+ ") VALUES ("
|
|
+ "'" + mo.getName() + "',"
|
|
+ "'" + mo.getIp() + "',"
|
|
+ "'" + mo.getX() + "',"
|
|
+ "'" + mo.getY() + "',"
|
|
+ "'" + mo.getMap() + "',"
|
|
+ "'" + mo.getObjectType() + "',"
|
|
+ "'" + (mo.isActive() ? 1 : 0) + "',"
|
|
+ "'" + mo.getUser() + "',"
|
|
+ "'" + mo.getPassword() + "',"
|
|
+ "'" + mo.getDescription() + "',"
|
|
+ "'" + mo.getLocation() + "',"
|
|
+ "'" + mo.getSnmpProfile() + "',"
|
|
+ "'" + (mo.isWinbox() ? 1 : 0) + "',"
|
|
+ "'" + mo.getWinboxPort() + "',"
|
|
+ "'" + (mo.isSsh() ? 1 : 0) + "',"
|
|
+ "'" + mo.getSshPort() + "',"
|
|
+ "'" + (mo.isWeb() ? 1 : 0) + "',"
|
|
+ "'" + mo.getWebPort() + "',"
|
|
+ "'" + mo.getWebVerze() + "',"
|
|
+ "'" + (mo.isTelnet() ? 1 : 0) + "',"
|
|
+ "'" + mo.getTelnetPort() + "',"
|
|
+ "'" + (mo.isSms() ? 1 : 0) + "',"
|
|
+ "'" + mo.getSmsPort() + "',"
|
|
+ "'" + mo.getSmsVerze() + "'"
|
|
+ ")";
|
|
mo.setId(insert(query));
|
|
return mo;
|
|
}
|
|
|
|
/**
|
|
* prida nove propojeni mezi objekty
|
|
* @param c
|
|
* @return
|
|
*/
|
|
public static jnet.lib.object.Connection addConnection(jnet.lib.object.Connection c){
|
|
String query = "INSERT INTO objectConnection ("
|
|
+ "sourceObject,"
|
|
+ "destinationObject,"
|
|
+ "objectConnection.type,"
|
|
+ "map,"
|
|
+ "readTraffic,"
|
|
+ "sourceTraffic,"
|
|
+ "sourceInterface"
|
|
+ ") VALUES ("
|
|
+ "'" + c.getSourceObj() + "',"
|
|
+ "'" + c.getDestinationObj() + "',"
|
|
+ "'" + c.getType() + "',"
|
|
+ "'" + c.getMap() + "',"
|
|
+ "'" + (c.isReadTraffic() ? "1" : "0") + "',"
|
|
+ "'" + c.getTrafficObject() + "',"
|
|
+ "'" + c.getTrafficIface() + "'"
|
|
+ ")";
|
|
c.setId(insert(query));
|
|
return c;
|
|
}
|
|
|
|
/**
|
|
* nastaví stav zámku mapy
|
|
*
|
|
* @param state stav
|
|
* @param map map id
|
|
*/
|
|
public static void mapLock(int state, int map) {
|
|
update("UPDATE maps SET locked='" + state + "' WHERE id=" + map);
|
|
}
|
|
|
|
/**
|
|
* pridá typ objektu
|
|
*
|
|
* @param ot ObjectType
|
|
* @return
|
|
*/
|
|
static int addObjectType(ObjectType ot) {
|
|
return insert("INSERT INTO objectType (name, image) VALUES ('" + ot.getName() + "', '" + ot.getImgStr() + "')");
|
|
}
|
|
|
|
/**
|
|
* odebere objekt z databaze
|
|
*
|
|
* @param id
|
|
*/
|
|
static void removeObject(int id) {
|
|
if (remove("objects", id)) {
|
|
LogFile.printInfo("Obejct ID " + id + " removed from database");
|
|
} else {
|
|
LogFile.printErr("Obejct ID " + id + " not removed from database");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* odebere mapu z databaze
|
|
*
|
|
* @param id
|
|
*/
|
|
static void removeMap(int id) {
|
|
if (remove("maps", id)) {
|
|
LogFile.printInfo("Map ID " + id + " removed from database");
|
|
} else {
|
|
LogFile.printErr("Map ID " + id + " not removed from database");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* pridani mapy
|
|
*
|
|
* @param name nazev mapy
|
|
* @return
|
|
*/
|
|
static int addMap(String name) {
|
|
return insert("INSERT INTO maps (name) VALUES ('" + name + "')");
|
|
}
|
|
|
|
/**
|
|
* zmeni pozici objektu
|
|
*
|
|
* @param id id objektu
|
|
* @param x pozice x
|
|
* @param y pozice y
|
|
*/
|
|
static void objectMove(int id, int x, int y) {
|
|
update("UPDATE objects SET x='" + x + "', y='" + y + "' WHERE id=" + id);
|
|
}
|
|
|
|
/**
|
|
* upravi object
|
|
*
|
|
* @param mo MapObject
|
|
*/
|
|
static void updateObject(MapObject mo) {
|
|
update("UPDATE objects SET "
|
|
+ "name='" + mo.getName() + "', "
|
|
+ "ip='" + mo.getIp() + "', "
|
|
+ "x='" + mo.getX() + "', "
|
|
+ "y='" + mo.getY() + "',"
|
|
+ "map='" + mo.getMap() + "', "
|
|
+ "objectType='" + mo.getObjectType() + "', "
|
|
+ "active='" + (mo.isActive() ? 1 : 0) + "', "
|
|
+ "user='" + mo.getUser() + "', "
|
|
+ "password='" + mo.getPassword() + "', "
|
|
+ "description='" + mo.getDescription() + "', "
|
|
+ "location='" + mo.getLocation() + "', "
|
|
+ "snmpProfile='" + mo.getSnmpProfile() + "', "
|
|
+ "winbox='" + (mo.isWinbox() ? 1 : 0) + "', "
|
|
+ "winboxPort='" + mo.getWinboxPort() + "', "
|
|
+ "ssh='" + (mo.isSsh() ? 1 : 0) + "', "
|
|
+ "sshPort='" + mo.getSshPort() + "', "
|
|
+ "web='" + (mo.isWeb() ? 1 : 0) + "', "
|
|
+ "webPort='" + mo.getWebPort() + "', "
|
|
+ "webVerze='" + mo.getWebVerze() + "', "
|
|
+ "telnet='" + (mo.isTelnet() ? 1 : 0) + "', "
|
|
+ "telnetPort='" + mo.getTelnetPort() + "', "
|
|
+ "sms='" + (mo.isSms() ? 1 : 0) + "', "
|
|
+ "smsPort='" + mo.getSmsPort() + "', "
|
|
+ "smsVerze='" + mo.getSmsVerze() + "' "
|
|
+ "WHERE id=" + mo.getId());
|
|
}
|
|
|
|
public static Event addEvent(int mo_id, String description, int type) {
|
|
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
|
Event event = new Event(mo_id,
|
|
timestamp.getTime(),
|
|
description,
|
|
type);
|
|
int id = insert("INSERT INTO events ("
|
|
+ "object, "
|
|
+ "start, "
|
|
+ "description, "
|
|
+ "type"
|
|
+ ") VALUES ("
|
|
+ "'" + event.getObject() + "',"
|
|
+ "'" + event.getStart() + "',"
|
|
+ "'" + event.getDescription() + "',"
|
|
+ "'" + event.getType() + "'"
|
|
+ ")");
|
|
event.setId(id);
|
|
return event;
|
|
|
|
}
|
|
|
|
public static Event endEvent(int objectId, int type) {
|
|
Event event = null;
|
|
try {
|
|
|
|
String select_query = "SELECT * FROM events WHERE object = '" + objectId + "' && type = '" + type + "' ORDER BY id DESC LIMIT 1";
|
|
PreparedStatement stmt = getCurrentConnection().prepareStatement(select_query);
|
|
ResultSet rs = stmt.executeQuery();
|
|
// Process the result
|
|
if (rs.next()) {
|
|
event = new Event(
|
|
objectId,
|
|
rs.getLong("start"),
|
|
rs.getString("description"),
|
|
type);
|
|
event.setId(rs.getInt("id"));
|
|
}
|
|
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
|
event.setEnd(timestamp.getTime());
|
|
String update_query = "UPDATE events SET finish='" + event.getEnd() + "' WHERE id=" + event.getId();
|
|
update(update_query);
|
|
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage());
|
|
}
|
|
return event;
|
|
}
|
|
|
|
static int addUser(User user) {
|
|
return insert("INSERT INTO users ("
|
|
+ "username, "
|
|
+ "password, "
|
|
+ "add_map, "
|
|
+ "remove_map, "
|
|
+ "edit_map, "
|
|
+ "add_object, "
|
|
+ "remove_object, "
|
|
+ "edit_object, "
|
|
+ "edit_server"
|
|
+ ") VALUES ("
|
|
+ "'"+user.getUsername()+"',"
|
|
+ "'"+user.getPassword()+"',"
|
|
+ "'"+(user.isAddMap()?1:0)+"',"
|
|
+ "'"+(user.isRemoveMap()?1:0)+"',"
|
|
+ "'"+(user.isEditMap()?1:0)+"',"
|
|
+ "'"+(user.isAddObject()?1:0)+"',"
|
|
+ "'"+(user.isRemoveObject()?1:0)+"',"
|
|
+ "'"+(user.isEditObject()?1:0)+"',"
|
|
+ "'"+(user.isEditServer()?1:0)+"'"
|
|
+ ")");
|
|
}
|
|
|
|
static void editUser(User ur) {
|
|
String sql = "UPDATE users SET "
|
|
+ "username='" + ur.getUsername() + "',"
|
|
+ "add_map='" + (ur.isAddMap() ? 1:0) + "',"
|
|
+ "remove_map='" + (ur.isRemoveMap() ? 1:0) + "',"
|
|
+ "edit_map='" + (ur.isEditMap() ? 1:0) + "',"
|
|
+ "add_object='" + (ur.isAddObject() ? 1:0) + "',"
|
|
+ "remove_object='" + (ur.isEditObject() ? 1:0) + "',"
|
|
+ "edit_object='" + (ur.isRemoveObject() ? 1:0) + "',"
|
|
+ "edit_server='" + (ur.isEditServer() ? 1:0) + "'"
|
|
+ "WHERE id='" + ur.getId() + "'";
|
|
update(sql);
|
|
}
|
|
|
|
static void deleteObjectLog(int objId) {
|
|
String sql = "DELETE FROM events WHERE object = " + objId;
|
|
try {
|
|
Statement statement = getCurrentConnection().createStatement();
|
|
statement.executeUpdate(sql);
|
|
statement.close();
|
|
} catch (SQLException ex) {
|
|
LogFile.printErr("MySQL exception: " + ex.getMessage() + " SQL: " + sql);
|
|
}
|
|
}
|
|
|
|
}
|