pridano snmp map value - zobrazeni, pridani, editace, odebrani

verze3
Michal 2026-09-04 20:44:33 +02:00
parent 25ed18b735
commit a0f8bb3005
6 changed files with 202 additions and 5 deletions

View File

@ -23,8 +23,6 @@ public final class Database {
private static final ConnectionDao connectionDao = new ConnectionDao();
private static final ProbeDao probeDao = new ProbeDao();
// Veřejný konstruktor pro případy, kdy je v kódu voláno new Database()
public Database() {}
@ -208,6 +206,30 @@ public final class Database {
snmpDao.deleteSnmpTemplate(id);
}
public static int addSnmpValueMap(String name) {
return snmpDao.addSnmpValueMap(name);
}
public static int addSnmpValueMapItem(int map_id, String raw_value, String mapedValue) {
return snmpDao.addSnmpValueMapItem(map_id, raw_value, mapedValue);
}
public static void deleteSnmpValueMap(int id) {
snmpDao.deleteSnmpValueMap(id);
}
public static void editSnmpValueMap(SnmpValueMap valueMap) {
snmpDao.editSnmpValueMap(valueMap);
}
public static void deleteSnmpValueMapItem(int id) {
snmpDao.deleteSnmpValueMapItem(id);
}
public static void editSnmpValueMapItem(int map_id, String raw_value, String mapedValue) {
snmpDao.editSnmpValueMapItem(map_id, raw_value, mapedValue);
}
///
/// -------- probe --------
///

View File

@ -3,10 +3,10 @@ package jnet.server.dao;
import java.sql.SQLException;
import java.util.List;
import jnet.lib.LogFile;
import jnet.lib.object.NodeProbe;
import jnet.lib.object.SnmpProfile;
import jnet.lib.object.SnmpTemplate;
import jnet.lib.object.SnmpValueMap;
import jnet.lib.object.SnmpValueMapItem;
public class SnmpDao extends AbstractDao {
@ -56,9 +56,9 @@ public class SnmpDao extends AbstractDao {
));
}
private List<SnmpValueMap.Item> getSnmpValueMapItem(int id) {
private List<SnmpValueMapItem> getSnmpValueMapItem(int id) {
String sql = "SELECT * FROM " + TABLE_VALUE_MAP_ITEM + " WHERE map_id = ?";
return queryList(sql, rs -> new SnmpValueMap.Item(
return queryList(sql, rs -> new SnmpValueMapItem(
rs.getInt("id"),
rs.getString("raw_value"),
rs.getString("mapped_value")
@ -142,4 +142,63 @@ public class SnmpDao extends AbstractDao {
LogFile.printErr("SNMP template ID " + id + " not removed from database");
}
}
public int addSnmpValueMap(String name) {
String sql = "INSERT INTO " + TABLE_VALUE_MAP + " (name) VALUES (?)";
return insertAndGetId(
sql,
name
);
}
public int addSnmpValueMapItem(int map_id, String raw_value, String mapedValue) {
String sql = "INSERT INTO " + TABLE_VALUE_MAP_ITEM + " (map_id, raw_value, mapped_value) VALUES (?, ?, ?)";
return insertAndGetId(
sql,
map_id,
raw_value,
mapedValue
);
}
public void deleteSnmpValueMap(int id) {
if (deleteById(TABLE_VALUE_MAP, id)) {
LogFile.printInfo("SNMP Value Map ID " + id + " removed from database");
} else {
LogFile.printErr("SNMP Value Map ID " + id + " not removed from database");
}
}
public void editSnmpValueMap(SnmpValueMap valueMap) {
try {
executeUpdate(
"UPDATE " + TABLE_VALUE_MAP + " SET name=? WHERE id=?",
valueMap.getName(),
valueMap.getId() // poslední parametr pro WHERE
);
} catch (SQLException e) {
LogFile.printErr("Chyba při aktualizaci SNMP Value Map: " + e.getMessage());
}
}
public void deleteSnmpValueMapItem(int id) {
if (deleteById(TABLE_VALUE_MAP_ITEM, id)) {
LogFile.printInfo("SNMP Value Map Item ID " + id + " removed from database");
} else {
LogFile.printErr("SNMP Value Map Item ID " + id + " not removed from database");
}
}
public void editSnmpValueMapItem(int map_id, String raw_value, String mapedValue) {
try {
executeUpdate(
"UPDATE " + TABLE_VALUE_MAP_ITEM + " SET map_id=?, raw_value=?, mapped_value=? WHERE id=?",
raw_value,
mapedValue,
map_id // poslední parametr pro WHERE
);
} catch (SQLException e) {
LogFile.printErr("Chyba při aktualizaci SNMP Value Map: " + e.getMessage());
}
}
}

View File

@ -47,6 +47,9 @@ public class MessageRegister {
register.put(Message.USER_PING_STOP, new RegisterUserPingStop());
register.put(Message.SERVER_LOG, new RegisterServerLog());
register.put(Message.SERVER_CONFIG_EDIT, new RegisterServerEdit());
register.put(Message.VALUE_MAP_NEW, new RegisterValueMapNew());
register.put(Message.VALUE_MAP_EDIT, new RegisterValueMapEdit());
register.put(Message.VALUE_MAP_DELETE, new RegisterValueMapDelete());
}

View File

@ -0,0 +1,27 @@
package jnet.server.message;
import io.netty.channel.ChannelHandlerContext;
import jnet.lib.Message;
import jnet.server.Database;
import jnet.server.Server;
import jnet.server.networkserver.ServerHandler;
public class RegisterValueMapDelete implements Register {
public RegisterValueMapDelete() {
}
@Override
public void processing(ChannelHandlerContext ctx, Message msg) {
int id = (int) msg.getMsg();
Database.deleteSnmpValueMap(id);
// odebere ze seznamu
Server.snmpValueMap.removeIf(vm -> vm.getId() == id);
ServerHandler.sendAll(Message.VALUE_MAP_DELETE_RESULT, id);
}
}

View File

@ -0,0 +1,49 @@
package jnet.server.message;
import io.netty.channel.ChannelHandlerContext;
import jnet.lib.Message;
import jnet.lib.object.SnmpValueMap;
import jnet.lib.object.SnmpValueMapItem;
import jnet.server.Database;
import jnet.server.Server;
import jnet.server.networkserver.ServerHandler;
public class RegisterValueMapEdit implements Register {
public RegisterValueMapEdit() {
}
@Override
public void processing(ChannelHandlerContext ctx, Message msg) {
SnmpValueMap vm = (SnmpValueMap) msg.getMsg();
Database.editSnmpValueMap(vm);
// nejprve smazat stare itemy mapovani
SnmpValueMap oldValueMap = Server.snmpValueMap.stream()
.filter(p -> p.getId() == vm.getId())
.findFirst()
.orElse(null);
for (SnmpValueMapItem oldItem : oldValueMap.getItem()) {
Database.deleteSnmpValueMapItem(oldItem.getId());
}
// vlozit nové itemy mapovani
for (SnmpValueMapItem item : vm.getItem()) {
int itemID = Database.addSnmpValueMapItem(vm.getId(), item.getRawValue(), item.getMappedValue());
item.setId(itemID);
}
// upravit v lokalnim seznamu
for (int i = 0; i < Server.snmpValueMap.size(); i++) {
if (Server.snmpValueMap.get(i).getId() == vm.getId()) {
Server.snmpValueMap.set(i, vm);
}
}
// odeslat klientum
ServerHandler.sendAll(Message.VALUE_MAP_EDIT_RESULT, vm);
}
}

View File

@ -0,0 +1,37 @@
package jnet.server.message;
import io.netty.channel.ChannelHandlerContext;
import jnet.lib.Message;
import jnet.lib.object.SnmpValueMap;
import jnet.lib.object.SnmpValueMapItem;
import jnet.server.Database;
import jnet.server.Server;
import jnet.server.networkserver.ServerHandler;
public class RegisterValueMapNew implements Register {
public RegisterValueMapNew() {
}
@Override
public void processing(ChannelHandlerContext ctx, Message msg) {
SnmpValueMap vm = (SnmpValueMap) msg.getMsg();
// zapsat do databaze a ulozit prirazene id
int idValueMap = Database.addSnmpValueMap(vm.getName());
vm.setId(idValueMap);
for (SnmpValueMapItem item : vm.getItem()) {
int itemID = Database.addSnmpValueMapItem(idValueMap, item.getRawValue(), item.getMappedValue());
item.setId(itemID);
}
// pridat do lokalniho seznamu
Server.snmpValueMap.add(vm);
// odeslat klientum
ServerHandler.sendAll(Message.VALUE_MAP_NEW_RESULT, vm);
}
}