/**
  * Método inicial do controle
  */
 function inicial()
 {
     $this->entidade = $_GET;
     $arNome = explode(' ', strtolower($this->entidade['entidade']));
     $nome = array_shift($arNome);
     $arNome = array_map("ucFirst", $arNome);
     array_unshift($arNome, $nome);
     $this->nomeEntidade = implode('', $arNome);
     $this->nomeNegocio = "N{$this->nomeEntidade}";
     $xml = array();
     if (arquivo::legivel("{$this->nomeEntidade}/xml/entidade.xml")) {
         $xml['entidade'] = simplexml_load_file("{$this->nomeEntidade}/xml/entidade.xml");
     }
     if (arquivo::legivel("{$this->nomeEntidade}/xml/pt_BR.xml")) {
         $xml['inter'] = simplexml_load_file("{$this->nomeEntidade}/xml/pt_BR.xml");
     }
     $j = new json();
     echo $j->pegarJson($xml);
 }
 /**
  * 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';
 }