Skip to content
This repository
Browse code

DatabaseModel class refactoring checkpoint.

  • Loading branch information...
commit 14fd04984cc8966dbd3023da181d8550a1072a56 1 parent ebf66c0
Raphael Araújo e Silva rkhaotix authored

Showing 1 changed file with 27 additions and 112 deletions. Show diff stats Hide diff stats

  1. +27 112 libpgmodeler/src/databasemodel.cpp
139 libpgmodeler/src/databasemodel.cpp
@@ -65,7 +65,6 @@ void DatabaseModel::setAuthor(const QString &author)
65 65
66 66 vector<BaseObject *> *DatabaseModel::getObjectList(ObjectType obj_type)
67 67 {
68   - //Retorna a referencia da lista equivalente ao tipo passado
69 68 if(obj_type==OBJ_TEXTBOX)
70 69 return(&textboxes);
71 70 else if(obj_type==OBJ_TABLE)
@@ -117,9 +116,6 @@ QString DatabaseModel::validateObjectDefinition(BaseObject *object, unsigned def
117 116
118 117 if(object)
119 118 {
120   - /* Verifica se a definição SQL/XML do objeto é valida por intermédio
121   - do parser de esquemas, o qual retorna um erro quando existe
122   - algum problema com a definição sql do objeto */
123 119 try
124 120 {
125 121 obj_type=object->getObjectType();
@@ -133,15 +129,12 @@ QString DatabaseModel::validateObjectDefinition(BaseObject *object, unsigned def
133 129 }
134 130 catch(Exception &e)
135 131 {
136   - /* Caso o código do erro seja de atributo obrigatório não preenchido,
137   - indica que a def. SQL não é válida */
138 132 if(e.getErrorType()==ERR_UNDEF_ATTRIB_VALUE)
139 133 throw Exception(Exception::getErrorMessage(ERR_ASG_OBJ_INV_DEFINITION)
140 134 .arg(QString::fromUtf8(object->getName(true)))
141 135 .arg(object->getTypeName()),
142 136 ERR_ASG_OBJ_INV_DEFINITION,__PRETTY_FUNCTION__,__FILE__,__LINE__,&e);
143 137 else
144   - //Caso o parser dispare os demais erros, apenas redireciona o erro
145 138 throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__,&e);
146 139 }
147 140 }
@@ -271,10 +264,8 @@ void DatabaseModel::removeObject(unsigned obj_idx, ObjectType obj_type)
271 264 obj_type==OBJ_RULE ||
272 265 obj_type==BASE_OBJECT || obj_type==BASE_RELATIONSHIP ||
273 266 obj_type==OBJ_DATABASE)
274   - //Caso o tipo esteja fora do conjunto, dispara uma exceção
275 267 throw Exception(ERR_REM_OBJ_INVALID_TYPE,__PRETTY_FUNCTION__,__FILE__,__LINE__);
276 268
277   - //Caso o objeto a ser removido seja uma tabela pai e seu índice seja válido
278 269 else
279 270 {
280 271 vector<BaseObject *> *obj_list=NULL;
@@ -339,9 +330,6 @@ void DatabaseModel::__addObject(BaseObject *object, int obj_idx)
339 330
340 331 obj_type=object->getObjectType();
341 332
342   - /* Caso o objeto seja um espaço de tabela verifica se não existem
343   - outro espaço de tabela que esteja apontando para o mesmo diretório
344   - o que é considerado erro */
345 333 if(obj_type==OBJ_TABLESPACE)
346 334 {
347 335 Tablespace *tabspc=NULL, *aux_tabspc=NULL;
@@ -355,7 +343,8 @@ void DatabaseModel::__addObject(BaseObject *object, int obj_idx)
355 343 {
356 344 aux_tabspc=dynamic_cast<Tablespace *>(*itr);
357 345
358   - //Caso o diretório dos mesmos sejam iguais um erro é disparado
  346 + /* Raises an error if the object to be added is a tablespace and
  347 + there is some other tablespace pointing to the same directory */
359 348 if(tabspc->getDirectory()==aux_tabspc->getDirectory())
360 349 {
361 350 throw Exception(Exception::getErrorMessage(ERR_ASG_DUP_TABLESPACE_DIR)
@@ -368,7 +357,7 @@ void DatabaseModel::__addObject(BaseObject *object, int obj_idx)
368 357 }
369 358 }
370 359
371   - //Verifica se o objeto a ser inserido já existe no modelo, buscando através do nome.
  360 + //Raises an error if there is an object with the same name
372 361 if((obj_type!=OBJ_FUNCTION && getObject(object->getName(true), obj_type, idx)) ||
373 362 (obj_type==OBJ_FUNCTION &&
374 363 getObject(dynamic_cast<Function *>(object)->getSignature(), obj_type, idx)))
@@ -386,7 +375,6 @@ void DatabaseModel::__addObject(BaseObject *object, int obj_idx)
386 375
387 376 try
388 377 {
389   - //Valida a definição sql do objeto
390 378 DatabaseModel::validateObjectDefinition(object, SchemaParser::SQL_DEFINITION);
391 379 }
392 380 catch(Exception &e)
@@ -394,10 +382,8 @@ void DatabaseModel::__addObject(BaseObject *object, int obj_idx)
394 382 throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__,&e);
395 383 }
396 384
397   - //Obtém a lista de objetos do tipo do novo objeto
398 385 obj_list=getObjectList(object->getObjectType());
399 386
400   - //Insere o novo elemento na lista
401 387 if(obj_idx < 0 || obj_idx >= static_cast<int>(obj_list->size()))
402 388 obj_list->push_back(object);
403 389 else
@@ -413,7 +399,6 @@ void DatabaseModel::__addObject(BaseObject *object, int obj_idx)
413 399 obj_list->push_back(object);
414 400 }
415 401
416   - //Emite um sinal indicando a adição do objeto no modelo
417 402 if(!signalsBlocked())
418 403 emit s_objectAdded(object);
419 404 }
@@ -428,14 +413,12 @@ void DatabaseModel::__removeObject(BaseObject *object, int obj_idx)
428 413 ObjectType obj_type;
429 414
430 415 obj_type=object->getObjectType();
431   -
432   - //Obtém a lista de acordo com o tipo do objeto
433 416 obj_list=getObjectList(obj_type);
  417 +
434 418 if(!obj_list)
435 419 throw Exception(ERR_OBT_OBJ_INVALID_TYPE,__PRETTY_FUNCTION__,__FILE__,__LINE__);
436 420 else
437 421 {
438   - //Caso o índice do objeto não foi especificado o método tenta descobrí-lo
439 422 if(obj_idx < 0)
440 423 {
441 424 if(obj_type!=OBJ_FUNCTION && obj_type!=OBJ_OPERATOR)
@@ -448,13 +431,11 @@ void DatabaseModel::__removeObject(BaseObject *object, int obj_idx)
448 431
449 432 if(obj_idx >= 0)
450 433 {
451   - //Remove as permissões do objeto
452 434 removePermissions(object);
453 435 obj_list->erase(obj_list->begin() + obj_idx);
454 436 }
455 437 }
456 438
457   - //Emite um sinal indicando que o objeto foi removido
458 439 if(!signalsBlocked())
459 440 emit s_objectRemoved(object);
460 441 }
@@ -465,11 +446,8 @@ vector<BaseObject *> DatabaseModel::getObjects(ObjectType obj_type, BaseObject *
465 446 vector<BaseObject *> *obj_list=NULL, sel_list;
466 447 vector<BaseObject *>::iterator itr, itr_end;
467 448
468   - //Obtém a lista de acordo com o tipo do objeto
469 449 obj_list=getObjectList(obj_type);
470 450
471   - /* Caso a lista não exista indica que foi passado um tipo inválido
472   - de objeto, dessa forma será retornado um erro */
473 451 if(!obj_list)
474 452 throw Exception(ERR_OBT_OBJ_INVALID_TYPE,__PRETTY_FUNCTION__,__FILE__,__LINE__);
475 453
@@ -495,16 +473,12 @@ BaseObject *DatabaseModel::getObject(const QString &name, ObjectType obj_type, i
495 473 int count;
496 474 QString aux_name, aux_name1;
497 475
498   - //Obtém a lista de acordo com o tipo do objeto
499 476 obj_list=getObjectList(obj_type);
500 477
501   - /* Caso a lista não exista indica que foi passado um tipo inválido
502   - de objeto, dessa forma será retornado um erro */
503 478 if(!obj_list)
504 479 throw Exception(ERR_OBT_OBJ_INVALID_TYPE,__PRETTY_FUNCTION__,__FILE__,__LINE__);
505 480 else
506 481 {
507   - //Obtém as referências para o inicio e o fim da lista
508 482 itr=obj_list->begin();
509 483 itr_end=obj_list->end();
510 484 obj_idx=-1;
@@ -519,8 +493,6 @@ BaseObject *DatabaseModel::getObject(const QString &name, ObjectType obj_type, i
519 493
520 494 while(itr!=itr_end && !found)
521 495 {
522   - /* Caso o nome do objeto atual seja igual ao nome passado
523   - o while será quebrado */
524 496 aux_name=(*itr)->getName(true);
525 497 found=(aux_name==aux_name1);
526 498 if(!found) itr++;
@@ -532,11 +504,8 @@ BaseObject *DatabaseModel::getObject(const QString &name, ObjectType obj_type, i
532 504
533 505 while(itr!=itr_end && !found)
534 506 {
535   - /* Caso especial para função/oeradores: para saber se uma função/operador está duplicada
536   - deve-se verificar a assinatura da mesma e não apenas o nome, pois
537   - o PostgreSQL permite a sobrecarga de funções e operadores. Neste caso especial
538   - o parâmetro informado ao método deve ser uma assinatura de função/operador
539   - e não seu nome */
  507 + /* Special case for functions/operators: to check duplicity the signature must be
  508 + compared and not only the name */
540 509 if(obj_type==OBJ_FUNCTION)
541 510 signature=dynamic_cast<Function *>(*itr)->getSignature();
542 511 else
@@ -549,7 +518,6 @@ BaseObject *DatabaseModel::getObject(const QString &name, ObjectType obj_type, i
549 518
550 519 if(found)
551 520 {
552   - //Obtém a referência do objeto e calcula seu índice
553 521 object=(*itr);
554 522 obj_idx=(itr-obj_list->begin());
555 523 }
@@ -563,15 +531,10 @@ BaseObject *DatabaseModel::getObject(unsigned obj_idx, ObjectType obj_type)
563 531 {
564 532 vector<BaseObject *> *obj_list=NULL;
565 533
566   - //Obtém a lista de acordo com o tipo do objeto
567 534 obj_list=getObjectList(obj_type);
568 535
569   - /* Caso a lista não exista indica que foi passado um tipo inválido
570   - de objeto, dessa forma será retornado um erro */
571 536 if(!obj_list)
572 537 throw Exception(ERR_OBT_OBJ_INVALID_TYPE,__PRETTY_FUNCTION__,__FILE__,__LINE__);
573   - /* Caso o índice do objeto a ser obtido esteja fora do
574   - intervalo de elementos da lista */
575 538 else if(obj_idx >= obj_list->size())
576 539 throw Exception(ERR_REF_OBJ_INV_INDEX,__PRETTY_FUNCTION__,__FILE__,__LINE__);
577 540 else
@@ -582,11 +545,8 @@ unsigned DatabaseModel::getObjectCount(ObjectType obj_type)
582 545 {
583 546 vector<BaseObject *> *obj_list=NULL;
584 547
585   - //Obtém a lista de acordo com o tipo do objeto
586 548 obj_list=getObjectList(obj_type);
587 549
588   - /* Caso a lista não exista indica que foi passado um tipo inválido
589   - de objeto, dessa forma será retornado um erro */
590 550 if(!obj_list)
591 551 throw Exception(ERR_OBT_OBJ_INVALID_TYPE,__PRETTY_FUNCTION__,__FILE__,__LINE__);
592 552 else
@@ -680,11 +640,6 @@ void DatabaseModel::setProtected(bool value)
680 640
681 641 void DatabaseModel::destroyObjects(void)
682 642 {
683   - /* A ordem de destruição de objetos deve ser seguida de forma que
684   - os objetos menos dependidos sejam destruídos primeiro para
685   - evitar falha de segmentação onde, no momento da destruição de algum
686   - objeto, um dos objetos mais dependendidos sejam referenciados porém
687   - ja foram destruídos anteriormente. */
688 643 ObjectType types[20]={
689 644 BASE_RELATIONSHIP,OBJ_RELATIONSHIP, OBJ_TABLE, OBJ_VIEW,
690 645 OBJ_AGGREGATE, OBJ_OPERATOR,
@@ -721,9 +676,7 @@ void DatabaseModel::addTable(Table *table, int obj_idx)
721 676 try
722 677 {
723 678 __addObject(table, obj_idx);
724   - /* Ao ser inserido uma nova tabela a mesma tem
725   - seu nome é adicionad lista de tipos válidos
726   - do PostgreSQL */
  679 +
727 680 PgSQLType::addUserType(table->getName(true), table, this, UserTypeConfig::TABLE_TYPE);
728 681
729 682 updateTableFKRelationships(table);
@@ -746,10 +699,10 @@ void DatabaseModel::removeTable(Table *table, int obj_idx)
746 699 vector<BaseObject *> refs;
747 700 QString str_aux;
748 701
749   - //Obtém as referênca tabela
  702 + //Get the table references
750 703 getObjectReferences(table, refs, true);
751 704
752   - //Caso a tabela esteja sendo referenciada, a mesma não pode ser removida
  705 + //If there are objects referencing the table
753 706 if(!refs.empty())
754 707 {
755 708 ErrorType err_type;
@@ -757,8 +710,7 @@ void DatabaseModel::removeTable(Table *table, int obj_idx)
757 710
758 711 while(i < count)
759 712 {
760   - /* Formatando a mensagem de erro com o nome e tipo do objeto que referencia e
761   - do objeto referenciado */
  713 + //Raises an error indicating the object that is referencing the table
762 714 if(!dynamic_cast<TableObject *>(refs[i]))
763 715 {
764 716 err_type=ERR_REM_DIRECT_REFERENCE;
@@ -772,21 +724,18 @@ void DatabaseModel::removeTable(Table *table, int obj_idx)
772 724 }
773 725 else
774 726 {
775   - BaseObject *obj_ref_pai=dynamic_cast<TableObject *>(refs[i])->getParentTable();
  727 + BaseObject *ref_obj_parent=dynamic_cast<TableObject *>(refs[i])->getParentTable();
776 728
777   - /* Um erro só é disparado para uma objetos de tabela quando este
778   - não tem como pai a própria tabela a ser removida */
779   - if(obj_ref_pai != table)
  729 + if(ref_obj_parent != table)
780 730 {
781   - //Formata a mensagem caso exista uma referência indireta ao objeto a ser removido
782 731 err_type=ERR_REM_INDIRECT_REFERENCE;
783 732 str_aux=QString(Exception::getErrorMessage(err_type))
784 733 .arg(table->getName(true))
785 734 .arg(table->getTypeName())
786 735 .arg(refs[0]->getName(true))
787 736 .arg(refs[0]->getTypeName())
788   - .arg(obj_ref_pai->getName(true))
789   - .arg(obj_ref_pai->getTypeName());
  737 + .arg(ref_obj_parent->getName(true))
  738 + .arg(ref_obj_parent->getTypeName());
790 739
791 740 throw Exception(str_aux, err_type,__PRETTY_FUNCTION__,__FILE__,__LINE__);
792 741 }
@@ -797,12 +746,7 @@ void DatabaseModel::removeTable(Table *table, int obj_idx)
797 746 }
798 747
799 748 __removeObject(table, obj_idx);
800   -
801   - /* Ao ser removido do modelo a sequencia tem
802   - seu nome removido da lista de tipos válidos do PostgreSQL */
803 749 PgSQLType::removeUserType(table->getName(true), table);
804   -
805   - //Remove qualquer relacionamento gerado por chave estrangeira
806 750 updateTableFKRelationships(table);
807 751 }
808 752 }
@@ -812,9 +756,6 @@ void DatabaseModel::addSequence(Sequence *sequence, int obj_idx)
812 756 try
813 757 {
814 758 __addObject(sequence, obj_idx);
815   - /* Ao ser inserido uma nova sequencia a mesma tem
816   - seu nome é adicionad lista de tipos válidos
817   - do PostgreSQL */
818 759 PgSQLType::addUserType(sequence->getName(true), sequence, this, UserTypeConfig::SEQUENCE_TYPE);
819 760 }
820 761 catch(Exception &e)
@@ -834,9 +775,6 @@ void DatabaseModel::removeSequence(Sequence *sequence, int obj_idx)
834 775 {
835 776 removeUserType(sequence, obj_idx);
836 777 __removeObject(sequence, obj_idx);
837   - /* Ao ser removido do modelo a sequencia tem
838   - seu nome removido da lista de tipos válidos do PostgreSQL */
839   - //TipoPgSQL::removerTipoUsuario(sequencia->getName(true), sequencia);
840 778 }
841 779 }
842 780
@@ -889,7 +827,7 @@ void DatabaseModel::updateTableFKRelationships(Table *table)
889 827 itr=fks.begin();
890 828 itr_end=fks.end();
891 829
892   - //Caso a tabela foi excluida deve-se remove os relacionamentos
  830 + //Case the table is removed the fk relationship must be removed too
893 831 if(!fks.empty() && getObjectIndex(table) < 0)
894 832 {
895 833 while(itr!=itr_end)
@@ -904,31 +842,27 @@ void DatabaseModel::updateTableFKRelationships(Table *table)
904 842 removeRelationship(rel);
905 843 }
906 844 }
907   - //Atualiza os relacionamentos
  845 + //Update the relationships
908 846 else
909 847 {
910   - /* Remove os relacionamentos os quais estão inválidos, ou seja,
911   - a tabela do relacionametno não está sendo mais referenciada pela visao */
  848 + /* First remove the invalid relationships (the foreign key that generates the
  849 + relationship no longer exists) */
912 850 itr1=base_relationships.begin();
913 851 itr1_end=base_relationships.end();
914 852
915   - //Varre a lista de relacionamentos tabela-visão
916 853 idx=0;
917 854 while(itr1!=itr1_end)
918 855 {
919   - //Obtém a referência ao relacionamento
920 856 rel=dynamic_cast<BaseRelationship *>(*itr1);
921 857
922   - //Caso a visão seja um dos elementos do relacionamento
923 858 if(rel->getRelationshipType()==BaseRelationship::RELATIONSHIP_FK &&
924 859 rel->getTable(BaseRelationship::SRC_TABLE)==table)
925 860 {
926 861 ref_tab=dynamic_cast<Table *>(rel->getTable(BaseRelationship::DST_TABLE));
927 862
928   - //Caso a visão não referencie mais a tabela
  863 + //Removes the relationship if the table does'nt references the 'ref_tab'
929 864 if(!table->isReferTableOnForeignKey(ref_tab))
930 865 {
931   - //Remove o relacionamento
932 866 removeRelationship(rel);
933 867 itr1=base_relationships.begin() + idx;
934 868 itr1_end=base_relationships.end();
@@ -944,15 +878,16 @@ void DatabaseModel::updateTableFKRelationships(Table *table)
944 878 }
945 879 }
946 880
  881 + //Creating the relationships from the foreign keys
947 882 while(itr!=itr_end)
948 883 {
949 884 fk=(*itr);
950 885 ref_tab=dynamic_cast<Table *>(fk->getReferencedTable());
951 886 itr++;
952 887
953   - /* Caso a tabela exista, um relacionamento tabela-visão será automaticamente criado
954   - (caso este já não existe) e inserido no modelo */
  888 + //Only creates the relationship if does'nt exist one between the tables
955 889 rel=getRelationship(table, ref_tab);
  890 +
956 891 if(!rel)
957 892 {
958 893 rel=new BaseRelationship(BaseRelationship::RELATIONSHIP_FK,
@@ -976,23 +911,18 @@ void DatabaseModel::updateViewRelationships(View *view)
976 911 throw Exception(ERR_OPR_NOT_ALOC_OBJECT,__PRETTY_FUNCTION__,__FILE__,__LINE__);
977 912 else if(getObjectIndex(view) < 0)
978 913 {
979   - /* Quando uma visão é excluída, os relacionamentos tabela-visão os quais
980   - possuem a visão como um dos elementos serão excluídos automaticamente */
  914 + //Remove all the relationship related to the view when this latter no longer exists
981 915 itr=base_relationships.begin();
982 916 itr_end=base_relationships.end();
983 917
984   - //Varre a lista de relacionamentos tabela-visão
985 918 idx=0;
986 919 while(itr!=itr_end)
987 920 {
988   - //Obtém a referência ao relacionamento
989 921 rel=dynamic_cast<BaseRelationship *>(*itr);
990 922
991   - //Caso a visão seja um dos elementos do relacionamento
992 923 if(rel->getTable(BaseRelationship::SRC_TABLE)==view ||
993 924 rel->getTable(BaseRelationship::DST_TABLE)==view)
994 925 {
995   - //Remove o relacionamento
996 926 removeRelationship(rel);
997 927 itr=base_relationships.begin() + idx;
998 928 itr_end=base_relationships.end();
@@ -1005,32 +935,26 @@ void DatabaseModel::updateViewRelationships(View *view)
1005 935 }
1006 936 else
1007 937 {
1008   - /* Remove os relacionamentos visão-tabela os quais estão inválidos, ou seja,
1009   - a tabela do relacionametno não está sendo mais referenciada pela visao */
  938 + /* Remove the relationships between tables and the view
  939 + when this latter doesn't reference the first */
1010 940 itr=base_relationships.begin();
1011 941 itr_end=base_relationships.end();
1012 942
1013   - //Varre a lista de relacionamentos tabela-visão
1014 943 idx=0;
1015 944 while(itr!=itr_end)
1016 945 {
1017   - //Obtém a referência ao relacionamento
1018 946 rel=dynamic_cast<BaseRelationship *>(*itr);
1019 947
1020   - //Caso a visão seja um dos elementos do relacionamento
1021 948 if(rel->getTable(BaseRelationship::SRC_TABLE)==view ||
1022 949 rel->getTable(BaseRelationship::DST_TABLE)==view)
1023 950 {
1024   - //Obtém a tabela do relacionamento
1025 951 if(rel->getTable(BaseRelationship::SRC_TABLE)->getObjectType()==OBJ_TABLE)
1026 952 tab=dynamic_cast<Table *>(rel->getTable(BaseRelationship::SRC_TABLE));
1027 953 else
1028 954 tab=dynamic_cast<Table *>(rel->getTable(BaseRelationship::DST_TABLE));
1029 955
1030   - //Caso a visão não referencie mais a tabela
1031 956 if(!view->isReferencingTable(tab))
1032 957 {
1033   - //Remove o relacionamento
1034 958 removeRelationship(rel);
1035 959 itr=base_relationships.begin() + idx;
1036 960 itr_end=base_relationships.end();
@@ -1046,9 +970,7 @@ void DatabaseModel::updateViewRelationships(View *view)
1046 970 }
1047 971 }
1048 972
1049   - /* Cria automaticamente os relacionamentos entre as tabelas e a visão.
1050   - As tabelas referenciadas são obtidas das referências na parte SELECT
1051   - da consulta que gera a visão */
  973 + //Creates the relationships from the view references
1052 974 ref_count=view->getReferenceCount(Reference::SQL_REFER_SELECT);
1053 975
1054 976 for(i=0; i < ref_count; i++)
@@ -1056,8 +978,6 @@ void DatabaseModel::updateViewRelationships(View *view)
1056 978 ref=view->getReference(i, Reference::SQL_REFER_SELECT);
1057 979 tab=ref.getTable();
1058 980
1059   - /* Caso a tabela exista, um relacionamento tabela-visão será automaticamente criado
1060   - (caso este já não existe) e inserido no modelo */
1061 981 rel=getRelationship(view,tab);
1062 982 if(tab && !rel)
1063 983 {
@@ -1076,22 +996,17 @@ void DatabaseModel::disconnectRelationships(void)
1076 996 Relationship *rel=NULL;
1077 997 vector<BaseObject *>::reverse_iterator ritr_rel, ritr_rel_end;
1078 998
1079   - /* Varre a lista geral de relacionamentos
1080   - do último ao primeiro, desconectando os últimos relacionamentos primeiro
1081   - para evitar falha de segmentação */
  999 + //The relationships must be disconnected from the last to the first
1082 1000 ritr_rel=relationships.rbegin();
1083 1001 ritr_rel_end=relationships.rend();
1084 1002
1085 1003 while(ritr_rel!=ritr_rel_end)
1086 1004 {
1087   - //Converte o ponteiro de relacionamento da conexão para a classe base de relacionametno
1088 1005 base_rel=dynamic_cast<BaseRelationship *>(*ritr_rel);
1089 1006 ritr_rel++;
1090 1007
1091   - //Caso o relacionamento obtido da lista seja entre tabelas
1092 1008 if(base_rel->getObjectType()==OBJ_RELATIONSHIP)
1093 1009 {
1094   - //Converte o objeto para relacionamento tabela-tabela
1095 1010 rel=dynamic_cast<Relationship *>(base_rel);
1096 1011 rel->disconnectRelationship();
1097 1012 }

0 comments on commit 14fd049

Please sign in to comment.
Something went wrong with that request. Please try again.