in src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java [841:896]
public void propertyChange(PropertyChangeEvent arg0) {
Thread thread =
new Thread(
() -> {
ProgressMonitor monitor = null;
int index = 0;
try {
synchronized (mutex) {
monitor =
new ProgressMonitor(
null, "Switching models...",
"Transferring between data structures, please wait...", 0,
unfilteredList.size() + 1);
monitor.setMillisToDecideToPopup(250);
monitor.setMillisToPopup(100);
logger.debug(
"Changing Model, isCyclic is now " + cyclic);
List newUnfilteredList;
List newFilteredList;
if (cyclic) {
newUnfilteredList = new CyclicBufferList(cyclicBufferSize);
newFilteredList = new CyclicBufferList(cyclicBufferSize);
} else {
newUnfilteredList = new ArrayList(cyclicBufferSize);
newFilteredList = new ArrayList(cyclicBufferSize);
}
int increment = 0;
for (Object anUnfilteredList : unfilteredList) {
LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) anUnfilteredList;
newUnfilteredList.add(loggingEventWrapper);
monitor.setProgress(index++);
}
unfilteredList = newUnfilteredList;
filteredList = newFilteredList;
}
monitor.setNote("Refiltering...");
reFilter();
monitor.setProgress(index++);
} finally {
monitor.close();
}
logger.debug("Model Change completed");
});
thread.setPriority(Thread.MIN_PRIORITY + 1);
thread.start();
}