org.hsh.bfr.db/src/org/hsh/bfr/db/gui/dbtable/editoren/MyNewDoubleEditor.java
/*******************************************************************************
* Copyright (c) 2015 Federal Institute for Risk Assessment (BfR), Germany
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Department Biological Safety - BfR
*******************************************************************************/
package org.hsh.bfr.db.gui.dbtable.editoren;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import org.hsh.bfr.db.DBKernel;
import org.hsh.bfr.db.MyLogger;
import org.hsh.bfr.db.MyTable;
import com.jgoodies.forms.factories.CC;
import com.jgoodies.forms.layout.FormLayout;
/**
* @author Armin Weiser
*/
public class MyNewDoubleEditor extends JDialog {
/**
*
*/
private static final long serialVersionUID = 1L;
private boolean inited = false;
private Object oldValue;
private String spaltenName;
private Double newValue = null;
private boolean savePressed = false;
public MyNewDoubleEditor(final Object value, final String spaltenName, final int x, final int y, final char ch) {
this.oldValue = value;
this.spaltenName = spaltenName;
savePressed = false;
initComponents();
this.setTitle(spaltenName);
//int w = this.getPreferredSize().width;
//int h = this.getPreferredSize().height;
int w = this.getSize().width;
int h = this.getSize().height;
int newX = x - w / 2;
int newY = y - h / 2;
if (newX < 0) {
newX = 0;
}
if (newY < 0) {
newY = 0;
}
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
if (newX + w > screen.width) {
newX = screen.width - w;
}
if (newY + h > screen.height) {
newY = screen.height - h;
}
//System.out.println(newX + "\t" + newY + "\t" + x + "\t" + y + "\t" + w + "\t" + h + "\t" + this.getSize().width + "\t" + this.getSize().height);
this.setLocation(newX, newY);
this.setIconImage(new ImageIcon(getClass().getResource("/org/hsh/bfr/db/gui/res/Database.gif")).getImage()); // SiLeBAT.gif
readValues();
if (DBKernel.isDouble(""+ch)) {
textField1.setText(""+ch);
inited = true;
}
}
private void thisKeyTyped(final KeyEvent e) {
char ch = e.getKeyChar();
if (ch == KeyEvent.VK_ENTER) {
saveNdispose();
}
else if (ch == KeyEvent.VK_ESCAPE) {
dispose();
}
else {
if (e.getSource() instanceof JTextField) {
JTextField tf = (JTextField) e.getSource();
if (tf != null && tf != textField9) { // textField9 ist die Verteilung
String text = tf.getText();
int cp = tf.getCaretPosition();
if (ch == ',') {
ch = '.';
e.setKeyChar('.');
}
text = text.substring(0, cp) + ch + text.substring(cp);
if (!DBKernel.isDouble(text))
{
e.consume();
//System.out.println(tf.getCaretPosition() + "\t" + (tf == textField10) + "\t" + DBKernel.isDouble(text) + "\t" + text);
}
}
}
}
}
private void button1ActionPerformed(final ActionEvent e) {
saveNdispose();
}
private void saveNdispose() {
newValue = saveValues();
savePressed = true;
dispose();
}
public Double getNewValue() {
return newValue;
}
public boolean savePressed() {
return savePressed;
}
private void button2ActionPerformed(final ActionEvent e) {
dispose();
}
private void textField1FocusGained(final FocusEvent e) {
if (inited) {
textField1.select(0, 0);
textField1.setCaretPosition(textField1.getText().length());
inited = false;
}
}
private void button10ActionPerformed(final ActionEvent e) {
openCD(button10, "Zeit (h)");
}
private void button11ActionPerformed(final ActionEvent e) {
openCD(button11, comboBox11.getSelectedItem().toString());
}
private void openCD(final JButton bt, final String xAxis) {
MyChartDialog mcd = new MyChartDialog(this, bt.getToolTipText(), xAxis, spaltenName);
mcd.setModal(true);
//mcd.pack();
mcd.setVisible(true);
bt.setToolTipText(mcd.getDatenpunkte());
}
private void manageForeign(final JTextField tf, final Object id, final String foreignVal) {
if (id == null) {
tf.setText(null);
tf.setToolTipText(null);
}
else {
tf.setText(foreignVal);
tf.setToolTipText(id.toString());
}
}
private String getForeignVal(final String tablename, final int id, final String fields) {
String result = "";
String sql= "SELECT " + fields + " FROM " + DBKernel.delimitL(tablename) + " WHERE " + DBKernel.delimitL("ID") + "=" + id;
ResultSet rs = DBKernel.getResultSet(sql, false);
try {
if (rs != null && rs.first()) {
boolean isDbl = fields.startsWith(DBKernel.delimitL("Wert") + ",");
for (int i=1;i<=rs.getMetaData().getColumnCount();i++) {
if (rs.getObject(i) != null) {
if (!result.isEmpty()) {
result += "; ";
}
if (isDbl) {
result += rs.getMetaData().getColumnName(i) + ": ";
}
if (rs.getMetaData().getColumnType(i) == java.sql.Types.DOUBLE) {
result += DBKernel.getDoubleStr(rs.getDouble(i));
} else {
result += rs.getString(i);
}
}
}
}
}
catch (SQLException e) {
e.printStackTrace();
}
return result;
}
private Integer getInt(final String value) {
Integer result = null;
try {
result = Integer.parseInt(value);
}
catch (Exception e) {}
return result;
}
private void button13ActionPerformed(final ActionEvent e) {
MyTable myFT = DBKernel.myDBi.getTable("Literatur"); // in case Reference Table is there
if (myFT != null) {
Object newVal = DBKernel.mainFrame.openNewWindow(myFT, getInt(textField13.getToolTipText()), "Literatur", null, "", null, this);
//if (newVal != null) textField13.setToolTipText(newVal.toString());
if (newVal != null) manageForeign(textField13, newVal, getForeignVal("Literatur", getInt(newVal == null ? null : newVal.toString()), DBKernel.delimitL("Erstautor") + "," + DBKernel.delimitL("Jahr")));
}
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
label000 = new JLabel();
label111 = new JLabel();
label1 = new JLabel();
textField1 = new JTextField();
textField1_exp = new JTextField();
checkBox1 = new JCheckBox();
label2 = new JLabel();
comboBox2 = new JComboBox<>();
label3 = new JLabel();
textField3 = new JTextField();
checkBox3 = new JCheckBox();
label4 = new JLabel();
textField4 = new JTextField();
textField4_exp = new JTextField();
checkBox4 = new JCheckBox();
label5 = new JLabel();
textField5 = new JTextField();
textField5_exp = new JTextField();
checkBox5 = new JCheckBox();
label6 = new JLabel();
textField6 = new JTextField();
textField6_exp = new JTextField();
checkBox6 = new JCheckBox();
label7 = new JLabel();
textField7 = new JTextField();
textField7_exp = new JTextField();
checkBox7 = new JCheckBox();
label8 = new JLabel();
textField8 = new JTextField();
textField8_exp = new JTextField();
checkBox8 = new JCheckBox();
label9 = new JLabel();
textField9 = new JTextField();
checkBox9 = new JCheckBox();
label10 = new JLabel();
button10 = new JButton();
checkBox10 = new JCheckBox();
label11 = new JLabel();
button11 = new JButton();
comboBox11 = new JComboBox<>();
label12 = new JLabel();
checkBox12 = new JCheckBox();
label13 = new JLabel();
textField13 = new JTextField();
button13 = new JButton();
panel1 = new JPanel();
button1 = new JButton();
button2 = new JButton();
//======== this ========
setAlwaysOnTop(true);
setResizable(false);
setModal(true);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
Container contentPane = getContentPane();
contentPane.setLayout(new FormLayout(
"default, $lcgap, default:grow, $lcgap, default, $lcgap, center:default",
"14*(default, $lgap), default"));
//---- label000 ----
label000.setText("Exponent");
label000.setToolTipText("Exponent zur Basis 10, falls vorhanden\\nBeispiel 1.3*10^-4 : 1.3 wird in der Spalte 'Wert' eingetragen und -4 in dieser Spalte");
contentPane.add(label000, CC.xy(5, 1));
//---- label111 ----
label111.setText("gesch\u00e4tzt");
contentPane.add(label111, CC.xy(7, 1));
//---- label1 ----
label1.setText("Wert");
contentPane.add(label1, CC.xy(1, 3));
//---- textField1 ----
textField1.setPreferredSize(new Dimension(80, 20));
textField1.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
textField1.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
textField1FocusGained(e);
}
});
contentPane.add(textField1, CC.xy(3, 3));
//---- textField1_exp ----
textField1_exp.setToolTipText("Exponent zur Basis 10, falls vorhanden\\nBeispiel 1.3*10^-4 : 1.3 wird in der Spalte 'Wert' eingetragen und -4 in dieser Spalte");
textField1_exp.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField1_exp, CC.xy(5, 3));
//---- checkBox1 ----
checkBox1.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox1, CC.xy(7, 3));
//---- label2 ----
label2.setText("Wert_typ");
contentPane.add(label2, CC.xy(1, 5));
//---- comboBox2 ----
comboBox2.setModel(new DefaultComboBoxModel<>(new String[] {
"Einzelwert",
"Mittelwert",
"Median"
}));
comboBox2.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(comboBox2, CC.xy(3, 5));
//---- label3 ----
label3.setText("Wiederholungen");
label3.setToolTipText("Anzahl der Wiederholungsmessungen/technischen Replikate f\u00fcr diesen Wert. \nACHTUNG: gemeint ist hier die Anzahl der Messungen insgesamt!!!");
contentPane.add(label3, CC.xy(1, 7));
//---- textField3 ----
textField3.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField3, CC.xy(3, 7));
//---- checkBox3 ----
checkBox3.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox3, CC.xy(7, 7));
//---- label4 ----
label4.setText("Standardabweichung");
label4.setToolTipText("Standardabweichung des gemessenen Wertes - Eintrag nur bei Mehrfachmessungen m\u00f6glich");
contentPane.add(label4, CC.xy(1, 9));
//---- textField4 ----
textField4.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField4, CC.xy(3, 9));
//---- textField4_exp ----
textField4_exp.setToolTipText("Exponent zur Basis 10, falls vorhanden\\nBeispiel 1.3*10^-4 : 1.3 wird in der Spalte 'Wert' eingetragen und -4 in dieser Spalte");
textField4_exp.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField4_exp, CC.xy(5, 9));
//---- checkBox4 ----
checkBox4.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox4, CC.xy(7, 9));
//---- label5 ----
label5.setText("Minimum");
contentPane.add(label5, CC.xy(1, 11));
//---- textField5 ----
textField5.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField5, CC.xy(3, 11));
//---- textField5_exp ----
textField5_exp.setToolTipText("Exponent zur Basis 10, falls vorhanden\\nBeispiel 1.3*10^-4 : 1.3 wird in der Spalte 'Wert' eingetragen und -4 in dieser Spalte");
textField5_exp.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField5_exp, CC.xy(5, 11));
//---- checkBox5 ----
checkBox5.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox5, CC.xy(7, 11));
//---- label6 ----
label6.setText("Maximum");
contentPane.add(label6, CC.xy(1, 13));
//---- textField6 ----
textField6.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField6, CC.xy(3, 13));
//---- textField6_exp ----
textField6_exp.setToolTipText("Exponent zur Basis 10, falls vorhanden\\nBeispiel 1.3*10^-4 : 1.3 wird in der Spalte 'Wert' eingetragen und -4 in dieser Spalte");
textField6_exp.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField6_exp, CC.xy(5, 13));
//---- checkBox6 ----
checkBox6.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox6, CC.xy(7, 13));
//---- label7 ----
label7.setText("LCL95");
label7.setToolTipText("Untere Konfidenzgrenze des gemessenen Wertes (95%-KI) - Eintrag nur bei Mehrfachmessungen m\u00f6glich");
contentPane.add(label7, CC.xy(1, 15));
//---- textField7 ----
textField7.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField7, CC.xy(3, 15));
//---- textField7_exp ----
textField7_exp.setToolTipText("Exponent zur Basis 10, falls vorhanden\\nBeispiel 1.3*10^-4 : 1.3 wird in der Spalte 'Wert' eingetragen und -4 in dieser Spalte");
textField7_exp.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField7_exp, CC.xy(5, 15));
//---- checkBox7 ----
checkBox7.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox7, CC.xy(7, 15));
//---- label8 ----
label8.setText("UCL95");
label8.setToolTipText("Obere Konfidenzgrenze des gemessenen Wertes (95%-KI) - Eintrag nur bei Mehrfachmessungen m\u00f6glich");
contentPane.add(label8, CC.xy(1, 17));
//---- textField8 ----
textField8.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField8, CC.xy(3, 17));
//---- textField8_exp ----
textField8_exp.setToolTipText("Exponent zur Basis 10, falls vorhanden\\nBeispiel 1.3*10^-4 : 1.3 wird in der Spalte 'Wert' eingetragen und -4 in dieser Spalte");
textField8_exp.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField8_exp, CC.xy(5, 17));
//---- checkBox8 ----
checkBox8.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox8, CC.xy(7, 17));
//---- label9 ----
label9.setText("Verteilung");
label9.setToolTipText("Verteilung der Werte bei Mehrfachmessungen, z.B. Normalverteilung. Anzugeben ist die entsprechende Funktion in R, z.B. rnorm(n, mean = 0, sd = 1) ");
contentPane.add(label9, CC.xy(1, 19));
//---- textField9 ----
textField9.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(textField9, CC.xy(3, 19));
//---- checkBox9 ----
checkBox9.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
thisKeyTyped(e);
}
});
contentPane.add(checkBox9, CC.xy(7, 19));
//---- label10 ----
label10.setText("Funktion (Zeit)");
label10.setToolTipText("\"Parameter\"/Zeit-Profil. Funktion des Parameters in Abh\u00e4ngigkeit von der Zeit.");
contentPane.add(label10, CC.xy(1, 21));
//---- button10 ----
button10.setText("Starte Editor");
button10.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button10ActionPerformed(e);
}
});
contentPane.add(button10, CC.xy(3, 21));
contentPane.add(checkBox10, CC.xy(7, 21));
//---- label11 ----
label11.setText("Funktion (x)");
label11.setToolTipText("\"Parameter\"/?-Profil. Funktion des Parameters in Abh\u00e4ngigkeit des anzugebenden ?-Parameters.");
contentPane.add(label11, CC.xy(1, 23));
//---- button11 ----
button11.setText("Starte Editor");
button11.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button11ActionPerformed(e);
}
});
contentPane.add(button11, CC.xy(3, 23));
//---- comboBox11 ----
comboBox11.setModel(new DefaultComboBoxModel<>(new String[] {
"\u00b0C",
"pH",
"aw",
"CO2",
"Druck"
}));
contentPane.add(comboBox11, CC.xy(7, 23, CC.FILL, CC.DEFAULT));
//---- label12 ----
label12.setText("Undefiniert (n.d.)");
contentPane.add(label12, CC.xy(1, 25));
contentPane.add(checkBox12, CC.xy(3, 25));
//---- label13 ----
label13.setText("Referenz");
contentPane.add(label13, CC.xy(1, 27));
//---- textField13 ----
textField13.setEditable(false);
contentPane.add(textField13, CC.xywh(3, 27, 3, 1));
//---- button13 ----
button13.setText("insert");
button13.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button13ActionPerformed(e);
}
});
contentPane.add(button13, CC.xy(7, 27));
//======== panel1 ========
{
panel1.setLayout(new FormLayout(
"2*(default:grow, $lcgap), default:grow",
"default"));
((FormLayout)panel1.getLayout()).setColumnGroups(new int[][] {{1, 3, 5}});
//---- button1 ----
button1.setText("OK");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button1ActionPerformed(e);
}
});
panel1.add(button1, CC.xy(3, 1));
//---- button2 ----
button2.setText("Abbrechen");
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button2ActionPerformed(e);
}
});
panel1.add(button2, CC.xy(5, 1));
}
contentPane.add(panel1, CC.xywh(1, 29, 7, 1));
setSize(380, 440);
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JLabel label000;
private JLabel label111;
private JLabel label1;
private JTextField textField1;
private JTextField textField1_exp;
private JCheckBox checkBox1;
private JLabel label2;
private JComboBox<String> comboBox2;
private JLabel label3;
private JTextField textField3;
private JCheckBox checkBox3;
private JLabel label4;
private JTextField textField4;
private JTextField textField4_exp;
private JCheckBox checkBox4;
private JLabel label5;
private JTextField textField5;
private JTextField textField5_exp;
private JCheckBox checkBox5;
private JLabel label6;
private JTextField textField6;
private JTextField textField6_exp;
private JCheckBox checkBox6;
private JLabel label7;
private JTextField textField7;
private JTextField textField7_exp;
private JCheckBox checkBox7;
private JLabel label8;
private JTextField textField8;
private JTextField textField8_exp;
private JCheckBox checkBox8;
private JLabel label9;
private JTextField textField9;
private JCheckBox checkBox9;
private JLabel label10;
private JButton button10;
private JCheckBox checkBox10;
private JLabel label11;
private JButton button11;
private JComboBox<String> comboBox11;
private JLabel label12;
private JCheckBox checkBox12;
private JLabel label13;
private JTextField textField13;
private JButton button13;
private JPanel panel1;
private JButton button1;
private JButton button2;
// JFormDesigner - End of variables declaration //GEN-END:variables
private void readValues() {
textField1.setText(""); textField1_exp.setText(""); checkBox1.setSelected(false);
comboBox2.setSelectedIndex(0);
textField3.setText(""); checkBox3.setSelected(false);
textField4.setText(""); textField4_exp.setText(""); checkBox4.setSelected(false);
textField5.setText(""); textField5_exp.setText(""); checkBox5.setSelected(false);
textField6.setText(""); textField6_exp.setText(""); checkBox6.setSelected(false);
textField7.setText(""); textField7_exp.setText(""); checkBox7.setSelected(false);
textField8.setText(""); textField8_exp.setText(""); checkBox8.setSelected(false);
textField9.setText(""); checkBox9.setSelected(false);
button10.setToolTipText(""); checkBox10.setSelected(false);
button11.setToolTipText(""); comboBox11.setSelectedIndex(0);
checkBox12.setSelected(false);
if (oldValue != null) {
String sql = "SELECT * FROM " + DBKernel.delimitL("DoubleKennzahlen") + " WHERE " + DBKernel.delimitL("ID") + "=" + oldValue;
try {
ResultSet rs = DBKernel.getResultSet(sql, false);
if (rs != null && rs.first()) {
// "Einzelwert","Einzelwert_g","Wiederholungen","Wiederholungen_g","Mittelwert","Mittelwert_g","Standardabweichung","Standardabweichung_g","Median","Median_g","Minimum","Minimum_g","Maximum","Maximum_g","LCL95","LCL95_g","UCL95","UCL95_g","Verteilung","Verteilung_g",
readValue(rs, label1, textField1, textField1_exp, checkBox1);
Integer typ = rs.getInt("Wert_typ");
if (typ != null && typ == 2) {
comboBox2.setSelectedItem("Mittelwert");
} else if (typ != null && typ == 3) {
comboBox2.setSelectedItem("Median");
} else {
comboBox2.setSelectedItem("Einzelwert");
}
readValue(rs, label3, textField3, null, checkBox3);
readValue(rs, label4, textField4, textField4_exp, checkBox4);
readValue(rs, label5, textField5, textField5_exp, checkBox5);
readValue(rs, label6, textField6, textField6_exp, checkBox6);
readValue(rs, label7, textField7, textField7_exp, checkBox7);
readValue(rs, label8, textField8, textField8_exp, checkBox8);
readValue(rs, label9, textField9, null, checkBox9, true);
// "Funktion (Zeit)","Funktion (Zeit)_g"
try {
String str = rs.getString(label10.getText());
if (str != null) {
button10.setToolTipText(str);
boolean ass = rs.getBoolean(label10.getText() + "_g");
checkBox10.setSelected(ass);
}
}
catch (Exception e) {MyLogger.handleException(e);}
// "Funktion (x)","x","Funktion (x)_g"
String str = rs.getString(label11.getText());
if (str != null) {
button11.setToolTipText(str);
//boolean ass = rs.getBoolean(label11.getText() + "_g");
String comboVal = rs.getString("x") == null ? "" : rs.getString("x");
for (int i=0;i<comboBox11.getItemCount();i++) {
if (comboBox11.getItemAt(i).equals(comboVal)) {
comboBox11.setSelectedIndex(i);
break;
}
}
}
// Undefiniert (n.d.)
try {
boolean nd = rs.getBoolean(label12.getText());
checkBox12.setSelected(nd);
}
catch (Exception e) {MyLogger.handleException(e);}
manageForeign(textField13, rs.getObject("Referenz"), getForeignVal("Literatur", rs.getInt("Referenz"), DBKernel.delimitL("Erstautor") + "," + DBKernel.delimitL("Jahr")));
}
}
catch (Exception e) {
MyLogger.handleException(e);
}
}
}
private void readValue(final ResultSet rs, final JLabel jl, final JTextField tf, final JTextField tf_exp, final JCheckBox cb) {
readValue(rs, jl, tf, tf_exp, cb, false);
}
private void readValue(final ResultSet rs, final JLabel jl, final JTextField tf, final JTextField tf_exp, final JCheckBox cb, final boolean isString) {
try {
String kz = jl.getText();
String str = rs.getString(kz);
if (str != null) {
if (isString) {
tf.setText(str);
} else {
tf.setText(DBKernel.getDoubleStr(rs.getDouble(kz)));
}
if (tf_exp != null) {
str = rs.getString(kz.equals("Wert") ? "Exponent" : (kz + "_exp"));
if (str != null) {
tf_exp.setText(DBKernel.getDoubleStr(rs.getDouble(kz.equals("Wert") ? "Exponent" : (kz + "_exp"))));
}
}
boolean ass = rs.getBoolean(kz + "_g");
cb.setSelected(ass);
}
}
catch (Exception e) {MyLogger.handleException(e);}
}
private Double saveValues() {
Double result = null;
try {
String sql = "";
if (oldValue != null) {
sql = "UPDATE " + DBKernel.delimitL("DoubleKennzahlen") +
" SET " + DBKernel.delimitL("Wert") + "=?," + DBKernel.delimitL("Exponent") + "=?," + DBKernel.delimitL("Wert_g") + "=?," + DBKernel.delimitL("Wert_typ") + "=?," +
DBKernel.delimitL("Wiederholungen") + "=?," + DBKernel.delimitL("Wiederholungen_g") + "=?, " +
DBKernel.delimitL("Standardabweichung") + "=?," + DBKernel.delimitL("Standardabweichung_exp") + "=?, " + DBKernel.delimitL("Standardabweichung_g") + "=?, " +
DBKernel.delimitL("Minimum") + "=?, " + DBKernel.delimitL("Minimum_exp") + "=?, " + DBKernel.delimitL("Minimum_g") + "=?, " +
DBKernel.delimitL("Maximum") + "=?," + DBKernel.delimitL("Maximum_exp") + "=?, " + DBKernel.delimitL("Maximum_g") + "=?, " +
DBKernel.delimitL("LCL95") + "=?, " + DBKernel.delimitL("LCL95_exp") + "=?," + DBKernel.delimitL("LCL95_g") + "=?," +
DBKernel.delimitL("UCL95") + "=?, " + DBKernel.delimitL("UCL95_exp") + "=?, " + DBKernel.delimitL("UCL95_g") + "=?, " +
DBKernel.delimitL("Verteilung") + "=?," + DBKernel.delimitL("Verteilung_g") + "=?, " +
DBKernel.delimitL("Funktion (Zeit)") + "=?, " + DBKernel.delimitL("Funktion (Zeit)_g") + "=?," +
DBKernel.delimitL("Funktion (x)") + "=?, " + DBKernel.delimitL("x") + "=?, " + DBKernel.delimitL("Funktion (x)_g") + "=?," +
DBKernel.delimitL("Undefiniert (n.d.)") + "=?, " + DBKernel.delimitL("Referenz") + "=?" +
" WHERE " + DBKernel.delimitL("ID") + "=" + oldValue;
}
else {
sql = "INSERT INTO " + DBKernel.delimitL("DoubleKennzahlen") +
" (" + DBKernel.delimitL("Wert") + "," + DBKernel.delimitL("Exponent") + "," + DBKernel.delimitL("Wert_g") + "," + DBKernel.delimitL("Wert_typ") + "," +
DBKernel.delimitL("Wiederholungen") + "," + DBKernel.delimitL("Wiederholungen_g") + ", " +
DBKernel.delimitL("Standardabweichung") + "," + DBKernel.delimitL("Standardabweichung_exp") + ", " + DBKernel.delimitL("Standardabweichung_g") + ", " +
DBKernel.delimitL("Minimum") + ", " + DBKernel.delimitL("Minimum_exp") + ", " + DBKernel.delimitL("Minimum_g") + ", " +
DBKernel.delimitL("Maximum") + "," + DBKernel.delimitL("Maximum_exp") + ", " + DBKernel.delimitL("Maximum_g") + ", " +
DBKernel.delimitL("LCL95") + ", " + DBKernel.delimitL("LCL95_exp") + "," + DBKernel.delimitL("LCL95_g") + "," +
DBKernel.delimitL("UCL95") + ", " + DBKernel.delimitL("UCL95_exp") + ", " + DBKernel.delimitL("UCL95_g") + ", " +
DBKernel.delimitL("Verteilung") + "," + DBKernel.delimitL("Verteilung_g") + ", " +
DBKernel.delimitL("Funktion (Zeit)") + ", " + DBKernel.delimitL("Funktion (Zeit)_g") + "," +
DBKernel.delimitL("Funktion (x)") + ", " + DBKernel.delimitL("x") + ", " + DBKernel.delimitL("Funktion (x)_g") + "," +
DBKernel.delimitL("Undefiniert (n.d.)") + ", " + DBKernel.delimitL("Referenz") +
") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
}
PreparedStatement ps = DBKernel.getDBConnection().prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
saveValue(ps, 1, textField1.getText(), textField1_exp, checkBox1);
if (comboBox2.getSelectedItem().equals("Einzelwert")) {
ps.setInt(4, 1);
} else if (comboBox2.getSelectedItem().equals("Mittelwert")) {
ps.setInt(4, 2);
} else if (comboBox2.getSelectedItem().equals("Median")) {
ps.setInt(4, 3);
} else {
ps.setNull(4, java.sql.Types.INTEGER);
}
saveValue(ps, 5, textField3.getText(), null, checkBox3);
saveValue(ps, 7, textField4.getText(), textField4_exp, checkBox4);
saveValue(ps, 10, textField5.getText(), textField5_exp, checkBox5);
saveValue(ps, 13, textField6.getText(), textField6_exp, checkBox6);
saveValue(ps, 16, textField7.getText(), textField7_exp, checkBox7);
saveValue(ps, 19, textField8.getText(), textField8_exp, checkBox8);
saveValue(ps, 22, textField9.getText(), null, checkBox9, true);
if (button10.getToolTipText().trim().length() > 0) {
ps.setString(24, button10.getToolTipText());
} else {
ps.setNull(24, java.sql.Types.VARCHAR);
}
if (checkBox10.isSelected()) {
ps.setBoolean(25, true);
} else {
ps.setNull(25, java.sql.Types.BOOLEAN);
}
if (button11.getToolTipText().trim().length() > 0) {
ps.setString(26, button11.getToolTipText());
ps.setString(27, comboBox11.getSelectedItem().toString());
}
else {
ps.setNull(26, java.sql.Types.VARCHAR);
ps.setNull(27, java.sql.Types.VARCHAR);
}
ps.setNull(28, java.sql.Types.BOOLEAN); // Funktion (x)_g
if (checkBox12.isSelected()) {
ps.setBoolean(29, true);
} else {
ps.setNull(29, java.sql.Types.BOOLEAN);
}
Integer iVal = getInt(textField13.getToolTipText());
if (iVal == null) {
ps.setNull(30, java.sql.Types.INTEGER);
} else {
ps.setInt(30, iVal);
}
if (ps.executeUpdate() > 0 && oldValue == null) {// execute()
result = new Double(DBKernel.getLastInsertedID(ps));
}
}
catch (Exception e) {MyLogger.handleException(e);}
return result;
}
private void saveValue(final PreparedStatement ps, final int index, final String tfText, final JTextField tf_exp, final JCheckBox cb) {
saveValue(ps, index, tfText, tf_exp, cb, false);
}
private void saveValue(final PreparedStatement ps, final int index, final String tfText, final JTextField tf_exp, final JCheckBox cb, final boolean isString) {
try {
boolean hasExponent = (tf_exp != null);
if (tfText.trim().length() > 0) {
if (isString) {
ps.setString(index, tfText);
}
else {
try {
double dbl = Double.parseDouble(tfText);
ps.setDouble(index, dbl);
}
catch (Exception ed) {MyLogger.handleException(ed); ps.setNull(index, java.sql.Types.DOUBLE);}
}
}
else {
if (isString) {
ps.setNull(index, java.sql.Types.VARCHAR);
} else {
ps.setNull(index, java.sql.Types.DOUBLE);
}
}
if (hasExponent) {
if (tf_exp.getText().trim().length() > 0) {
try {
double dbl = Double.parseDouble(tf_exp.getText().trim());
ps.setDouble(index+1, dbl);
}
catch (Exception ed) {MyLogger.handleException(ed); ps.setNull(index+1, java.sql.Types.DOUBLE);}
}
else {
ps.setNull(index+1, java.sql.Types.DOUBLE);
}
}
if (cb.isSelected()) {
ps.setBoolean(index+(hasExponent?2:1), true);
} else {
ps.setNull(index+(hasExponent?2:1), java.sql.Types.BOOLEAN);
}
}
catch (Exception e) {MyLogger.handleException(e);}
}
}