updates to make IngestMessagePanel table model thread-safe

This commit is contained in:
Samuel H. Kenyon 2014-04-09 17:35:18 -04:00
parent e2d66535ab
commit 7e7f7b43bb

View File

@ -713,26 +713,26 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
messages.add(message); messages.add(message);
} }
List<IngestMessage> getMessages() { synchronized List<IngestMessage> getMessages() {
return messages; return messages;
} }
void add(IngestMessage message) { synchronized void add(IngestMessage message) {
messages.add(message); messages.add(message);
} }
//add all messages from another group //add all messages from another group
void addAll(IngestMessageGroup group) { synchronized void addAll(IngestMessageGroup group) {
for (IngestMessage m : group.getMessages()) { for (IngestMessage m : group.getMessages()) {
messages.add(m); messages.add(m);
} }
} }
int getCount() { synchronized int getCount() {
return messages.size(); return messages.size();
} }
String getDetails() { synchronized String getDetails() {
StringBuilder b = new StringBuilder(""); StringBuilder b = new StringBuilder("");
for (IngestMessage m : messages) { for (IngestMessage m : messages) {
String details = m.getDetails(); String details = m.getDetails();
@ -751,7 +751,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
* return color corresp to priority * return color corresp to priority
* @return * @return
*/ */
Color getColor() { synchronized Color getColor() {
int count = messages.size(); int count = messages.size();
if (count == 1) { if (count == 1) {
return VERY_HIGH_PRI_COLOR; return VERY_HIGH_PRI_COLOR;
@ -769,7 +769,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
* used for chrono sort * used for chrono sort
* @return * @return
*/ */
Date getDatePosted() { synchronized Date getDatePosted() {
return messages.get(messages.size() - 1).getDatePosted(); return messages.get(messages.size() - 1).getDatePosted();
} }
@ -777,35 +777,35 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
* get subject of the first message * get subject of the first message
* @return * @return
*/ */
String getSubject() { synchronized String getSubject() {
return messages.get(0).getSubject(); return messages.get(0).getSubject();
} }
/* /*
* return unique key, should be the same for all msgs * return unique key, should be the same for all msgs
*/ */
String getUniqueKey() { synchronized String getUniqueKey() {
return messages.get(0).getUniqueKey(); return messages.get(0).getUniqueKey();
} }
/* /*
* return source module, should be the same for all msgs * return source module, should be the same for all msgs
*/ */
String getSource() { synchronized String getSource() {
return messages.get(0).getSource(); return messages.get(0).getSource();
} }
/* /*
* return data of the first message * return data of the first message
*/ */
BlackboardArtifact getData() { synchronized BlackboardArtifact getData() {
return messages.get(0).getData(); return messages.get(0).getData();
} }
/* /*
* return message type, should be the same for all msgs * return message type, should be the same for all msgs
*/ */
IngestMessage.MessageType getMessageType() { synchronized IngestMessage.MessageType getMessageType() {
return messages.get(0).getMessageType(); return messages.get(0).getMessageType();
} }
} }
@ -870,6 +870,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
cell.setFont(new Font("", Font.PLAIN, 16)); cell.setFont(new Font("", Font.PLAIN, 16));
final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row); final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row);
if (messageGroup != null) {
MessageType mt = messageGroup.getMessageType(); MessageType mt = messageGroup.getMessageType();
if (mt == MessageType.ERROR) { if (mt == MessageType.ERROR) {
cell.setBackground(ERROR_COLOR); cell.setBackground(ERROR_COLOR);
@ -879,7 +880,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
//cell.setBackground(table.getBackground()); //cell.setBackground(table.getBackground());
cell.setBackground(messageGroup.getColor()); cell.setBackground(messageGroup.getColor());
} }
}
return cell; return cell;
} }
} }
@ -910,6 +911,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
} }
final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row); final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row);
if (messageGroup != null) {
MessageType mt = messageGroup.getMessageType(); MessageType mt = messageGroup.getMessageType();
if (mt == MessageType.ERROR) { if (mt == MessageType.ERROR) {
cell.setBackground(ERROR_COLOR); cell.setBackground(ERROR_COLOR);
@ -919,7 +921,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
//cell.setBackground(table.getBackground()); //cell.setBackground(table.getBackground());
cell.setBackground(messageGroup.getColor()); cell.setBackground(messageGroup.getColor());
} }
}
return cell; return cell;
} }
} }
@ -945,6 +947,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
Component cell = super.getTableCellRendererComponent(table, aValue, isSelected, hasFocus, row, column); Component cell = super.getTableCellRendererComponent(table, aValue, isSelected, hasFocus, row, column);
final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row); final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row);
if (messageGroup != null) {
MessageType mt = messageGroup.getMessageType(); MessageType mt = messageGroup.getMessageType();
if (mt == MessageType.ERROR) { if (mt == MessageType.ERROR) {
cell.setBackground(ERROR_COLOR); cell.setBackground(ERROR_COLOR);
@ -954,6 +957,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
//cell.setBackground(table.getBackground()); //cell.setBackground(table.getBackground());
cell.setBackground(messageGroup.getColor()); cell.setBackground(messageGroup.getColor());
} }
}
return cell; return cell;
} }
@ -986,10 +990,12 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
messageTable.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); messageTable.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
//check if has details //check if has details
IngestMessageGroup m = getMessageGroup(selected); IngestMessageGroup m = getMessageGroup(selected);
if (m != null) {
String details = m.getDetails(); String details = m.getDetails();
if (details != null && !details.equals("")) { if (details != null && !details.equals("")) {
mainPanel.showDetails(selected); mainPanel.showDetails(selected);
} }
}
messageTable.setCursor(null); messageTable.setCursor(null);
} }
} }