Modified PrimaryKey so that we don't create new objects; we just use the Strings as they come in, index those in a HashMap, and use the column type (i.e. column class) as our way of figuring this out. It's very hacky, but saves a lot of loading time.
Finally solved that table-columns-not-updating bug!
One common issue is changing the JTable while the new file is loading, which causes errors and also exceptions. So this is a very hacky attempt at preventing the table from being modified (setEnabled false) while stuff is being processed. It's not perfect (and won't cover all cases where work mgiht be going on in the background), but it should help. A comprehensive solution would probably consist of moving the setEnabled code into the class we created specifically to handle long-term events based off of SwingWorker.
Added a "create column through a join on the martched file". It is very weird and doens't work properly sometimes, but is very useful.
Sorted out a weird bug which caused an exception when the table was changed in such a way as to reset the selection (to row, col: -1, -1).