Ass1 Java
Ass1 Java
import gustorestaurant.MyConnection;
import gustorestaurant.User;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import menuItems.Inventory;
import menuItems.MainMenu;
import menuItems.MenuItem;
import starting.LoginForm;
import starting.SignUpForm;
public Customer() {}
@Override
public boolean register() {
boolean registered = false;
PreparedStatement ps = null;
ResultSet rs;
String query = "SELECT * FROM customer WHERE customer_username
= ?";
try {
ps = MyConnection.getConnection().prepareStatement(query);
ps.setString(1, this.userName);
rs = ps.executeQuery();
if (rs.next()) {
JOptionPane.showMessageDialog(null, "This Username Already
Exists");
SignUpForm.setTextField();
return registered;
} else {
query = "INSERT INTO `customer`(`customer_username`,
`customer_mobile`, `customer_password`, `customer_name`,
`customer_address`, `customer_id`, `customer_listOfOrders`) VALUES
(?,?,?,?,?,?,?)";
ps = MyConnection.getConnection().prepareStatement(query);
String encrypted = User.encryptThisString(this.password);
ps.setString(1, this.userName);
ps.setString(2, this.mobilePhone);
ps.setString(3, encrypted);
ps.setString(4, this.name);
ps.setString(5, this.address);
ps.setInt(6, this.id);
ps.setString(7, null);
this.password = encrypted;
if (ps.executeUpdate() > 0) {
CustomerWelcomeForm cf = new CustomerWelcomeForm(this,
null);
cf.setVisible(true);
registered = true;
}
}
} catch (SQLException ex) {
Logger.getLogger(Customer.class.getName()).log(Level.SEVERE, null,
ex);
}
return registered;
}
@Override
public boolean login(String cuserName, String cPassword) {
boolean loggedIn = false;
PreparedStatement ps;
ResultSet rs;
String query = "SELECT * FROM customer WHERE
customer_username=? AND customer_password=?";
try {
ps = MyConnection.getConnection().prepareStatement(query);
String encrypted = User.encryptThisString(cPassword);
ps.setString(1, cuserName);
ps.setString(2, encrypted);
rs = ps.executeQuery();
if (rs.next()) {
String cphone = rs.getString("customer_mobile");
String cname = rs.getString("customer_name");
String caddress = rs.getString("customer_address");
int cid = rs.getInt("customer_id");
String ordersString = rs.getString("customer_listOfOrders");
if (ordersString != null) {
this.orders = convertStringtoOrders(ordersString);
}
Customer c = new Customer(cid, cname, cuserName, cphone,
cPassword, caddress, this.orders);
CustomerWelcomeForm cf = new CustomerWelcomeForm(c,
ordersString);
cf.setVisible(true);
loggedIn = true;
} else {
LoginForm.setTextFields();
JOptionPane.showMessageDialog(null, "Username or password
incorrect.", "Login Failed", JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException ex) {
Logger.getLogger(Customer.class.getName()).log(Level.SEVERE, null,
ex);
}
return loggedIn;
}
Billform.java :-
package customerPackage;
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import customerPackage.OrderForm.*;
import customerPackage.OrderForm;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import javafx.util.Pair;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import menuItems.Inventory;
/**
*
* @author Dell
*/
public class BillForm extends javax.swing.JFrame
{
//Order order = new Order();
Bill bill;
String ordersS;
int totalCash;
int rate;
static boolean returned = false;
Voucher exceed1000 = new Voucher("Exceed1000", 20);
boolean rated=false;
boolean pressedStatusBtn=false;
static boolean delivered=false;
/**
* Creates new form BillForm
*/
public BillForm()
{
initComponents();
pnl_rate.setVisible(false);
pnl_bill.setVisible(true);
lbl_complain.setVisible(false);
txt_complainMessege.setVisible(false);
btn_closeRating.setVisible(false);
}
}//GEN-LAST:event_btn_finishRateActionPerformed
private void
btn_nextRateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-
FIRST:event_btn_nextRateActionPerformed
// TODO add your handling code here:
if ("".equals(txt_getRate.getText()))
{
if (OrderForm.currentOrder.ratings.size() > 1)
{
lbl_complain.setVisible(true);
txt_complainMessege.setVisible(true);
btn_closeRating.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(this, "Please rate at least
one element", "Error", JOptionPane.ERROR_MESSAGE);
}
}
else
{
OrderForm.currentOrder.ratings.put(String.valueOf(cbx_ChooseItemToR
ate.getSelectedItem()), Double.valueOf(txt_getRate.getText()));
txt_getRate.setText("");
}
}//GEN-LAST:event_btn_nextRateActionPerformed
private void
btn_cancelOrderActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_btn_cancelOrderActionPerformed
// cancel order
OrderForm.customer.cancelOrder();
}//GEN-LAST:event_btn_cancelOrderActionPerformed
private void
btn_orderStatusActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_btn_orderStatusActionPerformed
// TODO add your handling code here:
if (OrderForm.currentOrder.checkStatus(OrderForm.currentOrder))
{
System.out.println(OrderForm.deliveryBoy.getOrdersList().size()
+" we are in the orderStatusBtn");
OrderForm.deliveryBoy.getOrdersList().remove(OrderForm.currentOrder
);
System.out.println(OrderForm.deliveryBoy.getOrdersList().size()
+" we are in the orderStatusBtn");
OrderForm.deliveryBoy.setAvailable(true);
//OrderForm.currentOrder.updateDeliveryBoys(OrderForm.deliveryBoy);
delivered=true;
JOptionPane.showMessageDialog(this, "Your order is done",
"Served", JOptionPane.OK_OPTION);
}
else
{
JOptionPane.showMessageDialog(this, "Your order is being
cooked", "Loading...", JOptionPane.OK_OPTION);
}
OrderForm.currentOrder.updateDeliveryBoys(OrderForm.deliveryBoy);
pressedStatusBtn=true;
}//GEN-LAST:event_btn_orderStatusActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[])
{
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel
setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with
the default look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.htm
l
*/
try
{
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels())
{
if ("Nimbus".equals(info.getName()))
{
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex)
{
java.util.logging.Logger.getLogger(BillForm.class.getName()).log(java.u
til.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex)
{
java.util.logging.Logger.getLogger(BillForm.class.getName()).log(java.u
til.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex)
{
java.util.logging.Logger.getLogger(BillForm.class.getName()).log(java.u
til.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex)
{
java.util.logging.Logger.getLogger(BillForm.class.getName()).log(java.u
til.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
Manager :-
Manager.java :-
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package managerPackage;
import customerPackage.DeliveryBoy;
import gustorestaurant.MyConnection;
import gustorestaurant.User;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import menuItems.Inventory;
import menuItems.InventoryForm;
import menuItems.InventoryItem;
import menuItems.MainMenu;
import menuItems.MenuItem;
import starting.HomepageForm;
import starting.LoginForm;
import starting.SignUpForm;
/**
*
* @author PC
*/
public class Manager extends User
{
public Manager()
{
PreparedStatement preparedStmt =
MyConnection.getConnection().prepareStatement(Query);
preparedStmt.setString(1, deliveryBoy.getId());
preparedStmt.setString(2, deliveryBoy.getName());
preparedStmt.setString(3, String.valueOf(deliveryBoy.getStart()));
preparedStmt.setString(4, String.valueOf(deliveryBoy.getEnd()));
preparedStmt.setInt(5, 1);
preparedStmt.setString(6, null);
preparedStmt.setString(7, null);
preparedStmt.execute();
if
(MainMenu.categoryList.get(CategoryName).get(i).getItemName().equals(ite
mName))
{
JOptionPane.showMessageDialog(null, "This Item already exists");
itemFound = true;
break;
}
}
if (!itemFound)
{
try
{
//Add new added item into database in menu_item table
query = "INSERT INTO menu_item ( idmenu_item,
namemenu_item,rankmenu_item , pricemenu_item , category )" + "
VALUES(?,?,?,?,?)";
PreparedStatement preparedStmt =
MyConnection.getConnection().prepareStatement(query);
//Set random itemID
itemID = Inventory.inventoryList.size() + 1;
preparedStmt.setInt(1, itemID);
preparedStmt.setString(2, itemName);
preparedStmt.setInt(3, 0);
preparedStmt.setInt(4, itemPrice);
preparedStmt.setString(5, CategoryName);
if (preparedStmt.executeUpdate() > 0)
{
JOptionPane.showMessageDialog(null, "New item is added ");
//To add new addded item to my main menu map
menuitem.setItemId(itemID);
menuitem.setItemName(itemName);
menuitem.setItemPrice(itemPrice);
menuitem.setItemRate(0);
MainMenu.categoryList.get(CategoryName).add(menuitem);
//To display new added item info on table
InventoryForm.model.addRow(new Object[]
{
itemID, itemName, 0, 0, avaliable_quantity
});
}
Logger.getLogger(Manager.class.getName()).log(Level.SEVERE,
null, ex);
}
try
{
//Add new inventory info in database in inventory table
query = "INSERT INTO inventory ( item_id , units_sold ,
avaliable_quantity , number_rate)" + " VALUES(?,?,?,?)";
PreparedStatement preparedStmt =
MyConnection.getConnection().prepareStatement(query);
preparedStmt.setInt(1, itemID);
preparedStmt.setInt(2, 0);
preparedStmt.setInt(3, avaliable_quantity);
preparedStmt.setInt(4, 0);
preparedStmt.execute();
//To add new added item in inventory List
inventory.setMenuItem(menuitem);
inventory.setAvaliableMenuItem(avaliable_quantity);
inventory.setSoldMenuItem(0);
Inventory.inventoryList.put(menuitem.getItemName(), inventory);
}
} catch (Exception e)
{
JOptionPane.showMessageDialog(null, "Please Choose one
Category");
}
}
if (preparedStmt.executeUpdate() > 0)
{
JOptionPane.showMessageDialog(null, "Item Deleted");
//Remove menu item from main menu map (main menu map)
MenuItem removedMenuItem = new MenuItem();
removedMenuItem =
MainMenu.categoryList.get(categoryName).remove(i);
}
}
} catch (SQLException ex)
{
Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null,
ex);
}
try
{
//Delete Inventory Item from inventory table in database
String query = "delete from inventory where item_id= ? ";
PreparedStatement preparedStmt =
MyConnection.getConnection().prepareStatement(query);
preparedStmt.setInt(1, deleteId);
preparedStmt.execute();
} catch (SQLException ex)
{
Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null,
ex);
}
}
if (ps.executeUpdate() > 0)
{
//JOptionPane.showMessageDialog(null, "New User Add");
Manager m = new Manager(this.name, this.userName,
this.mobilePhone, this.password);
ManagerWelcomeForm mf = new ManagerWelcomeForm(m);
mf.setVisible(true);
}
}
} catch (SQLException ex)
{
Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null,
ex);
}
return registered;
}
/**
*
* @param muserName
* @param mPassword
* @return
*/
@Override
public boolean login(String muserName, String mPassword)
{
boolean loggedIn = false;
PreparedStatement ps;
ResultSet rs;
String query = "SELECT * FROM manager WHERE manager_username=?
AND manager_password=?";
try
{
String encrypted = User.encryptThisString(mPassword);
ps = MyConnection.getConnection().prepareStatement(query);
ps.setString(1, muserName);
ps.setString(2, encrypted);
rs = ps.executeQuery();
if (rs.next())
{
String mphone = rs.getString("manager_mobile");
String mname = rs.getString("manager_name");
Manager m = new Manager(mname, muserName, mphone,
mPassword);
ManagerWelcomeForm mf = new ManagerWelcomeForm(m);
mf.setVisible(true);
loggedIn = true;
}
else
{
LoginForm.setTextFields();
JOptionPane.showMessageDialog(null, "Username or password
incorrect.", "Login Failed", JOptionPane.ERROR_MESSAGE);
}
Menu:-
menu.java :-
package menuItems;
import java.awt.Color;
import java.util.HashMap;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import menuItems.MainMenu;
import static starting.HomepageForm.offers;
String itemInfo;
String itemName;
String itemPrice;
String itemRate;
String Dots = "";
void createPanel()
{
//Define new tab to hold this tittle & add it to JTabbedPane
pnl_tmp = new JPanel();
pnl_tmp.setLayout(null);
public Menu()
{
initComponents();
showMainMenu();
this.setLocationRelativeTo(null); //center form in screen
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-
BEGIN:initComponents
private void initComponents()
{
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE
);
setTitle("Main Menu");
setMaximumSize(new java.awt.Dimension(1216, 788));
setPreferredSize(new java.awt.Dimension(1217, 788));
setSize(new java.awt.Dimension(1217, 788));
pnl_LogoBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(pnl_LogoBarLayout.createSequentialGroup()
.addGap(530, 530, 530)
.addComponent(lbl_RsturantName)
.addContainerGap(588, Short.MAX_VALUE))
);
pnl_LogoBarLayout.setVerticalGroup(
pnl_LogoBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(pnl_LogoBarLayout.createSequentialGroup()
.addContainerGap()
.addComponent(lbl_RsturantName)
.addContainerGap(16, Short.MAX_VALUE))
);
tpnl_ViewMainMenu.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TA
B_LAYOUT);
tpnl_ViewMainMenu.setToolTipText("");
tpnl_ViewMainMenu.setAutoscrolls(true);
tpnl_ViewMainMenu.setCursor(new
java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
tpnl_ViewMainMenu.setFont(new java.awt.Font("Rockwell", 3, 24)); //
NOI18N
tpnl_ViewMainMenu.setName(""); // NOI18N
tpnl_ViewMainMenu.setPreferredSize(new java.awt.Dimension(1216,
70));
jLabel2.setText("jLabel2");
jLabel2.setPreferredSize(new java.awt.Dimension(230, 230));
jLabel7.setText("jLabel7");
jLabel7.setPreferredSize(new java.awt.Dimension(230, 230));
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addContainerGap(75, Short.MAX_VALUE)
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 230,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(61, 61, 61)
.addComponent(jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(63, 63, 63)
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 230,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(59, 59, 59)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 251,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAIL
ING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel2Layout.createSequentialGroup()
.addGap(329, 329, 329)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLa
yout.Alignment.LEADING)
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 230,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.TRAILING)
.addComponent(jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE, 244,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Gro
upLayout.Alignment.BASELINE)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 230,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 230,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(63, Short.MAX_VALUE))
);
tpnl_ViewMainMenu.addTab("tab1", jPanel2);
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnl_LogoBar,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tpnl_ViewMainMenu,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(pnl_LogoBar,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(tpnl_ViewMainMenu,
javax.swing.GroupLayout.PREFERRED_SIZE, 679,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
tpnl_ViewMainMenu.getAccessibleContext().setAccessibleName("");
pack();
}// </editor-fold>//GEN-END:initComponents
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (InstantiationException ex)
{
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex)
{
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex)
{
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
}
//</editor-fold>
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public static javax.swing.JLabel jLabel1;
public static javax.swing.JLabel jLabel2;
public static javax.swing.JLabel jLabel3;
public static javax.swing.JLabel jLabel7;
private javax.swing.JPanel jPanel2;
private javax.swing.JLabel lbl_RsturantName;
private javax.swing.JPanel pnl_LogoBar;
public static javax.swing.JTabbedPane tpnl_ViewMainMenu;
// End of variables declaration//GEN-END:variables
}