/* Java Client for POS demo
/* from Zack Stewart, Spring 2003 CIS560
package sql_frontend;
import java.io.*;
import java.math.*;
import java.lang.*;
import java.util.*;
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
public class
POSFrame extends JFrame
{
private String url =
"jdbc:oracle:thin:@oracle.cis.ksu.edu:1521:ORACLE";
private String query
= null;
private Connection
oracle = null;
private Statement
stmt = null;
private ResultSet
result = null;
private Object[][]
transactions = null,
customers
= null,
inventory
= null;
private Object[]
columnNames = null;
private JTable
inventoryTable = null,
custTable
= null,
transTable
= null;
/* standard GUI part … see screen snapshots
public POSFrame() {
try {
DriverManager.registerDriver(
new
oracle.jdbc.driver.OracleDriver());
oracle =
DriverManager.getConnection(url, “USER", "PASSWD");
stmt=oracle.createStatement();
transButton_actionPerformed(null);
invButton_actionPerformed(null);
query =
"select * from customer";
result =
stmt.executeQuery(query);
columnNames =
getColumnNames(result);
customers =
setToArray(result);
custTable = new
JTable(customers, columnNames);
inventoryTable.setSelectionMode(
ListSelectionModel.SINGLE_SELECTION);
custTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jbInit();
}catch(Exception
e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
/* standard GUI inits
this.getContentPane().add(customerPane,
null);
this.getContentPane().add(tablePane,
null);
tablePane.getViewport().add(inventoryTable,
null);
customerPane.getViewport().add(custTable,
null);
}
public static void main(String[] args){new POSFrame();}
void
this_windowClosing(WindowEvent e) {
try {
if(oracle !=
null)
oracle.close();
.
. .
}
void buyButton_actionPerformed(ActionEvent e) {
if(!isInventoryOnscreen
|| inventoryTable.getSelectedRow() == -1 ||
custTable.getSelectedRow()
== -1){ return; }
Object item = null;
int row =
inventoryTable.getSelectedRow();
int customer =
((BigDecimal)customers[
custTable.getSelectedRow()][0]).intValue();
int quantity =
Integer.parseInt(quanField.getText());
float total = quantity
* ((BigDecimal)inventory[row][4]).floatValue();
int updated = 0;
int transaction =
0;
try{
item =
inventory[row][0];
query =
"select quantity from inventory where ID = " + item;
result =
stmt.executeQuery(query);
result.next();
if(quantity >
0 && result.getInt(1) >= quantity){
query =
"select max(id) from transaction";
result =
stmt.executeQuery(query);
result.next();
transaction =
result.getInt(1) + 1;
query =
"update inventory . . .”;
stmt.executeUpdate(query);
query =
"insert into transaction . . . ;
stmt.executeUpdate(query);
query =
"insert into transactionitem . . . “ ;
stmt.executeUpdate(query);
query =
"select quantity from inventory";
result =
stmt.executeQuery(query);
for(int i = 0;
result.next(); i++){
inventory[i][3]
= result.getObject(1);
}
inventoryTable.tableChanged(new
TableModelEvent(inventoryTable.getModel()));
}else{
JOptionPane.showMessageDialog(this,"Quantity
to sell exceeds stock!");
}
}catch(Exception
x){ x.printStackTrace();}
}
void invButton_actionPerformed(ActionEvent e) {
try{
query =
"select * from inventory";
result =
stmt.executeQuery(query);
columnNames =
getColumnNames(result);
inventory =
setToArray(result);
inventoryTable =
new JTable(inventory, columnNames);
tablePane.getViewport().add(inventoryTable,
null);
isInventoryOnscreen
= true;
}catch(Exception
x){ x.printStackTrace();}
}
void transButton_actionPerformed(ActionEvent e) {
/* similar , but
longer
}
Object[][] setToArray(ResultSet s){
Vector data = new Vector();
Object[][] table =
null;
int columns = 0 ,
rows = 0;
try{
columns =
s.getMetaData().getColumnCount();
while(s.next()){
data.add(rows,
new Vector());
for(int i = 0;
i < columns; i++){
((Vector)data.get(rows)).add(i,s.getObject(i+1));
}
rows++;
}
table = new Object[rows][columns];
for(int i = 0; i
< rows; i++){
for(int j = 0;
j < columns; j++){
table[i][j]
= ((Vector)data.get(i)).get(j);
}
}
}catch(Exception
e){ e.printStackTrace(); }
return table;
}
Object[] getColumnNames(ResultSet s){
Vector names = new Vector();
int columns = 0;
try{
columns =
s.getMetaData().getColumnCount();
for(int i = 0; i
< columns; i++){
names.add(i,s.getMetaData().getColumnLabel(i+1));
}
}catch(Exception
e){ e.printStackTrace(); }
return
names.toArray();
}
}