/**
* XML Handler
*
* @param string $db database name
* @param string $table table name
* @param string $crlf line separator
* @param array $aliases Aliases of db/table/columns
*
* @return string containing XML code lines, separated by "\n"
*/
private function _handleNHibernateXMLBody($db, $table, $crlf, $aliases = array())
{
$db_alias = $db;
$table_alias = $table;
$this->initAlias($aliases, $db_alias, $table_alias);
$lines = array();
$lines[] = '<?xml version="1.0" encoding="utf-8" ?' . '>';
$lines[] = '<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" ' . 'namespace="' . ExportCodegen::cgMakeIdentifier($db_alias) . '" ' . 'assembly="' . ExportCodegen::cgMakeIdentifier($db_alias) . '">';
$lines[] = ' <class ' . 'name="' . ExportCodegen::cgMakeIdentifier($table_alias) . '" ' . 'table="' . ExportCodegen::cgMakeIdentifier($table_alias) . '">';
$result = $GLOBALS['dbi']->query(sprintf("DESC %s.%s", PMA\libraries\Util::backquote($db), PMA\libraries\Util::backquote($table)));
if ($result) {
while ($row = $GLOBALS['dbi']->fetchRow($result)) {
$col_as = $this->getAlias($aliases, $row[0], 'col', $db, $table);
if (!empty($col_as)) {
$row[0] = $col_as;
}
$tableProperty = new TableProperty($row);
if ($tableProperty->isPK()) {
$lines[] = $tableProperty->formatXml(' <id name="#ucfirstName#" type="#dotNetObjectType#"' . ' unsaved-value="0">' . "\n" . ' <column name="#name#" sql-type="#type#"' . ' not-null="#notNull#" unique="#unique#"' . ' index="PRIMARY"/>' . "\n" . ' <generator class="native" />' . "\n" . ' </id>');
} else {
$lines[] = $tableProperty->formatXml(' <property name="#ucfirstName#"' . ' type="#dotNetObjectType#">' . "\n" . ' <column name="#name#" sql-type="#type#"' . ' not-null="#notNull#" #indexName#/>' . "\n" . ' </property>');
}
}
$GLOBALS['dbi']->freeResult($result);
}
$lines[] = ' </class>';
$lines[] = '</hibernate-mapping>';
return implode($crlf, $lines);
}