コード例 #1
0
 public function &getDataGrid(IDataSourceExpression &$expression)
 {
     $rv = null;
     if (!$expression instanceof DbmsExpression) {
         throw new Exception('DbmsExpression missing');
     }
     $db =& DbmsDataSource::getInstance($this->getDriver());
     if ($rs =& $db->execute($expression->toString())) {
         $dgr_id = $dg_row = null;
         while ($row =& $rs->next()) {
             if (is_null($rv)) {
                 $rv =& new DataGrid($this, $row['datagrid_id']);
                 $rv->setTitle($row['datagrid_title']);
             }
             if ($dgr_id != $row['datagridrow_id']) {
                 if (!is_null($dg_row)) {
                     $rv->add($dg_row);
                 }
                 $dg_row =& new DataGridRow($row['datagridrow_id']);
             }
             $dg_row->add(new DataGridColumn($row['datagridcolumn_id'], $row['datagridcolumn_value']));
             $dgr_id = $row['datagridrow_id'];
         }
         $rs->dispose();
     }
     if (!is_null($dg_row)) {
         $rv->add($dg_row);
     }
     $db->close();
     return $rv;
 }
コード例 #2
0
 public function &getDataGrid(IDataSourceExpression &$expression)
 {
     $driver =& $this->getDriver();
     $xml = simplexml_load_file($driver->getFilepath());
     if (!$xml) {
         throw new Exception('Unable to load `' . $driver->getFilepath() . '`');
     }
     if (!$expression instanceof XpathExpression) {
         throw new Exception('Missing XPath expression');
     }
     $xpathResult = $xml->xpath($expression->toString());
     if (count($xpathResult) != 1) {
         throw new Exception('XPath expression returns more than one root element');
     }
     $rv =& new DataGrid($this, (string) $xpathResult[0]['id']);
     $rv->setTitle((string) $xpathResult[0]['title']);
     foreach ($xpathResult[0]->datagridrow as $idx => $dgRow) {
         $oDGR =& new DataGridRow((string) $dgRow['id']);
         foreach ($dgRow->datagridcolumn as $idx => $dgColumn) {
             $oDGR->add(new DataGridColumn((string) $dgColumn['id'], (string) $dgColumn));
         }
         $rv->add($oDGR);
     }
     return $rv;
 }