From 188cf8c12372dfd7a0a57db2e5d492797b24276d Mon Sep 17 00:00:00 2001 From: jfa Date: Wed, 3 Aug 2005 07:25:10 +0000 Subject: [PATCH] Fix application CRASH on load study with Post-Pro data from ASCII format --- src/VISU_I/VISU_Result_i.cc | 146 ++++++++++++++++++------------------ 1 file changed, 75 insertions(+), 71 deletions(-) diff --git a/src/VISU_I/VISU_Result_i.cc b/src/VISU_I/VISU_Result_i.cc index 742539ff..20594a77 100644 --- a/src/VISU_I/VISU_Result_i.cc +++ b/src/VISU_I/VISU_Result_i.cc @@ -26,39 +26,25 @@ #include "VISU_Result_i.hh" -#include "VISU_Prs3d_i.hh" -#include "VISU_ViewManager_i.hh" - #include "VISU_Convertor_impl.hxx" #include "VISU_CorbaMedConvertor.hxx" #include "VISU_PipeLine.hxx" -#include "VISU_Actor.h" -//#include "SVTK_ViewWindow.h" +#include "SUIT_ResourceMgr.h" -//#include "QAD_Desktop.h" -//#include "QAD_Application.h" -//#include "QAD_Study.h" -//#include "QAD_StudyFrame.h" -//#include "QAD_RightFrame.h" +#include "SALOME_Event.hxx" -#include "SUIT_ResourceMgr.h" #include "SALOMEDS_Tool.hxx" #include "HDFascii.hxx" +// QT Includes #include #include -#include -#include -//#include - -#include -#include +// VTK Includes #include -#include -#include +// OCCT Includes #include using namespace VISU; @@ -70,42 +56,46 @@ static int MYDEBUG = 0; static int MYDEBUG = 0; #endif -VISU::Result_var VISU::FindResult(SALOMEDS::SObject_ptr theSObject){ +VISU::Result_var VISU::FindResult (SALOMEDS::SObject_ptr theSObject) +{ SALOMEDS::SComponent_var aSComponent = theSObject->GetFatherComponent(); SALOMEDS::SObject_var aFather = theSObject->GetFather(); - CORBA::String_var aComponentID(aSComponent->GetID()); - CORBA::String_var aFatherID(aFather->GetID()); + CORBA::String_var aComponentID (aSComponent->GetID()); + CORBA::String_var aFatherID (aFather->GetID()); VISU::Result_var aResult; - while(strcmp(aComponentID,aFatherID) != 0){ + while (strcmp(aComponentID, aFatherID) != 0) { CORBA::Object_var anObject = VISU::SObjectToObject(aFather); - if(!CORBA::is_nil(anObject)){ + if (!CORBA::is_nil(anObject)) { aResult = VISU::Result::_narrow(anObject); if(!aResult->_is_nil()) return aResult; } aFather = aFather->GetFather(); + aFatherID = aFather->GetID(); } return aResult; } -QString GenerateName(const char* theName){ +QString GenerateName (const char* theName) +{ typedef map TNameMap; static TNameMap aMap; TNameMap::const_iterator i = aMap.find(theName); QString tmp; - if(i == aMap.end()) { + if (i == aMap.end()) { aMap[theName] = 0; tmp = theName; - }else{ + } else { tmp = VISU::GenerateName(theName,++aMap[theName]); } if(MYDEBUG) MESSAGE("GenerateName - "<NewBuilder(); SALOMEDS::SObject_var aFather = theStudyDocument->FindObjectID(theFatherEntry.c_str()); @@ -136,9 +126,9 @@ string GetComponentDataType (SALOMEDS::SObject_ptr theSObject) const string VISU::Result_i::myComment = "RESULT"; const char* VISU::Result_i::GetComment() const { return myComment.c_str();} -VISU::Result_i::Result_i(SALOMEDS::Study_ptr theStudy, - const ESourceId& theSourceId, - const ECreationId& theCreationId): +VISU::Result_i::Result_i (SALOMEDS::Study_ptr theStudy, + const ESourceId& theSourceId, + const ECreationId& theCreationId): myStudyDocument(SALOMEDS::Study::_duplicate(theStudy)), myCreationId(theCreationId), mySourceId(theSourceId), @@ -327,8 +317,9 @@ Build(SALOMEDS::SObject_ptr theSObject) default: throw std::runtime_error("Build >> Value of entity is incorrect!"); } - aEntity2EntryMap[anEntity] = CreateAttributes(myStudyDocument,aSubMeshesEntry.c_str(),aRefFatherEntry.c_str(), - "",anEntityName.c_str(),"",aComment.latin1(),true); + aEntity2EntryMap[anEntity] = CreateAttributes + (myStudyDocument,aSubMeshesEntry.c_str(),aRefFatherEntry.c_str(), + "",anEntityName.c_str(),"",aComment.latin1(),true); const VISU::PMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second; const VISU::TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap; VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin(); @@ -468,7 +459,8 @@ Create(const char* theFileName) } myInput = CreateConvertor(myFileInfo.absFilePath().latin1()); if(!myInput) - throw std::runtime_error("Create - Cannot create a Convertor for this file!!!"); return Build(); + throw std::runtime_error("Create - Cannot create a Convertor for this file!!!"); + return Build(); }catch(std::exception& exc){ INFOS("Follow exception was occured :\n"<GetStudy(); mySComponent = mySObject->GetFatherComponent(); - myName = VISU::Storable::FindValue(theMap,"myName").latin1(); - myInitFileName = VISU::Storable::FindValue(theMap,"myInitFileName").latin1(); + myName = VISU::Storable::FindValue(theMap, "myName").latin1(); + myInitFileName = VISU::Storable::FindValue(theMap, "myInitFileName").latin1(); + SALOMEDS::SObject_var aRefSObj, aTargetRefSObj; - if(mySObject->FindSubObject(1,aRefSObj) && aRefSObj->ReferencedObject(aTargetRefSObj)){ - if(MYDEBUG) MESSAGE("Result_i::GetInput - There is some reference."); + if (mySObject->FindSubObject(1, aRefSObj) && + aRefSObj->ReferencedObject(aTargetRefSObj)) { + if(MYDEBUG) MESSAGE("Result_i::GetInput - There is some reference."); SALOMEDS::SComponent_var aCompRefSObj = aTargetRefSObj->GetFatherComponent(); CORBA::String_var aDataType = aCompRefSObj->ComponentDataType(); myFileInfo.setFile(aDataType.in()); - if(MYDEBUG) MESSAGE("Result_i::GetInput - aDataType = "<FindOrLoad_Component("FactoryServer", aDataType.in()); + if(MYDEBUG) MESSAGE("Result_i::GetInput - aDataType = " << aDataType); + Engines::Component_var aEngComp = + Base_i::myEnginesLifeCycle->FindOrLoad_Component("FactoryServer", aDataType.in()); if (CORBA::is_nil(aEngComp)) throw std::runtime_error("Restore - There is no aEngComp for the aDataType !!!"); - SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder(); + SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder(); SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(aEngComp); - aStudyBuilder->LoadWith(aCompRefSObj,aDriver); - if(strcmp(aDataType,"MED") == 0) + aStudyBuilder->LoadWith(aCompRefSObj, aDriver); + if (strcmp(aDataType,"MED") == 0) myInput = CreateMEDConvertor(aTargetRefSObj); else throw std::runtime_error("GetInput - There is no convertor for the aDataType !!!"); - }else{ + } else { myFileInfo.setFile(thePrefix.c_str()); - string aStudyPrefix(""); - if (IsMultifile()) aStudyPrefix = (SALOMEDS_Tool::GetNameFromPath(myStudyDocument->URL())); - if(!myFileInfo.isFile()){ + string aStudyPrefix (""); + if (IsMultifile()) + aStudyPrefix = SALOMEDS_Tool::GetNameFromPath(myStudyDocument->URL()); + if (!myFileInfo.isFile()) { string aFileName = thePrefix + aStudyPrefix + "_" + myName; myFileInfo.setFile(aFileName.c_str()); } if(MYDEBUG) - MESSAGE("Result_i::Restore - aFileName = "<FindAttribute(anAttr, "AttributeComment")) + if (!theSObject->FindAttribute(anAttr, "AttributeComment")) throw std::runtime_error("Build - There is no AttributeComment for the SObject !!!"); SALOMEDS::AttributeComment_var aCmnt = SALOMEDS::AttributeComment::_narrow(anAttr); aCmnt->SetValue(aComment.latin1()); } bool isBuildAll = VISU::GetResourceMgr()->booleanValue("VISU", "full_med_loading", false); - if(isBuildAll) BuildAll(); + if (isBuildAll) BuildAll(); return this; - }catch(std::exception& exc){ + } catch(std::exception& exc) { INFOS("Follow exception was occured :\n"<