📄 udpreceive.java
字号:
}
else if (revDateArray[10].substring(3, 6).equals("MAR")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "03");
}
else if (revDateArray[10].substring(3, 6).equals("API")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "04");
}
else if (revDateArray[10].substring(3, 6).equals("MAY")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "05");
}
else if (revDateArray[10].substring(3, 6).equals("JUN")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "06");
}
else if (revDateArray[10].substring(3, 6).equals("JUL")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "07");
}
else if (revDateArray[10].substring(3, 6).equals("AUG")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "08");
}
else if (revDateArray[10].substring(3, 6).equals("SEP")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "09");
}
else if (revDateArray[10].substring(3, 6).equals("OCT")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "10");
}
else if (revDateArray[10].substring(3, 6).equals("NOV")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "11");
}
else if (revDateArray[10].substring(3, 6).equals("DEC")) {
revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
substring(3, 6), "12");
}
//时间转换成秒
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
try {
Date d1 = df.parse(revDateArray[10]);
Date d2 = df.parse("00-00-1970 00:00:00");
long diff = d1.getTime() - d2.getTime();
long sec = (diff / 1000) - 2764800;
long milsec = sec * 1000;
String str = Long.toString(milsec);
System.out.println(milsec);
revDateArray[10] = str;
System.out.println(revDateArray[10]);
}
catch (Exception e) {
}
//最终结果
//System.out.println(revDateArray[0] +" "+revDateArray[1]+" " + revDateArray[2] +" "+revDateArray[3]+" " + revDateArray[4] +" "+ revDateArray[5]+" "+revDateArray[6]+" " + revDateArray[7]+" " + revDateArray[8]+" "+ revDateArray[9]+" "+ revDateArray[10]+" "+ revDateArray[11]);
messageDate = revDateArray[0] + " " + revDateArray[1] + " " +
revDateArray[2] + " " + revDateArray[3] + " " + revDateArray[4] +
" " + revDateArray[5] + " " + revDateArray[6] + " " +
revDateArray[7] + " " + revDateArray[8] + " " + revDateArray[9] +
" " + revDateArray[10] + " " + revDateArray[11];
System.out.println(messageDate.length());
//保存UDP数据到数据库,每天创建一个新表,表名:udpdata_(date);
Calendar TodayCanlendar = Calendar.getInstance();
Date TodayDate = TodayCanlendar.getTime();
String str_datetime = DateFormat.format(TodayDate);
String str_date = str_datetime.substring(0, 10);
try {
String tableName = "udpdata_" + str_date;
System.out.println("表名:" + tableName);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Conn = DriverManager.getConnection(DBUrl);
Stmt = Conn.createStatement();
String sqlInsert = "insert into " + tableName +
" (revtime,messagedate) values('" + str_datetime + "','" +
messageDate + "')";
//判断表是否存在,存在直接插入新纪录,不存在创建新表并插入新纪录
Rs = Conn.getMetaData().getTables(null, null, tableName, null);
if (Rs.next()) {
Stmt.executeUpdate(sqlInsert);
Conn.commit();
}
else {
//新的一天,创建一个新表并保存数据,同时删除30天前的表!
//建新表并插入数据
String sqlCreateTable = "create table " + tableName +
" (dataid counter, revtime varchar(20),messagedate varchar(250),sendflag bit)";
Stmt.executeUpdate(sqlCreateTable);
Conn.commit();
Stmt.executeUpdate(sqlInsert);
Conn.commit();
//删除30天前的表
int daynum = TodayCanlendar.get(Calendar.DAY_OF_YEAR);
TodayCanlendar.set(Calendar.DAY_OF_YEAR, daynum - 30);
String str_DelDate = DateFormat.format(TodayCanlendar.getTime());
String str_DelTable = "udpdata_" + str_DelDate.substring(0, 10);
Rs = Conn.getMetaData().getTables(null, null, str_DelTable, null);
if (Rs.next()) {
try {
Stmt.execute("Drop table " + str_DelTable);
Conn.commit();
}
catch (Exception ex) {
System.out.println(ex);
}
}
}
Stmt.close();
Conn.close();
}
catch (Exception ex) {
///////////////////////////////////////////////////
System.out.println(ex.toString());
}
DefaultTableModel tableModel = (DefaultTableModel) Main.dataTable.
getModel();
for (i = 0; i < 3; i++) {
//System.out.println(almstate[i] + almtime[i] + almmessage[i]);
String[] str_row = {
almstate[i], almtime[i], almmessage[i]}; //将一行的数据存在str_row 字符串数组里
tableModel.addRow(str_row);
tableModel.removeRow(0);
}
Main.dataTable.setModel(tableModel);
//JTable中显示的数据
almstate[0] = almstate[1];
almstate[1] = almstate[2];
almstate[2] = revDateArray[1];
almtime[0] = almtime[1];
almtime[1] = almtime[2];
almtime[2] = str_datetime;
almmessage[0] = almmessage[1];
almmessage[1] = almmessage[2];
almmessage[2] = messageDate;
//DefaultTableModel tableModel = (DefaultTableModel) Main.dataTable.getModel();
for (i = 0; i < 3; i++) {
String[] str_row = {
almstate[i], almtime[i], almmessage[i]}; //将一行的数据存在str_row 字符串数组里
tableModel.addRow(str_row);
tableModel.removeRow(0);
}
Main.dataTable.setModel(tableModel);
//建立obj表格,确定清除告警是否发送,
//根据数据过滤标准,判断数据是否发送。
String AlarmLevel = revDateArray[1].trim();
String AlarmObject = revDateArray[0] + " " + revDateArray[4] +
revDateArray[5] + " " + revDateArray[6] + revDateArray[7] +
revDateArray[8];
String AlarmMessage = revDateArray[11];
//其中告警等级为Clear不受过滤标准限制,而是根据是否有更高等级的告警来决定
//如先前有更高等级的告警,则发送该告警,置发送标志为True,同时删除alarmobj表中的告警对象,否则不发送!
SendFlag = "false";
if (AlarmLevel.equals("5")) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Conn = DriverManager.getConnection(DBUrl);
Stmt = Conn.createStatement();
Rs = Stmt.executeQuery(
"Select * from alarmobj where objectid = '" + AlarmObject +
"'");
if (Rs.next()) {
SendFlag = "true";
Stmt.executeUpdate("delete from alarmobj where objectid = '" +
AlarmObject + "'");
}
Conn.close();
Stmt.close();
}
catch (Exception eee) { //数据库读取异常
}
}
else {
//只有有状态的才向alarmobj中添加,包括-on和告警组确定告警开始的那些状态,alarming==true代表告警存在,向alarmobj中添加记录
if (alarming.equals("true")) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Conn = DriverManager.getConnection(DBUrl);
Stmt = Conn.createStatement();
Rs = Stmt.executeQuery(
"Select * from alarmobj where objectid = '" + AlarmObject +
"'");
if (Rs.next()) {
Stmt.executeUpdate("delete from alarmobj where objectid = '" +
AlarmObject + "'");
}
Stmt.executeUpdate(
"insert into alarmobj (objectid,alarmlevel,alarmmessage) values ('" +
AlarmObject + "'," + revDateArray[1] + ",'" + AlarmMessage +
"')");
Conn.close();
Stmt.close();
}
catch (Exception eee) { //数据库读取异常
}
}
}
//调用Trap发送方法
if (revDateArray[1].equals("1") &&
ValueAll.CheckBoxNMI.equals("true")) {
SendFlag = "true";
}
else if (revDateArray[1].equals("2") &&
ValueAll.CheckBoxMINOR.equals("false")) {
SendFlag = "false";
}
else if (revDateArray[1].equals("2") &&
ValueAll.CheckBoxMAJOR.equals("true")) {
SendFlag = "true";
System.out.println("OK");
}
else if (revDateArray[1].equals("3") &&
ValueAll.CheckBoxMINOR.equals("true")) {
SendFlag = "true";
}
else if (revDateArray[1].equals("6") &&
ValueAll.CheckBoxINFO.equals("true")) {
SendFlag = "true";
}
else {SendFlag = "false";}
if (SendFlag.equals("true")) {
SnmpV1TrapSend snmpv1trapsend = new SnmpV1TrapSend();
try {
System.out.println("aaaa");
snmpv1trapsend.TrapSend(revDateArray, TrapIp1, TrapPort);
}
catch (Exception eee) {
}
}
System.out.println("SendFlag="+SendFlag);
}
}
if (!dataSocket.isClosed()) {
dataSocket.close();
}
}
catch (IOException e) {}
}
public synchronized boolean getFlag() {
return runFlag;
}
public synchronized void stopReceive() {
runFlag = false;
if (runThread != null) {
runThread.interrupt();
if (!dataSocket.isClosed()) {
dataSocket.close();
}
System.out.println(runThread.getName() + "线程停止!");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -