Salome HOME
SMH: 3.0.0 preparation = merged version (POLYWORK + RTVDEBUG01) + adopation for new GUI
[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     else {
89       MESSAGE("FNode_Impl::destroy ERROR ") ;
90     }
91   }
92 //  endService( "FNode_Impl::Destroy" );
93 }
94
95 bool FNode_Impl::Delete() {
96 //  beginService( "FNode_Impl::Delete" );
97   bool RetVal = false ;
98   if ( DataFlowEditor()->IsEditing() ) {
99     DeletePorts() ;
100     RetVal = DataFlowEditor()->RemoveNode( Name() ) ;
101     if ( RetVal ) {
102       DataFlowEditor()->UnValid() ;
103     }
104   }
105 //  endService( "FNode_Impl::Delete" );
106   return RetVal ;
107 }
108
109 char * FNode_Impl::GetComponentName() {
110 //  beginService( "FNode_Impl::GetComponentName" );
111   char * RetVal = DataFlowNode()->ComponentName() ;
112 //  endService( "FNode_Impl::GetComponentName" );
113   return CORBA::string_dup( RetVal );
114 }
115 bool FNode_Impl::SetComponentName( const char * aComponentName ) {
116 //  beginService( "FNode_Impl::SetComponentName" );
117   bool RetVal = false ;
118   RetVal = DataFlowNode()->ComponentName( aComponentName ) ;
119 //  endService( "FNode_Impl::SetComponentName" );
120   return RetVal ;
121 }
122 char * FNode_Impl::GetInterfaceName() {
123 //  beginService( "FNode_Impl::GetInterfaceName" );
124   char * RetVal = DataFlowNode()->InterfaceName() ;
125 //  endService( "FNode_Impl::GetInterfaceName" );
126   return CORBA::string_dup( RetVal );
127 }
128 bool FNode_Impl::SetInterfaceName( const char * anInterfaceName ) {
129 //  beginService( "FNode_Impl::SetInterfaceName" );
130   bool RetVal = false ;
131     RetVal = DataFlowNode()->InterfaceName( anInterfaceName ) ;
132 //  endService( "FNode_Impl::SetInterfaceName" );
133   return RetVal ;
134 }
135 char * FNode_Impl::GetContainer() {
136 //  beginService( "FNode_Impl::GetContainer" );
137   char * RetVal = DataFlowNode()->Computer() ;
138 //  endService( "FNode_Impl::GetContainer" );
139   return CORBA::string_dup( RetVal ) ;
140 }
141 bool FNode_Impl::SetContainer( const char * aDataFlowContainer ) {
142 //  beginService( "FNode_Impl::SetContainer" );
143   bool RetVal = false ;
144 //  GraphExecutor::DataFlow * _DataFlowExecutor = DataFlowEditor()->Executor() ;
145 //  if ( DataFlowEditor()->IsEditing() ) {
146     RetVal = DataFlowNode()->Computer( aDataFlowContainer ) ;
147 //  }
148 //  else if ( _DataFlowExecutor && ( _DataFlowExecutor->IsSuspended() ||
149 //            _DataFlowExecutor->IsSuspended( DataFlowNode()->Name() ) ) ) {
150 //    if ( _DataFlowExecutor->Graph()->GetChangeGraphNode( DataFlowNode()->Name() ) ) {
151 //      RetVal = ((GraphEditor::InNode * ) _DataFlowExecutor->Graph()->GetChangeGraphNode( DataFlowNode()->Name() )->GetInNode())->Computer( aDataFlowContainer ) ;
152       DataFlowEditor()->UnValid() ;
153 //    }
154 //  }
155 //  endService( "FNode_Impl::SetContainer" );
156   return RetVal ;
157 }
158