Salome HOME
PR: merge from branch BR_UnitTests tag mergeto_trunk_17oct05
[modules/yacs.git] / src / SALOMEDS / SALOMEDS_UseCaseBuilder.cxx
1 //  File   : SALOMEDS_UseCaseBuilder.cxx
2 //  Author : Sergey RUIN
3 //  Module : SALOME
4
5
6
7 #include "SALOMEDS_UseCaseBuilder.hxx"
8
9 #include "SALOMEDSImpl_SObject.hxx"
10 #include "SALOMEDS_SObject.hxx"
11 #include "SALOMEDSImpl_UseCaseIterator.hxx"
12 #include "SALOMEDS_UseCaseIterator.hxx"
13 #include <TCollection_AsciiString.hxx> 
14 #include <string>
15
16 using namespace std; 
17
18 SALOMEDS_UseCaseBuilder::SALOMEDS_UseCaseBuilder(const Handle(SALOMEDSImpl_UseCaseBuilder)& theBuilder)
19 {
20   _isLocal = true;
21   _local_impl = theBuilder;
22   _corba_impl = SALOMEDS::UseCaseBuilder::_nil();
23 }
24
25 SALOMEDS_UseCaseBuilder::SALOMEDS_UseCaseBuilder(SALOMEDS::UseCaseBuilder_ptr theBuilder)
26 {
27   _isLocal = false;
28   _local_impl = NULL;
29   _corba_impl = SALOMEDS::UseCaseBuilder::_duplicate(theBuilder);
30 }
31
32 SALOMEDS_UseCaseBuilder::~SALOMEDS_UseCaseBuilder()
33 {
34   if(!_isLocal) _corba_impl->Destroy(); 
35 }  
36
37 bool SALOMEDS_UseCaseBuilder::Append(const _PTR(SObject)& theObject)
38 {
39   bool ret;
40   SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
41   if(_isLocal) ret = _local_impl->Append(obj->GetLocalImpl());
42   else ret = _corba_impl->Append(obj->GetCORBAImpl());
43   return ret;
44 }
45
46 bool SALOMEDS_UseCaseBuilder::Remove(const _PTR(SObject)& theObject)
47 {
48   bool ret;
49   SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
50   if(_isLocal) ret = _local_impl->Remove(obj->GetLocalImpl());
51   else ret = _corba_impl->Remove(obj->GetCORBAImpl());
52   return ret;
53 }
54
55 bool SALOMEDS_UseCaseBuilder::AppendTo(const _PTR(SObject)& theFather, _PTR(SObject) theObject)
56 {
57   bool ret;
58   SALOMEDS_SObject* father = dynamic_cast<SALOMEDS_SObject*>(theFather.get());
59   SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
60   if(_isLocal) ret = _local_impl->AppendTo(father->GetLocalImpl(), obj->GetLocalImpl());
61   else ret = _corba_impl->AppendTo(father->GetCORBAImpl(), obj->GetCORBAImpl());
62   return ret;
63 }
64
65 bool SALOMEDS_UseCaseBuilder::InsertBefore(const _PTR(SObject)& theFirst, _PTR(SObject) theNext)
66 {
67   bool ret;
68   SALOMEDS_SObject* first = dynamic_cast<SALOMEDS_SObject*>(theFirst.get());
69   SALOMEDS_SObject* next = dynamic_cast<SALOMEDS_SObject*>(theNext.get());
70   if(_isLocal) ret = _local_impl->InsertBefore(first->GetLocalImpl(), next->GetLocalImpl());
71   else ret = _corba_impl->InsertBefore(first->GetCORBAImpl(), next->GetCORBAImpl());
72   return ret;
73 }
74
75 bool SALOMEDS_UseCaseBuilder::SetCurrentObject(const _PTR(SObject)& theObject)
76 {
77   bool ret;
78   SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
79   if(_isLocal) ret = _local_impl->SetCurrentObject(obj->GetLocalImpl());
80   else ret = _corba_impl->SetCurrentObject(obj->GetCORBAImpl());
81   return ret;
82 }
83
84 bool SALOMEDS_UseCaseBuilder::SetRootCurrent()
85 {
86   bool ret;
87   if(_isLocal) ret = _local_impl->SetRootCurrent();
88   else ret = _corba_impl->SetRootCurrent();
89   return ret;
90 }
91
92 bool SALOMEDS_UseCaseBuilder::HasChildren(const _PTR(SObject)& theObject)
93 {
94   bool ret;
95   SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
96   if(_isLocal) ret = _local_impl->HasChildren(obj->GetLocalImpl());
97   else ret = _corba_impl->HasChildren(obj->GetCORBAImpl());
98   return ret;
99 }
100
101 bool SALOMEDS_UseCaseBuilder::IsUseCase(const _PTR(SObject)& theObject)
102 {
103   bool ret;
104   SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
105   if(_isLocal) ret = _local_impl->IsUseCase(obj->GetLocalImpl());
106   else ret = _corba_impl->IsUseCase(obj->GetCORBAImpl());
107   return ret;
108 }
109
110 bool SALOMEDS_UseCaseBuilder::SetName(const std::string& theName)
111 {
112   bool ret;
113   if(_isLocal) ret = _local_impl->SetName((char*)theName.c_str());
114   else ret = _corba_impl->SetName((char*)theName.c_str());
115   return ret;
116 }
117
118 _PTR(SObject) SALOMEDS_UseCaseBuilder::GetCurrentObject()
119 {
120   SALOMEDS_SObject* obj = NULL;
121   if(_isLocal) obj = new SALOMEDS_SObject(_local_impl->GetCurrentObject());
122   else obj = new SALOMEDS_SObject(_corba_impl->GetCurrentObject());
123   return _PTR(SObject)(obj);
124 }
125
126 std::string SALOMEDS_UseCaseBuilder::GetName()
127 {
128   std::string aName;
129   if(_isLocal) aName = _local_impl->GetName().ToCString();
130   else aName = _corba_impl->GetName();
131   return aName;
132 }
133
134 _PTR(SObject) SALOMEDS_UseCaseBuilder::AddUseCase(const std::string& theName)
135 {
136   SALOMEDS_SObject* obj = NULL;
137   if(_isLocal) obj = new SALOMEDS_SObject(_local_impl->AddUseCase((char*)theName.c_str()));
138   else obj = new SALOMEDS_SObject(_corba_impl->AddUseCase((char*)theName.c_str()));
139   return _PTR(SObject)(obj);
140 }
141
142 _PTR(UseCaseIterator) SALOMEDS_UseCaseBuilder::GetUseCaseIterator(const _PTR(SObject)& theObject) 
143 {
144   SALOMEDS_UseCaseIterator* it = NULL;
145   SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
146   if(_isLocal) it = new SALOMEDS_UseCaseIterator(_local_impl->GetUseCaseIterator(obj->GetLocalImpl()));
147   else it = new SALOMEDS_UseCaseIterator(_corba_impl->GetUseCaseIterator(obj->GetCORBAImpl()));
148   return _PTR(UseCaseIterator)(it);
149 }