package jdbc;
import java.awt.event.WindowEvent;
public class MetaBeanFrame extends javax.swing.JFrame {
private String url = null;
private String driver = null;
private String userId = null;
private String password = null;
private java.sql.Connection c = null;
private java.sql.Statement statement = null;
private java.sql.DatabaseMetaData dbmd = null;
private java.sql.ResultSet rs = null;
private java.sql.ResultSetMetaData rsmd = null;
private java.sql.ResultSet rs_tabletypes = null;
private boolean isReadOnly = false;
private boolean usesLocalFiles = false;
private String driverName = null;
private String catalogName = null;
private String productName = null;
private String keyWords = null;
private String tablename = null;
private String currentquery = null;
private String tableFields[] = null;
private String tableNames[] = null;
private String nonMSysTables[] = null;
public boolean getUsesLocalFiles() {
return usesLocalFiles;
}
public boolean getReadOnly() {
return isReadOnly;
}
public String getCatalogName() {
return catalogName;
}
public String getDriverName() {
return driverName;
}
public String getProductName() {
return productName;
}
public java.sql.ResultSet getResultSet() {
return rs;
}
public String getTableName() {
return tablename;
}
public String getCurrentQuery() {
return currentquery;
}
public String[] getTableNames(java.sql.DatabaseMetaData dbmd, String userid) {
java.util.Vector tableVector = new java.util.Vector();
try {
rs = dbmd.getTables(null, userid, null, null);
rsmd = rs.getMetaData();
while (rs.next())
tableVector.addElement(rs.getString("TABLE_NAME"));
} catch (java.sql.SQLException e) {
print(e);
}
int n = tableVector.size();
tableNames = new String[n];
for (int i = 0; i < n; i++)
tableNames[i] = (String) tableVector.elementAt(i);
return tableNames;
}
private int getNumberOfMSysTables() {
int k = 0;
for (int i = 0; i < tableNames.length; i++)
if (tableNames[i].startsWith("MSys"))
k++;
return k;
}
public java.sql.ResultSet getTableTypes() {
return rs_tabletypes;
}
public void setUserId(String _userId) {
userId = _userId;
}
public void setPassword(String _password) {
password = _password;
}
public void setUrl(String _url) {
url = _url;
}
public void setDriver(String _driver) {
driver = _driver;
}
public void setTableName(String _tablename) {
tablename = _tablename;
}
public MetaBeanFrame() {
}
public void init() {
try {
Class.forName(driver);
c = java.sql.DriverManager.getConnection(url, userId, password);
dbmd = c.getMetaData();
catalogName = c.getCatalog();
isReadOnly = c.isReadOnly();
usesLocalFiles = dbmd.usesLocalFiles();
driverName = dbmd.getDriverName();
productName = dbmd.getDatabaseProductName();
rs_tabletypes = dbmd.getTableTypes();
} catch (ClassNotFoundException e) {
println(e);
} catch (java.sql.SQLException e) {
print(e);
}
System.out.println("Opened Connection:" + url);
}
public void printDataBaseInfo() {
println("*****");
println("productName=" + productName);
println("*****");
println("catalogName=" + catalogName);
println("*****");
println("is ReadOnly=" + getReadOnly());
println("*****");
println("usesLocalFiles=" + getUsesLocalFiles());
println("*****");
println("driverName=" + driverName);
println("*****");
println("Non SL92 keywords:");
println(getKeyWords());
println("*****");
println("TableTypes:");
print(getTableTypes());
println("*****");
println("TableNames - All:");
println("*****");
println("TableNames - NonSystem:");
}
public void printResultSetInfo(java.sql.ResultSet _rs) {
println("*****");
println("Column Names:");
println(getTableFields(getResultSetMetaData(_rs)));
println("*****");
println("Column Types:");
println(getColumnTypeNames(getResultSetMetaData(_rs)));
println("*****");
println("Number of Rows:");
println(Integer.toString((getNumberofRows(getRows(_rs)))));
println("*****");
println("Print The First Row:");
}
public void close() {
try {
rs.close();
rs_tabletypes.close();
statement.close();
c.close();
System.out.println("closed connection");
} catch (java.sql.SQLException e) {
print(e);
}
}
public java.sql.ResultSet query(java.sql.Connection c, String sql) {
try {
statement = c.createStatement();
currentquery = sql;
return statement.executeQuery(sql);
} catch (java.sql.SQLException e) {
print(e);
}
return null;
}
public java.sql.ResultSetMetaData getResultSetMetaData(java.sql.ResultSet _rs) {
try {
return _rs.getMetaData();
} catch (java.sql.SQLException e) {
print(e);
}
return null;
}
public int getColumnCount(java.sql.ResultSetMetaData _rsmd) {
try {
return _rsmd.getColumnCount();
} catch (java.sql.SQLException e) {
print(e);
}
return 0;
}
public String getKeyWords() {
try {
return dbmd.getSQLKeywords();
} catch (java.sql.SQLException e) {
print(e);
}
return null;
}
public String[] getColumnTypeNames(java.sql.ResultSetMetaData _rsmd) {
int count = getColumnCount(_rsmd);
String sa [] = new String[count];
try {
for (int i = 0; i < sa.length; i++) {
sa[i] = _rsmd.getColumnTypeName(i + 1);
}
} catch (java.sql.SQLException e) {
print(e);
}
return sa;
}
public String[] getRowAsString(java.sql.ResultSet _rs) {
int N = getColumnCount(getResultSetMetaData(_rs));
String s[] = new String[N];
try {
for (int i = 0; i < N; i++)
s[i] = _rs.getString(i + 1);
} catch (java.sql.SQLException e) {
print(e);
}
return s;
}
public java.util.Vector getRows(java.sql.ResultSet _rs) {
java.util.Vector v = new java.util.Vector();
while (nextRow(_rs))
v.addElement(getRowAsString(_rs));
return v;
}
public int getNumberofRows(java.util.Vector v) {
return v.size();
}
public void moveToTop(java.sql.ResultSet _rs) {
try {
throw new java.sql.SQLException("Not implemented until jdk1.2");
} catch (java.sql.SQLException e) {
print(e);
}
}
public void print(java.sql.ResultSet _rs) {
int i;
String cn[] = getTableFields(getResultSetMetaData(_rs));
println(cn);
boolean more = false;
while (more = nextRow(_rs))
println(getRowAsString(_rs));
}
public java.util.Vector getRecords(java.sql.ResultSet _rs) {
java.util.Vector v = new java.util.Vector();
int i;
v.addElement(getTableFields(getResultSetMetaData(_rs)));
boolean more = false;
while (more = nextRow(_rs))
v.addElement(getRowAsString(_rs));
return v;
}
public void println(Object o) {
System.out.println(o);
}
public void println(String s[]) {
for (int i = 0; i < s.length; i++)
System.out.print(s[i] + '\t');
System.out.println();
}
private void print(java.sql.SQLException ex) {
println("\n*** SQLException caught ***\n");
while (ex != null) {
println("SQLState: " + ex.getSQLState());
println("Message: " + ex.getMessage());
println("Vendor: " + ex.getErrorCode());
ex = ex.getNextException();
println("");
}
ex.printStackTrace();
}
public boolean nextRow(java.sql.ResultSet _rs) {
try {
return _rs.next();
} catch (java.sql.SQLException e) {
return false;
}
}
public String[] getTableFields(java.sql.ResultSetMetaData _rsmd) {
String s [] = new String[getColumnCount(_rsmd)];
try {
for (int i = 1; i <= s.length; i++)
s[i - 1] = _rsmd.getColumnLabel(i);
} catch (java.sql.SQLException e) {
print(e);
}
tableFields = s;
return s;
}
public java.sql.DatabaseMetaData getDatabaseMetaData() {
return dbmd;
}
public void modifyDatabase(java.sql.Connection c, String sql) {
try {
java.sql.Statement s = c.createStatement();
int updateResult = s.executeUpdate(sql);
javax.swing.JOptionPane.showMessageDialog(
null,
"Update is Successful \n" + c,
"Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
println("UPDATE SUCCESSFUL");
println("SQL Statment= " + sql);
} catch (java.sql.SQLException e) {
javax.swing.JOptionPane.showMessageDialog(
null,
"Update not Successful \n" + e,
"Error Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
}
abstract class RunButton
extends java.awt.Button
implements java.awt.event.ActionListener,
Runnable {
RunButton(String s) {
super(s);
addActionListener(this);
}
public void actionPerformed(
java.awt.event.ActionEvent e) {
run();
}
}
class RdbmsUtil extends MetaBeanFrame implements java.awt.event.ActionListener {
private java.awt.GridBagConstraints gbCons;
private java.awt.GridBagLayout gbLayout;
private java.awt.Container cont;
private javax.swing.JScrollPane tablePanel;
private javax.swing.JPanel dsnPanel,browsePanel,buttonPanel,innerDsnPanel,tabListPanel,newRecordsPanel;
private javax.swing.JLabel username,password;
private javax.swing.JList databaseList, tableList;
private javax.swing.JTextField tfUserid, tfPassword;
public javax.swing.JTextField newRow[], tf[];
public boolean connected = false, inserted = false, updated = false;
private String url = "jdbc:oracle:oci8:@"; private String driver = "jdbc.oracle.oci8:@"; private String userId = "scott";
private String passWord = "tiger";
public java.sql.Connection conn;
private java.sql.DatabaseMetaData dbmd, tableDbmd;
private java.sql.ResultSetMetaData rsmd,tableRsmd;
private boolean isReadOnly = false;
private boolean usesLocalFiles = false;
private String driverName = null;
private String catalogName = null;
private String productName = null;
private String tableFields[] = null;
private String tableNames[] = null;
private String nonMSysTables[] = null;
public String columnNames [] = null, columnTypes [] = null;
private java.util.Vector recordsVector, newRecordsVector,updateStmtVector;
javax.swing.JPanel innerPanel;
public int rows, cols, newRows = 0;
public String tableName;
public int currentRow, currentCol;
String tables[] = {"Employee ", "Department ", "Salary ", "Bonus ", "abc", "def", "GHI", "XYZ"};
String databases[] = {"Production", "Development", "pulsed", "stst", "stqa", "stdv", "hpstqa", "Foxpro", "MySql", "Access"};
RdbmsUtil() {
cont = getContentPane();
cont.setLayout(new java.awt.BorderLayout());
javax.swing.JPanel midPanel = new javax.swing.JPanel();
dsnPanel = new javax.swing.JPanel();
innerDsnPanel = new javax.swing.JPanel();
tabListPanel = new javax.swing.JPanel();
dsnPanel.setLayout(new java.awt.FlowLayout());
innerDsnPanel.setLayout(new java.awt.GridLayout(0, 1));
tablePanel = new javax.swing.JScrollPane();
buttonPanel = new javax.swing.JPanel();
buttonPanel.setLayout(new java.awt.GridLayout(1, 0));
gbLayout = new java.awt.GridBagLayout();
browsePanel = new javax.swing.JPanel();
innerPanel = new javax.swing.JPanel();
newRecordsPanel = new javax.swing.JPanel();
browsePanel.add(innerPanel);
gbCons = new java.awt.GridBagConstraints();
tableList = new javax.swing.JList(tables);
databaseList = new javax.swing.JList(databases);
tableList.setVisibleRowCount(5);
databaseList.setVisibleRowCount(5);
databaseList.setFixedCellWidth(200);
tableList.setFixedCellWidth(300);
tableList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
databaseList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
tfUserid = new javax.swing.JTextField("scott");
tfPassword = new javax.swing.JPasswordField("tiger");
tfUserid.setEditable(true);
tfPassword.setEditable(true);
javax.swing.JLabel user = new javax.swing.JLabel("User Name :");
javax.swing.JLabel pass = new javax.swing.JLabel("Password :");
javax.swing.JTextField testid = new javax.swing.JTextField("scott");
javax.swing.JLabel database = new javax.swing.JLabel("Databases");
javax.swing.JLabel lblTables = new javax.swing.JLabel("Tables");
java.awt.Button connect = new RunButton("Connect") {
public void run() {
exConnect();
connected = true;
}
};
dsnPanel.add(new javax.swing.JScrollPane(databaseList));
innerDsnPanel.add(user);
innerDsnPanel.add(tfUserid);
innerDsnPanel.add(pass);
innerDsnPanel.add(tfPassword);
innerDsnPanel.add(connect);
dsnPanel.add(innerDsnPanel);
tabListPanel.add(new javax.swing.JScrollPane(tableList));
dsnPanel.add(tabListPanel);
buttonPanel.add(new RunButton("Query") {
public void run() {
if (connected) {
exQuery();
} else {
javax.swing.JOptionPane.showMessageDialog(
null,
"Database is not connected!!!",
"Error Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
});
buttonPanel.add(new RunButton("Update") {
public void run() {
if (connected) {
exUpdate();
} else {
javax.swing.JOptionPane.showMessageDialog(
null,
"Database is not connected!!!",
"Error Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
});
buttonPanel.add(new RunButton("Insert") {
public void run() {
if (connected) {
exInsert(cols);
} else {
javax.swing.JOptionPane.showMessageDialog(
null,
"Database is not connected!!!",
"Error Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
});
buttonPanel.add(new RunButton("Delete") {
public void run() {
if (connected) {
exDelete();
} else {
javax.swing.JOptionPane.showMessageDialog(
null,
"Database is not connected!!!",
"Error Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
});
buttonPanel.add(new RunButton("Save") {
public void run() {
if (connected) {
exSave();
} else {
javax.swing.JOptionPane.showMessageDialog(
null,
"Database is not connected!!!",
"Error Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
});
buttonPanel.add(new RunButton("Exit") {
public void run() {
if (connected) {
shutDown();
}
System.exit(0);
}
});
cont.add(dsnPanel, java.awt.BorderLayout.NORTH);
browsePanel.setSize(800, 550);
cont.add(new javax.swing.JScrollPane(browsePanel), java.awt.BorderLayout.CENTER);
cont.add(buttonPanel, java.awt.BorderLayout.SOUTH);
setSize(800, 500);
show();
}
public void setCurrentRowCol(int row, int col) {
currentRow = row;
currentCol = col;
}
public void setColumnColor(int row, int col) {
}
public void shutDown() {
try {
if (!conn.isClosed())
conn.commit();
conn.close();
} catch (java.sql.SQLException e) {
System.err.println("Unable to disconnect ");
e.printStackTrace();
}
}
public void exConnect() {
try {
String db = (String) databaseList.getSelectedValue();
String name = getUserId();
String pass = getPassword();
if (name == null || pass == null) {
javax.swing.JOptionPane.showMessageDialog(
null,
"Invalid user name/password",
"Error ",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
throw new Exception();
}
if (db.equals("Production")) {
System.out.println(name + pass);
conn = connectProduction(name, pass);
} else if (db.equals("Development")) {
conn = connectDevelopment(name, pass);
} else {
conn = connectOdbc(name, pass, db);
}
dbmd = conn.getMetaData();
catalogName = conn.getCatalog();
isReadOnly = conn.isReadOnly();
driverName = dbmd.getDriverName();
productName = dbmd.getDatabaseProductName();
tables = getTableNames(dbmd, name.toUpperCase());
tableList.setListData(tables);
initArrays();
show();
} catch (java.sql.SQLException e) {
e.printStackTrace();
} catch (Exception e) {
javax.swing.JOptionPane.showMessageDialog(
null,
"Invalid user name/password" + e,
"Error Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
System.out.println("Opened Connection :" + url);
}
public String getUserId() {
return tfUserid.getText();
}
public String getPassword() {
return tfPassword.getText();
}
public java.sql.Connection connectProduction(
String userId,
String passWord) {
conn = null;
try {
Class c = Class.forName("oracle.jdbc.driver.OracleDriver");
java.sql.DriverManager.registerDriver(
(java.sql.Driver) c.newInstance());
String url = "jdbc:oracle:oci8:@pulseD";
conn = java.sql.DriverManager.getConnection(url, userId, passWord);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public java.sql.Connection connectDevelopment(String userId, String passWord) {
conn = null;
String url = "jdbc:odbc:pulsed"; String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; try {
Class.forName(driver);
conn = java.sql.DriverManager.getConnection(url, userId, passWord);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
return conn;
}
public java.sql.Connection connectOdbc(String userId, String passWord, String serviceName) {
conn = null;
String url = "jdbc:odbc:" + serviceName; String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; try {
Class.forName(driver);
conn = java.sql.DriverManager.getConnection(url, userId, passWord);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
return conn;
}
public void exQuery() {
recordsVector = new java.util.Vector(); tableName = (String) tableList.getSelectedValue(); if (tableName == null) {
javax.swing.JOptionPane.showMessageDialog(
null,
"Please select a table to query data ",
"Error Message ",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
initArrays(); recordsVector = getRecords(query(conn,
"SELECT * FROM "
+ tableName));
cols = getColumnCount(
getResultSetMetaData(
query(conn,
"SELECT * FROM "
+ tableName)));
tableRsmd = getResultSetMetaData(
query(conn,
"SELECT * FROM "
+ tableName));
rows = getNumberofRows(recordsVector);
columnTypes = new String[cols];
columnTypes = getColumnTypeNames(
getResultSetMetaData(
query(conn,
"SELECT * FROM "
+ tableName)));
formatTable(rows, cols);
javax.swing.JOptionPane.showMessageDialog(
null,
null,
"Query is executed",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
public void initArrays() {
newRow = null;
inserted = false;
browsePanel.remove(innerPanel);
show();
}
public void formatTable(int rows, int cols) {
int r = 0;
int c = 0;
int row = 0;
browsePanel.removeAll();
browsePanel.repaint();
innerPanel = new javax.swing.JPanel();
browsePanel.setLayout(new java.awt.FlowLayout());
innerPanel.setLayout(new java.awt.GridLayout(0, cols));
newRecordsPanel.setLayout(new java.awt.GridLayout(0, cols));
javax.swing.JTextField tf [] = new javax.swing.JTextField[rows * cols];
String columns [];
for (r = 0; r < rows; r++)
for (c = 0; c < cols; c++) {
System.out.println("row " + r + " col" + c);
tf[row] = new javax.swing.JTextField(10);
tf[row].addActionListener(this);
tf[row].addMouseListener(new jdbc.RdbmsUtil.MouseHandler(r, c));
addComponent(innerPanel, tf[row]);
row++;
}
browsePanel.remove(innerPanel);
browsePanel.add(innerPanel, 0);
fillData(tf, recordsVector, rows, cols);
show();
}
public String getOldValue(int row, int col) {
String rowArr [];
String oldValue;
rowArr = (String[]) recordsVector.elementAt(row);
return oldValue = rowArr[col];
}
public void generateUpdateStmt(int row, int col, String newValue) {
String rowArr [];
String oldValue;
String sql = null;
rowArr = (String[]) recordsVector.elementAt(row);
if (!updated) {
updateStmtVector = new java.util.Vector();
updated = true;
}
sql = "update " +
tableName +
" set " + columnNames[col] + " = ";
if (columnTypes[col].equals("varchar2")) {
sql += "\'";
sql += newValue;
sql += "\'";
} else if (columnTypes[col].equals("number")) {
sql += newValue;
} else if (columnTypes[col].equals("date")) {
try {
sql += "to_date('";
sql += newValue.substring(0, 10);
sql += "\','YYYY-MM-DD')";
} catch (StringIndexOutOfBoundsException e) {
javax.swing.JOptionPane.showMessageDialog(
null,
"Invalid date format!!!\n Valid format is [yyyy-mm-dd]",
"Error Message ",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
} else {
sql += "\'";
sql += newValue;
sql += "\'";
}
sql += " where ";
for (int c = 0; c < cols; c++) {
if (c > 0) {
sql += " and ";
}
if (columnTypes[c].equals("date")) {
sql += "trunc("; sql += columnNames[c] + ")";
} else {
sql += columnNames[c];
}
sql += formatColValue(c, rowArr[c]);
}
updateStmtVector.addElement(sql);
}
public String formatColValue(int col, String value) {
String fmtValue = null;
System.out.println("col # " + col);
if (value == null) {
fmtValue = "is ";
fmtValue += value;
} else if (columnTypes[col].equals("varchar2")) {
fmtValue = " = ";
fmtValue += "\'";
fmtValue += value;
fmtValue += "\'";
} else if (columnTypes[col].equals("number")) {
fmtValue = " = ";
fmtValue += value;
} else if (columnTypes[col].equals("date")) {
try {
fmtValue = " = ";
fmtValue += "to_date('";
fmtValue += value.substring(0, 10);
fmtValue += "\','YYYY-MM-DD')";
} catch (StringIndexOutOfBoundsException e) {
javax.swing.JOptionPane.showMessageDialog(
null,
"Invalid date format!!!\n Valid format is [yyyy-mm-dd]",
"Error Message ",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
} else {
fmtValue = " = ";
fmtValue += "\'";
fmtValue += value;
fmtValue += "\'";
}
System.out.println("column type" + columnTypes[col]);
System.out.println("fmt value " + fmtValue);
return fmtValue;
}
public void fillData(javax.swing.JTextField[] tf, java.util.Vector v, int rows, int cols) {
String rowArr [];
columnNames = new String[cols];
int i = 0;
for (int r = 0; r < rows; r++) {
rowArr = (String[]) v.elementAt(r);
for (int c = 0; c < cols; c++) {
tf[i].setText(rowArr[c]);
if (r == 0) {
columnNames[i] = tf[i].getText();
tf[i].setEditable(false);
}
i++;
}
}
}
public void exUpdate() {
if (updated) {
String updStmt = null;
for (int i = 0; i < updateStmtVector.size(); i++) {
updStmt = (String) updateStmtVector.elementAt(i);
System.out.println("script " + updStmt);
modifyDatabase(conn, updStmt);
}
exQuery();
} else {
javax.swing.JOptionPane.showMessageDialog(
null,
"No update statement to execute ...",
"Message",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
public void exDelete() {
String rowArr [];
String sql = null;
rowArr = (String[]) recordsVector.elementAt(currentRow);
sql = "delete from " + tableName;
sql += " where ";
for (int c = 0; c < cols; c++) {
if (c > 0) {
sql += " and ";
}
if (columnTypes[c].equals("date")) {
sql += "trunc(";
sql += columnNames[c] + ")";
} else {
sql += columnNames[c];
}
sql += formatColValue(c, rowArr[c]);
}
modifyDatabase(conn, sql);
exQuery();
}
public void exInsert(int cols) {
if (!inserted) {
newRow = new javax.swing.JTextField[cols];
for (int c = 0; c < cols; c++) {
newRow[c] = new javax.swing.JTextField(10);
if (columnTypes[c].equals("number")) {
newRow[c].setText("0");
}
addComponent(innerPanel, newRow[c]);
}
inserted = true;
} else {
System.out.println("cols " + cols);
addNewRow(newRow, cols);
}
show();
}
public void addNewRow(javax.swing.JTextField[] oldArr, int cols) {
System.out.println("old length " + oldArr.length);
if (oldArr.length > 0) {
javax.swing.JTextField newArr [] = new javax.swing.JTextField[cols + oldArr.length];
copyArray(oldArr, newArr);
newRow = new javax.swing.JTextField[newArr.length];
copyArray(newArr, newRow);
} else {
javax.swing.JTextField newRow [] = new javax.swing.JTextField[cols];
for (int c = 0; c < cols; c++) {
newRow[c] = new javax.swing.JTextField(10);
if (columnTypes[c].equals("number")) {
newRow[c].setText("0");
}
}
}
for (int c = 0; c < newRow.length; c++) {
addComponent(innerPanel, newRow[c]);
}
show();
}
public void copyArray(javax.swing.JTextField[] oldArr, javax.swing.JTextField[] newArr) {
for (int c = 0; c < oldArr.length; c++)
newArr[c] = oldArr[c];
for (int c = 0; c < newArr.length - oldArr.length; c++) {
newArr[oldArr.length + c] = new javax.swing.JTextField(10);
if (columnTypes[c].equals("number")) {
newArr[oldArr.length + c].setText("0");
}
}
}
public void exSave() {
String sql;
int totCols = newRow.length;
int rowCount = 0;
if (inserted) {
for (int r = 0; r < (totCols / cols); r++) {
sql = "insert into " +
tableName +
" values (";
for (int c = 0; c < cols; c++) {
System.out.println("type " + columnTypes[c]);
if (columnTypes[c].equals("varchar2")) {
sql += "\'";
sql += newRow[rowCount].getText();
sql += "\'";
} else if (columnTypes[c].equals("number")) {
if (newRow[rowCount].getText() != "") {
sql += newRow[rowCount].getText();
} else {
sql += "0";
}
} else if (columnTypes[c].equals("date")) {
if (newRow[rowCount].getText().length() >= 10) {
try {
sql += "to_date('";
sql += newRow[rowCount].getText().substring(0, 10);
sql += "\','YYYY-MM-DD')";
} catch (StringIndexOutOfBoundsException e) {
javax.swing.JOptionPane.showMessageDialog(
null,
"Invalid date format!!!\n Valid format is [yyyy-mm-dd]",
"Error Message ",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
} else {
sql += "null";
}
} else {
sql += "\'";
sql += newRow[rowCount].getText();
sql += "\'";
System.out.println(sql);
}
if (c != cols - 1) {
sql += ",";
}
rowCount++;
}
sql += ")";
System.out.println("script " + sql);
modifyDatabase(conn, sql);
}
}
exQuery();
}
private void addComponent(
javax.swing.JPanel panel,
java.awt.Component c) {
panel.add(c);
}
private void addComponent(javax.swing.JPanel panel,
java.awt.Component c,
int row,
int col,
int width,
int height) {
gbCons.gridx = col;
gbCons.gridy = row;
gbCons.gridwidth = width;
gbCons.gridheight = height;
gbLayout.setConstraints(c, gbCons);
panel.add(c); }
public void actionPerformed(java.awt.event.ActionEvent e) {
String evt = e.getActionCommand();
String oldValue;
String newValue;
if (e.getSource() instanceof javax.swing.JTextField) {
newValue = e.getActionCommand();
oldValue = getOldValue(currentRow, currentCol);
if (!oldValue.equals(newValue)) {
generateUpdateStmt(currentRow, currentCol, newValue);
}
javax.swing.JOptionPane.showMessageDialog(null,
"old Value " +
oldValue +
" New Value " + evt);
}
}
public static void main(String args []) {
final RdbmsUtil ru = new RdbmsUtil();
ru.addWindowListener(
new java.awt.event.WindowAdapter() {
public void windowClosing(WindowEvent e) {
ru.shutDown();
System.exit(0);
}
}
);
}
class MouseHandler
extends java.awt.event.MouseAdapter
implements java.awt.event.MouseMotionListener {
int row;
int col;
public MouseHandler(int r, int c) {
row = r;
col = c;
}
public void mousePressed(java.awt.event.MouseEvent e) {
setCurrentRowCol(row, col);
}
public void mouseDoubleClicked(java.awt.event.MouseEvent e) {
setCurrentRowCol(row, col);
}
public void mouseMoved(java.awt.event.MouseEvent e) {
}
public void mouseReleased(java.awt.event.MouseEvent e) {
}
public void mouseDragged(java.awt.event.MouseEvent e) {
}
}
}