1 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License.
9 // This library is distributed in the hope that it will be useful
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 // See http://www.salome-platform.org/
20 // File : SALOMEDS_Study_i.hxx
21 // Author : Sergey RUIN
24 #ifndef __SALOMEDS_STUDY_I_H__
25 #define __SALOMEDS_STUDY_I_H__
31 #include <SALOMEconfig.h>
32 #include CORBA_SERVER_HEADER(SALOME_GenericObj)
33 #include CORBA_SERVER_HEADER(SALOMEDS)
38 #include "SALOMEDS_SComponentIterator_i.hxx"
39 #include "SALOMEDS_StudyBuilder_i.hxx"
40 #include "SALOMEDS_SObject_i.hxx"
41 #include "SALOMEDS_UseCaseBuilder_i.hxx"
43 #include "SALOMEDSImpl_Study.hxx"
44 #include "SALOMEDSImpl_AttributeIOR.hxx"
46 class Standard_EXPORT SALOMEDS_Study_i: public POA_SALOMEDS::Study,
47 public PortableServer::RefCountServantBase
51 Handle(SALOMEDSImpl_Study) _impl;
52 SALOMEDS_StudyBuilder_i* _builder;
56 //! standard constructor
57 SALOMEDS_Study_i(const Handle(SALOMEDSImpl_Study), CORBA::ORB_ptr);
59 //! standard destructor
60 virtual ~SALOMEDS_Study_i();
62 //! method to Get persistent reference of study (idem URL())
65 \return char* arguments, the persistent reference of the study
67 virtual char* GetPersistentReference();
70 //! method to Get transient reference of study
72 \return char* arguments, the transient reference of the study
74 virtual char* GetTransientReference();
76 //! method to detect if a study is empty
78 \return bool arguments, true if study is empty
80 virtual CORBA::Boolean IsEmpty();
82 //! method to Find a Component with ComponentDataType = aComponentName
84 \param aComponentName char* arguments
85 \return SComponent_ptr arguments, the component found
87 virtual SALOMEDS::SComponent_ptr FindComponent (const char* aComponentName);
89 //! method to Find a Component Find a Component from it's ID
91 \param aComponentID char* arguments
92 \return SComponent_ptr arguments, the component found
94 virtual SALOMEDS::SComponent_ptr FindComponentID(const char* aComponentID);
96 //! method to Find an Object with SALOMEDS::Name = anObjectName
98 \param anObjectName char* arguments
99 \return SObject_ptr arguments, the object found
101 virtual SALOMEDS::SObject_ptr FindObject(const char* anObjectName);
104 //! method to Find Object(s) with SALOMEDS::Name = anObjectName in a component with ComponentDataType = aComponentName
106 \param anObjectName char* arguments
107 \param aComponentName char* arguments
108 \return ListOfSObject_ptr arguments, a list of objects found
111 virtual SALOMEDS::Study::ListOfSObject* FindObjectByName( const char* anObjectName, const char* aComponentName ) ;
113 //! method to Find an Object with ID = anObjectID
115 \param anObjectID char* arguments
116 \return SObject_ptr arguments, the object found
118 virtual SALOMEDS::SObject_ptr FindObjectID(const char* anObjectID);
120 //! method to Create an Object with ID = anObjectID
122 \param anObjectID char* arguments
123 \return SObject_ptr arguments, the object found
125 virtual SALOMEDS::SObject_ptr CreateObjectID(const char* anObjectID);
127 //! method to Find an Object with ID = anObjectIOR
129 \param anObjectIOR char* arguments
130 \return SObject_ptr arguments, the object found
132 virtual SALOMEDS::SObject_ptr FindObjectIOR(const char* anObjectIOR);
134 //! method to Find an Object by its path
136 \param thePath char* arguments
137 \return SObject_ptr arguments, the object found
139 virtual SALOMEDS::SObject_ptr FindObjectByPath(const char* thePath);
141 //! method to get a path of SObject
143 \param aSO SObject_ptr arguments
144 \return char* arguments, the path of the SObject
146 virtual char* GetObjectPath(CORBA::Object_ptr theObject);
148 //! method to set a context: root ('/') is UserData component
151 virtual void SetContext(const char* thePath);
153 //! method to get a context
156 virtual char* GetContext();
158 //! method to get all object names in the given context (or in the current context, if 'theContext' is empty)
161 virtual SALOMEDS::ListOfStrings* GetObjectNames(const char* theContext);
163 //! method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
166 virtual SALOMEDS::ListOfStrings* GetDirectoryNames(const char* theContext);
168 //! method to get all file names in the given context (or in the current context, if 'theContext' is empty)
171 virtual SALOMEDS::ListOfStrings* GetFileNames(const char* theContext);
173 //! method to get all components names
176 virtual SALOMEDS::ListOfStrings* GetComponentNames(const char* theContext);
178 //! method to Create a ChildIterator from an SObject
180 \param aSO SObject_ptr arguments
181 \return ChildIterator_ptr arguments, the created ChildIterator
183 virtual SALOMEDS::ChildIterator_ptr NewChildIterator(SALOMEDS::SObject_ptr aSO);
185 //! method to Create a SComponentIterator
187 \return SComponentIterator_ptr arguments, the created SComponentIterator
189 virtual SALOMEDS::SComponentIterator_ptr NewComponentIterator();
191 //! method to Create a StudyBuilder
193 \return StudyBuilder_ptr arguments, the created StudyBuilder
195 virtual SALOMEDS::StudyBuilder_ptr NewBuilder();
197 //! method to get study name
199 \return char* arguments, the study name
201 virtual char* Name();
203 //! method to set study name
205 \param name char* arguments, the study name
207 virtual void Name(const char* name);
209 //! method to get if study has been saved
211 \return bool arguments
213 virtual CORBA::Boolean IsSaved();
215 //! method to set if study has been saved
217 \param save bool arguments
219 virtual void IsSaved(CORBA::Boolean save);
221 //! method to Detect if a Study has been modified since it has been saved
223 \return bool arguments
225 virtual CORBA::Boolean IsModified();
227 //! method to get URL of the study (idem GetPersistentReference)
229 \return char* arguments, the study URL
233 //! method to set URL of the study
235 \param url char* arguments, the study URL
237 virtual void URL(const char* url);
239 virtual CORBA::Short StudyId();
240 virtual void StudyId(CORBA::Short id);
242 static SALOMEDS::Study_ptr GetStudy(const TDF_Label theLabel, CORBA::ORB_ptr orb);
244 static void IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR) theAttribute);
246 virtual void UpdateIORLabelMap(const char* anIOR, const char* aLabel);
248 virtual SALOMEDS::Study::ListOfSObject* FindDependances(SALOMEDS::SObject_ptr anObject);
250 virtual SALOMEDS::AttributeStudyProperties_ptr SALOMEDS_Study_i::GetProperties();
252 virtual char* GetLastModificationDate();
254 virtual SALOMEDS::ListOfDates* GetModificationsDate();
256 virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
257 virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
259 virtual SALOMEDS::UseCaseBuilder_ptr GetUseCaseBuilder();
261 virtual void Close();
263 void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled) { _impl->EnableUseCaseAutoFilling(isEnabled); }
265 // postponed destroying of CORBA object functionality
266 virtual void AddPostponed(const char* theIOR);
268 virtual void AddCreatedPostponed(const char* theIOR);
271 virtual void RemovePostponed(const CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
272 // if theUndoLimit==0, removes all
273 virtual void UndoPostponed(const CORBA::Long theWay); // theWay = 1: resurrect objects,
274 // theWay = -1: get back to the list of postponed
276 virtual void RemovePostponed(CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
277 // if theUndoLimit==0, removes all
278 virtual void UndoPostponed(CORBA::Long theWay); // theWay = 1: resurrect objects,
279 // theWay = -1: get back to the list of postponed
282 virtual CORBA::Boolean DumpStudy(const char* thePath, const char* theBaseName, CORBA::Boolean isPublished);
284 virtual Handle(SALOMEDSImpl_Study) GetImpl() { return _impl; }
286 virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);