package com.corej2eepatterns.dao;

// importy
public class OracleDAOFactory extends DAOFactory {

  // staa na poziomie pakietu uywana do wyszukania 
  // nazwy DataSource za pomoc JNDI
  static String DATASOURCE_DB_NAME =
      "java:comp/env/jdbc/CJPOraDB";

  public CustomerDAO getCustomerDAO() 
      throws DAOException {
    return (CustomerDAO) createDAO(CustomerDAO.class);
  }

  public EmployeeDAO getEmployeeDAO() 
      throws DAOException {
    return (EmployeeDAO) createDAO(EmployeeDAO.class);
  }

  // utworzenie innych instancji DAO
  . . .

  // Metoda tworzca instancj DAO. Moe zosta zoptymalizowana 
  // przez buforowanie klasy DAO zamiast tworzenia jej za kadym razem.
  private Object createDAO(Class classObj) 
      throws DAOException {
    // utworzenie nowego obiektu DAO za pomoc classObj.newInstance() lub
    // lub pobranie jej z bufora i zwrcenie instancji DAO
  }
}