Salome HOME
130ecad41bbb44ebee0596cf1293ea2fe3dc64e6
[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 <strstream>
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 , (char * ) NULL ) {
38   MESSAGE( NodeName << " " );
39 //  beginService( "FNode_Impl::FNode_Impl" );
40   _thisObj = this ;
41   _id = _poa->activate_object(_thisObj);
42   _Orb = CORBA::ORB::_duplicate(orb);
43   _Poa = poa ;
44   _ContId = contId ;
45 //  DataFlowNode( DataFlowEditor()->AddNode( NodeService , NodeComponentName ,
46 //                                           NodeInterfaceName , NodeName ,
47 //                                           NodeKindOfNode ) ) ;
48   DataFlowNode()->ComponentName( NodeComponentName ) ;
49   DataFlowNode()->InterfaceName( NodeInterfaceName ) ;
50 //  endService( "FNode_Impl::FNode_Impl" );  
51 }
52
53 FNode_Impl::FNode_Impl( CORBA::ORB_ptr orb ,
54                       PortableServer::POA_ptr poa ,
55                       PortableServer::ObjectId * contId , 
56                       const char *instanceName ,
57                       const char *interfaceName ,
58                       GraphEditor::DataFlow * aDataFlowEditor ,
59                       GraphEditor::InNode * aDataFlowNode ) :
60 //  Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) {
61   CNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowEditor , aDataFlowNode ) {
62   MESSAGE( DataFlowNode()->Name() << " " );
63   beginService( "FNode_Impl::FNode_Impl" );
64   _thisObj = this ;
65   _id = _poa->activate_object(_thisObj);
66   _Orb = CORBA::ORB::_duplicate(orb);
67   _Poa = poa ;
68   _ContId = contId ;
69   endService( "FNode_Impl::FNode_Impl" );  
70 }
71
72 FNode_Impl::~FNode_Impl() {
73   beginService( "FNode_Impl::~Node_Impl" );
74   endService( "FNode_Impl::~Node_Impl" );
75 }
76
77 void FNode_Impl::destroy() {
78   beginService( "FNode_Impl::Destroy" );
79   if ( DataFlowEditor()->IsEditing() ) {
80     if ( Delete() ) {
81       _poa->deactivate_object(*_id) ;
82       CORBA::release(_poa) ;
83       delete(_id) ;
84       _thisObj->_remove_ref();
85     }
86   }
87   endService( "FNode_Impl::Destroy" );
88 }
89
90 bool FNode_Impl::Delete() {
91 //  beginService( "FNode_Impl::Delete" );
92   bool RetVal = false ;
93   if ( DataFlowEditor()->IsEditing() ) {
94     RetVal = DataFlowEditor()->RemoveNode( Name() ) ;
95     if ( RetVal )
96       RetVal = DataFlowEditor()->IsValid() ;
97   }
98 //  endService( "FNode_Impl::Delete" );
99   return RetVal ;
100 }
101
102 char * FNode_Impl::GetComponentName() {
103 //  beginService( "FNode_Impl::GetComponentName" );
104   char * RetVal = DataFlowNode()->ComponentName() ;
105 //  endService( "FNode_Impl::GetComponentName" );
106   return CORBA::string_dup( RetVal );
107 }
108 bool FNode_Impl::SetComponentName( const char * aComponentName ) {
109 //  beginService( "FNode_Impl::SetComponentName" );
110   bool RetVal = false ;
111   if ( DataFlowEditor()->IsEditing() ) {
112     RetVal = DataFlowNode()->ComponentName( aComponentName ) ;
113   }
114 //  endService( "FNode_Impl::SetComponentName" );
115   return RetVal ;
116 }
117 char * FNode_Impl::GetInterfaceName() {
118 //  beginService( "FNode_Impl::GetInterfaceName" );
119   char * RetVal = DataFlowNode()->InterfaceName() ;
120 //  endService( "FNode_Impl::GetInterfaceName" );
121   return CORBA::string_dup( RetVal );
122 }
123 bool FNode_Impl::SetInterfaceName( const char * anInterfaceName ) {
124 //  beginService( "FNode_Impl::SetInterfaceName" );
125   bool RetVal = false ;
126   if ( DataFlowEditor()->IsEditing() ) {
127     RetVal = DataFlowNode()->InterfaceName( anInterfaceName ) ;
128   }
129 //  endService( "FNode_Impl::SetInterfaceName" );
130   return RetVal ;
131 }
132 char * FNode_Impl::GetContainer() {
133 //  beginService( "FNode_Impl::GetContainer" );
134   char * RetVal = DataFlowNode()->Computer() ;
135 //  endService( "FNode_Impl::GetContainer" );
136   return CORBA::string_dup( RetVal ) ;
137 }
138 bool FNode_Impl::SetContainer( const char * aDataFlowContainer ) {
139 //  beginService( "FNode_Impl::SetContainer" );
140   bool RetVal = false ;
141   GraphExecutor::DataFlow * _DataFlowExecutor = DataFlowEditor()->Executor() ;
142   if ( DataFlowEditor()->IsEditing() ) {
143     RetVal = DataFlowNode()->Computer( aDataFlowContainer ) ;
144   }
145   else if ( _DataFlowExecutor && ( _DataFlowExecutor->IsSuspended() ||
146             _DataFlowExecutor->IsSuspended( DataFlowNode()->Name() ) ) ) {
147     if ( _DataFlowExecutor->GetChangeGraphNode( DataFlowNode()->Name() ) ) {
148       RetVal = ((GraphEditor::InNode * ) _DataFlowExecutor->GetChangeGraphNode( DataFlowNode()->Name() )->GetInNode())->Computer( aDataFlowContainer ) ;
149     }
150   }
151 //  endService( "FNode_Impl::SetContainer" );
152   return RetVal ;
153 }
154