Files
eva2/src/javaeva/client/EvAComAdapter.java
2007-12-11 16:38:11 +00:00

138 lines
4.1 KiB
Java

package javaeva.client;
/*
* Title: JavaEvA
* Description:
* Copyright: Copyright (c) 2003
* Company: University of Tuebingen, Computer Architecture
* @author Holger Ulmer, Felix Streichert, Hannes Planatscher
* @version: $Revision: 320 $
* $Date: 2007-12-06 16:05:11 +0100 (Thu, 06 Dec 2007) $
* $Author: mkron $
*/
/*==========================================================================*
* IMPORTS
*==========================================================================*/
import java.rmi.RemoteException;
import java.rmi.registry.Registry;
import java.util.ArrayList;
import javaeva.gui.LogPanel;
import javaeva.server.EvAMainAdapter;
import javaeva.server.EvAMainAdapterImpl;
import javaeva.server.RMIServerEvA;
import javaeva.server.modules.ModuleAdapter;
import wsi.ra.jproxy.ComAdapter;
import wsi.ra.jproxy.MainAdapter;
import wsi.ra.jproxy.MainAdapterClient;
import wsi.ra.jproxy.MainAdapterClientImpl;
import wsi.ra.jproxy.RMIConnection;
import wsi.ra.jproxy.RMIInvocationHandler;
import wsi.ra.jproxy.RMIProxyLocal;
/*==========================================================================*
* CLASS DECLARATION
*==========================================================================*/
/**
*
*/
public class EvAComAdapter extends ComAdapter {
private LogPanel m_LogPanel;
private EvAMainAdapterImpl localMainAdapter;
private boolean runLocally = false;
/**
*
*/
public void setLogPanel(LogPanel OutputFrame) {
m_LogPanel = OutputFrame;
}
/**
*
*/
public static EvAComAdapter getInstance() {
if (m_instance==null) {
m_instance = new EvAComAdapter();
m_instance.addServersFromProperties(EvAClient.getProperties());
}
return (EvAComAdapter)m_instance;
}
/**
* Creates the ModulAdapters RMI Object on the server
* @return
*/
public ModuleAdapter getModuleAdapter(String str) {
ModuleAdapter newModuleAdapter;
if ((m_RMIServer == null) && isRunLocally()) {
//ret = evaAdapter.getModuleAdapter(Modul, hostAdd, this.m_MainAdapterClient);
newModuleAdapter = getLocalMainAdapter().getModuleAdapter(str, true, getHostName(), null);
} else {
newModuleAdapter = ((RMIConnectionEvA)getConnection(getHostName())).getModuleAdapter(str);
if (newModuleAdapter == null) System.err.println("RMI Error for getting ModuleAdapterObject : " + str);
}
return newModuleAdapter;
}
private EvAMainAdapter getLocalMainAdapter() {
if (localMainAdapter == null) localMainAdapter = new EvAMainAdapterImpl();
return localMainAdapter;
}
/**
* Returns a list of modules available on the server.
* @return
*/
public String[] getModuleNameList() {
String[] list;
if (TRACE) System.out.println("ComAdapter.GetModuleNameList()");
if ((m_RMIServer == null) && isRunLocally()) {
list = getLocalMainAdapter().getModuleNameList();
} else {
RMIConnectionEvA Connection = (RMIConnectionEvA)getConnection(getHostName());
if (Connection == null) {
System.err.println("Couldnt create RMIConnection in EvAComAdapter.getModuleNameList");
return null;
}
list = ((EvAMainAdapter)Connection.getMainAdapter()).getModuleNameList();
}
if (m_LogPanel != null)
m_LogPanel.logMessage("List of modules on server:");
if (list != null)
for (int i = 0; i < list.length; i++) {
if ( (String) list[i] != null && m_LogPanel != null)
m_LogPanel.logMessage( (String) list[i]);
}
return list;
}
protected MainAdapter getMainAdapter(RMIInvocationHandler invocHandler) throws RemoteException {
return (EvAMainAdapter) invocHandler.getWrapper();
}
protected void logInfo(String msg) {
if (m_LogPanel != null) {
m_LogPanel.logMessage(msg);
} else super.logInfo(msg);
}
protected RMIConnection createRMIConnection(String Host, MainAdapter mainRemoteObject, MainAdapterClient client) {
return new RMIConnectionEvA(Host, mainRemoteObject, client);
}
/**
* @return the runLocally
*/
public boolean isRunLocally() {
return runLocally;
}
/**
* @param runLocally the runLocally to set
*/
public void setRunLocally(boolean runLocally) {
this.runLocally = runLocally;
}
}
//