{
return SUIT_Session::session();
}
-
+
SUIT_ResourceMgr*
GetResourceMgr()
{
Base_i::~Base_i() {}
- char* Base_i::GetID(){
+ char* Base_i::GetID(){
if(myID == ""){
CORBA::Object_var anObject = _this();
CORBA::String_var anIOR = myOrb->object_to_string(anObject);
Mutex::Mutex(QMutex* theMutex): myMutex(&aMutex){
if(MYDEBUG) MESSAGE("Mutex::Mutex : "<<!mySCnt);
- if(!mySCnt++)
+ if(!mySCnt++)
myMutex->lock();
}
ToStream(strOut);
strOut<<ends;
if(MYDEBUG) MESSAGE("Storable::ToString - "<<strOut.str());
- return strOut.str();
+ return strOut.str();
}
void Storable::Registry(const char* theComment, TStorableEngine theEngine)
throw std::logic_error("Storable::Registry >> dupliacte registring !!!");
}
}
-
+
void Storable::StrToMap(const QString& theStr, VISU::Storable::TRestoringMap& theMap){
if(0 && MYDEBUG) MESSAGE("Storable::StrToMap : string="<<theStr);
QStringList strList = QStringList::split( ";", theStr, false );
aValue = "";
}
if ( !aName.isEmpty() )
- theMap.insert( TRestoringMap::value_type( aName.latin1(), aValue ) );
+ theMap.insert( TRestoringMap::value_type( aName.latin1(), aValue ) );
}
}
void Storable::DataToStream(ostringstream& theStr, const QString& theName, const QString& theVal) {
- QString output = ( !theName.isNull() ? theName : QString("") )
- + QString( "=" )
+ QString output = ( !theName.isNull() ? theName : QString("") )
+ + QString( "=" )
+ ( !theVal.isNull() ? theVal : QString("") );
theStr<<output.latin1()<<";";
}
void Storable::DataToStream(ostringstream& theStr, const QString& theName, const int theVal) {
- QString output = ( !theName.isNull() ? theName : QString("") )
- + QString( "=" )
+ QString output = ( !theName.isNull() ? theName : QString("") )
+ + QString( "=" )
+ QString::number( theVal );
theStr<<output.latin1()<<";";
}
void Storable::DataToStream(ostringstream& theStr, const QString& theName, const double theVal) {
- QString output = ( !theName.isNull() ? theName : QString("") )
- + QString( "=" )
+ QString output = ( !theName.isNull() ? theName : QString("") )
+ + QString( "=" )
+ QString::number( theVal );
theStr<<output.latin1()<<";";
}
Storable* Storable::Create(SALOMEDS::SObject_ptr theSObject,
- const string& thePrefix, const string& theLocalPersistentID)
+ const string& thePrefix, const string& theLocalPersistentID)
{
try{
QString strIn( theLocalPersistentID.c_str() );
- TRestoringMap aMap;
+ TRestoringMap aMap;
StrToMap(strIn,aMap);
bool isExist;
QString aComment = VISU::Storable::FindValue(aMap,"myComment",&isExist);
}
return NULL;
}
-
+
QString Storable::FindValue(const TRestoringMap& theMap, const string& theArg, bool* isFind)
{
TRestoringMap::const_iterator i = theMap.find(theArg);
if(isFind != NULL) *isFind = true;
return i->second;
}
-
+
//===========================================================================
PortableServer::ServantBase_var GetServant(CORBA::Object_ptr theObject){
PortableServer::Servant aServant = aPOA->reference_to_servant(theObject);
return aServant;
} catch (...) {
- INFOS("GetServant - Unknown exception was occured!!!");
+ INFOS("GetServant - Unknown exception was occured!!!");
return NULL;
}
}
string FindEntryWithComment(SALOMEDS::Study_ptr theStudyDocument, const char* theStartEntry,
const char* theComment, int IsAllLevels)
{
- SALOMEDS::ChildIterator_var anIter =
+ SALOMEDS::ChildIterator_var anIter =
theStudyDocument->NewChildIterator(theStudyDocument->FindObjectID(theStartEntry));
anIter->InitEx(IsAllLevels);
SALOMEDS::SObject_var aFieldSO;
return "";
}
//===========================================================================
- string CreateAttributes(SALOMEDS::Study_ptr theStudyDocument,
+ string CreateAttributes(SALOMEDS::Study_ptr theStudyDocument,
const char* theFatherEntry, const char* theRefFatherEntry,
- const char* theIOR, const char* theName,
+ const char* theIOR, const char* theName,
const char* thePersistentRef, const char* theComment,
CORBA::Boolean theCreateNew)
{
if(strcmp(theIOR,"") != 0){
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeIOR");
SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
- anIOR->SetValue(theIOR);
+ anIOR->SetValue(theIOR);
}
if(strcmp(theName,"") != 0){
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName");
SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr);
- aName->SetValue(theName);
+ aName->SetValue(theName);
}
if(strcmp(thePersistentRef,"") != 0){
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributePersistentRef");
SALOMEDS::AttributePersistentRef_var aPRef = SALOMEDS::AttributePersistentRef::_narrow(anAttr);
- aPRef->SetValue(thePersistentRef);
+ aPRef->SetValue(thePersistentRef);
}
if(strcmp(theComment,"") != 0){
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment");
}
CORBA::String_var anEntry = newObj->GetID();
string aRet(anEntry);
- if(MYDEBUG)
+ if(MYDEBUG)
INFOS("CreateAttributes - StudyId = "<<theStudyDocument->StudyId()<<"; anEntry = "<<aRet<<"; IOR = '"<<theIOR<<"'");
return aRet;
}
- string CreateAttributes(_PTR(Study) theStudyDocument,
+ string CreateAttributes(_PTR(Study) theStudyDocument,
const char* theFatherEntry, const char* theRefFatherEntry,
- const char* theIOR, const char* theName,
+ const char* theIOR, const char* theName,
const char* thePersistentRef, const char* theComment,
CORBA::Boolean theCreateNew)
{
if (strcmp(theIOR, "") != 0) {
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeIOR");
_PTR(AttributeIOR) anIOR (anAttr);
- anIOR->SetValue(theIOR);
+ anIOR->SetValue(theIOR);
}
if (strcmp(theName, "") != 0) {
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName");
_PTR(AttributeName) aName (anAttr);
- aName->SetValue(theName);
+ aName->SetValue(theName);
}
if (strcmp(thePersistentRef, "") != 0) {
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributePersistentRef");
_PTR(AttributePersistentRef) aPRef (anAttr);
- aPRef->SetValue(thePersistentRef);
+ aPRef->SetValue(thePersistentRef);
}
if (strcmp(theComment, "") != 0) {
anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment");
aStudyBuilder->Addreference(anObj, newObj);
}
string aRet = newObj->GetID();
- if (MYDEBUG)
+ if (MYDEBUG)
INFOS("CreateAttributes - StudyId = " << theStudyDocument->StudyId()
<< "; anEntry = " << aRet << "; IOR = '" << theIOR << "'");
return aRet;
return study->FindObjectID( obj->GetID() );
}
+
+
+ void RemoveFromStudy (SALOMEDS::SObject_ptr theSObject,
+ bool theIsAttrOnly,
+ bool theDestroySubObjects)
+ {
+ if (theSObject->_is_nil()) return;
+
+ SALOMEDS::Study_var aStudyDocument = theSObject->GetStudy();
+ SALOMEDS::StudyBuilder_var aStudyBuilder = aStudyDocument->NewBuilder();
+ if (theIsAttrOnly) {
+ aStudyBuilder->RemoveAttribute(theSObject,"AttributeIOR");
+ return;
+ }
+
+ // Remove possible sub-objects
+ SALOMEDS::ChildIterator_var aChildIter = aStudyDocument->NewChildIterator(theSObject);
+ for (aChildIter->InitEx(true); aChildIter->More(); aChildIter->Next()) {
+ SALOMEDS::SObject_var aChildSObject = aChildIter->Value();
+ CORBA::Object_var aChildObj = VISU::SObjectToObject(aChildSObject);
+ if (CORBA::is_nil(aChildObj)) continue;
+
+ VISU::RemovableObject_var aRemovableObject = VISU::RemovableObject::_narrow(aChildObj);
+ if (CORBA::is_nil(aRemovableObject)) continue;
+
+ aRemovableObject->RemoveFromStudy();
+
+ // Destroy
+ if (theDestroySubObjects) {
+ VISU::Prs3d_var aPrs3d = VISU::Prs3d::_narrow(aRemovableObject);
+ if (CORBA::is_nil(aPrs3d)) continue;
+ aPrs3d->Destroy();
+ }
+ }
+
+ // asl, fix for PAL10455: Remove references to SObject
+ SALOMEDS::Study::ListOfSObject* aRefs = aStudyDocument->FindDependances( theSObject );
+ for( int i=0, n=aRefs->length(); i<n; i++ )
+ {
+ SALOMEDS::SObject_var o = (*aRefs)[i];
+ if( o->GetFatherComponent()->ComponentDataType()==theSObject->GetFatherComponent()->ComponentDataType() )
+ {
+ aStudyBuilder->RemoveReference( o );
+ aStudyBuilder->RemoveObjectWithChildren( o );
+ }
+ }
+
+ // Remove the SObject itself
+ aStudyBuilder->RemoveObjectWithChildren(theSObject);
+ }
+
+ void RemoveFromStudy (_PTR(SObject) theSObject,
+ bool theIsAttrOnly,
+ bool theDestroySubObjects)
+ {
+ if (!theSObject) return;
+
+ _PTR(Study) aStudyDocument = theSObject->GetStudy();
+ _PTR(StudyBuilder) aStudyBuilder = aStudyDocument->NewBuilder();
+ if (theIsAttrOnly) {
+ aStudyBuilder->RemoveAttribute(theSObject,"AttributeIOR");
+ return;
+ }
+
+ // Remove possible sub-objects
+ _PTR(ChildIterator) aChildIter = aStudyDocument->NewChildIterator(theSObject);
+ for (aChildIter->InitEx(true); aChildIter->More(); aChildIter->Next()) {
+ _PTR(SObject) aChildSObject = aChildIter->Value();
+ CORBA::Object_var aChildObj = VISU::ClientSObjectToObject(aChildSObject);
+ if (CORBA::is_nil(aChildObj)) continue;
+
+ VISU::RemovableObject_var aRemovableObject = VISU::RemovableObject::_narrow(aChildObj);
+ if (CORBA::is_nil(aRemovableObject)) continue;
+
+ aRemovableObject->RemoveFromStudy();
+
+ // Destroy
+ if (theDestroySubObjects) {
+ VISU::Prs3d_var aPrs3d = VISU::Prs3d::_narrow(aRemovableObject);
+ if (CORBA::is_nil(aPrs3d)) continue;
+ aPrs3d->Destroy();
+ }
+ }
+
+ // Remove the SObject itself
+ aStudyBuilder->RemoveObjectWithChildren(theSObject);
+ }
}