Salome HOME
Debug
[modules/smesh.git] / src / SMESH_I / SMESH_Hypothesis_i.cxx
index b677e647b13c6dca7222d71f0206c2be16008342..219c1e12699fe2a141673a6e6ae12639bf2459dd 100644 (file)
@@ -140,99 +140,126 @@ bool SMESH_Hypothesis_i::IsPublished(){
 
 //=============================================================================
 /*!
- *  SMESH_Hypothesis_i::SetParameters()
- *
+ *  SMESH_Hypothesis_i::GetEntry()
  */
 //=============================================================================
-void SMESH_Hypothesis_i::SetParameters(const char* theParameters)
+char* SMESH_Hypothesis_i::GetEntry()
 {
-  SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen();
-  char * aParameters = CORBA::string_dup(theParameters);
-  if(gen){
-    if(IsPublished()) {
-      SMESH_Gen_i::GetSMESHGen()->UpdateParameters(SMESH::SMESH_Hypothesis::_narrow(_this()),aParameters);
-    }
-    else {
-      myBaseImpl->SetParameters(gen->ParseParameters(aParameters));
-    }
-  }
+  char aBuf[100];
+  sprintf( aBuf, "%i", GetId() );
+  return CORBA::string_dup( aBuf );
 }
 
 //=============================================================================
 /*!
- *  SMESH_Hypothesis_i::GetParameters()
+ *  SMESH_Hypothesis_i::GetComponent()
+ */
+//=============================================================================
+char* SMESH_Hypothesis_i::GetComponent()
+{
+  return CORBA::string_dup( "SMESH" );
+}
+
+//=============================================================================
+/*!
+ *  SMESH_Hypothesis_i::IsValid()
+ */
+//=============================================================================
+CORBA::Boolean SMESH_Hypothesis_i::IsValid()
+{
+  return true;
+}
+
+//=============================================================================
+/*!
+ *  SMESH_Hypothesis_i::SetParameters()
  *
  */
 //=============================================================================
-char* SMESH_Hypothesis_i::GetParameters()
+void SMESH_Hypothesis_i::SetParameters( SALOME::Notebook_ptr theNotebook, const SALOME::StringArray& theParameters )
 {
-  SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen();
-  char* aResult;
-  if(IsPublished()) {
-    MESSAGE("SMESH_Hypothesis_i::GetParameters() : Get Parameters from SObject");
-    aResult = gen->GetParameters(SMESH::SMESH_Hypothesis::_narrow(_this()));
+  theNotebook->ClearDependencies( _this(), SALOME::Parameters );
+  std::list<std::string> aParams;
+  int n = theParameters.length();
+  for( int i=0; i<n; i++ )
+  {
+    std::string aParam = CORBA::string_dup( theParameters[i] );
+    aParams.push_back( aParam );
+    
+    SALOME::Parameter_ptr aParamPtr = theNotebook->GetParameter( aParam.c_str() );
+    if( !CORBA::is_nil( aParamPtr ) )
+      theNotebook->AddDependency( _this(), aParamPtr );
   }
-  else {
-    MESSAGE("SMESH_Hypothesis_i::GetParameters() : Get local parameters");
-    aResult = myBaseImpl->GetParameters(); 
-  }
-  return CORBA::string_dup(aResult);
+  myBaseImpl->SetParameters( aParams );
+
+  UpdateStringAttribute();
 }
 
 //=============================================================================
 /*!
- *  SMESH_Hypothesis_i::GetLastParameters()
+ *  SMESH_Hypothesis_i::GetParameters()
  *
  */
 //=============================================================================
-SMESH::ListOfParameters* SMESH_Hypothesis_i::GetLastParameters()
+SALOME::StringArray* SMESH_Hypothesis_i::GetParameters()
 {
-  SMESH::ListOfParameters_var aResult = new SMESH::ListOfParameters();
-  SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen();
-  if(gen) {
-    char *aParameters;
-    if(IsPublished())
-     aParameters = GetParameters();
-    else
-      aParameters = myBaseImpl->GetLastParameters();
-
-    SALOMEDS::Study_ptr aStudy = gen->GetCurrentStudy();
-    if(!aStudy->_is_nil()) {
-      SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters); 
-      if(aSections->length() > 0) {
-        SALOMEDS::ListOfStrings aVars = aSections[aSections->length()-1];
-        aResult->length(aVars.length());
-        for(int i = 0;i < aVars.length();i++)
-          aResult[i] = CORBA::string_dup( aVars[i]);
-      }
-    }
-  }
-  return aResult._retn();
+  std::list<std::string> aParams = myBaseImpl->GetParameters();
+  SALOME::StringArray_var aRes = new SALOME::StringArray();
+  aRes->length( aParams.size() );
+  std::list<std::string>::const_iterator it = aParams.begin(), last = aParams.end();
+  for( int i=0; it!=last; it++, i++ )
+    aRes[i] = CORBA::string_dup( it->c_str() );
+  return aRes._retn();
 }
 
 //=============================================================================
 /*!
- *  SMESH_Hypothesis_i::SetLastParameters()
+ * SMESH_Hypothesis_i::Update()
  *
  */
 //=============================================================================
-void SMESH_Hypothesis_i::SetLastParameters(const char* theParameters)
+void SMESH_Hypothesis_i::Update( SALOME::Notebook_ptr theNotebook )
 {
-  if(!IsPublished()) {
-    myBaseImpl->SetLastParameters(theParameters);
-  }
 }
+
 //=============================================================================
 /*!
- *  SMESH_Hypothesis_i::ClearParameters()
+ * SMESH_Hypothesis_i::UpdateStringAttribute()
  *
  */
 //=============================================================================
-void SMESH_Hypothesis_i::ClearParameters()
+void SMESH_Hypothesis_i::UpdateStringAttribute()
 {
-  if(!IsPublished()) {
-    myBaseImpl->ClearParameters();
+  SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
+
+  SALOME::Notebook_ptr aNotebook = aSMESHGen->GetNotebook( myBaseImpl->GetStudyId() );
+
+  SALOME::StringArray* anObjectParameters = aNotebook->GetObjectParameters( GetComponent(), GetEntry() );
+  int aParametersLength = anObjectParameters ? anObjectParameters->length() : 0;
+  if( aParametersLength == 0 )
+    return;
+
+  SALOMEDS::Study_ptr aStudy = aSMESHGen->GetStudy( myBaseImpl->GetStudyId() );
+  SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
+  SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject( aStudy, SMESH::SMESH_Hypothesis::_narrow( _this() ) );
+  if( CORBA::is_nil( aSObject ) )
+    return;
+
+  SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute( aSObject, "AttributeString" );
+  SALOMEDS::AttributeString_var aStringAttrib = SALOMEDS::AttributeString::_narrow( anAttr );
+
+  std::string aString;
+  for( int i = 0, n = anObjectParameters->length(); i < n; i++ ) {
+    std::string aParameter = anObjectParameters->operator[](i).in();
+    if( aParameter != "" )
+    {
+      if( aString != "" )
+        aString += ", ";
+      aString += aParameter;
+    }
   }
+  aStringAttrib->SetValue( aString.c_str() );
+  aStringAttrib->Destroy();
 }
 
 //=============================================================================