// Copyright MageLang Institute; Version $Id: //depot/main/src/edu/modules/RMI-mml2/magercises/LocalRemoteClient/Solution/LocalRemoteClient.java#2 $
/**
 * Class:        LocalRemoteClient
 *
 * Purpose:      Test the use of Delegation Pattern to
 *               implement Remote and Local versions
 *               of an RMI network service.
 */
import java.net.*;
import java.io.*;

import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.LocateRegistry;


public class LocalRemoteClient
{
   private static final int    PORT        = 10009;
   //
   // -> Change the name to your own computer!
   //
   private static final String HOST_NAME   = "ROSA";

   // Instance of ourselves
   private static LocalRemoteClient lrc;


   public static void main
     (
       String[] args
     )
   {

      lrc = new LocalRemoteClient();

   }  // main



   // Constructor
   public LocalRemoteClient()
   {

      RemoteModelMgr rmm;

      LocalModel     lm;
      RemoteModelRef rmr;

      String         versionLocal;
      String         versionRemote;


      try
      {
         rmm = (RemoteModelMgr)Naming.lookup( "rmi://" + HOST_NAME + ":" + Integer.toString( PORT ) + "/RemoteModelManager" );

         System.out.println( "RemoteModelManager lookup successful" );

         rmr           = rmm.getRemoteModelRef();
         versionRemote = rmr.getVersionNumber();

         System.out.println( "Remote version: " + versionRemote );

         lm            = rmm.getLocalModel();

         System.out.println( "Local Version of the model loaded" );

         versionLocal  = lm.getVersionNumber();

         System.out.println( "Local  version: " + versionLocal  );


      }
      catch ( java.rmi.UnknownHostException uhe )
      {
         System.out.println( "The host computer name you have specified, " + HOST_NAME + " does not match your real computer name." );
      }
      catch ( RemoteException re )
      {
         System.out.println( "A Remote Exception was thrown when requesting the RemoteModelManager Server" );
         System.out.println( "" + re );
      }
      catch ( MalformedURLException mURLe )
      {
         System.out.println( "There is a problem with the rmi: URL you are using" );
         System.out.println( "" + mURLe );
      }
      catch ( NotBoundException nbe )
      {
         System.out.println( "" + nbe );
      }
      catch ( Exception e )
      {
         System.out.println( "" + e );
      }

   }

}  // class LocalRemoteClient