import phases.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
import java.util.*;
import java.io.*;
import java.applet.*;

public class Connection{

  public Connection() { }

  public ORB getORB(Applet myapplet) {
    ORB orb = ORB.init(myapplet, null);
    return orb;
  }
	
  public ORB getORB(String args[], Properties props) {
    ORB orb = ORB.init(args, props);
    return orb;
  }



  public org.omg.CORBA.Object getObjectReference(ORB orb, NameComponent[] name) throws Exception {
	try {
	System.out.println("Initializing the Naming Service...");
        org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
        System.out.println("Object" + objRef);
        if (objRef == null)
        {
               System.out.println("Name Service Object is null");
        }
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
        if (ncRef == null)
        {
                System.out.println("NameService is null");
        }
	org.omg.CORBA.Object obj = ncRef.resolve(name);
	return obj;
	}
	catch (Exception e){
		System.err.println("ERROR" + e);
		throw e;
	}
  }

  public phases.PhaseFactory getdPhaseFactory(ORB orb) throws Exception {
	try {
	
	NameComponent name1 = new NameComponent("phases", "context");
        NameComponent name2 = new NameComponent("PhaseFactory", "object");    
    	NameComponent name[] = {name1, name2};

	org.omg.CORBA.Object x = getObjectReference(orb, name);

        PhaseFactory pFactory = phases.PhaseFactoryHelper.narrow(x);
        if (pFactory == null)
        {
                System.out.println("Object reference is not a phases::PhaseFactory");
        }
	return pFactory;
	}
	catch (Exception e){
		System.err.println("ERROR" + e);
		throw e;
	}

  }

 public phases.PhaseManager getdPhaseManager(ORB orb) throws Exception {
	try {
	NameComponent name3 = new NameComponent("phases", "context");
        NameComponent name4 = new NameComponent("PhaseManager", "object");
        NameComponent[] name5 = {name3, name4};

	org.omg.CORBA.Object y = getObjectReference(orb, name5);
        PhaseManager pManager = phases.PhaseManagerHelper.narrow(y);
        if (pManager == null)
        {
                System.out.println("Object reference is not a phases::PhaseManager");
       
	}
	return pManager;
	}
	catch (Exception e) {
		System.err.println("ERROR" + e);
		throw e;
	}
 }

}

