]> SALOME platform Git repositories - modules/kernel.git/blob - src/SALOMEDS/SALOMEDS_UseCaseBuilder_i.cxx
Salome HOME
Use a CORBA single thread model for study to avoid problems on concurrent access...
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_UseCaseBuilder_i.cxx
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_UseCaseBuilder_i.cxx
24 //  Author : Sergey RUIN
25 //  Module : SALOME
26
27 #include "SALOMEDS_UseCaseBuilder_i.hxx"
28 #include "SALOMEDS_UseCaseIterator_i.hxx"
29 #include "SALOMEDS_SObject_i.hxx"  
30 #include "SALOMEDS.hxx"
31 #include "SALOMEDS_StudyManager_i.hxx"
32
33 #include "utilities.h"
34
35 //============================================================================
36 /*! Function : constructor
37  *  Purpose  :
38  */
39 //============================================================================
40 SALOMEDS_UseCaseBuilder_i::SALOMEDS_UseCaseBuilder_i(SALOMEDSImpl_UseCaseBuilder* theImpl,
41                                                      CORBA::ORB_ptr orb) :
42   GenericObj_i(SALOMEDS_StudyManager_i::GetThePOA())
43 {
44   _orb = CORBA::ORB::_duplicate(orb);
45   _impl = theImpl;
46 }
47
48 //============================================================================
49 /*! Function : destructor
50  *  Purpose  :
51  */
52 //============================================================================
53 SALOMEDS_UseCaseBuilder_i::~SALOMEDS_UseCaseBuilder_i()
54 {
55 }
56
57 //============================================================================
58 /*!
59   \brief Get default POA for the servant object.
60
61   This function is implicitly called from "_this()" function.
62   Default POA can be set via the constructor.
63
64   \return reference to the default POA for the servant
65 */
66 //============================================================================
67 PortableServer::POA_ptr SALOMEDS_UseCaseBuilder_i::_default_POA()
68 {
69   myPOA = PortableServer::POA::_duplicate(SALOMEDS_StudyManager_i::GetThePOA());
70   MESSAGE("SALOMEDS_UseCaseBuilder_i::_default_POA: " << myPOA);
71   return PortableServer::POA::_duplicate(myPOA);
72 }
73
74
75 //============================================================================
76 /*! Function : Append
77  *  Purpose  : 
78  */
79 //============================================================================
80 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Append(SALOMEDS::SObject_ptr theObject)
81 {
82   SALOMEDS::Locker lock;
83   if(!_impl || theObject->_is_nil()) return 0;
84   CORBA::String_var id = theObject->GetID();
85   return _impl->Append(_impl->GetSObject(  id.in() ));
86 }
87
88  //============================================================================
89 /*! Function : Remove
90  *  Purpose  :
91  */
92 //============================================================================
93 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Remove(SALOMEDS::SObject_ptr theObject)
94 {
95   SALOMEDS::Locker lock;
96   if(!_impl || theObject->_is_nil()) return 0;
97   CORBA::String_var id = theObject->GetID();
98   return _impl->Remove(_impl->GetSObject( id.in() ));
99 }
100
101
102 //============================================================================
103 /*! Function : AppendTo
104  *  Purpose  :
105  */
106 //============================================================================
107 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::AppendTo(SALOMEDS::SObject_ptr theFather, 
108                                                    SALOMEDS::SObject_ptr theObject)
109 {
110   SALOMEDS::Locker lock;
111   if(!_impl || theFather->_is_nil() || theObject->_is_nil()) return 0;
112   CORBA::String_var idF = theFather->GetID();
113   CORBA::String_var idO = theObject->GetID();
114   return _impl->AppendTo(_impl->GetSObject(idF.in()), _impl->GetSObject( idO.in()));
115 }
116
117 //============================================================================
118 /*! Function : InsertBefore
119  *  Purpose  :
120  */
121 //============================================================================
122 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::InsertBefore(SALOMEDS::SObject_ptr theFirst, 
123                                                        SALOMEDS::SObject_ptr theNext)
124 {
125   SALOMEDS::Locker lock;
126   if(!_impl || theFirst->_is_nil() || theNext->_is_nil()) return 0;
127   CORBA::String_var idF = theFirst->GetID();
128   CORBA::String_var idN = theNext->GetID();
129   return _impl->InsertBefore(_impl->GetSObject(idF.in()), _impl->GetSObject(idN.in()));
130 }
131
132
133 //============================================================================
134 /*! Function : SetCurrentObject
135  *  Purpose  :
136  */
137 //============================================================================
138 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetCurrentObject(SALOMEDS::SObject_ptr theObject)
139 {
140   SALOMEDS::Locker lock;
141   if(!_impl || theObject->_is_nil()) return 0;
142   CORBA::String_var id = theObject->GetID();
143   return _impl->SetCurrentObject(_impl->GetSObject( id.in()));
144 }
145
146 //============================================================================
147 /*! Function : SetRootCurrent
148  *  Purpose  :
149  */
150 //============================================================================
151 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetRootCurrent()
152 {
153   SALOMEDS::Locker lock;
154   if(!_impl) return 0;
155   return _impl->SetRootCurrent();
156 }
157
158 //============================================================================
159 /*! Function : HasChildren
160  *  Purpose  :
161  */
162 //============================================================================
163 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::HasChildren(SALOMEDS::SObject_ptr theObject)
164 {
165   SALOMEDS::Locker lock;
166   if(!_impl) return 0;
167   CORBA::String_var id = theObject->GetID();
168   return _impl->HasChildren(_impl->GetSObject( id.in()));
169 }
170
171 //============================================================================
172 /*! Function : SortChildren
173  *  Purpose  :
174  */
175 //============================================================================
176 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SortChildren(SALOMEDS::SObject_ptr theObject, CORBA::Boolean theAscendingOrder)
177 {
178   SALOMEDS::Locker lock;
179   if(!_impl) return 0;
180   CORBA::String_var id = theObject->GetID();
181   return _impl->SortChildren(_impl->GetSObject( id.in()), theAscendingOrder);
182 }
183
184 //============================================================================
185 /*! Function : GetFather
186  *  Purpose  :
187  */
188 //============================================================================
189 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetFather(SALOMEDS::SObject_ptr theObject)
190 {
191   SALOMEDS::Locker lock; 
192
193   if(!_impl) return NULL;
194   CORBA::String_var id = theObject->GetID();
195   SALOMEDSImpl_SObject aSO = _impl->GetFather(_impl->GetSObject( id.in()));
196   SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
197   return so._retn();
198 }
199
200 //============================================================================
201 /*! Function : SetName
202  *  Purpose  :
203  */
204 //============================================================================
205 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName) 
206 {
207   SALOMEDS::Locker lock;
208   if(!_impl) return 0;
209   return _impl->SetName(theName);
210 }
211
212
213 //============================================================================
214 /*! Function : GetCurrentObject
215  *  Purpose  :
216  */
217 //============================================================================
218 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetCurrentObject()
219 {
220   SALOMEDS::Locker lock; 
221   
222   if(!_impl) return NULL;
223   SALOMEDSImpl_SObject aSO = _impl->GetCurrentObject();
224   SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
225   return so._retn();
226 }
227
228 //============================================================================
229 /*! Function : GetName
230  *  Purpose  :
231  */
232 //============================================================================
233 char* SALOMEDS_UseCaseBuilder_i::GetName() 
234 {
235   SALOMEDS::Locker lock;
236   return CORBA::string_dup(_impl->GetName().c_str());
237 }
238
239 //============================================================================ 
240 /*! Function :  IsUseCase
241  *  Purpose  :  
242  */ 
243 //============================================================================ 
244 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCase(SALOMEDS::SObject_ptr theObject)
245 {
246   SALOMEDS::Locker lock;
247   
248   if(!_impl || theObject->_is_nil()) return false;
249   CORBA::String_var id = theObject->GetID();
250   return _impl->IsUseCase(_impl->GetSObject( id.in() ));
251 }
252
253 //============================================================================ 
254 /*! Function :  IsUseCaseNode
255  *  Purpose  :  
256  */ 
257 //============================================================================ 
258 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCaseNode(SALOMEDS::SObject_ptr theObject)
259 {
260   SALOMEDS::Locker lock;
261   
262   if(!_impl || theObject->_is_nil()) return false;
263   CORBA::String_var id = theObject->GetID();
264   return _impl->IsUseCaseNode(_impl->GetSObject( id.in() ));
265 }
266
267 //============================================================================ 
268 /*! Function : NewUseCase 
269  *  Purpose  :  
270  */ 
271 //============================================================================ 
272 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::AddUseCase(const char* theName)
273 {
274   SALOMEDS::Locker lock;
275   
276   if(!_impl) return SALOMEDS::SObject::_nil();
277   SALOMEDSImpl_SObject aSO = _impl->AddUseCase((char*)theName);
278   SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
279   return so._retn();
280 }
281
282 //============================================================================
283 /*! Function : GetUseCaseIterator
284  *  Purpose  : Creates a new UseCase iterator, if anObject is null all use cases are iterated 
285  */
286 //============================================================================
287 SALOMEDS::UseCaseIterator_ptr SALOMEDS_UseCaseBuilder_i::GetUseCaseIterator(SALOMEDS::SObject_ptr theObject) 
288 {
289   SALOMEDS::Locker lock;
290   
291   if(!_impl) return SALOMEDS::UseCaseIterator::_nil();
292   SALOMEDSImpl_UseCaseIterator anItr;
293   if(!CORBA::is_nil(theObject)) {
294     CORBA::String_var id = theObject->GetID();
295     anItr = _impl->GetUseCaseIterator(_impl->GetSObject( id.in()));
296   }
297   else anItr = _impl->GetUseCaseIterator(SALOMEDSImpl_SObject());
298   SALOMEDS_UseCaseIterator_i* aServant = new SALOMEDS_UseCaseIterator_i(anItr, _orb);
299   SALOMEDS::UseCaseIterator_var anIterator = aServant->_this();
300   return anIterator._retn(); 
301 }