BioLegato Change Log


Version 1.0.4

1. overwrite implemented for Table canvas when direction=out

See http://www.bioinformatics.org/wiki/PCD_SUMMARY#Tempfile_.28a_temporary_file_containing_all_of_the_data_selected_in_BioLegato.E2.80.99s_main_canvas.29

Use of content=canvas with overwrite generates an error that is very difficult to track down.

See Bugzilla #1218

After running the shell command:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 0
    at java.util.Vector.elementAt(Vector.java:477)
    at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:648)
    at javax.swing.JTable.getValueAt(JTable.java:2717)
    at javax.swing.JTable.prepareRenderer(JTable.java:5706)
    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)
    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
    at javax.swing.JComponent.paintComponent(JComponent.java:780)
    at javax.swing.JComponent.paint(JComponent.java:1056)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

The error appears to occur in TableModel.java/getRowData. The varialbe tableModel is of the type DefaultTableModel, which has the getValueAt function. There are only two calls to this function, both in getRowData (lines 439 & 452). This code looks good, so when overwrite/content were introduced to out files, I must have messed up something upstream.

If for example, columns was null when it shouldn't be, or was non-null when it should be, then the wrong block of code would be called, throwing off the column count.

So who calls getRowData? There are only 2 calls, both in getData (lines 353 & 372). Each of these is in a separate block, depending on whether or not forceall is true. I smell a rat!


2. Value fields for Text and Number variables allow environment variable substitution.

See http://www.bioinformatics.org/wiki/PCD_SUMMARY#Environment_Variable_Substitution for details.


Version 1.0.3

1.Modified CommandThread.java to allow execution of jobs in the background. See comments.

2.Refactored some of the classes so that the word 'translate' was not in the name. In the context of sequences, 'translate' could be misleading. "Apply Rename on Comments" was used.

File
old name
new name
GenBankFile2008.java
translateTo
convertTo

translateSequence
convertSequence
DataFormat.java
translateTo
convertTo

translateFrom
convertFrom


3. Modified GenBankFile2008.java line 172 as follows:

           } else {
                // We have to remove the last newline from the end of the annotation.
                // Apparently, the append function adds a newline, so if we don't do
                // this, an extra blank line appears between the end of the annotation
                // and the ORIGIN line.
                result.append(seq.getOriginal().subSequence(0, seq.getOriginal().length()-1));
            }