1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // File : SALOMEDS_Study_i.hxx
24 // Author : Sergey RUIN
27 #ifndef __SALOMEDS_STUDY_I_H__
28 #define __SALOMEDS_STUDY_I_H__
34 #include <SALOMEconfig.h>
35 #include CORBA_SERVER_HEADER(SALOME_GenericObj)
36 #include CORBA_SERVER_HEADER(SALOMEDS)
41 #include "SALOMEDS_SComponentIterator_i.hxx"
42 #include "SALOMEDS_StudyBuilder_i.hxx"
43 #include "SALOMEDS_SObject_i.hxx"
44 #include "SALOMEDS_UseCaseBuilder_i.hxx"
45 #include "SALOMEDS_Driver_i.hxx"
47 #include "SALOMEDSImpl_Study.hxx"
48 #include "SALOMEDSImpl_AttributeIOR.hxx"
50 class Standard_EXPORT SALOMEDS_Study_i: public POA_SALOMEDS::Study
56 SALOMEDSImpl_Study* _impl;
57 SALOMEDS_StudyBuilder_i* _builder;
58 SALOMEDSImpl_AbstractCallback* _notifier;
59 SALOMEDSImpl_AbstractCallback* _genObjRegister;
60 SALOMEDS_DriverFactory_i* _factory;
65 //! standard constructor
66 SALOMEDS_Study_i(CORBA::ORB_ptr);
68 //! standard destructor
69 virtual ~SALOMEDS_Study_i();
74 //! method to Open a Study
76 \param char* arguments, the study URL
77 \return Study_ptr arguments
79 virtual bool Open(const char* aStudyUrl) throw (SALOME::SALOME_Exception);
81 //! method to save a Study
82 virtual CORBA::Boolean Save(CORBA::Boolean theMultiFile);
83 virtual CORBA::Boolean SaveASCII(CORBA::Boolean theMultiFile);
85 //! method to save a Study to the persistent reference aUrl
87 \param char* arguments, the new URL of the study
89 virtual CORBA::Boolean SaveAs(const char* aUrl, CORBA::Boolean theMultiFile);
90 virtual CORBA::Boolean SaveAsASCII(const char* aUrl, CORBA::Boolean theMultiFile);
92 //! method to copy the object
94 \param theObject object to copy
96 virtual CORBA::Boolean Copy(SALOMEDS::SObject_ptr theObject);
97 virtual CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
98 //! method to paste the object in study
100 \param theObject object to paste
102 virtual SALOMEDS::SObject_ptr Paste(SALOMEDS::SObject_ptr theObject) throw(SALOMEDS::StudyBuilder::LockProtection);
103 virtual CORBA::Boolean CanPaste(SALOMEDS::SObject_ptr theObject);
105 //! method to Get persistent reference of study (idem URL())
108 \return char* arguments, the persistent reference of the study
110 virtual char* GetPersistentReference();
113 //! method to Get transient reference of study
115 \return char* arguments, the transient reference of the study
117 virtual char* GetTransientReference();
119 //! method to detect if a study is empty
121 \return bool arguments, true if study is empty
123 virtual CORBA::Boolean IsEmpty();
125 //! method to Find a Component with ComponentDataType = aComponentName
127 \param aComponentName char* arguments
128 \return SComponent_ptr arguments, the component found
130 virtual SALOMEDS::SComponent_ptr FindComponent (const char* aComponentName);
132 //! method to Find a Component Find a Component from it's ID
134 \param aComponentID char* arguments
135 \return SComponent_ptr arguments, the component found
137 virtual SALOMEDS::SComponent_ptr FindComponentID(const char* aComponentID);
139 //! method to Find an Object with SALOMEDS::Name = anObjectName
141 \param anObjectName char* arguments
142 \return SObject_ptr arguments, the object found
144 virtual SALOMEDS::SObject_ptr FindObject(const char* anObjectName);
147 //! method to Find Object(s) with SALOMEDS::Name = anObjectName in a component with ComponentDataType = aComponentName
149 \param anObjectName char* arguments
150 \param aComponentName char* arguments
151 \return ListOfSObject_ptr arguments, a list of objects found
154 virtual SALOMEDS::Study::ListOfSObject* FindObjectByName( const char* anObjectName, const char* aComponentName ) ;
156 //! method to Find an Object with ID = anObjectID
158 \param anObjectID char* arguments
159 \return SObject_ptr arguments, the object found
161 virtual SALOMEDS::SObject_ptr FindObjectID(const char* anObjectID);
163 //! method to Create an Object with ID = anObjectID
165 \param anObjectID char* arguments
166 \return SObject_ptr arguments, the object found
168 virtual SALOMEDS::SObject_ptr CreateObjectID(const char* anObjectID);
170 //! method to Find an Object with ID = anObjectIOR
172 \param anObjectIOR char* arguments
173 \return SObject_ptr arguments, the object found
175 virtual SALOMEDS::SObject_ptr FindObjectIOR(const char* anObjectIOR);
177 //! method to Find an Object by its path
179 \param thePath char* arguments
180 \return SObject_ptr arguments, the object found
182 virtual SALOMEDS::SObject_ptr FindObjectByPath(const char* thePath);
184 //! method to get a path of SObject
186 \param aSO SObject_ptr arguments
187 \return char* arguments, the path of the SObject
189 virtual char* GetObjectPath(CORBA::Object_ptr theObject);
191 //! method to set a context: root ('/') is UserData component
194 virtual void SetContext(const char* thePath);
196 //! method to get a context
199 virtual char* GetContext();
201 //! method to get all object names in the given context (or in the current context, if 'theContext' is empty)
204 virtual SALOMEDS::ListOfStrings* GetObjectNames(const char* theContext);
206 //! method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
209 virtual SALOMEDS::ListOfStrings* GetDirectoryNames(const char* theContext);
211 //! method to get all file names in the given context (or in the current context, if 'theContext' is empty)
214 virtual SALOMEDS::ListOfStrings* GetFileNames(const char* theContext);
216 //! method to get all components names
219 virtual SALOMEDS::ListOfStrings* GetComponentNames(const char* theContext);
221 //! method to Create a ChildIterator from an SObject
223 \param aSO SObject_ptr arguments
224 \return ChildIterator_ptr arguments, the created ChildIterator
226 virtual SALOMEDS::ChildIterator_ptr NewChildIterator(SALOMEDS::SObject_ptr aSO);
228 //! method to Create a SComponentIterator
230 \return SComponentIterator_ptr arguments, the created SComponentIterator
232 virtual SALOMEDS::SComponentIterator_ptr NewComponentIterator();
234 //! method to Create a StudyBuilder
236 \return StudyBuilder_ptr arguments, the created StudyBuilder
238 virtual SALOMEDS::StudyBuilder_ptr NewBuilder();
240 //! method to get study name
242 \return char* arguments, the study name
244 virtual char* Name();
246 //! method to get if study has been saved
248 \return bool arguments
250 virtual CORBA::Boolean IsSaved();
252 //! method to set if study has been saved
254 \param save bool arguments
256 virtual void IsSaved(CORBA::Boolean save);
258 //! method to Detect if a Study has been modified since it has been saved
260 \return bool arguments
262 virtual CORBA::Boolean IsModified();
264 //! method to set Modified flag of a Study to True
265 virtual void Modified();
267 //! method to get URL of the study (idem GetPersistentReference)
269 \return char* arguments, the study URL
273 //! method to set URL of the study
275 \param url char* arguments, the study URL
277 virtual void URL(const char* url);
279 static SALOMEDS::Study_ptr GetStudy(const DF_Label& theLabel, CORBA::ORB_ptr orb);
281 static void IORUpdated(SALOMEDSImpl_AttributeIOR* theAttribute);
283 virtual void UpdateIORLabelMap(const char* anIOR, const char* aLabel);
285 virtual SALOMEDS::Study::ListOfSObject* FindDependances(SALOMEDS::SObject_ptr anObject);
287 virtual SALOMEDS::AttributeStudyProperties_ptr GetProperties();
289 virtual char* GetLastModificationDate();
291 virtual SALOMEDS::ListOfDates* GetModificationsDate();
293 virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
294 virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
296 virtual SALOMEDS::UseCaseBuilder_ptr GetUseCaseBuilder();
298 void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled);
300 // postponed destroying of CORBA object functionality
301 virtual void AddPostponed(const char* theIOR);
303 virtual void AddCreatedPostponed(const char* theIOR);
305 virtual void RemovePostponed(CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
306 // if theUndoLimit==0, removes all
307 virtual void UndoPostponed(CORBA::Long theWay); // theWay = 1: resurrect objects,
308 // theWay = -1: get back to the list of postponed
310 virtual SALOMEDS::AttributeParameter_ptr GetCommonParameters(const char* theID, CORBA::Long theSavePoint);
311 virtual SALOMEDS::AttributeParameter_ptr GetModuleParameters(const char* theID,
312 const char* theModuleName,
313 CORBA::Long theSavePoint);
315 virtual void SetStudyLock(const char* theLockerID);
317 virtual bool IsStudyLocked();
319 virtual void UnLockStudy(const char* theLockerID);
321 virtual SALOMEDS::ListOfStrings* GetLockerID();
323 virtual void SetReal(const char* theVarName, CORBA::Double theValue);
325 virtual void SetInteger(const char* theVarName, CORBA::Long theValue);
327 virtual void SetBoolean(const char* theVarName, CORBA::Boolean theValue);
329 virtual void SetString(const char* theVarName, const char* theValue);
331 virtual void SetStringAsDouble(const char* theVarName, CORBA::Double theValue);
333 virtual CORBA::Double GetReal(const char* theVarName);
335 virtual CORBA::Long GetInteger(const char* theVarName);
337 virtual CORBA::Boolean GetBoolean(const char* theVarName);
339 virtual char* GetString(const char* theVarName);
341 virtual CORBA::Boolean IsReal(const char* theVarName);
343 virtual CORBA::Boolean IsInteger(const char* theVarName);
345 virtual CORBA::Boolean IsBoolean(const char* theVarName);
347 virtual CORBA::Boolean IsString(const char* theVarName);
349 virtual CORBA::Boolean IsVariable(const char* theVarName);
351 virtual SALOMEDS::ListOfStrings* GetVariableNames();
353 virtual CORBA::Boolean RemoveVariable(const char* theVarName);
355 virtual CORBA::Boolean RenameVariable(const char* theVarName, const char* theNewVarName);
357 virtual CORBA::Boolean IsVariableUsed(const char* theVarName);
359 virtual SALOMEDS::ListOfListOfStrings* ParseVariables(const char* theVars);
361 virtual char* GetDefaultScript(const char* theModuleName, const char* theShift);
363 virtual CORBA::Boolean DumpStudy(const char* thePath,
364 const char* theBaseName,
365 CORBA::Boolean isPublished,
366 CORBA::Boolean isMultiFile);
368 virtual SALOMEDSImpl_Study* GetImpl() { return _impl; }
370 virtual CORBA::LongLong GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
373 CORBA::Long getPID();
374 void ShutdownWithExit();
378 virtual void attach(SALOMEDS::Observer_ptr theObs, CORBA::Boolean modify);
379 virtual void detach(SALOMEDS::Observer_ptr theObs);