Beispiel #1
0
//-----------------------------------------------------------
void Tipo::adicionarAtributo(Parametro atrib)
{
 //O atributo não pode ter o nome vazio nem tipo nulo
 if(atrib.obterNome()=="" || atrib.obterTipo()==TipoPgSQL::nulo)
  throw Excecao(ERR_PGMODELER_INSATRIBTIPOINV,__PRETTY_FUNCTION__,__FILE__,__LINE__);
 else if(TipoPgSQL::obterIndiceTipoUsuario(this->obterNome(true), this) == !atrib.obterTipo())
  throw Excecao(Excecao::obterMensagemErro(ERR_PGMODELER_TIPOUSRAUTOREF).arg(this->obterNome(true)),
                ERR_PGMODELER_TIPOUSRAUTOREF,__PRETTY_FUNCTION__,__FILE__,__LINE__);
 //Verifica se o atributo com mesmo nome já não foi inserido no tipo
 else if(atributoExiste(atrib.obterNome()))
  throw Excecao(ERR_PGMODELER_INSATRIBTIPODUPLIC,__PRETTY_FUNCTION__,__FILE__,__LINE__);

 atributos.push_back(atrib);
}
Beispiel #2
0
//----------------------------------------------------------
void TipoWidget::manipularAtributo(int res)
{
 int lin;
 Parametro param;

 //Obtém a linha selecionada da tabela.
 lin=tab_atributos->obterLinhaSelecionada();

 //Caso o usuário clique no botão 'aplicar' da janela de conf. de parâmetro
 if(res==QDialog::Accepted)
 {
  //Obtém o parâmetro configurado
  param=parametro_wgt->obterParametro();
  //Insere-o na tabela de atributos
  tab_atributos->definirTextoCelula(QString::fromUtf8(param.obterNome()), lin, 0);
  tab_atributos->definirTextoCelula(QString::fromUtf8(*param.obterTipo()), lin, 1);
  tab_atributos->definirDadoLinha(QVariant::fromValue<Parametro>(param), lin);
 }
 //Caso o usuário clique no botão 'cancelar' da janela de conf. de parâmetro
 else if(res==QDialog::Rejected)
 {
  //Remove a última linha da tabela quando se tratar de adição de novo parâmetro
  if(tab_atributos->obterTextoCelula(lin,0).isEmpty())
   tab_atributos->removerLinha(lin);
 }
}
Beispiel #3
0
//----------------------------------------------------------
void FuncaoWidget::exibirDadosParametro(Parametro param, TabelaObjetosWidget *tab, unsigned idx_lin)
{
 if(tab)
 {
  QString str_aux;

  /* Para as duas tabelas (tab_parametros ou tab_retorno) as duas primeiras colunas
     são destinadas, respectivamente, ao nome e tipo do parâmetro */
  tab->definirTextoCelula(QString::fromUtf8(param.obterNome()),idx_lin,0);
  tab->definirTextoCelula(QString::fromUtf8(*param.obterTipo()),idx_lin,1);

  /* Armazena na linha da tabela uma cópia do tipo do parâmetro.
      Isso é usado pelo método obterParametro() quando o usuário
      solicita obter um parâmetro a partir de um a linha da tabela */
  tab->definirDadoLinha(QVariant::fromValue<TipoPgSQL>(param.obterTipo()), idx_lin);

  /* Caso a tabela passada seja a de parâmetro configura as demais
     colunas com os demais atributos do parâmetro */
  if(tab==tab_parametros)
  {
   //Exibe se o parâmetro é de entrada/saída
   if(param.parametroEntrada()) str_aux="IN";
   if(param.parametroSaida()) str_aux+="OUT";
   tab->definirTextoCelula(str_aux,idx_lin,2);

   //Exibe o valor padrão do parâmetro
   tab->definirTextoCelula(QString::fromUtf8(param.obterValorPadrao()),idx_lin,3);
  }
 }
}
Beispiel #4
0
//-----------------------------------------------------------
void Tipo::definirAtributoElementos(unsigned tipo_def)
{
 Parametro param;
 QString str_elem;
 unsigned i, qtd;

 qtd=Tipo::atributos.size();
 for(i=0; i < qtd; i++)
 {
  param=Tipo::atributos[i];

  if(tipo_def==ParserEsquema::DEFINICAO_SQL)
  {
   str_elem+=param.obterNome() + " " + (*param.obterTipo());
   if(i < (qtd-1)) str_elem+=",";
  }
  else
  {
   str_elem+=param.obterDefinicaoObjeto(tipo_def);
  }
 }

 ObjetoBase::atributos[AtributosParsers::ELEMENTOS]=str_elem;
}
Beispiel #5
0
//----------------------------------------------------------
void TipoWidget::definirAtributos(ModeloBD *modelo, ListaOperacoes *lista_op, Tipo *tipo)
{
 TipoPgSQL tp_copia, tp_elem;
 unsigned conf_tipo, i, qtd;
 Parametro param;

 //Conecta o método de manipulação de atributos ao formulário de parâmetros
 connect(parametro_wgt, SIGNAL(finished(int)), this, SLOT(manipularAtributo(int)));

 //Define os atributos do formulários e da janela pai
 ObjetoBaseWidget::definirAtributos(modelo, lista_op, tipo);

 //Define o modelo de dados de referência dos seletores de função
 for(i=Tipo::FUNCAO_INPUT; i <= Tipo::FUNCAO_ANALYZE; i++)
  sel_funcoes[i]->definirModelo(modelo);

 //Caso o tipo esteja especificado
 if(tipo)
 {
  //Obtém a configuração do mesmo
  conf_tipo=tipo->obterConfiguracao();

  //Caso o tipo seja composto
  if(conf_tipo==Tipo::TIPO_COMPOSTO)
  {
   //Marca o radiobox no formulário que indica o tipo composto
   composto_rb->setChecked(true);

   /* Desabilita os sinais da tabela de atributos para inserção
      de todos os atributos do tipo sem disparar sinais e executar slots */
   tab_atributos->blockSignals(true);

   //Obtém a quantidade de atributos do tipo
   qtd=tipo->obterNumAtributos();

   /* Preenche a tabela de atributos, obtendo cada um e
      exibindo os dados na tabela */
   for(i=0; i < qtd; i++)
   {
    //Adiciona uma linha na tabela
    tab_atributos->adicionarLinha();
    //Obtém um atributo do tipo
    param=tipo->obterAtributo(i);
    //Exibe os dados do atributo na tabela
    tab_atributos->definirTextoCelula(QString::fromUtf8(param.obterNome()), i, 0);
    tab_atributos->definirTextoCelula(QString::fromUtf8(*param.obterTipo()), i, 1);
    //Armazena o próprio atributo na linha da tabela
    tab_atributos->definirDadoLinha(QVariant::fromValue<Parametro>(param), i);
   }

   //Desbloqueia os sinais da tabela de atributos
   tab_atributos->blockSignals(false);
   //Limpa a seleção da tabela
   tab_atributos->limparSelecao();
  }
  //Caso o tipo seja enumeração
  else if(conf_tipo==Tipo::TIPO_ENUMERACAO)
  {
   //Marca o campo respectivo no formulário
   enumeracao_rb->setChecked(true);

   /* Desabilita os sinais da tabela de enumerações para inserção
     de todos as enumerações do tipo sem disparar sinais e executar slots */
   tab_enumeracoes->blockSignals(true);
   qtd=tipo->obterNumEnumeracoes();

   //Insere todos as enumerações do tipo na tabela
   for(i=0; i < qtd; i++)
   {
    tab_enumeracoes->adicionarLinha();
    tab_enumeracoes->definirTextoCelula(tipo->obterEnumeracao(i), i, 0);
   }
   //Desbloqueia os sinais da tabela de enumerações
   tab_enumeracoes->blockSignals(false);
   tab_enumeracoes->limparSelecao();
  }
  //Caso o tipo seja base
  else
  {
   //Marca o radiobox no formulário que indica o tipo base
   tipo_base_rb->setChecked(true);

   //Obtém o tipo cópia do tipo
   tp_copia=tipo->obterTipoCopia();
   //Obtém o tipo de elemento do tipo
   tp_elem=tipo->obterElemento();

   /* Configura os campos do formulário relacionados ao tipo base
      com os valores definidos na instância de tipo passada */
   comp_int_sb->setValue(tipo->obterCompInterno());
   por_valor_chk->setChecked(tipo->passadoPorValor());
   preferido_chk->setChecked(tipo->tipoPreferido());
   delimitador_edt->setText(QString(tipo->obterDelimitador()));
   valor_padrao_edt->setText(QString::fromUtf8(tipo->obterValorPadrao()));
   categoria_cmb->setCurrentIndex(categoria_cmb->findText(~tipo->obterCategoria()));
   armazenamento_cmb->setCurrentIndex(armazenamento_cmb->findText(~tipo->obterArmazenamento()));
   alinhamento_cmb->setCurrentIndex(alinhamento_cmb->findText(~tipo->obterAlinhamento()));

   //Atribui aos seletores de funções todas as funções configuradas na instância
   for(i=Tipo::FUNCAO_INPUT; i <= Tipo::FUNCAO_ANALYZE; i++)
    sel_funcoes[i]->definirObjeto(tipo->obterFuncao(i));
  }
 }

 //Configura o widget de tipo de cópia com o tipo obtido da instância de tipo
 tipo_copia->definirAtributos(tp_copia, modelo);
 //Configura o widget de tipo de elemento com o tipo obtido da instância de tipo
 tipo_elemento->definirAtributos(tp_elem, modelo);
}