import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
import java.io.*;
import java.rmi.registry.*;
import com.objy.db.*;
import com.objy.db.app.*;

public class ComputeEngine extends UnicastRemoteObject implements Compute
{
  private String id;
  private int count = 0;
  Session session;
  String db_name;
  Connection conn;
  
  public ComputeEngine(String _id) throws RemoteException {
    super();
    id = _id;
  }
  

/* returns all the local chambers, including those in the replicated databases */
 
   public double getLocalBakelite(int wheel, int id) throws RemoteException {

	double dato1 = 0.0;
	java.util.Vector result = new java.util.Vector();
	System.out.println("Proviamo a connetterci");

	try {
	    conn = Connection.open("f:\\Prova\\RPC", oo.openReadWrite);
	    conn.setThreadPolicy(oo.THREAD_POLICY_UNRESTRICTED);
	    session = new Session();
	    System.out.println("Connessione riuscita e sessione aperta");
	    session.setOpenMode(oo.openReadOnly);
	    session.setMrowMode(oo.MROW);
	    session.begin();
	    System.out.println("Dopo la connessione");
	    conn.getSchemaPolicy().setChangeClassAllowed(false);
	    conn.getSchemaPolicy().setFieldAccessControlEnforced(false);
	    conn.setSchemaClassName("Wheel", "Wheel");
	    conn.setSchemaClassName("Bakelite", "Bakelite");

	} catch (DatabaseNotFoundException exception) {
	    System.err.println("Federated database \"RPC\" not found.");
	    System.exit(1);
	} catch (DatabaseOpenException exception) {
	    System.err.println("Federated database \"RPC\" already open.");
	    System.exit(1);
	}

	ooFDObj fd = session.getFD();
	ooDBObj db = fd.lookupDB("Bari_rpc");
	System.out.println("Proviamo" +fd);
	System.out.println("Prima di lookup");
	ooContObj cont = db.lookupContainer("Wheel0");
	System.out.println("Dopo lookup " +cont);
	Iterator itr = cont.scan("Bakelite","id ==" +id);
		while (itr.hasMoreElements()) {
			Bakelite bak = (Bakelite) itr.nextElement();
			System.out.println(bak.getid() + " " + bak.getcodice() + "  " + bak.getdato1());
			dato1 = bak.getdato1();
		}
	return dato1;
    }
}
