/**
  * Método de montagem da tabela
  */
 function montarTabela()
 {
     $json = new json();
     $conexao = conexao::criar();
     $persistente = new PUtilitario($conexao);
     $desc = $persistente->lerTabela($_GET['tabela']);
     $sequences = $persistente->lerSequenciasDoBanco($_GET['tabela']);
     $sequences = array_merge(array('' => ' '), $sequences);
     if ($sequences) {
         $this->visualizacao->nomeSequence = VComponente::montar('select', 'nomeSequence', null, null, $sequences);
     }
     $mapNegocio['bd']['nomeTabela'] = $_GET['tabela'];
     $mapNegocio['bd']['nomeSequencia'] = '«Nome da sequência???»';
     $mapNegocio['bd']['chavePrimaria'] = '';
     $mapNegocio['bd']['ordem'] = array('1' => '');
     $mapNegocio['inter']['nome'] = '«Nome da entidade??»';
     $mapNegocio['inter']['titulo'] = '';
     $mapNegocio['inter']['tituloSistema'] = '';
     $mapNegocio['inter']['subtituloSistema'] = '';
     foreach ($desc as $indice => $campo) {
         $tipoDeDado = $campo['tipo_de_dado'];
         switch ($campo['tipo_de_dado']) {
             case 'numerico':
                 $campo['tamanho'] = $campo['tamanho'] > 30 ? 20 : $campo['tamanho'];
                 $componente = 'numerico';
                 break;
             case 'data':
                 $campo['tamanho'] = '';
                 $componente = 'data';
                 break;
             default:
                 $componente = 'caixa de entrada';
         }
         switch (true) {
             case $campo['campo_pk']:
                 $mapNegocio['bd']['chavePrimaria'] = $campo['campo_pk'];
                 $componente = 'oculto';
                 $chaveEstrangeira = false;
                 break;
             case $campo['campo_fk']:
                 $componente = 'caixa de combinacao';
                 $chaveEstrangeira = array('tabela' => $campo['esquema_fk'] . '.' . $campo['tabela_fk'], 'campo' => $campo['campo_fk']);
                 break;
             default:
                 $tipoDeDado = $campo['tipo_de_dado'] == 'numerico' ? 'tnumerico' : $campo['tipo_de_dado'];
                 $chaveEstrangeira = false;
         }
         $mapNegocio['entidade'][$indice]['negocio']['propriedade'] = str_replace(' ', '', ucwords(str_replace('_', ' ', $campo['campo'])));
         $mapNegocio['entidade'][$indice]['negocio']['propriedade'][0] = strtolower($mapNegocio['entidade'][$indice]['negocio']['propriedade'][0]);
         $mapNegocio['entidade'][$indice]['negocio']['tipo'] = $tipoDeDado;
         $mapNegocio['entidade'][$indice]['negocio']['campo'] = $campo['campo'];
         $mapNegocio['entidade'][$indice]['negocio']['obrigatorio'] = $campo['obrigatorio'] ? 'sim' : '';
         $mapNegocio['entidade'][$indice]['negocio']['indiceUnico'] = '';
         $mapNegocio['entidade'][$indice]['negocio']['dominio'] = '';
         $mapNegocio['entidade'][$indice]['negocio']['descritivo'] = '';
         $mapNegocio['entidade'][$indice]['negocio']['classeAssociativa'] = $chaveEstrangeira ? '«Classe de Negocio ???»' : '';
         $mapNegocio['entidade'][$indice]['negocio']['metodoLeitura'] = $chaveEstrangeira ? 'lerTodos' : '';
         $mapNegocio['entidade'][$indice]['controle']['componente'] = $componente;
         $mapNegocio['entidade'][$indice]['controle']['tamanho'] = '';
         $mapNegocio['entidade'][$indice]['controle']['tipo'] = $campo['tipo_de_dado'];
         $mapNegocio['entidade'][$indice]['controle']['obrigatorio'] = $campo['obrigatorio'] ? 'sim' : '';
         $mapNegocio['entidade'][$indice]['controle']['pesquisa'] = '';
         $mapNegocio['entidade'][$indice]['controle']['valores'] = array();
         $mapNegocio['entidade'][$indice]['controle']['classeAssociativa'] = $chaveEstrangeira ? 'Classe de Negocio ???' : '';
         $mapNegocio['entidade'][$indice]['controle']['metodoLeitura'] = $chaveEstrangeira ? 'lerTodos' : '';
         $mapNegocio['entidade'][$indice]['controle']['listagem'] = $campo['campo_pk'] ? '1' : '';
         $mapNegocio['entidade'][$indice]['controle']['hyperlink'] = $campo['campo_pk'] ? 'sim' : '';
         $mapNegocio['entidade'][$indice]['controle']['largura'] = $campo['campo_pk'] ? '10%' : '';
         $mapNegocio['entidade'][$indice]['controle']['ordem'] = $campo['campo_pk'] ? 1 : '';
         $mapNegocio['entidade'][$indice]['controle']['campoPersonalizado'] = '';
         $mapNegocio['entidade'][$indice]['persistente']['nome'] = $campo['campo'];
         $mapNegocio['entidade'][$indice]['persistente']['tipo'] = $tipoDeDado;
         $mapNegocio['entidade'][$indice]['persistente']['tamanho'] = $campo['tamanho'];
         $mapNegocio['entidade'][$indice]['persistente']['obrigatorio'] = '';
         $mapNegocio['entidade'][$indice]['persistente']['operadorDeBusca'] = 'igual';
         $mapNegocio['entidade'][$indice]['persistente']['chaveEstrangeira'] = $chaveEstrangeira;
         $mapNegocio['entidade'][$indice]['persistente']['ordem'] = $campo['campo_pk'] ? '1' : '';
         $mapNegocio['entidade'][$indice]['inter']['nome'] = ucfirst(str_replace('_', ' ', $campo['campo']));
         $mapNegocio['entidade'][$indice]['inter']['abreviacao'] = ucwords(str_replace('_', ' ', $campo['campo']));
         $mapNegocio['entidade'][$indice]['inter']['descricao'] = $campo['descricao'];
         $mapNegocio['entidade'][$indice]['inter']['dominio'] = '';
     }
     $this->visualizacao->dados = $json->pegarJson(array($mapNegocio));
     $this->visualizacao->campos = $mapNegocio;
     $this->visualizacao->acesso = 'Carga de tabela do banco';
     $this->visualizacao->travarSugestaoDeNomesPersistente = 'true';
 }