package cadena;

public class Scenario{
	public static void main(String[] args) throws Exception {
		org.omg.Components.CCMHome ccmhome;
		// Init the ORB.
		System.out.println("Initializing the ORB...");
		// Init the OpenCCM Components Runtime.
		org.omg.CORBA.ORB corbaorb = org.objectweb.ccm.Components.Runtime.init(args);

		// Obtain the Name Service.
		System.out.println("Obtaining the Name Service...");
		org.omg.CORBA.Object corbaobj = corbaorb.resolve_initial_references("NameService");
		org.omg.CosNaming.NamingContext namingContext = org.omg.CosNaming.NamingContextHelper.narrow(corbaobj);

		// Obtain the component servers.
		System.out.println("Obtaining Component Servers...");
		org.omg.CosNaming.NameComponent[] nameComponent = new org.omg.CosNaming.NameComponent[1];
		nameComponent[0] = new org.omg.CosNaming.NameComponent("OCP_P1","");
		corbaobj = namingContext.resolve(nameComponent);
		org.objectweb.ccm.Deployment.Server ocp_p1_server =
		org.objectweb.ccm.Deployment.ServerHelper.narrow(corbaobj);

		nameComponent[0].id = "OCP_P2";
		corbaobj = namingContext.resolve(nameComponent);
		org.objectweb.ccm.Deployment.Server ocp_p2_server =
		org.objectweb.ccm.Deployment.ServerHelper.narrow(corbaobj);


		// Obtain the container homes.
		org.omg.Components.Deployment.ComponentServer ocp_p1_cs = 
		ocp_p1_server.provide_component_server();
		org.omg.Components.Deployment.ComponentServer ocp_p2_cs = 
		ocp_p2_server.provide_component_server();

		//Install archives.
		System.out.println("Installing archives...");
		org.omg.Components.Deployment.ComponentInstallation ocp_p1_inst = 
		ocp_p1_server.provide_install();
		ocp_p1_inst.install("multiratemp", "./archives/multiratemp.jar");
		ocp_p1_inst.install("openccm_plugins", "./OpenCCM_Plugins.jar");
		org.omg.Components.Deployment.ComponentInstallation ocp_p2_inst = 
		ocp_p2_server.provide_install();
		ocp_p2_inst.install("multiratemp", "./archives/multiratemp.jar");
		ocp_p2_inst.install("openccm_plugins", "./OpenCCM_Plugins.jar");

		org.omg.Components.Deployment.Container ocp_p1_cont =
			ocp_p1_cs.create_container(new org.omg.Components.ConfigValue[0]);

		org.omg.Components.Deployment.Container ocp_p2_cont =
			ocp_p2_cs.create_container(new org.omg.Components.ConfigValue[0]);

		System.out.println("Instantiating homes, components...");
		ccmhome = ocp_p1_cont.install_home("multiratemp", "cadena.common.EventChannelHomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		cadena.common.EventChannelHome eventchannelOCP_P1Home = cadena.common.EventChannelHomeHelper.narrow(ccmhome);
		cadena.common.EventChannel eventchannel = eventchannelOCP_P1Home.create();
		ccmhome = ocp_p1_cont.install_home("multiratemp", "cadena.common.BMPushDataSourceHomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		cadena.common.BMPushDataSourceHome bmpushdatasourceOCP_P1Home = cadena.common.BMPushDataSourceHomeHelper.narrow(ccmhome);
		cadena.common.BMPushDataSource pilotcontrol = bmpushdatasourceOCP_P1Home.create();
		ccmhome = ocp_p1_cont.install_home("multiratemp", "cadena.basicmp.BMOpenED1HomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		cadena.basicmp.BMOpenED1Home bmopened1OCP_P1Home = cadena.basicmp.BMOpenED1HomeHelper.narrow(ccmhome);
		cadena.basicmp.BMOpenED1 waypointproxy = bmopened1OCP_P1Home.create();
		ccmhome = ocp_p2_cont.install_home("multiratemp", "cadena.common.BMOpenEDHomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		cadena.common.BMOpenEDHome bmopenedOCP_P2Home = cadena.common.BMOpenEDHomeHelper.narrow(ccmhome);
		cadena.common.BMOpenED waypoint = bmopenedOCP_P2Home.create();
		ccmhome = ocp_p1_cont.install_home("multiratemp", "cadena.common.BMDisplayHomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		cadena.common.BMDisplayHome bmdisplayOCP_P1Home = cadena.common.BMDisplayHomeHelper.narrow(ccmhome);
		cadena.common.BMDisplay flt_plan_display = bmdisplayOCP_P1Home.create();
		ccmhome = ocp_p2_cont.install_home("multiratemp", "cadena.common.BMDeviceHomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		cadena.common.BMDeviceHome bmdeviceOCP_P2Home = cadena.common.BMDeviceHomeHelper.narrow(ccmhome);
		cadena.common.BMDevice sensor_coordinator = bmdeviceOCP_P2Home.create();
		ccmhome = ocp_p2_cont.install_home("multiratemp", "ultiratemp.BMTRANSLATORHomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		ultiratemp.BMTRANSLATORHome bmtranslatorOCP_P2Home = ultiratemp.BMTRANSLATORHomeHelper.narrow(ccmhome);
		ultiratemp.BMTRANSLATOR translator = bmtranslatorOCP_P2Home.create();
		cadena.common.BMDevice radar = bmdeviceOCP_P2Home.create();
		ccmhome = ocp_p2_cont.install_home("multiratemp", "cadena.common.BMDisplayHomeImpl.create_home",
 		new org.omg.Components.ConfigValue[0]);
		cadena.common.BMDisplayHome bmdisplayOCP_P2Home = cadena.common.BMDisplayHomeHelper.narrow(ccmhome);
		cadena.common.BMDisplay radar_display = bmdisplayOCP_P2Home.create();

		System.out.println("set instance names...");
		eventchannel.name("EventChannel");
		pilotcontrol.name("PilotControl");
		waypointproxy.name("WayPointProxy");
		waypoint.name("WayPoint");
		flt_plan_display.name("FLT_PLAN_DISPLAY");
		sensor_coordinator.name("SENSOR_COORDINATOR");
		translator.name("Translator");
		radar.name("RADAR");
		radar_display.name("RADAR_DISPLAY");

		System.out.println("Interconnecting components...");
		eventchannel.subscribe_timeOut1(pilotcontrol.get_consumer_timeOut());
		eventchannel.subscribe_timeOut5(sensor_coordinator.get_consumer_timeOut());
		waypointproxy.subscribe_outDataAvailable(flt_plan_display.get_consumer_inDataAvailable());
		flt_plan_display.connect_dataIn(waypointproxy.provide_dataOut());
		waypoint.connect_dataWriteOut(waypointproxy.provide_dataWriteIn2());
		pilotcontrol.connect_dataWriteOut(waypointproxy.provide_dataWriteIn1());
		sensor_coordinator.subscribe_outDataAvailable(translator.get_consumer_inDataAvailable());
		translator.subscribe_timeOut(radar.get_consumer_timeOut());
		radar_display.connect_dataIn(radar.provide_dataOut());
		radar.subscribe_outDataAvailable(radar_display.get_consumer_inDataAvailable());

		System.out.println("Create gateways...");
		edu.ksu.cis.EventChannelAdmin.Dependency OCP_P2_OCP_P1_dependency[] = 
			new edu.ksu.cis.EventChannelAdmin.Dependency[1];
		OCP_P2_OCP_P1_dependency[0] = 
			new edu.ksu.cis.EventChannelAdmin.Dependency();
		OCP_P2_OCP_P1_dependency[0].header = 
			new edu.ksu.cis.EventComm.EventHeader(2, 0);
		edu.ksu.cis.EventChannelAdmin.ConsumerQOS OCP_P2_OCP_P1_cqos = 
			new edu.ksu.cis.EventChannelAdmin.ConsumerQOS(OCP_P2_OCP_P1_dependency);
		ocp_p2_cs.create_gateway("OCP_P2.EventChannel", "OCP_P1.EventChannel", OCP_P2_OCP_P1_cqos);


		System.out.println("Components configuration completion...");
		eventchannel.configuration_complete();
		pilotcontrol.configuration_complete();
		waypointproxy.configuration_complete();
		waypoint.configuration_complete();
		flt_plan_display.configuration_complete();
		sensor_coordinator.configuration_complete();
		translator.configuration_complete();
		radar.configuration_complete();
		radar_display.configuration_complete();
		System.exit(0);
	}
}


syntax highlighted by Code2HTML, v. 0.9.1