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