public class JDBC extends java.applet.Applet implements ActionListener
{
//components ***************************************************************************
//Button names
Button ConnectBtn; //Button to connect to Database
Button QueryBtn; //Button to send general query statement to Database
Button AddRecButton; //Button to add a record
Button FindRecButton; //Button to find a record
Button DelRecButton; //Button to delete a record
Button ListAllButton; //Button to list all records
Button ReportButton; //Button to print a report
Button ClearNPButton; //Button will clear New Patient fields
Button ClearPAButton; //Button will clear Patient Account fields
Button UpdateRecordButton; //Button will update Patient services

//TextField names
TextField QueryField;
TextField PAEnterPatID; //enter patient's last name for Patient Account
TextField ItemCodeField; //for add new record
TextField PatientIDnumField; //for add new record
TextField FirstNameField; //for add new patient
TextField LastNameField; //for add new patient
TextField AddressField; //for add new patient
TextField CityField; //for add new patient
TextField StateField; //for add new patient
TextField ZipField; //for add new patient
TextField DateAdmitField; //for add new patient
TextField DateDischField; //for add new patient
TextField BottomEntePatID; //for queries

//TextArea names**********************************************************************
TextArea MainOutputField; //main output field
TextArea MedicalServicesField; //to list all medical services

//Database CONNECTIVITY ***************************************************************
String url = "jdbc:msql://dot.aloha.net:1114/test";
String Name = "";
String Passwd = "";
Connection con;
Object nclass;
String holdString =""; //string to hold user input
String holdString2 =""; //string to hold user input
String holdQuery =""; //string to hold a query string
String finalString =""; //string to hold reformated output
int counterChar =0; //a counter
int counterCol =0; //a counter
final int maxCol = 20; //max withdth of any column of data
int spacer =0; //to space out columns in the database
int holdData = 0;// holds a number
char stringBit =' ';// holds a character

//Button Commands *********************************************************************
final static String CONNECT = "CONNECT"; //for ConnectBtn
final static String QUERY = "QUERY"; //for QueryBtn
final static String ADDREC = "ADDREC"; //for AddRecButton;
final static String FINDREC = "FINDREC"; //for FindRecButton;
final static String DELREC = "DELREC"; //for DelRecButton;
final static String LISTALL = "LISTALL"; //for ListAllButton;
final static String REPORT = "REPORT"; //for ReportButton;
final static String CLEARNP = "CLEARNP"; //for ClearNPButton;
final static String CLEARPA = "CLEARPA"; //for ClearPAButton;
final static String UPDATE = "UPDATE"; //for UpdateRecordButton;

//Labels *******************************************************************************
Label connectLabel = new Label("Press to connect to Database");
Label generalqueryLabel = new Label("General Query");
Label patnumLabel = new Label("Patient ID#");
Label firstnameLabel = new Label("First Name");
Label lastnameLabel = new Label("Last Name");
Label addressLabel = new Label("Address");
Label cityLabel = new Label("City");
Label stateLabel = new Label("State");
Label zipLabel = new Label("Zip");
Label dateadmLabel = new Label("Date Admitted");
Label datedischLabel = new Label("Date Discharged");
Label enterlastnameLabel = new Label("Enter Patient ID#");
Label enterlastname2Label = new Label("Enter Patient ID#");
Label itemcodeLabel = new Label("Item Code");
Label descriptLabel = new Label("Description");
Label chargeLabel = new Label("Charge");
Label spaceLabel = new Label("");
Label newpatientLabel = new Label(" ");
Label patientaccountLabel = new Label("Patient Account");


//init *******************************************************************************************
public void init()
{
//gridbag init **********************************************************************
GridBagLayout myLayout = new GridBagLayout();
GridBagConstraints myConstraints = new GridBagConstraints();
setLayout(myLayout);
myConstraints.fill = GridBagConstraints.BOTH; //components sizable in both directions
myConstraints.insets = new Insets(5,5,5,5); // 5 pixel buffer zone

setFont(new Font("Times", Font.PLAIN, 12));

setBackground(Color.black);
setForeground(Color.white);

// buttons **************************************************************************
ConnectBtn = new Button();
ConnectBtn.setLabel ("Connect to Database");
ConnectBtn.setActionCommand(CONNECT);
ConnectBtn.addActionListener(this); // listens for button click

QueryBtn = new Button();
QueryBtn.setLabel ("General Query");
QueryBtn.setActionCommand(QUERY);
QueryBtn.addActionListener(this); // listens for button click

AddRecButton = new Button();
AddRecButton.setLabel ("Add Record");
AddRecButton.setActionCommand(ADDREC);
AddRecButton.addActionListener(this); // listens for button click

FindRecButton = new Button();
FindRecButton.setLabel ("Find Record");
FindRecButton.setActionCommand(FINDREC);
FindRecButton.addActionListener(this); // listens for button click

DelRecButton = new Button();
DelRecButton.setLabel ("Delete Record");
DelRecButton.setActionCommand(DELREC);
DelRecButton.addActionListener(this); // listens for button click

ListAllButton = new Button();
ListAllButton.setLabel ("List All Patients");
ListAllButton.setActionCommand(LISTALL);
ListAllButton.addActionListener(this); // listens for button click

ReportButton = new Button();
ReportButton.setLabel ("Genetrate Report");
ReportButton.setActionCommand(REPORT);
ReportButton.addActionListener(this); // listens for button click

ClearNPButton = new Button();
ClearNPButton.setLabel ("Clear Fields");
ClearNPButton.setActionCommand(CLEARNP);
ClearNPButton.addActionListener(this); // listens for button click

ClearPAButton = new Button();
ClearPAButton.setLabel ("Clear Fields");
ClearPAButton.setActionCommand(CLEARPA);
ClearPAButton.addActionListener(this); // listens for button click

UpdateRecordButton = new Button();
UpdateRecordButton.setLabel ("Update Record");
UpdateRecordButton.setActionCommand(UPDATE);
UpdateRecordButton.addActionListener(this); // listens for button click

// TextFields **********************************************************************
QueryField = new TextField(20);
PAEnterPatID = new TextField(10);
ItemCodeField= new TextField(10);
PatientIDnumField = new TextField(6);
FirstNameField = new TextField(20);
LastNameField = new TextField(20);
AddressField = new TextField(30);
CityField = new TextField(12);
StateField = new TextField(4);
ZipField = new TextField(7);
DateAdmitField = new TextField(12);
DateDischField = new TextField(12);
BottomEntePatID = new TextField(10);

// TextArea ************************************************************************
MainOutputField = new TextArea(10,50); // the area to enter
MedicalServicesField = new TextArea(8,30); // the area to enter

// layout **************************************************************************
myConstraints.gridx = 1; myConstraints.gridy = 1;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(connectLabel, myConstraints);
add(connectLabel);

myConstraints.gridx = 3; myConstraints.gridy = 1;
myConstraints.gridwidth = 5; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(ConnectBtn, myConstraints);
add(ConnectBtn);

myConstraints.gridx = 1; myConstraints.gridy = 15;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(generalqueryLabel, myConstraints);
add(generalqueryLabel);

myConstraints.gridx = 2; myConstraints.gridy = 15;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(QueryField, myConstraints);
add(QueryField);

myConstraints.gridx = 4; myConstraints.gridy = 15;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(QueryBtn, myConstraints);
add(QueryBtn);

myConstraints.gridx = 1; myConstraints.gridy = 3;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(newpatientLabel, myConstraints);
add(newpatientLabel);

myConstraints.gridx = 1; myConstraints.gridy = 4;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(patnumLabel, myConstraints);
add(patnumLabel);

myConstraints.gridx = 2; myConstraints.gridy = 4;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(PatientIDnumField, myConstraints);
add(PatientIDnumField);

myConstraints.gridx = 5; myConstraints.gridy = 4;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(enterlastnameLabel, myConstraints);
add(enterlastnameLabel);

myConstraints.gridx = 1; myConstraints.gridy = 5;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(firstnameLabel, myConstraints);
add(firstnameLabel);

myConstraints.gridx = 2; myConstraints.gridy = 5;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(FirstNameField, myConstraints);
add(FirstNameField);

myConstraints.gridx = 5; myConstraints.gridy = 5;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(itemcodeLabel, myConstraints);
add(itemcodeLabel);

myConstraints.gridx = 1; myConstraints.gridy = 6;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(lastnameLabel, myConstraints);
add(lastnameLabel);

myConstraints.gridx = 2; myConstraints.gridy = 6;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(LastNameField, myConstraints);
add(LastNameField);

myConstraints.gridx = 1; myConstraints.gridy = 7;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(addressLabel, myConstraints);
add(addressLabel);

myConstraints.gridx = 2; myConstraints.gridy = 7;
myConstraints.gridwidth = 3; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(AddressField, myConstraints);
add(AddressField);

myConstraints.gridx = 1; myConstraints.gridy = 8;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(cityLabel, myConstraints);
add(cityLabel);

myConstraints.gridx = 2; myConstraints.gridy = 8;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(CityField, myConstraints);
add(CityField);

myConstraints.gridx = 1; myConstraints.gridy = 9;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(stateLabel, myConstraints);
add(stateLabel);

myConstraints.gridx = 2; myConstraints.gridy = 9;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(StateField, myConstraints);
add(StateField);

myConstraints.gridx = 3; myConstraints.gridy = 9;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(zipLabel, myConstraints);
add(zipLabel);

myConstraints.gridx = 4; myConstraints.gridy = 9;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(ZipField, myConstraints);
add(ZipField);

myConstraints.gridx = 1; myConstraints.gridy = 10;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(dateadmLabel, myConstraints);
add(dateadmLabel);

myConstraints.gridx = 2; myConstraints.gridy = 10;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(DateAdmitField, myConstraints);
add(DateAdmitField);

myConstraints.gridx = 1; myConstraints.gridy = 11;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(datedischLabel, myConstraints);
add(datedischLabel);

myConstraints.gridx = 2; myConstraints.gridy = 11;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(DateDischField, myConstraints);
add(DateDischField);

myConstraints.gridx = 2; myConstraints.gridy = 12;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(AddRecButton, myConstraints);
add(AddRecButton);

myConstraints.gridx = 4; myConstraints.gridy = 12;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(ClearNPButton, myConstraints);
add(ClearNPButton);

// below is right side fiels (Patient Account)

myConstraints.gridx = 6; myConstraints.gridy = 4;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(PAEnterPatID, myConstraints);
add(PAEnterPatID);

myConstraints.gridx = 6; myConstraints.gridy = 5;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(ItemCodeField, myConstraints);
add(ItemCodeField);

myConstraints.gridx = 5; myConstraints.gridy = 6;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(UpdateRecordButton, myConstraints);
add(UpdateRecordButton);

myConstraints.gridx = 7; myConstraints.gridy = 6;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(ClearPAButton, myConstraints);
add(ClearPAButton);

myConstraints.gridx = 1; myConstraints.gridy = 14;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(enterlastname2Label, myConstraints);
add(enterlastname2Label);

myConstraints.gridx = 2; myConstraints.gridy = 14;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(BottomEntePatID, myConstraints);
add(BottomEntePatID);

myConstraints.gridx = 3; myConstraints.gridy = 14;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(FindRecButton, myConstraints);
add(FindRecButton);

myConstraints.gridx = 5; myConstraints.gridy = 14;
myConstraints.gridwidth = 2; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(ReportButton, myConstraints);
add(ReportButton);

myConstraints.gridx = 7; myConstraints.gridy = 14;
myConstraints.gridwidth = 1; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(DelRecButton, myConstraints);
add(DelRecButton);

myConstraints.gridx = 5; myConstraints.gridy = 15;
myConstraints.gridwidth = 3; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(ListAllButton, myConstraints);
add(ListAllButton);

myConstraints.gridx = 1; myConstraints.gridy = 16;
myConstraints.gridwidth = 7; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(MainOutputField, myConstraints);
add(MainOutputField);

myConstraints.gridx = 1; myConstraints.gridy = 13;
myConstraints.gridwidth = 7; myConstraints.gridheight = 1;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(spaceLabel, myConstraints);
add(spaceLabel);

myConstraints.gridx = 5; myConstraints.gridy = 7;
myConstraints.gridwidth = 3; myConstraints.gridheight = 6;
myConstraints.weightx = 0.0; myConstraints.weighty = 0.0;
myLayout.setConstraints(MedicalServicesField, myConstraints);
add(MedicalServicesField);

//end gridbag layout ***************************************************************

//set field areas to editable (true/false) *****************************************
//true
QueryField.setEditable(true);
PAEnterPatID.setEditable(true);
PatientIDnumField.setEditable(true);
FirstNameField.setEditable(true);
LastNameField.setEditable(true);
AddressField.setEditable(true);
CityField.setEditable(true);
StateField.setEditable(true);
ZipField.setEditable(true);
DateAdmitField.setEditable(true);
DateDischField.setEditable(true);
//false
MainOutputField.setEditable(false);
MedicalServicesField.setEditable(false);

}// end init method


//******************************************************************************************
public void paint (Graphics g)
{
g.setColor(Color.white);
g.drawRect(6, 25, 786, 40); //top box
g.setFont(new Font("Arial", Font.PLAIN, 20));
g.drawString("New Patient", 160, 92);
g.drawString("Patient Account", 540, 92);
g.drawRect(6, 96, 427, 300); //left box
g.drawRect(436, 96, 356, 300); //right box
g.drawRect(6, 420, 786, 250); //bottom box
}//end paint method

//actionPerformed*****************************************************************************************
public void actionPerformed(ActionEvent aClick) // check if button is clicked and update
{
String command = aClick.getActionCommand();
//Connect to Database function************************************************************************************
if (command == CONNECT)
{
holdString="";
holdString2="";
holdQuery="";
finalString ="";
MainOutputField.setText("Connecting to Database");
try
{
//Create instance of the driver we want to use
Class.forName("com.imaginary.sql.msql.MsqlDriver"); //location of msql driver
con = DriverManager.getConnection("jdbc:msql://dot.aloha.net:1114/test", Name, Passwd);
ConnectBtn.setLabel("Reconnect to Database");
MainOutputField.setText("Connection to Database ESTABLISHED\n");

}//end try
catch( Exception e )
{
e.printStackTrace();
MainOutputField.setText(e.getMessage());
}//end catch

MedicalServicesField.setFont(new Font("Courier", Font.PLAIN, 12));
MedicalServicesField.setText(" Hospital Services \n\n");
MedicalServicesField.append("Code Decription Charge\n");
MedicalServicesField.append("---- ---------- ------");
holdString = (Select ("Select * from dsh_services ORDER BY dsh_services.item_code"));
int stringLenght = holdString.length(); //get the lenght of the query output
counterChar = 0;// reset counter
counterCol = 0;// reset counter
for (int i = 0; i < stringLenght; i++)
{
stringBit = holdString.charAt(i); //get each character in the string one at a time
if (stringBit == 42)// if it is the * character
{
counterCol +=1; //increment column counter
switch (counterCol)
{
case 1:
finalString += (" ");
break;
case 2:
spacer = (maxCol - counterChar +3);
for (int x = 1; x < spacer; x++)
{
finalString += (" ");//line up columns
}//end for
break;
case 3:
counterCol = 0;// reset counter
break;
}//end switch
counterChar = 0;// reset counter
}//end if

else if (stringBit == 10)
{
MedicalServicesField.append("\n");//add carriage return at end of line
MedicalServicesField.append(finalString);//print the line when CR is encountered
finalString = ""; // clear contents of finalString after printing the line
}//end else if
else
{
finalString += stringBit;// add char to final output string
counterChar +=1; //increment word length counter
}//end else
}//end for
}// end if command = CONNECT

//Query field******************************************************************************************
else if (command == QUERY)
{
System.out.println(QueryField.getText());
MainOutputField.setText ("Sending Query\n");
MainOutputField.setText(Select(QueryField.getText()));
}//end if command = QUERY

//add a record to the database************************************************************************************
else if (command == ADDREC)
{
System.out.println(PatientIDnumField.getText());
System.out.println(FirstNameField.getText());
System.out.println(LastNameField.getText());
System.out.println(AddressField.getText());
System.out.println(CityField.getText());
System.out.println(StateField.getText());
System.out.println(ZipField.getText());
System.out.println(DateAdmitField.getText());
System.out.println(DateDischField.getText());
MainOutputField.setText("Adding record\n");
MainOutputField.setText(Select("INSERT into dsh_patient values ("
+ PatientIDnumField.getText() + ",\'"
+ FirstNameField.getText() + "\',\'"
+ LastNameField.getText() + "\',\'"
+ AddressField.getText() + "\',\'"
+ CityField.getText() + "\',\'"
+ StateField.getText() + "\',"
+ ZipField.getText() + ",\'"
+ DateAdmitField.getText() + "\',\'"
+ DateDischField.getText() + "\')"));
MainOutputField.setText("Database record added \n");
}//end if command = ADDREC

//for ClearNPButton******************************************************************************************
else if (command == CLEARNP)
{
PatientIDnumField.setText("");
FirstNameField.setText("");
LastNameField.setText("");
AddressField.setText("");
CityField.setText("");
StateField.setText("");
ZipField.setText("");
DateAdmitField.setText("");
DateDischField.setText("");
}//end if command = CLEARNP

// ClearPAButton ******************************************************************************************
else if (command == CLEARPA)
{
PAEnterPatID.setText("");
ItemCodeField.setText("");
finalString = "";
MedicalServicesField.setFont(new Font("Courier", Font.PLAIN, 12));
MedicalServicesField.setText(" Hospital Services \n\n");
MedicalServicesField.append("Code Decription Charge\n");
MedicalServicesField.append("---- ---------- ------");
holdString = (Select ("Select * from dsh_services ORDER BY dsh_services.item_code"));
int stringLenght = holdString.length(); //get the lenght of the query output
counterChar = 0;// reset counter
counterCol = 0;// reset counter
for (int i = 0; i < stringLenght; i++)
{
stringBit = holdString.charAt(i); //get each character in the string one at a time
if (stringBit == 42)// if it is the * character
{
counterCol +=1; //increment column counter
switch (counterCol)
{
case 1:
finalString += (" ");
break;
case 2:
spacer = (maxCol - counterChar +3);
for (int x = 1; x < spacer; x++)
{
finalString += (" ");//line up columns
}//end for
break;
case 3:
counterCol = 0;// reset counter
break;
}//end switch
counterChar = 0;// reset counter
}//end if

else if (stringBit == 10)
{
MedicalServicesField.append("\n");//add carriage return at end of line
MedicalServicesField.append(finalString);//print the line when CR is encountered
finalString = ""; // clear contents of finalString after printing the line
}//end else if
else
{
finalString += stringBit;// add char to final output string
counterChar +=1; //increment word length counter
}//end else
}//end for

}//end if command = CLEARPA

//find a record in the database***********************************************************************************
else if (command == FINDREC)
{
holdString="";
holdString2="";
holdQuery="";
finalString ="";
System.out.println(BottomEntePatID.getText());
holdString = BottomEntePatID.getText();
MainOutputField.setText("Finding record... Patient ID#= " +holdString);
holdQuery = (Select("SELECT DISTINCT dsh_patient.patient_id, "
+ " dsh_patient.first_name, "
+ " dsh_patient.last_name, "
+ " dsh_patient.address, "
+ " dsh_patient.city, "
+ " dsh_patient.state, "
+ " dsh_patient.zip, "
+ " dsh_patient.date_in, "
+ " dsh_patient.date_out "
+ " FROM dsh_patient "
+ " WHERE dsh_patient.patient_id = "+ holdString +""
));

MainOutputField.setFont(new Font("Courier", Font.PLAIN, 12));
MainOutputField.setText("ID # First Name Last Name Street Address City State Zip Date Admitted Date Discharged\n");
MainOutputField.append("---- ---------- --------- -------------- ------ ----- ----- ------------- ---------------\n");
int stringLenght = holdQuery.length(); //get the lenght of the query output
counterChar = 0;// reset counter
counterCol = 0;// reset counter
for (int i = 0; i < stringLenght; i++)
{
stringBit = holdQuery.charAt(i); //get each character in the string one at a time
if (stringBit == 42)// if it is the * character
{
counterCol +=1; //increment column counter
switch (counterCol)
{
case 1:
finalString += (" ");
break;
case 2:
case 3:
case 4:
case 5:
spacer = (maxCol - counterChar);
for (int x = 1; x < spacer; x++)
{
finalString += (" ");//line up columns
}//end for
break;
case 6:
case 7:
case 8:
finalString += (" ");
break;
case 9:
counterCol = 0;// reset counter
break;
}//end switch
counterChar = 0;// reset counter
}//end if
else if (stringBit == 10)
{
MainOutputField.append("\n");//add carriage return at end of line
MainOutputField.append(finalString);//print the line when CR is encountered
finalString = ""; // clear contents of finalString after printing the line
}//end else if
else
{
finalString += stringBit;// add char to final output string
counterChar +=1; //increment word length counter
}//end else if
}//end for loop
}//end if command = FINDREC

//delete a record from the database*******************************************************************************
else if (command == DELREC)
{
System.out.println(BottomEntePatID.getText());
holdString = BottomEntePatID.getText();
MainOutputField.setText("Deleting record\n");
MainOutputField.setText(Select("DELETE FROM dsh_patient WHERE patient_id = "+ holdString +""));;
}//end if command = DELREC

//list all records from the database******************************************************************************
else if (command == LISTALL)
{
finalString = "";
MainOutputField.setFont(new Font("Courier", Font.PLAIN, 12));
MainOutputField.setText("ID # First Name Last Name Street Address City State Zip Date Admitted Date Discharged\n");
MainOutputField.append("---- ---------- --------- -------------- ------ ----- ----- ------------- ---------------");
holdString = (Select("Select * from dsh_patient ORDER BY last_name"));

int stringLenght = holdString.length(); //get the lenght of the query output
counterChar = 0;// reset counter
counterCol = 0;// reset counter
for (int i = 0; i < stringLenght; i++)
{
stringBit = holdString.charAt(i); //get each character in the string one at a time
if (stringBit == 42)// if it is the * character
{
counterCol +=1; //increment column counter
switch (counterCol)
{
case 1:
finalString += (" ");
break;
case 2:
case 3:
case 4:
case 5:
spacer = (maxCol - counterChar);
for (int x = 1; x < spacer; x++)
{
finalString += (" ");//line up columns
}
break;
case 6:
case 7:
case 8:
finalString += (" ");
break;
case 9:
counterCol = 0;// reset counter
break;
}//end switch
counterChar = 0;// reset counter
}//end if
else if (stringBit == 10)
{
MainOutputField.append("\n");//add carriage return at end of line
MainOutputField.append(finalString);//print the line when CR is encountered
finalString = ""; // clear contents of finalString after printing the line
}//end else if
else
{
finalString += stringBit;// add char to final output string
counterChar +=1; //increment word length counter
}//end else

}//end for loop

}//end if command = LISTALL

//print report from the database***********************************************************************************
else if (command == REPORT)
{
holdString="";
holdString2="";
holdQuery="";
finalString ="";
System.out.println(BottomEntePatID.getText());
holdString = BottomEntePatID.getText();
MainOutputField.setText("Preparing Report\n");
MainOutputField.setText(" St. Samuel Memorial Hospital\n");
MainOutputField.append (" 200 Lake Forest Dr.\n");
MainOutputField.append (" Anywhere, USA\n\n");
MainOutputField.append ("Statement of Account\n\n");
holdQuery = (Select("SELECT DISTINCT dsh_patient.patient_id, "
+ " dsh_patient.first_name, "
+ " dsh_patient.last_name, "
+ " dsh_patient.address, "
+ " dsh_patient.city, "
+ " dsh_patient.state, "
+ " dsh_patient.zip, "
+ " dsh_patient.date_in, "
+ " dsh_patient.date_out "
+ " FROM dsh_patient "
+ " WHERE dsh_patient.patient_id = "+ holdString +""
));
int stringLenght = holdQuery.length(); //get the lenght of the query output
counterChar = 0;// reset counter
counterCol = 0;// reset counter
for (int i = 0; i < stringLenght; i++)
{
stringBit = holdQuery.charAt(i); //get each character in the string one at a time
if (stringBit == 42)// if it is the * character
{
counterCol +=1; //increment column counter
switch (counterCol)
{
case 1:
case 2:
finalString += ("");
break;
case 3:
finalString += ("\n");
break;
case 4:
case 5:
case 6:
finalString += (" ");
break;
case 7:
finalString += ("\nDate Admitted: ");
break;
case 8:
finalString += ("\nDate Discharged: ");
break;
case 9:
counterCol = 0;// reset counter
break;
}//end switch
counterChar = 0;// reset counter
}//end if
else if (stringBit == 10)
{
MainOutputField.append("\n");//add carriage return at end of line
MainOutputField.append(finalString);//print the line when CR is encountered
finalString = ""; // clear contents of finalString after printing the line
}//end else if
else
{
finalString += stringBit;// add char to final output string
counterChar +=1; //increment word length counter
}//end else
}//end for
MainOutputField.append ("\n\n");
MainOutputField.append("Code Decription Charge\n");
MainOutputField.append("---- ---------- ------\n");
//holdQuery contains DISTINCT data for only one patient (=selected patient ID#)
holdQuery = (Select("SELECT dsh_patient_charges.item_code, "
+ " dsh_services.description, "
+ " dsh_services.charge "
+ " FROM dsh_services, dsh_patient_charges "
+ " WHERE dsh_patient_charges.patient_id = "+ holdString +""
+ " AND dsh_patient_charges.item_code = dsh_services.item_code"
));
stringLenght = holdQuery.length(); //get the lenght of the query output
counterChar = 0;// reset counter
counterCol = 0;// reset counter
for (int i = 0; i < stringLenght; i++)
{
stringBit = holdQuery.charAt(i); //get each character in the string one at a time
if (stringBit == 42)// if it is the * character
{
counterCol +=1; //increment column counter
switch (counterCol)
{
case 1:
finalString += (" ");
break;
case 2:
spacer = (maxCol - counterChar +11);
for (int x = 1; x < spacer; x++)
{
finalString += (" ");//line up columns
}
break;
case 3:
counterCol = 0;// reset counter
counterChar = 0;// reset counter
break;
}//end switch
}//end if

else if (stringBit == 10)
{
MainOutputField.append("\n");//add carriage return at end of line
MainOutputField.append(finalString);//print the line when CR is encountered
finalString = ""; // clear contents of finalString after printing the line
}//end else if
else
{
finalString += stringBit;// add char to final output string
counterChar +=1; //increment word length counter
}//end else if
}//end for

MainOutputField.append ("\n\n");
MainOutputField.append ("------------------------------------------------\n");

//calculate Balance Due

//test Compute query
int sum = 0;
finalString ="";
//uses TOTAL method which gets only charges (column) data
holdQuery = (Total("SELECT dsh_services.charge "
+ " FROM dsh_services, dsh_patient_charges "
+ " WHERE dsh_patient_charges.patient_id = "+ holdString +""
+ " AND dsh_patient_charges.item_code = dsh_services.item_code"
));
stringLenght = holdQuery.length(); //get the lenght of the query output
for (int z = 0; z<stringLenght; z++)
{
stringBit = holdQuery.charAt(z);// get each number (as char)
if (stringBit != '.')// if it is NOT a decimal
{
finalString += stringBit;//combine the characters into a complete number
}//end if
else//if '.' is reached, add the number to the total sum
{
sum += Integer.parseInt(finalString);
z+=2;// move forward 2 in string
finalString =""; //clear finalString
}//end else

}//end for

MainOutputField.append (" Balance Due: $"+ sum +".00");
}//end if command = LISTALL

// UpdateRecordButton ******************************************************************************************
else if (command == UPDATE)
{
String revOrderString = "";
holdString="";
holdString2="";
holdQuery="";
finalString ="";
holdData =0;
holdString = PAEnterPatID.getText();; //patient's ID# input
holdString2 = ItemCodeField.getText();; //item code input
MedicalServicesField.setText("Adding Database record\n");
// first find the last record in the table
// get all tracking numbers from table dsh_patient_charges
holdQuery= (Update ("SELECT dsh_patient_charges.tracking_num FROM dsh_patient_charges"));
//get tracking record number from string and cast it to an integer
finalString = "";
int stringLenght = holdQuery.length(); //get the lenght of the query output
for (int y = stringLenght-2; y>stringLenght -6; y--)//gets only the last tracking number
{
stringBit = holdQuery.charAt(y);// reads each character one by one
finalString += stringBit;//puts the characters together
}//end for
//reverse order of the string
revOrderString = finalString;//hold finalString's contents
finalString = "";//clear finalString
for (int z = 3; z >-1; z--)
{
stringBit = revOrderString.charAt(z);// reads each character one by one
finalString += stringBit;// add each character back to finalString
}
holdData = Integer.parseInt(finalString);// make the string into an integer.
holdData +=1; //increment it by one for the next record row
MedicalServicesField.setText(Select("INSERT into dsh_patient_charges values ("
+ holdData + ","
+ holdString + ","
+ holdString2+ ")"));
MedicalServicesField.append("\n Inserted "+ holdData +", "+ holdString + ", and "+ holdString2+" into database");
}//end else if command == UPDATE

}// end actionPerformed method

//general query function*****************************************************************************
public String Select(String QueryLine)
{
String Output="";
int columns;
int pos;

try //These methods can throw exceptions, query probs, connection probs
{
Statement stmt = con.createStatement();
//Instantiate a Statement class to execute query
ResultSet rs = stmt.executeQuery(QueryLine);
//Similiar to a pointer that can be used to retreive results from jdbc connection
columns=(rs.getMetaData()).getColumnCount();
//metadata objects contains a getColumnCount method to show how many columns are retreived
System.out.println((rs.getMetaData()).getColumnCount());

while(rs.next())
{
//Fetch rows one by one
for( pos=1; pos<=columns; pos++)
{
Output+=rs.getString(pos)+" *";//Cast result in the form of a string
// seperate with * character
}
Output+="\n";//for each row we fetch add carriage return
}
stmt.close();
}

catch( Exception e )
{
e.printStackTrace();
Output=e.getMessage();
}
return Output;//before exiting, return the result we got
}// end String Select method

// total function**************************************************************************************************************
//to compute the total for the Record button function
public String Total(String QueryLine)
{
String Output="";
int columns;
int pos;

try
{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(QueryLine);
columns=(rs.getMetaData()).getColumnCount();
System.out.println((rs.getMetaData()).getColumnCount());

while(rs.next())
{
//Fetch rows one by one
for( pos=1; pos<=columns; pos++)
{
Output+=rs.getString(pos)+"";//Cast result in the form of a string
// no seperation character
}
//Output+="\n";//for each row we fetch add carriage return
}
stmt.close();
}

catch( Exception e )
{
e.printStackTrace();
Output=e.getMessage();
}
return Output;//before exiting, return the result we got
}// end String Compute method


// Update function**************************************************************************************************************
//to retreive the last record in the tracking column (primary key) to allow addition of next record
public String Update(String QueryLine)
{
String Output="";
int columns;
int pos;

try
{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(QueryLine);
columns=(rs.getMetaData()).getColumnCount();
System.out.println((rs.getMetaData()).getColumnCount());

while(rs.next())
{
//Fetch rows one by one
for( pos=1; pos<=columns; pos++)
{
Output+=rs.getString(pos)+"";//Cast result in the form of a string
// no seperation character
}
Output+="\n";//for each row we fetch add carriage return
}

stmt.close();
}

catch( Exception e )
{
e.printStackTrace();
Output=e.getMessage();
}
return Output;//before exiting, return the result we got
}// end String Compute method

//destroy******************************************************************************************
public void destroy()
{
try
{
con.close();
}
catch( Exception e )
{
e.printStackTrace();
System.out.println(e.getMessage());
}
} //end destroy method

} //end applet*************************************************

*************************************