6.Putting it Altogether


Steps:
1.     On EmployeesMVC.java type the following:
package employeesmvc;
import Models.*;
import Views.*;
import Controllers.*;
public class EmployeesMVC {
    public static void main(String[] args) {
        EmployeesModel model = new EmployeesModel(MSAccessDB.Connect());
        EmployeesView view = new EmployeesView(model);
        EmployeesController controller = new EmployeesController(model,view);
    }
}

2.     On EmployeesController.java type the following:
package Controllers;
import Models.*;
import Views.*;
import java.awt.event.*;

public class EmployeesController {
    EmployeesModel model;
    EmployeesView view;
    public EmployeesController(){}
    public EmployeesController(EmployeesModel model,EmployeesView view){
        this.model=model;
        this.view=view;
        view.menu(new btnMenuActionListener());
    }
    class btnMenuActionListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e){
            String action = e.getActionCommand();
            if(action.equals("signup")){
                view.signup(new btnSignupActionListener());
            }else if(action.equals("empList")){
                view.empList(new btnEmpListActionListener());
                view.Employees();
            }else if(action.equals("update")){
                view.update(new btnEditDeleteActionListener(),"Update");
            }else{
                view.update(new btnEditDeleteActionListener(),"Delete");
            }
        }
    }
    class btnSignupActionListener implements ActionListener{
        @Override
         public void actionPerformed(ActionEvent e){
          String action = e.getActionCommand();
          if(action.equals("save")){
                AddEmployee();
            }
         }
    }
  
    class btnEditDeleteActionListener implements ActionListener{
        @Override
         public void actionPerformed(ActionEvent e){
          String action = e.getActionCommand();
          if(action.equals("search")){
             int id = view.getEmpID();
             SearchEmployee(id);  
          }
          else if(action.equals("Update")){
               EmployeesModel Employee=view.getEmployee("editDelete");
               Update(Employee);
          }else {
               int id = view.getEmpID();
                DeleteEmployee(id);
          }   
      
       }
    }
    class btnEmpListActionListener implements ActionListener{
         public void actionPerformed(ActionEvent e){
         view.closeEmpList();
         }
    }
 
    private void AddEmployee(){
        EmployeesModel Employee=view.getEmployee("signup");
        boolean result = model.Save(Employee);
        if(result==true){
            view.SaveMsg();
            view.ResetSignup();
            }
        else{view.ErrMsg();}
   }

    private void SearchEmployee(int id){
        if(model.isFound(id)){
             view.displayEmployee(model.getEmployee(id));
         }else{
             view.NotFoundMsg();
         }
   }
   private void Update(EmployeesModel Employee){
        boolean result = model.update(Employee);
        if(result==true){
            view.UpdateMsg();
            view.ResetEmpEditDelete();
        }
        else{view.ErrMsg();}
   }
   private void DeleteEmployee(int id){
        boolean result = model.delete(id);
        if(result==true){
            view.DeleteMsg();
            view.ResetEmpEditDelete();
            }
        else{view.ErrMsg();}
   } 
}


3.     On EmployeesView.java type the following:
package Views;
import Models.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class EmployeesView {
    EmployeesModel model;
    MenuView menu;
    SignupView signup;
    EmpListView empList;
    EmpEditDeleteView empEditDelete;
   
    public EmployeesView(){}
    public EmployeesView(EmployeesModel model){
    this.model=model;
    }
    public void menu(ActionListener listener){
        menu = new MenuView(listener);
    }
    public void signup(ActionListener listener){
        signup= new SignupView(listener); 
    }
    public void empList(ActionListener listener){
        empList= new EmpListView(listener);
    }
    public void update(ActionListener listener, String btnText){
        empEditDelete =  new EmpEditDeleteView(listener,btnText);
    }
    public EmployeesModel getEmployee(String source){
        if(source.equals("signup")){
           return signup.getEmployee();
        }else{
           return empEditDelete.getEmployee();
        }
    }
    public int getEmpID(){
        return empEditDelete.getEmpID();
    }
   
    public void displayEmployee(EmployeesModel Employee){
        empEditDelete.display(Employee);
    }
    public void Employees(){
        ArrayList<EmployeesModel> Employees = model.GetEmployees();
        empList.display(Employees);
    }
   public void ResetSignup(){signup.reset();}
   public void ResetEmpEditDelete(){empEditDelete.reset();}
   public void SaveMsg(){
       displayMsg("Successfully Saved...");
   }
   public void ErrMsg(){
       displayMsg("Error Encountered...");
   }
   public void NotFoundMsg(){
        displayMsg("Not Found...");
   }
   public void UpdateMsg(){
       displayMsg("Successfully Updated...");
   }
   public void DeleteMsg(){
       displayMsg("Successfully Deleted...");
   }
   private void displayMsg(String msg){
       JOptionPane.showMessageDialog(null, msg);
   }
   public void closeEmpList(){
       empList.dispose();
   }
 
    public static void addActionListener(JButton btn, ActionListener listener,String action){
        btn.addActionListener(listener);
        btn.setActionCommand(action);
    }
}

4.     On MenuView.java type the following:
package Views;
public class MenuView extends javax.swing.JFrame {
    public MenuView(){
        super("Menu");
        initComponents();
    }
    public MenuView(java.awt.event.ActionListener listener) {
        this();
        EmployeesView.addActionListener(btnSignup, listener,"signup");
        EmployeesView.addActionListener(btnEmpList, listener,"empList");
        EmployeesView.addActionListener(btnUpdate, listener,"update");
        EmployeesView.addActionListener(btnDelete, listener,"delete");
        this.setVisible(true); 
    }
}

5.     On SignupView.java type the following:
package Views;
import Models.*;

public class SignupView extends javax.swing.JFrame {
    public SignupView(){
        super("Employee Signup");
        initComponents();
    }
    public SignupView(java.awt.event.ActionListener listener) {
        this();
        EmployeesView.addActionListener(btnSave, listener,"save");
        this.setVisible(true);
    }
   
    public void reset(){
        txtName.setText("");
        txtAddress.setText("");
        txtName.requestFocusInWindow();
    }
    public EmployeesModel getEmployee(){
        EmployeesModel Employee=new EmployeesModel();
        Employee.setName(txtName.getText());
        Employee.setAddress(txtAddress.getText());
        return Employee;
    }
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {                                         
    reset();
}                                        

private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {                                        
    this.dispose();
}

}

6.     On EmpListView.java type the following:
package Views;
import Models.*;
public class EmpListView extends javax.swing.JFrame {
    public EmpListView() {
        super("Employees");
        initComponents();
    }
    public EmpListView(java.awt.event.ActionListener listener){
       this();
       EmployeesView.addActionListener(btnClose, listener,"close");
       this.setVisible(true);
    }
    public void display(java.util.ArrayList<EmployeesModel> Employees){
       javax.swing.table.DefaultTableModel tblModel = new  javax.swing.table.DefaultTableModel();
       tblEmployees.setModel(tblModel);
       tblModel.setColumnIdentifiers(new String[] {"ID","Name", "Address"});
       for(EmployeesModel employee:Employees){
           tblModel.addRow(new String[]{""+employee.getId(),employee.getName(),employee.getAddress()});
       }
    }
}

7.     On EmpEditDeleteView.java type the following:
package Views;
import Models.*;

public class EmpEditDeleteView extends javax.swing.JFrame {
    public EmpEditDeleteView() {
        super("Employee Edit/Delete");
        initComponents();
    }
   public EmpEditDeleteView(java.awt.event.ActionListener listener,String btnText){
       this();
       btnAction.setText(btnText);
       EmployeesView.addActionListener(btnAction, listener,btnAction.getText());
       EmployeesView.addActionListener(btnSearch, listener,"search");
       this.setVisible(true); 
   }
   public void setBtnText(String text){
       btnAction.setText(text);
   }
   public void reset(){
       txtID.setText("");
       txtName.setText("");
       txtAddress.setText("");
       txtID.requestFocusInWindow();
   }
   public int getEmpID(){
    return Integer.parseInt(txtID.getText());
   }
   public EmployeesModel getEmployee(){
    EmployeesModel Employee=new EmployeesModel();
    Employee.setId(Integer.parseInt(txtID.getText()));
    Employee.setName(txtName.getText());
    Employee.setAddress(txtAddress.getText());
    return Employee;
   }
  
   public void display(EmployeesModel Employee){
       txtName.setText(Employee.getName());
       txtAddress.setText(Employee.getAddress());
   }
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {                                          
    reset();
}                                        

private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {                                        
    this.dispose();

}

8.     On EmployeesModel.java type the following:
package Models;
import java.sql.*;
import java.util.*;

public class EmployeesModel extends PersonsModel {
    private int id;
    Connection db;
    public int getId(){return id;}
    public void setId(int id){this.id= id;}
    public EmployeesModel(){}

    public EmployeesModel(Connection db){
    this.db=db;
    }

    public boolean Save(EmployeesModel Employee){
            String sql = "INSERT INTO Employees(name,address)VALUES('"+Employee.getName()+"','"+Employee.getAddress()+"')";
            return MSAccessDB.Insert(sql,db);
            }
    public ArrayList<EmployeesModel> GetEmployees(){
            String sql = "SELECT * FROM Employees";
            ResultSet rs= MSAccessDB.getResults(sql,db);
            ArrayList<EmployeesModel> Employees = new ArrayList<EmployeesModel>();
            try{
            while(rs!=null && rs.next()){
                            Employees.add(Employee(rs));
            }
            }catch(Exception ex){ex.printStackTrace();}
            return Employees;
    }
    public EmployeesModel getEmployee(int id){
        ResultSet rs =Search(id);
        EmployeesModel emp=null;
        try{
         while(rs!=null && rs.next()){emp=Employee(rs);}
        }catch(Exception ex){ex.printStackTrace();}
        return emp;
    }
    public ResultSet Search(int id){
           String sql="SELECT * FROM Employees WHERE id="+id;
           ResultSet rs = MSAccessDB.getResults(sql,db);
           return rs;
    }
    public boolean update(EmployeesModel Employee){
            String sql = "UPDATE Employees SET name='"+Employee.getName()+"',"+
                         " address='"+Employee.getAddress()+"'"+
                         " WHERE id="+Employee.getId();
            return MSAccessDB.Update(sql,db);
    }
    public boolean delete(int id){
            String sql="DELETE FROM Employees WHERE id="+id;
            return MSAccessDB.Delete(sql,db);
    }
    public boolean isFound(int id){
           ResultSet rs =Search(id);
           boolean found=false;
            try{
               while(rs.next()){found=true;}
            }catch(Exception ex){ex.printStackTrace();}
            return found;
    }
    private EmployeesModel Employee(ResultSet rs){
            EmployeesModel Employee=new EmployeesModel();
            try{
            Employee.setId(Integer.parseInt(rs.getString("id")));
            Employee.setName(rs.getString("name"));
            Employee.setAddress(rs.getString("address"));
            }catch(Exception ex){ex.printStackTrace();}
            return Employee;
    }
}

9.     On PersonsModel.java type the following:
package Models;
public class PersonsModel {
    private String name;
    private String address;
    public void setName(String name){this.name=name;}
    public String getName(){return name;}
    public void setAddress(String address){this.address=address;}
    public String getAddress(){return address;}
    public PersonsModel(){}
}

10.   On MSAccessDB.java type the following:
package Models;
import java.sql.*;
public class MSAccessDB {
    public static Connection Connect(){
        Connection conn=null;
        try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=EmployeesDB.mdb";
        conn=DriverManager.getConnection(database,"","");
        }catch(Exception ex){ex.printStackTrace();}
        return conn;
    }

    public static boolean Insert(String sql,Connection db){
        return Execute(sql,db);
    }
    public static ResultSet getResults(String sql,Connection db){
        return Query(sql,db);
    }
    public static boolean Update(String sql,Connection db){
        return Execute(sql,db);
    }
    public static boolean Delete(String sql,Connection db){
       return Execute(sql,db);
    }
    private static ResultSet Query(String sql,Connection db){
        ResultSet rs=null;
        try{
            Statement s = db.createStatement();
            s.execute(sql);
            rs = s.getResultSet();
            }catch(Exception ex){ex.printStackTrace();}
        return rs;
    }
    private static boolean Execute(String sql,Connection db){
        try{
        Statement s = db.createStatement();
        s.execute(sql);
        s.close();
        return true;
        }catch(Exception ex){
                ex.printStackTrace();return false;
        }
    }
}


11.   Put your code to the test, nice jobJ

No comments:

Post a Comment