f1 = $f1; $this->f2 = $f2; } } interface T1DatabaseAccess { public function get_one($f2); public function get_all(); public function put($o); public function remove($f1); } class T1DatabaseAccessPDO implements T1DatabaseAccess { private $constr; private $username; private $password; public function __construct($constr, $username, $password) { $this->constr = $constr; $this->username = $username; $this->password = $password; } private function get_connection() { //$con = new PDO($this->constr, $this->username, $this->password); $con = new PDO('java:comp/env/jdbc/MySqlTest'); $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //$con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); return $con; } public function get_one($f2) { $con = $this->get_connection(); $stmt = $con->prepare('SELECT F1,F2 FROM T1 WHERE F2=:F2'); $stmt->execute(array(':F2' => $f2)); if($row = $stmt->fetch()) { $res = new T1($row['F1'], $row['F2']); } else { die("$f2 not found"); } return $res; } public function get_all() { $con = $this->get_connection(); $stmt = $con->prepare('SELECT F1,F2 FROM T1'); $stmt->execute(array()); $res = array(); while($row = $stmt->fetch()) { $res[] = new T1($row['F1'], $row['F2']); } return $res; } public function put($o) { $con = $this->get_connection(); $stmt = $con->prepare('INSERT INTO T1(F1,F2) VALUES(:F1,:F2)'); $stmt->execute(array(':F1' => $o->f1, ':F2' => $o->f2)); } public function remove($f1) { $con = $this->get_connection(); $stmt = $con->prepare('DELETE FROM T1 WHERE F1=:F1'); $stmt->execute(array(':F1' => $f1)); } } class T1DatabaseAccessFactory { const PDO = 'PDO'; public static function get_database_access($id, $constr, $username, $password) { if($id === T1DatabaseAccessFactory::PDO) { return new T1DatabaseAccessPDO($constr, $username, $password); } else { throw new Exception("Unknown T1DatabaseAccess id: $id"); } } } interface T1Presenter { public function display($data); } class T1PresenterHtmlTable implements T1Presenter { public function display($data) { $rows = ""; foreach($data as $row) { $f1 = $row->f1; $f2 = $row->f2; $rows .= sprintf("
F1 | \r\nF2 | \r\n
---|