Salome HOME
49e6e5cd84257dedb0315da871425c8cddf08bf0
[modules/superv.git] / src / Supervision / FNode_Impl.cxx
1 //  SUPERV Supervision : contains the implementation of interfaces of SuperVision described in SUPERV.idl
2 //
3 //  Copyright (C) 2003  CEA/DEN, EDF R&D
4 //
5 //
6 //
7 //  File   : FNode_Impl.cxx
8 //  Author : Jean Rahuel
9 //  Module : SUPERV
10 //  $Header: 
11
12 using namespace std;
13 #include <stdio.h>
14 #include <fstream>
15 //#include <sstream>
16 #include <string>
17
18 //#include "utilities.h"
19
20 #include "FNode_Impl.hxx"
21
22 FNode_Impl::FNode_Impl() {
23 }
24
25 FNode_Impl::FNode_Impl( CORBA::ORB_ptr orb ,
26                         PortableServer::POA_ptr poa ,
27                         PortableServer::ObjectId * contId , 
28                         const char * instanceName ,
29                         const char * interfaceName ,
30                         GraphEditor::DataFlow * aDataFlowEditor ,
31                         const SALOME_ModuleCatalog::Service &NodeService ,
32                         const char * NodeComponentName ,
33                         const char * NodeInterfaceName ,
34                         const char * NodeName ,
35                         const SUPERV::KindOfNode NodeKindOfNode ) :
36 //  Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) {
37   CNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowEditor , NodeService , NodeName , NodeKindOfNode , NULLSTRING ) {
38 //  MESSAGE( NodeName << " " );
39   beginService( "FNode_Impl::FNode_Impl" );
40 //  cout << "FNode_Impl::FNode_Impl -->" << endl ;
41   _thisObj = this ;
42   _id = _poa->activate_object(_thisObj);
43   _Orb = CORBA::ORB::_duplicate(orb);
44   _Poa = poa ;
45   _ContId = contId ;
46 //  DataFlowNode( DataFlowEditor()->AddNode( NodeService , NodeComponentName ,
47 //                                           NodeInterfaceName , NodeName ,
48 //                                           NodeKindOfNode ) ) ;
49   DataFlowNode()->ComponentName( NodeComponentName ) ;
50   DataFlowNode()->InterfaceName( NodeInterfaceName ) ;
51   endService( "FNode_Impl::FNode_Impl" );  
52 //  cout << "<-- FNode_Impl::FNode_Impl" << endl ;
53 }
54
55 FNode_Impl::FNode_Impl( CORBA::ORB_ptr orb ,
56                         PortableServer::POA_ptr poa ,
57                         PortableServer::ObjectId * contId , 
58                         const char * instanceName ,
59                         const char * interfaceName ,
60                         GraphEditor::DataFlow * aDataFlowEditor ,
61                         GraphEditor::InNode * aDataFlowNode ) :
62 //  Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) {
63   CNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowEditor , aDataFlowNode ) {
64   MESSAGE( DataFlowNode()->Name() << " " );
65   beginService( "FNode_Impl::FNode_Impl" );
66   _thisObj = this ;
67   _id = _poa->activate_object(_thisObj);
68   _Orb = CORBA::ORB::_duplicate(orb);
69   _Poa = poa ;
70   _ContId = contId ;
71   endService( "FNode_Impl::FNode_Impl" );  
72 }
73
74 FNode_Impl::~FNode_Impl() {
75   beginService( "FNode_Impl::~Node_Impl" );
76   endService( "FNode_Impl::~Node_Impl" );
77 }
78
79 void FNode_Impl::destroy() {
80   beginService( "FNode_Impl::Destroy" );
81   if ( DataFlowEditor()->IsEditing() ) {
82     if ( Delete() ) {
83       _poa->deactivate_object(*_id) ;
84       CORBA::release(_poa) ;
85       delete(_id) ;
86       _thisObj->_remove_ref();
87     }
88   }
89   endService( "FNode_Impl::Destroy" );
90 }
91
92 bool FNode_Impl::Delete() {
93 //  beginService( "FNode_Impl::Delete" );
94   bool RetVal = false ;
95   if ( DataFlowEditor()->IsEditing() ) {
96     RetVal = DataFlowEditor()->RemoveNode( Name() ) ;
97     if ( RetVal )
98       RetVal = DataFlowEditor()->IsValid() ;
99   }
100 //  endService( "FNode_Impl::Delete" );
101   return RetVal ;
102 }
103
104 char * FNode_Impl::GetComponentName() {
105 //  beginService( "FNode_Impl::GetComponentName" );
106   char * RetVal = DataFlowNode()->ComponentName() ;
107 //  endService( "FNode_Impl::GetComponentName" );
108   return CORBA::string_dup( RetVal );
109 }
110 bool FNode_Impl::SetComponentName( const char * aComponentName ) {
111 //  beginService( "FNode_Impl::SetComponentName" );
112   bool RetVal = false ;
113   if ( DataFlowEditor()->IsEditing() ) {
114     RetVal = DataFlowNode()->ComponentName( aComponentName ) ;
115   }
116 //  endService( "FNode_Impl::SetComponentName" );
117   return RetVal ;
118 }
119 char * FNode_Impl::GetInterfaceName() {
120 //  beginService( "FNode_Impl::GetInterfaceName" );
121   char * RetVal = DataFlowNode()->InterfaceName() ;
122 //  endService( "FNode_Impl::GetInterfaceName" );
123   return CORBA::string_dup( RetVal );
124 }
125 bool FNode_Impl::SetInterfaceName( const char * anInterfaceName ) {
126 //  beginService( "FNode_Impl::SetInterfaceName" );
127   bool RetVal = false ;
128   if ( DataFlowEditor()->IsEditing() ) {
129     RetVal = DataFlowNode()->InterfaceName( anInterfaceName ) ;
130   }
131 //  endService( "FNode_Impl::SetInterfaceName" );
132   return RetVal ;
133 }
134 char * FNode_Impl::GetContainer() {
135 //  beginService( "FNode_Impl::GetContainer" );
136   char * RetVal = DataFlowNode()->Computer() ;
137 //  endService( "FNode_Impl::GetContainer" );
138   return CORBA::string_dup( RetVal ) ;
139 }
140 bool FNode_Impl::SetContainer( const char * aDataFlowContainer ) {
141 //  beginService( "FNode_Impl::SetContainer" );
142   bool RetVal = false ;
143   GraphExecutor::DataFlow * _DataFlowExecutor = DataFlowEditor()->Executor() ;
144   if ( DataFlowEditor()->IsEditing() ) {
145     RetVal = DataFlowNode()->Computer( aDataFlowContainer ) ;
146   }
147   else if ( _DataFlowExecutor && ( _DataFlowExecutor->IsSuspended() ||
148             _DataFlowExecutor->IsSuspended( DataFlowNode()->Name() ) ) ) {
149     if ( _DataFlowExecutor->GetChangeGraphNode( DataFlowNode()->Name() ) ) {
150       RetVal = ((GraphEditor::InNode * ) _DataFlowExecutor->GetChangeGraphNode( DataFlowNode()->Name() )->GetInNode())->Computer( aDataFlowContainer ) ;
151     }
152   }
153 //  endService( "FNode_Impl::SetContainer" );
154   return RetVal ;
155 }
156