-//=============================================================================
-// SetStudyID:
-//=============================================================================
-void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
-{
- // mkr : PAL10770 -->
- myLastStudyID = myStudyID;
-
- CORBA::Object_ptr anObject = name_service->Resolve("/Kernel/Session");
- if ( !CORBA::is_nil(anObject) ) {
- SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);
- if ( !CORBA::is_nil(aSession) ) {
- int aStudyID = aSession->GetActiveStudyId();
- if ( theId != aStudyID && aStudyID > 0) { // mkr : IPAL12128
- MESSAGE("Warning : given study ID theId="<<theId<<" is wrong and will be replaced by the value "<<aStudyID);
- myStudyID = aStudyID;
- }
- else
- myStudyID = theId; // mkr : IPAL12128
- }
- }
-
- if ( isNewStudy(myLastStudyID,myStudyID) ) {
- if (CORBA::is_nil(myGeomEngine)) setGeomEngine();
- std::string anEngine = _orb->object_to_string( myGeomEngine );
-
- CORBA::Object_var anObj = name_service->Resolve("/myStudyManager");
- if ( !CORBA::is_nil(anObj) ) {
- SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObj);
- if ( !CORBA::is_nil(aStudyManager) ) {
- _PTR(Study) aDSStudy = ClientFactory::Study(aStudyManager->GetStudyByID(myStudyID));
- if ( aDSStudy ) {
- _PTR(SComponent) aSCO = aDSStudy->FindComponent(myGeomEngine->ComponentDataType());
- if ( aSCO ) {
- _PTR(StudyBuilder) aBuilder = aDSStudy->NewBuilder();
- if ( aBuilder ) aBuilder->LoadWith( aSCO, anEngine );
- }
- }
- }
- }
- }
- // mkr : PAL10770 <--
-}
-