+//=============================================================================
+/*! \brief Find an already existing and registered component instance.
+ *
+ * \param params machine parameters like type or name...
+ * \param componentName the name of component class
+ * \param studyId default = 0 : multistudy instance
+ * \return a CORBA reference of the component instance, or _nil if not found
+ */
+//=============================================================================
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::FindComponent(const Engines::MachineParameters& params,
+ const char *componentName,
+ int studyId)
+{
+ if (! isKnownComponentClass(componentName))
+ return Engines::Component::_nil();
+
+ Engines::MachineParameters parms(params);
+ parms.componentList.length(1);
+ parms.componentList[0] = componentName;
+ Engines::MachineList_var listOfMachines = _ResManager->GetFittingResources(parms);
+
+ Engines::Component_var compo = _FindComponent(parms,
+ componentName,
+ studyId,
+ listOfMachines);
+
+ return compo._retn();
+}
+
+//=============================================================================
+/*! \brief Load a component instance on a container defined by machine parameters
+ *
+ * \param params machine parameters like type or name...
+ * \param componentName the name of component class
+ * \param studyId default = 0 : multistudy instance
+ * \return a CORBA reference of the component instance, or _nil if problem
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::LoadComponent(const Engines::MachineParameters& params,
+ const char *componentName,
+ int studyId)
+{
+ // --- Check if Component Name is known in ModuleCatalog
+
+ if (! isKnownComponentClass(componentName))
+ return Engines::Component::_nil();
+
+ Engines::MachineParameters parms(params);
+ parms.componentList.length(1);
+ parms.componentList[0] = componentName;
+
+ Engines::MachineList_var listOfMachines = _ResManager->GetFittingResources(parms);
+ parms.computerList=listOfMachines;
+
+ Engines::Component_var compo = _LoadComponent(parms,
+ componentName,
+ studyId);
+
+ return compo._retn();
+}
+
+//=============================================================================
+/*! \brief Find an already existing and registered component instance or load a new
+ * component instance on a container defined by machine parameters.
+ *
+ * \param params machine parameters like type or name...
+ * \param componentName the name of component class
+ * \param studyId default = 0 : multistudy instance
+ * \return a CORBA reference of the component instance, or _nil if problem
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::
+FindOrLoad_Component(const Engines::MachineParameters& params,
+ const char *componentName,
+ int studyId)
+{
+ // --- Check if Component Name is known in ModuleCatalog
+
+ if (! isKnownComponentClass(componentName))
+ return Engines::Component::_nil();
+
+ Engines::MachineParameters parms(params);
+ parms.componentList.length(1);
+ parms.componentList[0] = componentName;
+ Engines::MachineList_var listOfMachines = _ResManager->GetFittingResources(parms);
+
+ Engines::Component_var compo = _FindComponent(parms,
+ componentName,
+ studyId,
+ listOfMachines);
+
+ if(CORBA::is_nil(compo))
+ {
+ parms.computerList=listOfMachines;
+ compo = _LoadComponent(parms,
+ componentName,
+ studyId);
+ }
+
+ return compo._retn();
+}
+
+//=============================================================================
+/*! \brief Find an already existing and registered component instance or load a new
+ * component instance on a container defined by name
+ *
+ * \param containerName the name of container, under one of the forms
+ * - 1 aContainer (local container)
+ * - 2 machine/aContainer (container on hostname = machine)
+ * \param componentName the name of component class
+ * \return a CORBA reference of the component instance, or _nil if problem
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::FindOrLoad_Component(const char *containerName,
+ const char *componentName)
+{
+ char *valenv=getenv("SALOME_BATCH");
+ if(valenv)
+ if (strcmp(valenv,"1")==0)
+ {
+ MESSAGE("SALOME_LifeCycleCORBA::FindOrLoad_Component BATCH " << containerName << " " << componentName ) ;
+ _NS->Change_Directory("/Containers");
+ CORBA::Object_ptr obj=_NS->Resolve(containerName);
+ Engines::Container_var cont=Engines::Container::_narrow(obj);
+ bool isLoadable = cont->load_component_Library(componentName);
+ if (!isLoadable) return Engines::Component::_nil();
+
+ Engines::Component_ptr myInstance =
+ cont->create_component_instance(componentName, 0);
+ return myInstance;
+ }
+ MESSAGE("SALOME_LifeCycleCORBA::FindOrLoad_Component INTERACTIF " << containerName << " " << componentName ) ;
+ //#if 0
+ // --- Check if Component Name is known in ModuleCatalog
+
+ if (! isKnownComponentClass(componentName))
+ return Engines::Component::_nil();
+
+ // --- Check if containerName contains machine name (if yes: rg>0)
+
+ char *stContainer=strdup(containerName);
+ string st2Container(stContainer);
+ int rg=st2Container.find("/");
+
+ Engines::MachineParameters_var params=new Engines::MachineParameters;
+ preSet(params);
+ if (rg<0)
+ {
+ // containerName doesn't contain "/" => Local container
+ params->container_name=CORBA::string_dup(stContainer);
+ params->hostname="";