One main issue with my code currently:
1) The table doesn't properly refresh. Main.refreshTickets() clears the tickets arraylist, repopulates it from the DB, updates rowData which is read directly by the table, and then I don't know what I need to do to repaint the table. table.repaint() does not work.
[resolved] Got ID lookups working by making staff a String[ID] with the actual string being the user's name.
TL;DR What's the standard procedure for refreshing a GUI in Java?
ActionListeners in GUI class:
Code: Select all
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "close") {
//get selected row
int selectedRow = table.getSelectedRow();
//get ticketID for selected row
String closingTicket = data[selectedRow][0].toString();
System.out.print("\nClose ticket # "+closingTicket);
Main.sqlconnect.closeTicket(closingTicket, "21");
//refresh table
Main.refreshTickets();
}
if (e.getActionCommand() == "spam") {
//get selected row
int selectedRow = table.getSelectedRow();
//get ticketID for selected row
String spamTicket = data[selectedRow][0].toString();
// mark ticket as spam
System.out.print("\nMarking Ticket # "+spamTicket+" as SPAM");
Main.sqlconnect.markSpam(spamTicket, "99");
//refresh table
Main.refreshTickets();
}Code: Select all
package tracker;
import java.util.ArrayList;
public class Main {
static ArrayList<TicketRootObject> tickets = new ArrayList<TicketRootObject>();
static ArrayList<ITStaff> staff = new ArrayList<ITStaff>();
static Connect sqlconnect;
static GUI g;
public static void main (String[] Args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
//establish SQL connection
sqlconnect = new Connect();
//get list of IT Staff
sqlconnect.getStaff();
//pull current tickets from database
sqlconnect.getOpenTickets();
// draw the GUI
g = new GUI();
g.drawGUI();
}
});
}
static void refreshTickets() {
tickets.clear();
sqlconnect.getOpenTickets();
g.frame.removeAll();
g.drawGUI();
}
}Code: Select all
package tracker;
import java.sql.*;
import java.util.ArrayList;
@SuppressWarnings("unused")
public class Connect{
private java.sql.Connection con = null;
private final String url = "jdbc:mysql://seeeeeeeecret";
private final String userName = "secret";
private final String password = "secret";
// Constructor
public Connect(){}
private java.sql.Connection getConnection(){
try{
Class.forName("com.mysql.jdbc.Driver");
con = java.sql.DriverManager.getConnection(url,userName,password);
if(con!=null) System.out.println("Connection to MySQL database Successful");
}catch(Exception e){
e.printStackTrace();
System.out.println("Error Trace in getConnection() : " + e.getMessage());
}
return con;
}
String runQuery(String query){
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
Statement stmt = con.createStatement();
rs = stmt.executeQuery(query+";");
System.out.println(rs.getString(1));
return rs.getString(1);
} catch (Exception e){
e.printStackTrace();
return "ERROR";
}
}
void getDB(){
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
Statement stmt = con.createStatement();
rs = stmt.executeQuery("Select * from ticket_root order by date_init desc;");
while (rs.next()) {
Main.tickets.add(new
TicketRootObject(rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6),
rs.getString(7),
rs.getString(8),
rs.getString(9),
rs.getBoolean(10),
rs.getString(11),
rs.getString(12),
rs.getString(13),
rs.getString(14),
rs.getString(15)
)
);
}
} catch (Exception e){
e.printStackTrace();
}
}
void getOpenTickets(){
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
Statement stmt = con.createStatement();
rs = stmt.executeQuery("Select * from ticket_root where date_closed is null order by date_init desc;");
while (rs.next()) {
Main.tickets.add(
new TicketRootObject(
rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6),
rs.getString(7),
rs.getString(8),
rs.getString(9),
rs.getBoolean(10),
rs.getString(11),
rs.getString(12),
rs.getString(13),
rs.getString(14),
rs.getString(15)
));
}
} catch (Exception e){
e.printStackTrace();
}
}
void getStaff(){
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
Statement stmt = con.createStatement();
rs = stmt.executeQuery("Select * from user_list");
while (rs.next()) {
Main.staff.add(
new ITStaff(
rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getBoolean(4)
)
);
}
} catch (Exception e){
e.printStackTrace();
}
}
private void closeConnection(){
try{
if(con!=null)
con.close();
con=null;
}catch(Exception e){
e.printStackTrace();
}
}
void markSpam(String ticketID, String closerID) {
//marks a ticket as SPAM,
//closes the ticket,
//time stamps the closure
//sets ticket's closer.
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
Statement stmt = con.createStatement();
// Mark as spam
int rs2 = stmt.executeUpdate("update ticket_root set is_spam='1' where ticket_id is '"+ticketID+"'");
// Close and time stamp it (by setting date_closed)
rs2 = stmt.executeUpdate("update ticket_root set date_closed=now() where ticket_id='"+ticketID+"'");
// Set ticket's closer
rs2 = stmt.executeUpdate("update ticket_root set closer_id='"+closerID+"' where ticket_id='"+ticketID+"';");
//Log it
System.out.print("\nTicket #"+ticketID+" has been marked as spam by "+idToName(closerID)+".");
} catch (Exception e){
e.printStackTrace();
}
}
void closeTicket(String ticketID, String closerID) {
//marks a ticket as SPAM,
//closes the ticket,
//time stamps the closure
//sets ticket's closer.
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
Statement stmt = con.createStatement();
// Close and time stamp it (by setting date_closed)
int rs2 = stmt.executeUpdate("update ticket_root set date_closed=now() where ticket_id='"+ticketID+"'");
// Set ticket's closer
rs2 = stmt.executeUpdate("update ticket_root set closer_id='"+closerID+"' where ticket_id='"+ticketID+"';");
System.out.print("\nTicket #"+ticketID+" has been closed by "+idToName(closerID)+".");
} catch (Exception e){
e.printStackTrace();
}
}
String idToName(String ID) {
java.sql.ResultSet rs = null;
String displayName=null;
try{
con= this.getConnection();
Statement stmt = con.createStatement();
rs=stmt.executeQuery("select display_name from user_list where user_id = "+ID);
while (rs.next()) {
displayName = rs.getString(1);
}
} catch (Exception e){
e.printStackTrace();
}
return displayName;
}
}






