storing data into an arraylist of objects cross classes
I am struggling on trying to iterate through a resultset and being able to
store the records I retrieve into an ArrayList of objects from my class
Threat.java. I am a fairly beginner programmer who has been sorta thrown
into a big java project so unfortunately, I haven't had a consistent
learning experience so my understanding of how to make this process work
is lacking. Database.java handles all database procedures (connecting,
getting result set, assigning fields), and MainDisplay.java is where I
want to do the majority of my work, at least for now. Threat.java has
multiple variables but I'm only concerned about being able to successfully
print server_id for now.
The error I get is at the line where I have my add() method in MainDisplay
which reads:"The method add(Threat) in the type ArrayList is not
applicable for the arguments (void)"
Can anyone help shed some light on my situation? I think I have my
organization muddled up as well as struggling to understand how exactly to
add fields by method instead of through arguments.
Database.java
public class Database {
String details = null;
ResultSet rslt = null;
private int threat_level;
private String target;
private String server_id;
private int client_id;
private String attacker;
private String num_this_attack;
Connection con;
public void createConnection() {
//sensitive info
}
public ResultSet getData() {
String query = "SELECT target_stats.server_id, target_stats.target,
target_stats.threat_level, target_stats.client_id,
attack_stats.attacker, attack_stats.num_this_attack " +
" FROM target_stats " +
" LEFT OUTER JOIN attack_stats " +
" ON target_stats.target = attack_stats.target " +
" WHERE target_stats.num_attacks > '0' " +
" AND target_stats.interval_id>'2'";
Statement stmt = null;
try {
stmt = con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
try {
rslt = stmt.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
}
return rslt;
}
public void process() {
try {
server_id = rslt.getString("server_id");
target = rslt.getString("target");
threat_level = rslt.getInt("threat_level");
client_id = rslt.getInt("client_id");
attacker = rslt.getString("attacker");
num_this_attack = rslt.getString("num_this_attack");
//details = "Target IP: " + target + " Server ID: " + server_id +
" Client ID: " + client_id + " Threat Level: " + threat_level + "
Attacker IP: " + attacker + " Number of attacks: " +
num_this_attack;
//System.out.println(details);
} catch (SQLException e) {
e.printStackTrace();
}
public String getServer_id(){
return server_id;
}
Threat.java
public class Threat {
private String server_id;
private String target;
private int threat_level;
private String client_id;
//ArrayList<ArrayList<String>> attackerXnumberY = new
ArrayList<ArrayList<String>>();
/*
public Threat(){
this.server_id=server_id;
this.target = target;
this.threat_level=threat_level;
this.client_id=client_id;
}
*/
public void setServer_Id(String server){
server_id = server;
}
public String getServer_Id(){
return server_id;
}
}
MainDisplay.java
public class MainDisplay {
private static String serverHolder;
public static void main(String[] args) {
Database Data = new Database();
Threat threat = new Threat();
ArrayList<Threat> StatusInfo = new ArrayList<Threat>();
Data.createConnection(); //Create connection to database
Data.getData(); //Runs query and returns result set
try {
while(Data.rslt.next()){
Data.process();
serverHolder = Data.getServer_id();
StatusInfo.add(threat.setServer_Id(serverHolder));
System.out.print(StatusInfo);
//StatusInfo.add(new Threat().setServer_Id("foo"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
No comments:
Post a Comment