# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /home/matthias/NetBeansProjects/core-main # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetCellRenderer.java --- db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetCellRenderer.java Base (BASE) +++ db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetCellRenderer.java Locally Modified (Based On LOCAL) @@ -49,6 +49,8 @@ import java.sql.Clob; import java.sql.SQLException; import java.text.SimpleDateFormat; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JTable; @@ -233,27 +235,54 @@ } } -class ClobCellRenderer extends SQLConstantsCellRenderer { +class ClobCellRenderer extends CellFocusCustomRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (!(value instanceof Clob)) { throw new IllegalArgumentException("ClobCellRenderer can only be used for Blobs"); } + + Clob clobValue = (Clob) value; + + StringBuilder contentPart = new StringBuilder(); + StringBuilder clobDescription = new StringBuilder(""); - return super.getTableCellRendererComponent(table, stringValue.toString(), isSelected, hasFocus, row, column); } catch (SQLException ex) { - return super.getTableCellRendererComponent(table, "", isSelected, hasFocus, row, column); + clobDescription.append("of unknown size"); } + clobDescription.append(">"); + + try { + long size = clobValue.length(); + long retrievalCount = Math.min(size, 255); + String sampleContent = clobValue.getSubString(1, (int) retrievalCount); + contentPart.append(sampleContent.replaceAll("[\n\r]+", " ")); + if(size > 255) { + contentPart.append(" [...]"); } + } catch (SQLException ex) { + Logger.getLogger(this.getClass().getName()).log(Level.INFO, + "Failed to retrieve CLOB content", + ex); + contentPart.append(clobDescription.toString()); } + + Component renderer = super.getTableCellRendererComponent(table, contentPart.toString(), isSelected, hasFocus, row, column); + + if(renderer instanceof JComponent) { + ((JComponent) renderer).setToolTipText(clobDescription.toString()); + } + + return renderer; + } +} \ No newline at end of file