📄 reportquerydialog.java
字号:
ip2 = query.indexOf(p2);
}
}
return query;
} catch (Exception ex)
{
javax.swing.JOptionPane.showMessageDialog(null, ex.getMessage());
return "";
}
}
public void run() {
String error_msg = "";
PreparedStatement ps = null;
try {
// Prepare the parameter expression evaluator.
// Cannot cache this as user may have altered the parameters. (this
// dialog is not modal.
String query = this.src_query;
Interpreter interpreter = prepareExpressionEvaluator();
// look for parameters in the query and replace them with default values.
// parameters look something like
// $P{QuoteGroupID}
// or
// $P!{OrderByClause}
java.util.List queryParams = new ArrayList();
Enumeration enumParams = getJReportFrame().getReport().getParameters().elements();
while( enumParams.hasMoreElements() ) {
it.businesslogic.ireport.JRParameter parameter = (it.businesslogic.ireport.JRParameter)enumParams.nextElement();
String p1 = "$P{" + parameter.getName() + "}";
String p2 = "$P!{" + parameter.getName() + "}";
// evaluate the Default expression value
Integer expID = (Integer)parameterNameToExpressionID.get(parameter.getName());
Object defValue;
if( expID!=null ) {
defValue = interpreter.eval("bshCalculator.evaluate(" + expID.intValue() + ")");
} else {
// this param does not have a default value.
defValue = null;
}
int ip1 = query.indexOf(p1);
while( ip1!=-1 ) {
// add a query parameter
if( defValue==null ) {
throw new IllegalArgumentException("Please set a " +
"default value for the parameter '" +
parameter.getName() + "'" );
}
String before = query.substring(0, ip1);
String after = query.substring(ip1+p1.length());
query = before + " ? " + after;
queryParams.add( defValue );
ip1 = query.indexOf(p1);
}
int ip2 = query.indexOf(p2);
while( ip2!=-1 ) {
// String replacement, Altering the SQL statement.
if( defValue==null ) {
throw new IllegalArgumentException("Please set a " +
"default value for the parameter '"
+ parameter.getName() + "'" );
}
String before = query.substring(0, ip2);
String after = query.substring(ip2+p2.length());
query = before + "" + defValue.toString() + "" + after;
ip2 = query.indexOf(p2);
}
}
ps = conn.getConnection().prepareStatement( query );
for(int pc=0; pc<queryParams.size(); pc++ ) {
ps.setObject(pc+1, queryParams.get(pc) );
}
// Some JDBC drivers don't supports this method...
try { ps.setFetchSize(0); } catch(Exception e ) {}
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
List columns = new ArrayList();
for (int i=1; i <=rsmd.getColumnCount(); ++i) {
it.businesslogic.ireport.JRField field =
new it.businesslogic.ireport.JRField(
rsmd.getColumnLabel(i),
Misc.getJdbcTypeClass(rsmd.getColumnType(i) ) );
columns.add( new Object[]{field, field.getClassType()} );
}
setColumnsFromWorker(columns);
return;
} catch( IllegalArgumentException ie ) {
error_msg = ie.getMessage();
} catch (NoClassDefFoundError ex) {
error_msg = "NoClassDefFoundError!!\nCheck your classpath!";
} catch (java.sql.SQLException ex) {
error_msg = "SQL problems:\n"+ex.getMessage();
} catch (Exception ex) {
ex.printStackTrace();
error_msg = "General problem:\n"+ex.getMessage()+
"\n\nCheck username and password; is the DBMS active ?!";
} finally {
if(ps!=null) try { ps.close(); } catch(Exception e ) {}
}
setColumnErrorFromWork( error_msg );
}
}
/**
* Shows the list of columns.
* If the column error message label is visible remove it first.
*
* @param cols A List Object[], for the fields.
*/
private void setColumns( final List cols ) {
columnsErrorMsgLabel.setText( "" );
jPanel2.remove( columnsErrorScrollPane );
jPanel2.add( columnsScrollPane, java.awt.BorderLayout.CENTER );
jPanel2.revalidate();
javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)jTableFields.getModel();
dtm.getDataVector().clear();
for(int i=0; i<cols.size(); i++) {
Object [] row = (Object[])cols.get(i);
dtm.addRow( row );
}
// Select all the fields so the new user does not get confused, when
// they press OK. As only the selected fields are actually saved to the
// report
jTableFields.selectAll();
okButton.setEnabled( true );
}
/**
* Replace the columns list with a label that contains the reason why
* columns cannot be loaded.
*
* @param msg The error message to display, can be in HTML.
*/
private void setColumnsError( final String msg ) {
columnsErrorMsgLabel.setText( msg );
jPanel2.remove( columnsScrollPane );
jPanel2.add( columnsErrorScrollPane, java.awt.BorderLayout.CENTER );
jPanel2.revalidate();
columnsErrorMsgLabel.repaint();
//okButton.setEnabled(false);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
java.awt.GridBagConstraints gridBagConstraints;
jSplitPane1 = new javax.swing.JSplitPane();
jPanel1 = new javax.swing.JPanel();
jTabbedPane1 = new javax.swing.JTabbedPane();
jPanelSQL = new javax.swing.JPanel();
jRSQLExpressionArea1 = new it.businesslogic.ireport.gui.JRSQLExpressionArea();
jPanel7 = new javax.swing.JPanel();
automaticlyReadFieldsCheckBox = new javax.swing.JCheckBox();
readFieldsButton = new javax.swing.JButton();
exportQueryButton = new javax.swing.JButton();
jPanel5 = new javax.swing.JPanel();
jTextFieldBeanClass = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jButtonReadBeanAttributes = new javax.swing.JButton();
jPanel10 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jTextFieldBeanClass1 = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jButtonReadBeanAttributes3 = new javax.swing.JButton();
jPanel11 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTree1 = new javax.swing.JTree();
jPanel12 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jPanel13 = new javax.swing.JPanel();
jSeparator1 = new javax.swing.JSeparator();
jPanel2 = new javax.swing.JPanel();
columnsScrollPane = new javax.swing.JScrollPane();
jTableFields = new javax.swing.JTable();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
jPanel9 = new javax.swing.JPanel();
columnsErrorScrollPane = new javax.swing.JScrollPane();
columnsErrorMsgLabel = new javax.swing.JLabel();
setTitle("Report query");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
jSplitPane1.setResizeWeight(0.4);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel1.setPreferredSize(new java.awt.Dimension(10, 350));
jPanel1.setMinimumSize(new java.awt.Dimension(10, 100));
jTabbedPane1.setPreferredSize(new java.awt.Dimension(154, 350));
jTabbedPane1.setMinimumSize(new java.awt.Dimension(154, 350));
jPanelSQL.setLayout(new java.awt.BorderLayout());
jPanelSQL.setPreferredSize(new java.awt.Dimension(1, 350));
jPanelSQL.setMinimumSize(new java.awt.Dimension(1, 100));
jRSQLExpressionArea1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
jRSQLExpressionArea1.setPreferredSize(new java.awt.Dimension(661, 340));
jRSQLExpressionArea1.setMinimumSize(new java.awt.Dimension(661, 200));
jPanelSQL.add(jRSQLExpressionArea1, java.awt.BorderLayout.CENTER);
jPanel7.setLayout(new java.awt.GridBagLayout());
automaticlyReadFieldsCheckBox.setText("Automatically Retrieve Fields");
automaticlyReadFieldsCheckBox.setSelected(true);
automaticlyReadFieldsCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
automaticlyReadFieldsCheckBoxActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 0);
jPanel7.add(automaticlyReadFieldsCheckBox, gridBagConstraints);
readFieldsButton.setText("Read Fields");
readFieldsButton.setEnabled(false);
readFieldsButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
readFieldsButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(2, 10, 2, 0);
jPanel7.add(readFieldsButton, gridBagConstraints);
exportQueryButton.setText("Send to clipboard");
exportQueryButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exportQueryButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(2, 10, 2, 0);
jPanel7.add(exportQueryButton, gridBagConstraints);
jPanelSQL.add(jPanel7, java.awt.BorderLayout.SOUTH);
jTabbedPane1.addTab("Report SQL query ", jPanelSQL);
jPanel5.setLayout(new java.awt.GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -