All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bdware.doip.audit.OriginalAuditDB Maven / Gradle / Ivy

There is a newer version: 1.5.4
Show newest version
package org.bdware.doip.audit;

import com.google.gson.Gson;
import com.nimbusds.jose.util.Base64;
import io.netty.handler.codec.base64.Base64Encoder;
import org.apache.commons.codec.Charsets;
import org.bdware.doip.audit.writer.AuditOriginalLog;

import java.nio.charset.StandardCharsets;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask;

public class OriginalAuditDB extends BasicDB {
    public OriginalAuditDB(String driverClass, String url, String user, String password) {
        super(driverClass, url, user, password);
    }

    public String toString(byte[] msg) {
        return Base64.encode(msg).toString();
    }

    public byte[] toByteArray(String msg) {
        return Base64.from(msg).decode();
    }

    public int add(String tableName, String req_hash, byte[] req_msg, String resp_hash, byte[] resp_msg, String protocal_msg) {
        try {
            Connection conn = getConn();
            String sql = "insert into " + formatTableName(tableName) + "(req_hash, req_msg, resp_hash, resp_msg, protocal_msg, create_time) values (?, ?, ?, ?, ?, ?)";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, req_hash);
            ps.setString(2, toString(req_msg));
            ps.setString(3, resp_hash);
            ps.setString(4, toString(resp_msg));
            ps.setString(5, protocal_msg);
            ps.setTimestamp(6, new Timestamp(System.currentTimeMillis()));
            int count = ps.executeUpdate();
            ps.close();
            conn.close();
            return count;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }

    public int remove(String tableName, String req_hash, String resp_hash) {
        try {
            Connection conn = getConn();
            String sql = "delete from " + formatTableName(tableName) + " where req_hash = ? and resp_hash = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, req_hash);
            ps.setString(2, resp_hash);
            int count = ps.executeUpdate();
            ps.close();
            conn.close();
            return count;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }

    public int removeByTime(String tableName, String field, long timeStamp) {
        try {
            Connection conn = getConn();
            String sql = "delete from " + formatTableName(tableName) + " where " + field + " < ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setTimestamp(1, new Timestamp(timeStamp));
            int count = ps.executeUpdate();
            ps.close();
            conn.close();
            return count;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

    public int modify(String tableName, String req_hash, byte[] req_msg, String resp_hash, byte[] resp_msg, String protocal_msg) {
        try {
            Connection conn = getConn();
            String sql = "update " + formatTableName(tableName) + " set req_msg = ?, resp_msg = ?, protocal_msg = ?, create_time = ? where req_hash = ? and resp_msg = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, toString(req_msg));
            ps.setString(2, toString(resp_msg));
            ps.setString(3, protocal_msg);
            ps.setTimestamp(4, new Timestamp(System.currentTimeMillis()));
            ps.setString(5, req_hash);
            ps.setString(6, resp_hash);
            int count = ps.executeUpdate();
            ps.close();
            conn.close();
            return count;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }

    public List retrieve(String tableName, String req_hash, String resp_hash) {
        try {
            Connection conn = getConn();
            String sql = "select * from " + formatTableName(tableName) + " where req_hash = ? and resp_hash = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, req_hash);
            ps.setString(2, resp_hash);
            ResultSet rs = ps.executeQuery();
            List auditOriginalLogList = new ArrayList<>();
            AuditOriginalLog auditOriginalLog;
            while (rs.next()) {
                byte[] req_msg = toByteArray(rs.getString("req_msg"));
                byte[] resp_msg = toByteArray(rs.getString("resp_msg"));
                String protocal_msg = rs.getString("protocal_msg");
                auditOriginalLog = new Gson().fromJson(protocal_msg, AuditOriginalLog.class);
                auditOriginalLog.req_msg = req_msg;
                auditOriginalLog.resp_msg = resp_msg;
                auditOriginalLogList.add(auditOriginalLog);
            }
            ps.close();
            conn.close();
            return auditOriginalLogList;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public boolean isExist(String tableName, String req_hash, String resp_hash) {
        boolean status = false;
        try {
            Connection conn = getConn();
            String sql = "select * from " + formatTableName(tableName) + " where req_hash = ? and resp_hash = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, req_hash);
            ps.setString(2, resp_hash);
            ResultSet rs = ps.executeQuery();
            if (rs.next())
                status = true;
            ps.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return status;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy