1 // Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // File : SALOMEDS_UseCaseBuilder_i.cxx
24 // Author : Sergey RUIN
27 #include "SALOMEDS_UseCaseBuilder_i.hxx"
28 #include "SALOMEDS_UseCaseIterator_i.hxx"
29 #include "SALOMEDS_SObject_i.hxx"
30 #include "SALOMEDS.hxx"
32 #include "utilities.h"
34 //============================================================================
35 /*! Function : constructor
38 //============================================================================
39 SALOMEDS_UseCaseBuilder_i::SALOMEDS_UseCaseBuilder_i(SALOMEDSImpl_UseCaseBuilder* theImpl,
42 _orb = CORBA::ORB::_duplicate(orb);
46 //============================================================================
47 /*! Function : destructor
50 //============================================================================
51 SALOMEDS_UseCaseBuilder_i::~SALOMEDS_UseCaseBuilder_i()
56 //============================================================================
60 //============================================================================
61 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Append(SALOMEDS::SObject_ptr theObject)
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() ));
69 //============================================================================
73 //============================================================================
74 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Remove(SALOMEDS::SObject_ptr theObject)
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() ));
83 //============================================================================
84 /*! Function : AppendTo
87 //============================================================================
88 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::AppendTo(SALOMEDS::SObject_ptr theFather,
89 SALOMEDS::SObject_ptr theObject)
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()));
98 //============================================================================
99 /*! Function : InsertBefore
102 //============================================================================
103 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::InsertBefore(SALOMEDS::SObject_ptr theFirst,
104 SALOMEDS::SObject_ptr theNext)
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()));
114 //============================================================================
115 /*! Function : SetCurrentObject
118 //============================================================================
119 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetCurrentObject(SALOMEDS::SObject_ptr theObject)
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()));
127 //============================================================================
128 /*! Function : SetRootCurrent
131 //============================================================================
132 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetRootCurrent()
134 SALOMEDS::Locker lock;
136 return _impl->SetRootCurrent();
139 //============================================================================
140 /*! Function : HasChildren
143 //============================================================================
144 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::HasChildren(SALOMEDS::SObject_ptr theObject)
146 SALOMEDS::Locker lock;
148 CORBA::String_var id = theObject->GetID();
149 return _impl->HasChildren(_impl->GetSObject( id.in()));
152 //============================================================================
153 /*! Function : SortChildren
156 //============================================================================
157 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SortChildren(SALOMEDS::SObject_ptr theObject, CORBA::Boolean theAscendingOrder)
159 SALOMEDS::Locker lock;
161 CORBA::String_var id = theObject->GetID();
162 return _impl->SortChildren(_impl->GetSObject( id.in()), theAscendingOrder);
165 //============================================================================
166 /*! Function : GetFather
169 //============================================================================
170 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetFather(SALOMEDS::SObject_ptr theObject)
172 SALOMEDS::Locker lock;
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);
181 //============================================================================
182 /*! Function : SetName
185 //============================================================================
186 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName)
188 SALOMEDS::Locker lock;
190 return _impl->SetName(theName);
194 //============================================================================
195 /*! Function : GetCurrentObject
198 //============================================================================
199 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetCurrentObject()
201 SALOMEDS::Locker lock;
203 if(!_impl) return NULL;
204 SALOMEDSImpl_SObject aSO = _impl->GetCurrentObject();
205 SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
209 //============================================================================
210 /*! Function : GetName
213 //============================================================================
214 char* SALOMEDS_UseCaseBuilder_i::GetName()
216 SALOMEDS::Locker lock;
217 return CORBA::string_dup(_impl->GetName().c_str());
220 //============================================================================
221 /*! Function : IsUseCase
224 //============================================================================
225 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCase(SALOMEDS::SObject_ptr theObject)
227 SALOMEDS::Locker lock;
229 if(!_impl || theObject->_is_nil()) return false;
230 CORBA::String_var id = theObject->GetID();
231 return _impl->IsUseCase(_impl->GetSObject( id.in() ));
234 //============================================================================
235 /*! Function : IsUseCaseNode
238 //============================================================================
239 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCaseNode(SALOMEDS::SObject_ptr theObject)
241 SALOMEDS::Locker lock;
243 if(!_impl || theObject->_is_nil()) return false;
244 CORBA::String_var id = theObject->GetID();
245 return _impl->IsUseCaseNode(_impl->GetSObject( id.in() ));
248 //============================================================================
249 /*! Function : NewUseCase
252 //============================================================================
253 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::AddUseCase(const char* theName)
255 SALOMEDS::Locker lock;
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);
263 //============================================================================
264 /*! Function : GetUseCaseIterator
265 * Purpose : Creates a new UseCase iterator, if anObject is null all use cases are iterated
267 //============================================================================
268 SALOMEDS::UseCaseIterator_ptr SALOMEDS_UseCaseBuilder_i::GetUseCaseIterator(SALOMEDS::SObject_ptr theObject)
270 SALOMEDS::Locker lock;
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()));
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();