Salome HOME
Restore registering CORBA objects, removed by previous wrong commit
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_Study_i.hxx
1 // Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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.
10 //
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.
15 //
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
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 //  File   : SALOMEDS_Study_i.hxx
24 //  Author : Sergey RUIN
25 //  Module : SALOME
26 //
27 #ifndef __SALOMEDS_STUDY_I_H__
28 #define __SALOMEDS_STUDY_I_H__
29
30 // std C++ headers
31 #include <iostream>
32
33 // IDL headers
34 #include <SALOMEconfig.h>
35 #include CORBA_SERVER_HEADER(SALOME_GenericObj)
36 #include CORBA_SERVER_HEADER(SALOMEDS)
37
38 #include <stdio.h>
39
40 //SALOMEDS headers
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"
46
47 #include "SALOMEDSImpl_Study.hxx"
48 #include "SALOMEDSImpl_AttributeIOR.hxx"
49
50 class Standard_EXPORT SALOMEDS_Study_i: public POA_SALOMEDS::Study
51 {
52 private:
53   CORBA::ORB_var                 _orb;
54   SALOMEDSImpl_Study*            _impl;  
55   SALOMEDS_StudyBuilder_i*       _builder;    
56   SALOMEDSImpl_AbstractCallback* _notifier;
57   SALOMEDSImpl_AbstractCallback* _genObjRegister;
58   SALOMEDS_DriverFactory_i*      _factory;
59   bool                           _closed;
60
61 public:
62
63   //! standard constructor
64   SALOMEDS_Study_i(CORBA::ORB_ptr);
65   
66   //! standard destructor
67   virtual ~SALOMEDS_Study_i();
68   
69   virtual void Init();
70   virtual void Clear();
71
72   //! method to Open a Study
73   /*!
74     \param char* arguments, the study URL
75     \return Study_ptr arguments
76   */
77   virtual bool Open(const char* aStudyUrl) throw (SALOME::SALOME_Exception);
78
79   //! method to save a Study
80   virtual CORBA::Boolean Save(CORBA::Boolean theMultiFile);
81   virtual CORBA::Boolean SaveASCII(CORBA::Boolean theMultiFile);
82
83   //! method to save a Study to the persistent reference aUrl
84   /*!
85     \param char* arguments, the new URL of the study
86   */
87   virtual CORBA::Boolean SaveAs(const char* aUrl, CORBA::Boolean theMultiFile);
88   virtual CORBA::Boolean SaveAsASCII(const char* aUrl, CORBA::Boolean theMultiFile);
89
90   //! method to copy the object
91   /*!
92     \param theObject object to copy
93   */
94   virtual CORBA::Boolean Copy(SALOMEDS::SObject_ptr theObject);
95   virtual CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
96   //! method to paste the object in study
97   /*!
98     \param theObject object to paste
99   */
100   virtual SALOMEDS::SObject_ptr Paste(SALOMEDS::SObject_ptr theObject) throw(SALOMEDS::StudyBuilder::LockProtection);
101   virtual CORBA::Boolean CanPaste(SALOMEDS::SObject_ptr theObject);
102
103   //! method to Get persistent reference of study (idem URL())
104   /*!
105     \sa URL()
106     \return char* arguments, the persistent reference of the study
107   */  
108   virtual char* GetPersistentReference();
109
110
111   //! method to Get transient reference of study
112   /*!
113     \return char* arguments, the transient reference of the study
114   */  
115   virtual char* GetTransientReference();
116
117   //! method to detect if a study is empty
118   /*!
119     \return bool arguments, true if study is empty
120   */  
121   virtual CORBA::Boolean IsEmpty();
122
123   //! method to Find a Component with ComponentDataType = aComponentName
124   /*!
125     \param aComponentName char* arguments
126     \return SComponent_ptr arguments, the component found
127   */  
128   virtual SALOMEDS::SComponent_ptr FindComponent (const char* aComponentName);
129
130   //! method to Find a Component Find a Component from it's ID
131   /*!
132     \param aComponentID char* arguments
133     \return SComponent_ptr arguments, the component found
134   */  
135   virtual SALOMEDS::SComponent_ptr FindComponentID(const char* aComponentID);
136
137   //! method to  Find an Object with SALOMEDS::Name = anObjectName 
138   /*!
139     \param anObjectName char* arguments
140     \return SObject_ptr arguments, the object found
141   */  
142   virtual SALOMEDS::SObject_ptr FindObject(const char* anObjectName);
143
144
145   //! method to Find Object(s) with SALOMEDS::Name = anObjectName in a component with ComponentDataType = aComponentName
146   /*!
147     \param anObjectName char* arguments
148     \param aComponentName char* arguments
149     \return ListOfSObject_ptr arguments, a list of objects found
150   */  
151   
152   virtual SALOMEDS::Study::ListOfSObject* FindObjectByName( const char* anObjectName, const char* aComponentName ) ;
153   
154   //! method to Find an Object with ID = anObjectID 
155   /*!
156     \param anObjectID char* arguments
157     \return SObject_ptr arguments, the object found
158   */  
159   virtual SALOMEDS::SObject_ptr FindObjectID(const char* anObjectID);
160
161   //! method to Create an Object with ID = anObjectID 
162   /*!
163     \param anObjectID char* arguments
164     \return SObject_ptr arguments, the object found
165   */  
166   virtual SALOMEDS::SObject_ptr CreateObjectID(const char* anObjectID);
167
168   //! method to Find an Object with ID = anObjectIOR 
169   /*!
170     \param anObjectIOR char* arguments
171     \return SObject_ptr arguments, the object found
172   */  
173   virtual SALOMEDS::SObject_ptr FindObjectIOR(const char* anObjectIOR);
174
175   //! method to Find an Object by its path
176   /*!
177     \param thePath char* arguments
178     \return SObject_ptr arguments, the object found
179   */
180   virtual SALOMEDS::SObject_ptr FindObjectByPath(const char* thePath);
181
182   //! method to get a path of SObject
183   /*!
184     \param aSO  SObject_ptr arguments
185     \return char* arguments, the path of the SObject
186   */
187   virtual char* GetObjectPath(CORBA::Object_ptr theObject);
188
189   //! method to set a context: root ('/') is UserData component
190   /*!
191   */
192   virtual void SetContext(const char* thePath);
193
194   //! method to get a context
195   /*!
196   */
197   virtual char* GetContext();  
198
199   //! method to get all object names in the given context (or in the current context, if 'theContext' is empty)
200   /*!
201   */
202   virtual SALOMEDS::ListOfStrings* GetObjectNames(const char* theContext);
203
204   //! method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
205   /*!
206   */
207   virtual SALOMEDS::ListOfStrings* GetDirectoryNames(const char* theContext);
208
209   //! method to get all file names in the given context (or in the current context, if 'theContext' is empty)
210   /*!
211   */
212   virtual SALOMEDS::ListOfStrings* GetFileNames(const char* theContext);
213
214   //! method to get all components names
215   /*!
216   */
217   virtual SALOMEDS::ListOfStrings* GetComponentNames(const char* theContext);
218
219   //! method to Create a ChildIterator from an SObject 
220   /*!
221     \param aSO  SObject_ptr arguments
222     \return ChildIterator_ptr arguments, the created ChildIterator
223   */  
224   virtual SALOMEDS::ChildIterator_ptr NewChildIterator(SALOMEDS::SObject_ptr aSO);
225
226   //! method to Create a SComponentIterator 
227   /*!
228     \return SComponentIterator_ptr arguments, the created SComponentIterator
229   */  
230   virtual SALOMEDS::SComponentIterator_ptr NewComponentIterator();
231
232   //! method to Create a StudyBuilder
233   /*!
234     \return StudyBuilder_ptr arguments, the created StudyBuilder
235   */  
236   virtual SALOMEDS::StudyBuilder_ptr NewBuilder();
237  
238   //! method to get study name
239   /*!
240     \return char* arguments, the study name
241   */
242   virtual char* Name();
243
244   //! method to get if study has been saved
245   /*!
246     \return bool arguments
247   */
248   virtual CORBA::Boolean IsSaved();
249
250  //! method to set if study has been saved
251   /*!
252     \param save bool arguments
253   */
254   virtual void  IsSaved(CORBA::Boolean save);
255
256  //! method to Detect if a Study has been modified since it has been saved
257   /*!
258     \return bool arguments
259   */
260   virtual CORBA::Boolean IsModified();
261
262  //! method to set Modified flag of a Study to True
263   virtual void Modified();
264
265   //! method to get URL of the study (idem GetPersistentReference) 
266   /*!
267     \return char* arguments, the study URL 
268   */
269   virtual char* URL();
270
271  //! method to set URL of the study
272   /*!
273     \param url char* arguments, the study URL
274   */
275   virtual void  URL(const char* url);
276
277   static SALOMEDS::Study_ptr GetStudy(const DF_Label& theLabel, CORBA::ORB_ptr orb);
278
279   static void IORUpdated(SALOMEDSImpl_AttributeIOR* theAttribute);
280
281   virtual void UpdateIORLabelMap(const char* anIOR, const char* aLabel);
282   
283   virtual SALOMEDS::Study::ListOfSObject* FindDependances(SALOMEDS::SObject_ptr anObject);
284
285   virtual SALOMEDS::AttributeStudyProperties_ptr GetProperties();
286
287   virtual char* GetLastModificationDate();
288
289   virtual SALOMEDS::ListOfDates* GetModificationsDate();
290
291   virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
292   virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
293
294   virtual SALOMEDS::UseCaseBuilder_ptr GetUseCaseBuilder();
295
296   void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled); 
297
298   // postponed destroying of CORBA object functionality
299   virtual void AddPostponed(const char* theIOR);
300
301   virtual void AddCreatedPostponed(const char* theIOR);
302
303   virtual void RemovePostponed(CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
304                                                         // if theUndoLimit==0, removes all
305   virtual void UndoPostponed(CORBA::Long theWay); // theWay = 1: resurrect objects,
306                                                 // theWay = -1: get back to the list of postponed
307
308   virtual SALOMEDS::AttributeParameter_ptr GetCommonParameters(const char* theID, CORBA::Long theSavePoint);
309   virtual SALOMEDS::AttributeParameter_ptr GetModuleParameters(const char* theID, 
310                                                                const char* theModuleName, 
311                                                                CORBA::Long theSavePoint);
312
313   virtual void SetStudyLock(const char* theLockerID);
314
315   virtual bool IsStudyLocked();
316
317   virtual void UnLockStudy(const char* theLockerID);
318
319   virtual SALOMEDS::ListOfStrings* GetLockerID();
320
321   virtual void SetReal(const char* theVarName, CORBA::Double theValue);
322   
323   virtual void SetInteger(const char* theVarName, CORBA::Long theValue);
324
325   virtual void SetBoolean(const char* theVarName, CORBA::Boolean theValue);
326
327   virtual void SetString(const char* theVarName, const char* theValue);
328
329   virtual void SetStringAsDouble(const char* theVarName, CORBA::Double theValue);
330
331   virtual CORBA::Double GetReal(const char* theVarName);
332   
333   virtual CORBA::Long GetInteger(const char* theVarName);
334
335   virtual CORBA::Boolean GetBoolean(const char* theVarName);
336
337   virtual char* GetString(const char* theVarName);
338
339   virtual CORBA::Boolean IsReal(const char* theVarName);
340   
341   virtual CORBA::Boolean IsInteger(const char* theVarName);
342
343   virtual CORBA::Boolean IsBoolean(const char* theVarName);
344
345   virtual CORBA::Boolean IsString(const char* theVarName);
346
347   virtual CORBA::Boolean IsVariable(const char* theVarName);
348
349   virtual SALOMEDS::ListOfStrings* GetVariableNames();
350
351   virtual CORBA::Boolean RemoveVariable(const char* theVarName);
352
353   virtual CORBA::Boolean RenameVariable(const char* theVarName, const char* theNewVarName);
354
355   virtual CORBA::Boolean IsVariableUsed(const char* theVarName);
356   
357   virtual SALOMEDS::ListOfListOfStrings* ParseVariables(const char* theVars);
358
359   virtual char* GetDefaultScript(const char* theModuleName, const char* theShift);
360
361   virtual CORBA::Boolean DumpStudy(const char* thePath,
362                                    const char* theBaseName,
363                                    CORBA::Boolean isPublished,
364                                    CORBA::Boolean isMultiFile);
365
366   virtual SALOMEDSImpl_Study* GetImpl() { return _impl; }
367
368   virtual CORBA::LongLong GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
369
370   void ping(){};
371   CORBA::Long getPID();
372   void ShutdownWithExit();
373
374   void Shutdown();
375
376   virtual void attach(SALOMEDS::Observer_ptr theObs, CORBA::Boolean modify);
377   virtual void detach(SALOMEDS::Observer_ptr theObs);
378 };
379 #endif