Salome HOME
updated copyright message
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_UseCaseBuilder_i.cxx
1 // Copyright (C) 2007-2023  CEA, EDF, 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_Study_i.hxx"
31 #include "SALOMEDS.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_Study_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_Study_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 : GetIndexInFather
119  *  Purpose  :
120  */
121 //============================================================================
122 CORBA::Long SALOMEDS_UseCaseBuilder_i::GetIndexInFather(SALOMEDS::SObject_ptr theFather,
123                                                         SALOMEDS::SObject_ptr theObject)
124 {
125   SALOMEDS::Locker lock;
126   if(!_impl || theFather->_is_nil() || theObject->_is_nil()) return -1;
127   CORBA::String_var idF = theFather->GetID();
128   CORBA::String_var idO = theObject->GetID();
129   return _impl->GetIndexInFather(_impl->GetSObject(idF.in()), _impl->GetSObject( idO.in()));
130 }
131
132 //============================================================================
133 /*! Function : InsertBefore
134  *  Purpose  :
135  */
136 //============================================================================
137 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::InsertBefore(SALOMEDS::SObject_ptr theFirst, 
138                                                        SALOMEDS::SObject_ptr theNext)
139 {
140   SALOMEDS::Locker lock;
141   if(!_impl || theFirst->_is_nil() || theNext->_is_nil()) return 0;
142   CORBA::String_var idF = theFirst->GetID();
143   CORBA::String_var idN = theNext->GetID();
144   return _impl->InsertBefore(_impl->GetSObject(idF.in()), _impl->GetSObject(idN.in()));
145 }
146
147
148 //============================================================================
149 /*! Function : SetCurrentObject
150  *  Purpose  :
151  */
152 //============================================================================
153 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetCurrentObject(SALOMEDS::SObject_ptr theObject)
154 {
155   SALOMEDS::Locker lock;
156   if(!_impl || theObject->_is_nil()) return 0;
157   CORBA::String_var id = theObject->GetID();
158   return _impl->SetCurrentObject(_impl->GetSObject( id.in()));
159 }
160
161 //============================================================================
162 /*! Function : SetRootCurrent
163  *  Purpose  :
164  */
165 //============================================================================
166 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetRootCurrent()
167 {
168   SALOMEDS::Locker lock;
169   if(!_impl) return 0;
170   return _impl->SetRootCurrent();
171 }
172
173 //============================================================================
174 /*! Function : HasChildren
175  *  Purpose  :
176  */
177 //============================================================================
178 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::HasChildren(SALOMEDS::SObject_ptr theObject)
179 {
180   SALOMEDS::Locker lock;
181   if(!_impl) return 0;
182   CORBA::String_var id = theObject->GetID();
183   return _impl->HasChildren(_impl->GetSObject( id.in()));
184 }
185
186 //============================================================================
187 /*! Function : SortChildren
188  *  Purpose  :
189  */
190 //============================================================================
191 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SortChildren(SALOMEDS::SObject_ptr theObject, CORBA::Boolean theAscendingOrder)
192 {
193   SALOMEDS::Locker lock;
194   if(!_impl) return 0;
195   CORBA::String_var id = theObject->GetID();
196   return _impl->SortChildren(_impl->GetSObject( id.in()), theAscendingOrder);
197 }
198
199 //============================================================================
200 /*! Function : GetFather
201  *  Purpose  :
202  */
203 //============================================================================
204 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetFather(SALOMEDS::SObject_ptr theObject)
205 {
206   SALOMEDS::Locker lock; 
207
208   if(!_impl) return NULL;
209   CORBA::String_var id = theObject->GetID();
210   SALOMEDSImpl_SObject aSO = _impl->GetFather(_impl->GetSObject( id.in()));
211   SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
212   return so._retn();
213 }
214
215 //============================================================================
216 /*! Function : SetName
217  *  Purpose  :
218  */
219 //============================================================================
220 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName) 
221 {
222   SALOMEDS::Locker lock;
223   if(!_impl) return 0;
224   return _impl->SetName(theName);
225 }
226
227
228 //============================================================================
229 /*! Function : GetCurrentObject
230  *  Purpose  :
231  */
232 //============================================================================
233 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetCurrentObject()
234 {
235   SALOMEDS::Locker lock; 
236   
237   if(!_impl) return NULL;
238   SALOMEDSImpl_SObject aSO = _impl->GetCurrentObject();
239   SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
240   return so._retn();
241 }
242
243 //============================================================================
244 /*! Function : GetName
245  *  Purpose  :
246  */
247 //============================================================================
248 char* SALOMEDS_UseCaseBuilder_i::GetName() 
249 {
250   SALOMEDS::Locker lock;
251   return CORBA::string_dup(_impl->GetName().c_str());
252 }
253
254 //============================================================================ 
255 /*! Function :  IsUseCase
256  *  Purpose  :  
257  */ 
258 //============================================================================ 
259 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCase(SALOMEDS::SObject_ptr theObject)
260 {
261   SALOMEDS::Locker lock;
262   
263   if(!_impl || theObject->_is_nil()) return false;
264   CORBA::String_var id = theObject->GetID();
265   return _impl->IsUseCase(_impl->GetSObject( id.in() ));
266 }
267
268 //============================================================================ 
269 /*! Function :  IsUseCaseNode
270  *  Purpose  :  
271  */ 
272 //============================================================================ 
273 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCaseNode(SALOMEDS::SObject_ptr theObject)
274 {
275   SALOMEDS::Locker lock;
276   
277   if(!_impl || theObject->_is_nil()) return false;
278   CORBA::String_var id = theObject->GetID();
279   return _impl->IsUseCaseNode(_impl->GetSObject( id.in() ));
280 }
281
282 //============================================================================ 
283 /*! Function : NewUseCase 
284  *  Purpose  :  
285  */ 
286 //============================================================================ 
287 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::AddUseCase(const char* theName)
288 {
289   SALOMEDS::Locker lock;
290   
291   if(!_impl) return SALOMEDS::SObject::_nil();
292   SALOMEDSImpl_SObject aSO = _impl->AddUseCase((char*)theName);
293   SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
294   return so._retn();
295 }
296
297 //============================================================================
298 /*! Function : GetUseCaseIterator
299  *  Purpose  : Creates a new UseCase iterator, if anObject is null all use cases are iterated 
300  */
301 //============================================================================
302 SALOMEDS::UseCaseIterator_ptr SALOMEDS_UseCaseBuilder_i::GetUseCaseIterator(SALOMEDS::SObject_ptr theObject) 
303 {
304   SALOMEDS::Locker lock;
305   
306   if(!_impl) return SALOMEDS::UseCaseIterator::_nil();
307   SALOMEDSImpl_UseCaseIterator anItr;
308   if(!CORBA::is_nil(theObject)) {
309     CORBA::String_var id = theObject->GetID();
310     anItr = _impl->GetUseCaseIterator(_impl->GetSObject( id.in()));
311   }
312   else anItr = _impl->GetUseCaseIterator(SALOMEDSImpl_SObject());
313   SALOMEDS_UseCaseIterator_i* aServant = new SALOMEDS_UseCaseIterator_i(anItr, _orb);
314   SALOMEDS::UseCaseIterator_var anIterator = aServant->_this();
315   return anIterator._retn(); 
316 }