1 // Copyright (C) 2007-2008 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.
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
22 // File : SALOMEDS_Study_i.hxx
23 // Author : Sergey RUIN
26 #ifndef __SALOMEDS_STUDY_I_H__
27 #define __SALOMEDS_STUDY_I_H__
33 #include <SALOMEconfig.h>
34 #include CORBA_SERVER_HEADER(SALOME_GenericObj)
35 #include CORBA_SERVER_HEADER(SALOMEDS)
40 #include "SALOMEDS_SComponentIterator_i.hxx"
41 #include "SALOMEDS_StudyBuilder_i.hxx"
42 #include "SALOMEDS_SObject_i.hxx"
43 #include "SALOMEDS_UseCaseBuilder_i.hxx"
45 #include "SALOMEDSImpl_Study.hxx"
46 #include "SALOMEDSImpl_AttributeIOR.hxx"
48 class Standard_EXPORT SALOMEDS_Study_i: public POA_SALOMEDS::Study
52 SALOMEDSImpl_Study* _impl;
53 SALOMEDS_StudyBuilder_i* _builder;
57 //! standard constructor
58 SALOMEDS_Study_i(SALOMEDSImpl_Study*, CORBA::ORB_ptr);
60 //! standard destructor
61 virtual ~SALOMEDS_Study_i();
63 //! method to Get persistent reference of study (idem URL())
66 \return char* arguments, the persistent reference of the study
68 virtual char* GetPersistentReference();
71 //! method to Get transient reference of study
73 \return char* arguments, the transient reference of the study
75 virtual char* GetTransientReference();
77 //! method to detect if a study is empty
79 \return bool arguments, true if study is empty
81 virtual CORBA::Boolean IsEmpty();
83 //! method to Find a Component with ComponentDataType = aComponentName
85 \param aComponentName char* arguments
86 \return SComponent_ptr arguments, the component found
88 virtual SALOMEDS::SComponent_ptr FindComponent (const char* aComponentName);
90 //! method to Find a Component Find a Component from it's ID
92 \param aComponentID char* arguments
93 \return SComponent_ptr arguments, the component found
95 virtual SALOMEDS::SComponent_ptr FindComponentID(const char* aComponentID);
97 //! method to Find an Object with SALOMEDS::Name = anObjectName
99 \param anObjectName char* arguments
100 \return SObject_ptr arguments, the object found
102 virtual SALOMEDS::SObject_ptr FindObject(const char* anObjectName);
105 //! method to Find Object(s) with SALOMEDS::Name = anObjectName in a component with ComponentDataType = aComponentName
107 \param anObjectName char* arguments
108 \param aComponentName char* arguments
109 \return ListOfSObject_ptr arguments, a list of objects found
112 virtual SALOMEDS::Study::ListOfSObject* FindObjectByName( const char* anObjectName, const char* aComponentName ) ;
114 //! method to Find an Object with ID = anObjectID
116 \param anObjectID char* arguments
117 \return SObject_ptr arguments, the object found
119 virtual SALOMEDS::SObject_ptr FindObjectID(const char* anObjectID);
121 //! method to Create an Object with ID = anObjectID
123 \param anObjectID char* arguments
124 \return SObject_ptr arguments, the object found
126 virtual SALOMEDS::SObject_ptr CreateObjectID(const char* anObjectID);
128 //! method to Find an Object with ID = anObjectIOR
130 \param anObjectIOR char* arguments
131 \return SObject_ptr arguments, the object found
133 virtual SALOMEDS::SObject_ptr FindObjectIOR(const char* anObjectIOR);
135 //! method to Find an Object by its path
137 \param thePath char* arguments
138 \return SObject_ptr arguments, the object found
140 virtual SALOMEDS::SObject_ptr FindObjectByPath(const char* thePath);
142 //! method to get a path of SObject
144 \param aSO SObject_ptr arguments
145 \return char* arguments, the path of the SObject
147 virtual char* GetObjectPath(CORBA::Object_ptr theObject);
149 //! method to set a context: root ('/') is UserData component
152 virtual void SetContext(const char* thePath);
154 //! method to get a context
157 virtual char* GetContext();
159 //! method to get all object names in the given context (or in the current context, if 'theContext' is empty)
162 virtual SALOMEDS::ListOfStrings* GetObjectNames(const char* theContext);
164 //! method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
167 virtual SALOMEDS::ListOfStrings* GetDirectoryNames(const char* theContext);
169 //! method to get all file names in the given context (or in the current context, if 'theContext' is empty)
172 virtual SALOMEDS::ListOfStrings* GetFileNames(const char* theContext);
174 //! method to get all components names
177 virtual SALOMEDS::ListOfStrings* GetComponentNames(const char* theContext);
179 //! method to Create a ChildIterator from an SObject
181 \param aSO SObject_ptr arguments
182 \return ChildIterator_ptr arguments, the created ChildIterator
184 virtual SALOMEDS::ChildIterator_ptr NewChildIterator(SALOMEDS::SObject_ptr aSO);
186 //! method to Create a SComponentIterator
188 \return SComponentIterator_ptr arguments, the created SComponentIterator
190 virtual SALOMEDS::SComponentIterator_ptr NewComponentIterator();
192 //! method to Create a StudyBuilder
194 \return StudyBuilder_ptr arguments, the created StudyBuilder
196 virtual SALOMEDS::StudyBuilder_ptr NewBuilder();
198 //! method to get study name
200 \return char* arguments, the study name
202 virtual char* Name();
204 //! method to set study name
206 \param name char* arguments, the study name
208 virtual void Name(const char* name);
210 //! method to get if study has been saved
212 \return bool arguments
214 virtual CORBA::Boolean IsSaved();
216 //! method to set if study has been saved
218 \param save bool arguments
220 virtual void IsSaved(CORBA::Boolean save);
222 //! method to Detect if a Study has been modified since it has been saved
224 \return bool arguments
226 virtual CORBA::Boolean IsModified();
228 //! method to set Modified flag of a Study to True
229 virtual void Modified();
231 //! method to get URL of the study (idem GetPersistentReference)
233 \return char* arguments, the study URL
237 //! method to set URL of the study
239 \param url char* arguments, the study URL
241 virtual void URL(const char* url);
243 virtual CORBA::Short StudyId();
244 virtual void StudyId(CORBA::Short id);
246 static SALOMEDS::Study_ptr GetStudy(const DF_Label& theLabel, CORBA::ORB_ptr orb);
248 static void IORUpdated(SALOMEDSImpl_AttributeIOR* theAttribute);
250 virtual void UpdateIORLabelMap(const char* anIOR, const char* aLabel);
252 virtual SALOMEDS::Study::ListOfSObject* FindDependances(SALOMEDS::SObject_ptr anObject);
254 virtual SALOMEDS::AttributeStudyProperties_ptr GetProperties();
256 virtual char* GetLastModificationDate();
258 virtual SALOMEDS::ListOfDates* GetModificationsDate();
260 virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
261 virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
263 virtual SALOMEDS::UseCaseBuilder_ptr GetUseCaseBuilder();
265 virtual void Close();
267 void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled);
269 // postponed destroying of CORBA object functionality
270 virtual void AddPostponed(const char* theIOR);
272 virtual void AddCreatedPostponed(const char* theIOR);
275 virtual void RemovePostponed(const CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
276 // if theUndoLimit==0, removes all
277 virtual void UndoPostponed(const CORBA::Long theWay); // theWay = 1: resurrect objects,
278 // theWay = -1: get back to the list of postponed
280 virtual void RemovePostponed(CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
281 // if theUndoLimit==0, removes all
282 virtual void UndoPostponed(CORBA::Long theWay); // theWay = 1: resurrect objects,
283 // theWay = -1: get back to the list of postponed
286 virtual SALOMEDS::AttributeParameter_ptr GetCommonParameters(const char* theID, CORBA::Long theSavePoint);
287 virtual SALOMEDS::AttributeParameter_ptr GetModuleParameters(const char* theID,
288 const char* theModuleName,
289 CORBA::Long theSavePoint);
291 virtual void SetStudyLock(const char* theLockerID);
293 virtual bool IsStudyLocked();
295 virtual void UnLockStudy(const char* theLockerID);
297 virtual SALOMEDS::ListOfStrings* GetLockerID();
299 virtual void SetReal(const char* theVarName, CORBA::Double theValue);
301 virtual void SetInteger(const char* theVarName, CORBA::Long theValue);
303 virtual void SetBoolean(const char* theVarName, CORBA::Boolean theValue);
305 virtual CORBA::Double GetReal(const char* theVarName);
307 virtual CORBA::Long GetInteger(const char* theVarName);
309 virtual CORBA::Boolean GetBoolean(const char* theVarName);
311 virtual CORBA::Boolean IsReal(const char* theVarName);
313 virtual CORBA::Boolean IsInteger(const char* theVarName);
315 virtual CORBA::Boolean IsBoolean(const char* theVarName);
317 virtual CORBA::Boolean IsVariable(const char* theVarName);
319 virtual SALOMEDS::ListOfStrings* GetVariableNames();
321 virtual CORBA::Boolean RemoveVariable(const char* theVarName);
323 virtual CORBA::Boolean RenameVariable(const char* theVarName, const char* theNewVarName);
325 virtual CORBA::Boolean IsVariableUsed(const char* theVarName);
327 virtual SALOMEDS::ListOfListOfStrings* ParseVariables(const char* theVars);
329 virtual char* GetDefaultScript(const char* theModuleName, const char* theShift);
331 virtual CORBA::Boolean DumpStudy(const char* thePath, const char* theBaseName, CORBA::Boolean isPublished);
333 virtual SALOMEDSImpl_Study* GetImpl() { return _impl; }
335 virtual CORBA::LongLong GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);