From b0ab7aba0c121e73725d2e8d65788f726141b035 Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Thu, 31 Jan 2013 11:15:55 +0000 Subject: [PATCH] Huge change that refs #24 and #25 All RMI has been removed. GUI not working properly right now, but at least the code compiles. --- src/eva2/OptimizerRunnable.java | 4 +- src/eva2/client/EvAClient.java | 247 +-------- src/eva2/client/EvAComAdapter.java | 58 +- src/eva2/client/RMIConnectionEvA.java | 54 -- src/eva2/gui/DataViewer.java | 232 ++++---- src/eva2/gui/EvAModuleButtonPanelMaker.java | 24 +- src/eva2/gui/GOEPanel.java | 54 +- src/eva2/gui/GenericObjectEditor.java | 11 +- src/eva2/gui/GenericRemoteServersEditor.java | 503 ------------------ src/eva2/gui/GraphWindow.java | 28 +- src/eva2/gui/PropertyEditorProvider.java | 1 - src/eva2/gui/PropertyRemoteServers.java | 312 ----------- .../OptimizationStateListener.java | 16 + src/eva2/server/EvAMainAdapter.java | 16 +- src/eva2/server/EvAMainAdapterImpl.java | 14 +- src/eva2/server/EvAServer.java | 144 ----- src/eva2/server/ModuleServer.java | 217 ++++---- src/eva2/server/RMIServerEvA.java | 45 -- src/eva2/server/go/GOStandaloneVersion.java | 423 ++++++++------- src/eva2/server/go/InterfaceProcessor.java | 16 +- .../go/mocco/MOCCOParameterizeRefPoint.java | 6 +- .../mocco/MOCCOParameterizeTchebycheff.java | 6 +- .../AbstractParallelOptimizationProblem.java | 27 +- .../server/go/strategies/IslandModelEA.java | 37 +- .../server/modules/AbstractModuleAdapter.java | 43 +- src/eva2/server/modules/DEModuleAdapter.java | 7 +- src/eva2/server/modules/EPModuleAdapter.java | 6 +- src/eva2/server/modules/GAModuleAdapter.java | 5 +- src/eva2/server/modules/GOModuleAdapter.java | 10 +- .../server/modules/GenericModuleAdapter.java | 29 +- src/eva2/server/modules/HCModuleAdapter.java | 6 +- src/eva2/server/modules/MCModuleAdapter.java | 6 +- .../server/modules/MOEAModuleAdapter.java | 7 +- src/eva2/server/modules/ModuleAdapter.java | 6 +- .../server/modules/PBILModuleAdapter.java | 5 +- src/eva2/server/modules/PSOModuleAdapter.java | 7 +- src/eva2/server/modules/Processor.java | 122 +++-- src/eva2/server/modules/SAModuleAdapter.java | 27 +- .../server/modules/SSGAModuleAdapter.java | 11 +- src/eva2/server/stat/GenericStatistics.java | 14 +- src/eva2/server/stat/StatisticsWithGUI.java | 50 +- src/eva2/tools/ServerPingThread.java | 70 --- 42 files changed, 666 insertions(+), 2260 deletions(-) delete mode 100644 src/eva2/client/RMIConnectionEvA.java delete mode 100644 src/eva2/gui/GenericRemoteServersEditor.java delete mode 100644 src/eva2/gui/PropertyRemoteServers.java create mode 100644 src/eva2/optimization/OptimizationStateListener.java delete mode 100644 src/eva2/server/EvAServer.java delete mode 100644 src/eva2/server/RMIServerEvA.java delete mode 100644 src/eva2/tools/ServerPingThread.java diff --git a/src/eva2/OptimizerRunnable.java b/src/eva2/OptimizerRunnable.java index c19b0f98..ceae6919 100644 --- a/src/eva2/OptimizerRunnable.java +++ b/src/eva2/OptimizerRunnable.java @@ -1,5 +1,6 @@ package eva2; +import eva2.optimization.OptimizationStateListener; import eva2.server.go.IndividualInterface; import eva2.server.go.InterfaceGOParameters; import eva2.server.go.InterfaceTerminator; @@ -13,7 +14,6 @@ import eva2.server.go.populations.SolutionSet; import eva2.server.modules.GOParameters; import eva2.server.modules.Processor; import eva2.server.stat.*; -import eva2.tools.jproxy.RemoteStateListener; import java.io.PrintWriter; import java.io.StringWriter; import java.util.BitSet; @@ -132,7 +132,7 @@ public class OptimizerRunnable implements Runnable { } } - public void addRemoteStateListener(RemoteStateListener rsl) { + public void addOptimizationStateListener(OptimizationStateListener rsl) { if (proc != null) { proc.addListener(rsl); } diff --git a/src/eva2/client/EvAClient.java b/src/eva2/client/EvAClient.java index ce865248..84b67e37 100644 --- a/src/eva2/client/EvAClient.java +++ b/src/eva2/client/EvAClient.java @@ -13,7 +13,7 @@ package eva2.client; */ import eva2.EvAInfo; import eva2.gui.*; -import eva2.server.EvAServer; +import eva2.optimization.OptimizationStateListener; import eva2.server.go.InterfaceGOParameters; import eva2.server.modules.AbstractModuleAdapter; import eva2.server.modules.GOParameters; @@ -26,7 +26,6 @@ import eva2.tools.BasicResourceLoader; import eva2.tools.EVAERROR; import eva2.tools.ReflectPackage; import eva2.tools.StringTools; -import eva2.tools.jproxy.RemoteStateListener; import java.awt.*; import java.awt.event.*; import java.net.URL; @@ -42,7 +41,7 @@ import javax.swing.*; /** * */ -public class EvAClient extends JFrame implements RemoteStateListener { +public class EvAClient extends JFrame implements OptimizationStateListener { /** * Generated serial version identifier. @@ -52,12 +51,11 @@ public class EvAClient extends JFrame implements RemoteStateListener { private boolean clientInited = false; private JExtDesktopPaneToolBar desktopToolBar; private JDesktopPane desktopPane; - //private JFrame mainFrame; private JPanel configurationPane; private JSplitPane horizontalSplit; private Runnable initRnbl = null; - private EvAComAdapter comAdapter; + //private EvAComAdapter comAdapter; private transient JMenuBar menuBar; private transient JExtMenu menuHelp; private transient JExtMenu menuSelHosts; @@ -94,33 +92,34 @@ public class EvAClient extends JFrame implements RemoteStateListener { private boolean showLoadModules = false; private boolean localMode = false; - // This variable says whether, if running locally, a local server should be addressed by RMI. - // False should be preferred here to avoid overhead - private boolean useLocalRMI = false; // measuring optimization runtime private long startTime = 0; // remember the module in use - private transient String currentModule = null; - private List superListenerList = null; + private transient String currentModule = null; private boolean withGUI = true; private boolean withTreeView = false; private EvATabbedFrameMaker frameMaker = null; private Window parentWindow; + + private List superListenerList = null; + + private EvAComAdapter comAdapter; - public void addRemoteStateListener(RemoteStateListener l) { + + public void addOptimizationStateListener(OptimizationStateListener l) { if (superListenerList == null) { - superListenerList = new ArrayList(); + superListenerList = new ArrayList(); } superListenerList.add(l); } - public boolean removeRemoteStateListener(RemoteStateListener l) { + public boolean removeOptimizationStateListener(OptimizationStateListener l) { if (superListenerList != null) { return superListenerList.remove(l); } else { return false; } - } + } /** * Constructor of GUI of EvA2. Works as client for the EvA2 server. Note @@ -212,7 +211,7 @@ public class EvAClient extends JFrame implements RemoteStateListener { } /** - * Main constructor of the EvA2 client GUI. Works as standalone verson + * Main constructor of the EvA2 client GUI. Works as standalone version * locally or as client for the EvA2 server. GO parameters may be loaded * from a file (paramsFile) or given directly as a java instance. Both may * be null to start with standard parameters. If both are non null, the java @@ -500,7 +499,7 @@ public class EvAClient extends JFrame implements RemoteStateListener { if (goParams == null && (paramsFile != null && (paramsFile.length() > 0))) { goParams = GOParameters.getInstance(paramsFile, false); } - loadModuleFromServer(useDefaultModule, goParams);//loadSpecificModule + loadSpecificModule(useDefaultModule, goParams);//loadSpecificModule } if (withGUI) { @@ -521,14 +520,6 @@ public class EvAClient extends JFrame implements RemoteStateListener { }); } - if (comAdapter != null) { - if (hostName != null) { - selectHost(hostName); - } - comAdapter.setLogPanel(logPanel); - LOGGER.log(Level.INFO, "Selected Host: {0}", comAdapter.getHostName()); - } - if (withGUI) { LOGGER.log(Level.INFO, "Working directory is: {0}", System.getProperty("user.dir")); LOGGER.log(Level.INFO, "Class path is: {0}", System.getProperty("java.class.path", ".")); @@ -710,14 +701,6 @@ public class EvAClient extends JFrame implements RemoteStateListener { * */ private void createActions() { - actModuleLoad = new ExtAction("&Load", "Load Module", - KeyStroke.getKeyStroke(KeyEvent.VK_L, Event.CTRL_MASK)) { - - @Override - public void actionPerformed(final ActionEvent event) { - loadModuleFromServer(null, null); - } - }; actAbout = new ExtAction("&About", "Product Information") { @@ -735,61 +718,7 @@ public class EvAClient extends JFrame implements RemoteStateListener { showLicense(); } }; - actHost = new ExtAction("&List of all servers", "All servers in list", - KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK)) { - - @Override - public void actionPerformed(final ActionEvent event) { - LOGGER.info(event.getActionCommand()); - selectAvailableHost(comAdapter.getHostNameList()); - } - }; - actAvailableHost = new ExtAction("Available &Server", "Available server", - KeyStroke.getKeyStroke(KeyEvent.VK_H, Event.CTRL_MASK)) { - - @Override - public void actionPerformed(final ActionEvent event) { - LOGGER.info(event.getActionCommand()); - showPleaseWaitDialog(); - new Thread() { - @Override - public void run() { - selectAvailableHost(comAdapter.getAvailableHostNameList()); - } - }.start(); - } - }; - actKillHost = new ExtAction("&Kill server", "Kill server process on selected host", - KeyStroke.getKeyStroke(KeyEvent.VK_K, Event.CTRL_MASK)) { - - @Override - public void actionPerformed(final ActionEvent event) { - LOGGER.info(event.getActionCommand()); - new Thread() { - @Override - public void run() { - selectAvailableHostToKill(comAdapter.getAvailableHostNameList()); - } - }.start(); - showPleaseWaitDialog(); - } - }; - actKillAllHosts = new ExtAction("Kill &all servers", "Kill all servers", - KeyStroke.getKeyStroke(KeyEvent.VK_K, Event.CTRL_MASK)) { - - @Override - public void actionPerformed(final ActionEvent event) { - LOGGER.info(event.getActionCommand()); - new Thread() { - @Override - public void run() { - selectAllAvailableHostToKill(comAdapter.getAvailableHostNameList()); - } - }.start(); - showPleaseWaitDialog(); - } - }; - + actQuit = new ExtAction("&Quit", "Quit EvA2 workbench", KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK)) { @@ -874,80 +803,6 @@ public class EvAClient extends JFrame implements RemoteStateListener { menuBar.add(menuHelp); } - - /** - * - */ - private void loadModuleFromServer(String selectedModule, InterfaceGOParameters goParams) { - if (comAdapter.getHostName() == null) { - System.err.println("error in loadModuleFromServer!"); - return; - } - if (comAdapter.getHostName().equals("localhost")) { - localMode = true; - if (useLocalRMI) { - EvAServer Server = new EvAServer(true, false); - comAdapter.setLocalRMIServer(Server.getRMIServer()); - LOGGER.info("Local EvAServer started"); - comAdapter.setRunLocally(false); // this is not quite true but should have the desired effect - } else { - LOGGER.info("Working locally"); - comAdapter.setLocalRMIServer(null); - comAdapter.setRunLocally(true); - } - } else { - localMode = false; - comAdapter.setRunLocally(false); - } - if (selectedModule == null) { // show a dialog and ask for a module - String[] moduleNameList = comAdapter.getModuleNameList(); - if (moduleNameList == null) { - JOptionPane.showMessageDialog(this, "No modules available on " + comAdapter.getHostName(), EvAInfo.infoTitle, 1); - } else { - String lastModule = null; - - try { - java.util.prefs.Preferences prefs = java.util.prefs.Preferences.userRoot(); - lastModule = prefs.get("lastModule", null); - } catch (SecurityException ex) { - LOGGER.log(Level.WARNING, "Can't write user preference.", ex); - } - - if (lastModule == null) { - lastModule = moduleNameList[0]; - LOGGER.log(Level.INFO, "Defaulting to module: {0}", lastModule); - } - - selectedModule = (String) JOptionPane.showInputDialog(this, - "Which module do you want \n to load on host: " + comAdapter.getHostName() + " ?", - "Load optimization module on host", - JOptionPane.QUESTION_MESSAGE, - null, - moduleNameList, - lastModule); - } - } - - if (selectedModule == null) { - System.err.println("not loading any module"); - } else { - try { - java.util.prefs.Preferences prefs = java.util.prefs.Preferences.userRoot(); - prefs.put("lastModule", selectedModule); - } catch (SecurityException ex) { - LOGGER.log(Level.WARNING, "Can't write user preference.", ex); - } - - loadSpecificModule(selectedModule, goParams); - - if (withGUI) { - actHost.setEnabled(true); - actAvailableHost.setEnabled(true); - } - LOGGER.log(Level.INFO, "Selected Module: {0}", selectedModule); - } - } - /** * Retrieve the GOParamters of a loaded module. Return null if no module is * loaded. @@ -1015,10 +870,7 @@ public class EvAClient extends JFrame implements RemoteStateListener { showLoadModules = true; } else { newModuleAdapter.setConnection(!localMode); - if (comAdapter.isRunLocally()) { - // TODO in rmi-mode this doesnt work yet! meaning e.g. that theres no content in the info log - newModuleAdapter.addRemoteStateListener((RemoteStateListener) this); - } + newModuleAdapter.addOptimizationStateListener((OptimizationStateListener) this); try { if (withGUI) { // this (or rather: EvAModuleButtonPanelMaker) is where the start button etc come from! @@ -1107,35 +959,6 @@ public class EvAClient extends JFrame implements RemoteStateListener { return treeView; } - /** - * - */ - private void selectAvailableHost(String[] hostNames) { - if (hostNames == null || hostNames.length == 0) { - showNoHostFoundDialog(); - } else { - String hostName = (String) JOptionPane.showInputDialog(this, - "Which active host do you want to connect to?", "Host", JOptionPane.QUESTION_MESSAGE, null, - hostNames, comAdapter.getHostName()); - if (hostName != null) { - selectHost(hostName); - } - } - } - - private void selectHost(String hostName) { - comAdapter.setHostName(hostName); - LOGGER.info("Selected Host: " + hostName); - if (currentModule != null) { - LOGGER.info("Reloading module from server..."); - loadModuleFromServer(currentModule, null); - } - } - - private void showPleaseWaitDialog() { - JOptionPane.showMessageDialog(this, "Please wait one moment.", EvAInfo.infoTitle, 1); - } - private void showAboutDialog() { AboutDialog aboutDialog = new AboutDialog(this); aboutDialog.setLocationRelativeTo(this); @@ -1150,38 +973,10 @@ public class EvAClient extends JFrame implements RemoteStateListener { lgpl.show(); } - private void showNoHostFoundDialog() { - JOptionPane.showMessageDialog(this, "No host with running EVASERVER found. Please start one or \nadd the correct address to the properties list.", EvAInfo.infoTitle, 1); - } - - private void selectAvailableHostToKill(String[] HostNames) { - if (HostNames == null || HostNames.length == 0) { - showNoHostFoundDialog(); - return; - } - String HostName = (String) JOptionPane.showInputDialog(this, - "Which server do you want to be killed ?", "Host", JOptionPane.QUESTION_MESSAGE, null, - HostNames, comAdapter.getHostName()); - if (HostName == null) { - return; - } - LOGGER.info("Kill host process on = " + HostName); - comAdapter.killServer(HostName); - } - - private void selectAllAvailableHostToKill(String[] hostNames) { - System.out.println("SelectAllAvailableHostToKill"); - if (hostNames == null || hostNames.length == 0) { - System.out.println("no host is running"); - return; - } - comAdapter.killAllServers(); - } - @Override public void performedRestart(String infoString) { if (superListenerList != null) { - for (RemoteStateListener l : superListenerList) { + for (OptimizationStateListener l : superListenerList) { l.performedRestart(infoString); } } @@ -1192,7 +987,7 @@ public class EvAClient extends JFrame implements RemoteStateListener { @Override public void performedStart(String infoString) { if (superListenerList != null) { - for (RemoteStateListener l : superListenerList) { + for (OptimizationStateListener l : superListenerList) { l.performedStart(infoString); } } @@ -1203,7 +998,7 @@ public class EvAClient extends JFrame implements RemoteStateListener { @Override public void performedStop() { if (superListenerList != null) { - for (RemoteStateListener l : superListenerList) { + for (OptimizationStateListener l : superListenerList) { l.performedStop(); } } @@ -1222,7 +1017,7 @@ public class EvAClient extends JFrame implements RemoteStateListener { @Override public void updateProgress(final int percent, String msg) { if (superListenerList != null) { - for (RemoteStateListener l : superListenerList) { + for (OptimizationStateListener l : superListenerList) { l.updateProgress(percent, msg); } } diff --git a/src/eva2/client/EvAComAdapter.java b/src/eva2/client/EvAComAdapter.java index bc67c939..43ad2aea 100644 --- a/src/eva2/client/EvAComAdapter.java +++ b/src/eva2/client/EvAComAdapter.java @@ -16,17 +16,17 @@ import eva2.server.EvAMainAdapter; import eva2.server.EvAMainAdapterImpl; import eva2.server.go.InterfaceGOParameters; import eva2.server.modules.ModuleAdapter; -import eva2.tools.jproxy.*; import java.rmi.RemoteException; /** * */ -public class EvAComAdapter extends ComAdapter { +public class EvAComAdapter { private LoggingPanel loggingPanel; private EvAMainAdapterImpl localMainAdapter; private boolean runLocally = false; + private static EvAComAdapter m_instance; /** * @@ -41,7 +41,6 @@ public class EvAComAdapter extends ComAdapter { public static EvAComAdapter getInstance() { if (m_instance == null) { m_instance = new EvAComAdapter(); - m_instance.addServersFromProperties(EvAInfo.getProperties()); } return (EvAComAdapter) m_instance; } @@ -53,14 +52,8 @@ public class EvAComAdapter extends ComAdapter { */ public ModuleAdapter getModuleAdapter(String selectedModuleName, InterfaceGOParameters goParams, String noGuiStatsFile) { ModuleAdapter newModuleAdapter; - if ((m_RMIServer == null) && isRunLocally()) { - newModuleAdapter = getLocalMainAdapter().getModuleAdapter(selectedModuleName, true, getHostName(), goParams, noGuiStatsFile, null); - } else { - newModuleAdapter = ((RMIConnectionEvA) getConnection(getHostName())).getModuleAdapter(selectedModuleName); - if (newModuleAdapter == null) { - System.err.println("RMI Error for getting ModuleAdapterObject : " + selectedModuleName); - } - } + newModuleAdapter = getLocalMainAdapter().getModuleAdapter(selectedModuleName, goParams, noGuiStatsFile); + return newModuleAdapter; } @@ -82,19 +75,9 @@ public class EvAComAdapter extends ComAdapter { */ public String[] getModuleNameList() { String[] list; - - 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(); - } + list = getLocalMainAdapter().getModuleNameList(); if (loggingPanel != null) { - loggingPanel.logMessage("List of modules on server:"); + loggingPanel.logMessage("List of modules available:"); } if (list != null) { for (int i = 0; i < list.length; i++) { @@ -105,33 +88,4 @@ public class EvAComAdapter extends ComAdapter { } return list; } - - @Override - protected MainAdapter getMainAdapter(RMIInvocationHandler invocHandler) throws RemoteException { - try { - return (EvAMainAdapter) invocHandler.getWrapper(); - } catch (ClassCastException e) { - System.err.println("Warning: cannot cast to EvAMainAdapter in EvAComAdapter.. trying MainAdapter..."); - } - return (MainAdapter) invocHandler.getWrapper(); - } - - @Override - 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; - } } \ No newline at end of file diff --git a/src/eva2/client/RMIConnectionEvA.java b/src/eva2/client/RMIConnectionEvA.java deleted file mode 100644 index 3964e001..00000000 --- a/src/eva2/client/RMIConnectionEvA.java +++ /dev/null @@ -1,54 +0,0 @@ -package eva2.client; - -import eva2.server.EvAMainAdapter; -import eva2.server.modules.ModuleAdapter; -import eva2.tools.jproxy.MainAdapter; -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.RMIConnection; -import java.net.InetAddress; -import java.net.UnknownHostException; - - -/** - * - */ -class RMIConnectionEvA extends RMIConnection { - /** - * - */ - public RMIConnectionEvA(String HostName, MainAdapter Adapter, - MainAdapterClient AdapterClient) { - super(HostName, Adapter, AdapterClient); - } - /** - * - */ - public ModuleAdapter getModuleAdapter(String Modul) { - if (m_MainAdapter instanceof EvAMainAdapter) { - EvAMainAdapter evaAdapter = (EvAMainAdapter)m_MainAdapter; - ModuleAdapter ret = null; - if (TRACE) { - System.out.println("ComAdapter.getModuleAdapter(" + Modul + ")"); - } - String hostAdd = ""; - try { - hostAdd = InetAddress.getLocalHost().getHostAddress(); - } catch (UnknownHostException e) { - hostAdd = "unknown host"; - } - if (TRACE) { - System.out.println(" Client is = " + hostAdd); - } - m_MainAdapter.setBuf("Test_1"); - - ret = evaAdapter.getModuleAdapter(Modul, false, hostAdd, this.m_MainAdapterClient); - - return ret; - } else { - System.err.println("error, couldnt get module adapter in EvAComAdapter.getModuleAdapter. Main adapter is not of type EvAMainAdapter!"); - return null; - } - - } - -} diff --git a/src/eva2/gui/DataViewer.java b/src/eva2/gui/DataViewer.java index 1e9a9ad0..b9c7d85e 100644 --- a/src/eva2/gui/DataViewer.java +++ b/src/eva2/gui/DataViewer.java @@ -9,151 +9,127 @@ package eva2.gui; * $Date: 2007-12-06 16:05:11 +0100 (Thu, 06 Dec 2007) $ * $Author: mkron $ */ -/*==========================================================================* - * IMPORTS - *==========================================================================*/ -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.RMIProxyRemote; -import java.net.InetAddress; + import java.util.ArrayList; -/*==========================================================================* - * CLASS DECLARATION - *==========================================================================*/ /** * It represents one plot window in the client GUI. */ public class DataViewer implements DataViewerInterface { - public static boolean TRACE = false; - static private int m_GraphCounter = -1; - static private ViewContainer m_ViewContainer; - private MainAdapterClient m_MainAdapterClient; - private static String m_MyHostName; - private PlotInterface m_Plotter; - private String m_Name; - private Plot m_Plot; - /** - * - */ - public static DataViewerInterface getInstance (MainAdapterClient client,String GraphWindowName) { - if (m_ViewContainer == null) { - m_ViewContainer = new ViewContainer(); - } - DataViewerInterface ret =null; - try { - if (!m_ViewContainer.containsName(GraphWindowName)) { - //////////////////////////////////////////////// + public static boolean TRACE = false; + static private int m_GraphCounter = -1; + static private ViewContainer viewContainer; + private String m_Name; + private Plot m_Plot; + + /** + * + */ + public static DataViewerInterface getInstance(String graphWindowName) { + if (viewContainer == null) { + viewContainer = new ViewContainer(); + } + DataViewerInterface ret = null; try { - m_MyHostName = InetAddress.getLocalHost().getHostName(); - } catch (Exception e) { - System.out.println("InetAddress.getLocalHost().getHostAddress() --> ERROR" + e.getMessage()); - e.printStackTrace(); - } - if (client != null && client.getHostName().equals(m_MyHostName)== true) { - if (TRACE) { - System.out.println("no RMI"); + if (!viewContainer.containsName(graphWindowName)) { + ret = new DataViewer(graphWindowName, true); + viewContainer.add(ret); + } else { + ret = viewContainer.getPlot(graphWindowName); } - ret = new DataViewer(GraphWindowName,true); + } catch (Exception ee) { + System.out.println("GraphWindow ERROR : " + ee.getMessage()); + ee.printStackTrace(); } - else { - ret = (DataViewerInterface) RMIProxyRemote.newInstance(new DataViewer(GraphWindowName,false), client); - ret.init(); - if (TRACE) { - System.out.println("with RMI"); - } - } - - - //////////////////////////////////// - m_ViewContainer.add(ret); - } - else { - ret = m_ViewContainer.getPlot(GraphWindowName); - } - } catch (Exception ee) { - System.out.println("GraphWindow ERROR : "+ee.getMessage()); - ee.printStackTrace(); + return ret; } - return ret; - } - /** - * - */ - private DataViewer(String PlotName,boolean initflag){ - if (TRACE) { - System.out.println("Constructor DataViewer"); - } - m_Name = PlotName; - if(initflag) { - this.init(); - } - } - /** - * - */ - public String getName () { - return m_Name; - } - /** - * - */ - @Override - public Graph getNewGraph(String InfoString) { - m_GraphCounter++; - if (TRACE) { - System.out.println("Graph.getNewGraph No:"+m_GraphCounter); - } - return new Graph (InfoString,m_Plot,m_GraphCounter); - } - /** - * - */ - @Override - public void init() { - m_Plot = new Plot(m_Name,"x","y", true); - } + /** + * + */ + private DataViewer(String PlotName, boolean initflag) { + if (TRACE) { + System.out.println("Constructor DataViewer"); + } + m_Name = PlotName; + if (initflag) { + this.init(); + } + } + + /** + * + */ + public String getName() { + return m_Name; + } + + /** + * + */ + @Override + public Graph getNewGraph(String InfoString) { + m_GraphCounter++; + if (TRACE) { + System.out.println("Graph.getNewGraph No:" + m_GraphCounter); + } + return new Graph(InfoString, m_Plot, m_GraphCounter); + } + + /** + * + */ + @Override + public void init() { + m_Plot = new Plot(m_Name, "x", "y", true); + } } + /** * */ class ViewContainer extends ArrayList { - private DataViewer m_actualPlot; - /** - * - */ - public ViewContainer() {} - /** - * - */ - public boolean containsName (String name) { - DataViewer temp = null; - for (int i=0;i classNameMap; /** @@ -99,17 +97,15 @@ public class GOEPanel extends JPanel implements ItemListener { propertySheetPanel = new PropertySheetPanel(); propertySheetPanel.addPropertyChangeListener( new PropertyChangeListener() { - @Override - public void propertyChange(final PropertyChangeEvent event) { - propChangeSupport.firePropertyChange("", backupObject, genericObjectEditor.getValue()); - } - }); + public void propertyChange(final PropertyChangeEvent event) { + propChangeSupport.firePropertyChange("", backupObject, genericObjectEditor.getValue()); + } + }); openButton = makeIconButton("images/Open16.gif", "Open"); openButton.setToolTipText("Load a configured object"); openButton.setEnabled(true); openButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(final ActionEvent event) { Object object = FileTools.openObject(openButton, genericObjectEditor.getClassType()); @@ -128,7 +124,6 @@ public class GOEPanel extends JPanel implements ItemListener { saveButton.setToolTipText("Save the current configured object"); saveButton.setEnabled(true); saveButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(final ActionEvent event) { FileTools.saveObjectWithFileChooser(saveButton, genericObjectEditor.getValue()); @@ -138,14 +133,13 @@ public class GOEPanel extends JPanel implements ItemListener { okayButton = new JButton("OK"); okayButton.setEnabled(true); okayButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(final ActionEvent event) { backupObject = copyObject(genericObjectEditor.getValue()); updateClassType(); updateChildPropertySheet(); - + /* * ToDo: This is really ugly. Find a way to make this better. */ @@ -160,7 +154,6 @@ public class GOEPanel extends JPanel implements ItemListener { cancelButton = new JButton("Cancel"); cancelButton.setEnabled(true); cancelButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(final ActionEvent event) { if (backupObject != null) { @@ -223,26 +216,26 @@ public class GOEPanel extends JPanel implements ItemListener { } objectChooser.addItemListener(this); } - + /** - * This method is duplicated from EvAModuleButtonPanelMaker. - * ToDo: Refactor this. + * This method is duplicated from EvAModuleButtonPanelMaker. ToDo: Refactor + * this. * * @param iconSrc * @param title - * @return + * @return */ private JButton makeIconButton(final String iconSrc, final String title) { - JButton newButton; - byte[] bytes; - bytes = BasicResourceLoader.instance().getBytesFromResourceLocation(iconSrc, false); - if (bytes == null) { - newButton = new JButton(title); - } else { - newButton = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes))); - } - return newButton; - } + JButton newButton; + byte[] bytes; + bytes = BasicResourceLoader.instance().getBytesFromResourceLocation(iconSrc, false); + if (bytes == null) { + newButton = new JButton(title); + } else { + newButton = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes))); + } + return newButton; + } public void setEnabledOkCancelButtons(boolean enabled) { okayButton.setEnabled(enabled); @@ -316,11 +309,7 @@ public class GOEPanel extends JPanel implements ItemListener { protected void updateClassType() { List classesLongNames; ArrayList> instances = new ArrayList>(5); - if (Proxy.isProxyClass(genericObjectEditor.getClassType())) { - classesLongNames = GenericObjectEditor.getClassesFromProperties(((RMIProxyLocal) Proxy.getInvocationHandler(((Proxy) genericObjectEditor.getValue()))).getOriginalClass().getName(), null); - } else { - classesLongNames = GenericObjectEditor.getClassesFromProperties(genericObjectEditor.getClassType().getName(), instances); - } + classesLongNames = GenericObjectEditor.getClassesFromProperties(genericObjectEditor.getClassType().getName(), instances); if (classesLongNames.size() > 1) { classNameMap = new HashMap(); for (String className : classesLongNames) { @@ -396,7 +385,8 @@ public class GOEPanel extends JPanel implements ItemListener { } /** - * When the chooser selection is changed, ensures that the Object is changed appropriately. + * When the chooser selection is changed, ensures that the Object is changed + * appropriately. * * @param e a value of type 'ItemEvent' */ diff --git a/src/eva2/gui/GenericObjectEditor.java b/src/eva2/gui/GenericObjectEditor.java index 62427ac3..25bb8474 100644 --- a/src/eva2/gui/GenericObjectEditor.java +++ b/src/eva2/gui/GenericObjectEditor.java @@ -7,7 +7,6 @@ package eva2.gui; import eva2.EvAInfo; import eva2.tools.ReflectPackage; -import eva2.tools.jproxy.RMIProxyLocal; import java.awt.Component; import java.awt.FontMetrics; import java.awt.Graphics; @@ -287,14 +286,8 @@ public class GenericObjectEditor implements PropertyEditor { } Vector v = null; - if (Proxy.isProxyClass(classType)) { - //if (TRACE) System.out.println("PROXY! original was " + ((RMIProxyLocal)Proxy.getInvocationHandler(((Proxy)m_Object))).getOriginalClass().getName()); - v = new Vector(getClassesFromProperties(((RMIProxyLocal) Proxy.getInvocationHandler(((Proxy) m_Object))).getOriginalClass().getName(), null)); - } else { - v = new Vector(getClassesFromProperties(classType.getName(), null)); - } - -// v = new Vector(getClassesFromProperties(m_ClassType.getName())); + v = new Vector(getClassesFromProperties(classType.getName(), null)); + try { if (v.size() > 0) { setObject((Object) Class.forName((String) v.get(0)).newInstance()); diff --git a/src/eva2/gui/GenericRemoteServersEditor.java b/src/eva2/gui/GenericRemoteServersEditor.java deleted file mode 100644 index 599573b0..00000000 --- a/src/eva2/gui/GenericRemoteServersEditor.java +++ /dev/null @@ -1,503 +0,0 @@ -package eva2.gui; - - -import eva2.tools.BasicResourceLoader; -import java.awt.*; -import java.awt.event.*; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.beans.PropertyEditor; -import java.io.*; -import javax.swing.*; - - -/** - * Created by IntelliJ IDEA. - * User: streiche - * Date: 14.12.2004 - * Time: 11:33:43 - * To change this template use File | Settings | File Templates. - */ - -public class GenericRemoteServersEditor extends JPanel implements PropertyEditor { - - /** Handles property change notification */ - private PropertyChangeSupport m_Support = new PropertyChangeSupport(this); - /** The label for when we can't edit that type */ - private JLabel m_Label = new JLabel("Can't edit", SwingConstants.CENTER); - /** The FilePath that is to be edited*/ - private PropertyRemoteServers m_RemoteServers; - - /** The gaphix stuff */ - private JComponent m_Editor; - private JPanel m_ParameterPanel; - private JTextField m_Login; - private JPasswordField m_Password; - private JPanel m_ServerList; - private JButton[] m_Status; - private JTextField[] m_Names; - private JComboBox[] m_CPUs; - private JButton[] m_Delete; - private int prefEditorHeight = 200; - - public GenericRemoteServersEditor() { - - } - - /** This method will init the CustomEditor Panel - */ - private void initCustomEditor() { - this.m_Editor = new JPanel(); - // This is the upper panel - this.m_ParameterPanel = new JPanel(); - GridBagConstraints gbc = new GridBagConstraints(); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 0, 0, 1); - this.m_ParameterPanel.setLayout(new GridBagLayout()); - this.m_ParameterPanel.add(new JLabel("Login: "), gbc); - this.m_Login = new JTextField(""+this.m_RemoteServers.getLogin()); - this.m_Login.addKeyListener(loginListener); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 2, 1, 0, 100); - this.m_ParameterPanel.add(this.m_Login, gbc); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 3, 0, 1); - this.m_ParameterPanel.add(new JLabel("Password: "), gbc); - this.m_Password = new JPasswordField(""+this.m_RemoteServers.getPassword()); - this.m_Password.addKeyListener(passwordListener); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 2, 4, 0, 100); - this.m_ParameterPanel.add(this.m_Password, gbc); - - JButton tmpB; - tmpB = makeButtonWith("images/Add24.gif", "add"); - tmpB.addActionListener(addServer); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 0, 1, 1); - this.m_ParameterPanel.add(tmpB, gbc); - tmpB = makeButtonWith("images/Export24.gif", "Load"); - tmpB.addActionListener(loadServers); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 1, 1, 1); - this.m_ParameterPanel.add(tmpB, gbc); - tmpB = makeButtonWith("images/Import24.gif", "Save"); - tmpB.addActionListener(saveServers); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 2, 1, 1); - this.m_ParameterPanel.add(tmpB, gbc); - tmpB = makeButtonWith("images/Refresh24.gif", "Update Status"); - tmpB.addActionListener(updateServers); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 3, 1, 1); - this.m_ParameterPanel.add(tmpB, gbc); - tmpB = makeButtonWith("images/Play24.gif", "Start Server"); - tmpB.addActionListener(startServers); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 4, 1, 1); - this.m_ParameterPanel.add(tmpB, gbc); - tmpB = makeButtonWith("images/Stop24.gif", "Stop Server"); - tmpB.addActionListener(killServers); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 5, 1, 1); - this.m_ParameterPanel.add(tmpB, gbc); - - this.m_ServerList = new JPanel(); - this.updateServerList(); - JScrollPane scrollServer = new JScrollPane(this.m_ServerList); - scrollServer.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); - scrollServer.setPreferredSize(new Dimension(200,prefEditorHeight)); - - this.m_Editor.setLayout(new BorderLayout()); - this.m_Editor.add(this.m_ParameterPanel, BorderLayout.NORTH); - this.m_Editor.add(scrollServer, BorderLayout.CENTER); - this.updateEditor(); - } - - private JButton makeButtonWith(String iconSrc, String title) { - JButton tmpB; - byte[] bytes; - bytes = BasicResourceLoader.instance().getBytesFromResourceLocation(iconSrc, false); - if (bytes!=null) { - tmpB = new JButton(title, new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes))); - } - else { - tmpB = new JButton(title); - } - return tmpB; - } - - /** This method updates the server list - * - */ - private void updateServerList() { - byte[] bytes; - ServerNode t; - this.m_ServerList.removeAll(); - this.m_ServerList.setLayout(new GridBagLayout()); - GridBagConstraints gbc = new GridBagConstraints(); - this.m_Status = new JButton[this.m_RemoteServers.size()]; - this.m_Names = new JTextField[this.m_RemoteServers.size()]; - this.m_CPUs = new JComboBox[this.m_RemoteServers.size()]; - this.m_Delete = new JButton[this.m_RemoteServers.size()]; - String[] cups = new String[8]; - for (int i = 0; i < cups.length; i++) { - cups[i] = ""+(i+1); - } - // The head title - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 0, 1); - this.m_ServerList.add(new JLabel("Status"), gbc); - - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 1, 80); - this.m_ServerList.add(new JLabel("Server Name"), gbc); - - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 2, 10); - this.m_ServerList.add(new JLabel("CPUs"), gbc); - - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.REMAINDER, 3, 10); - this.m_ServerList.add(new JLabel("Remove"), gbc); - - for (int i = 0; i < this.m_RemoteServers.size(); i++) { - t = this.m_RemoteServers.get(i); - // the status indicator - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 0, 1); - this.m_Status[i] = new JButton(" "); - this.m_Status[i].setEnabled(false); - if (this.m_RemoteServers.isServerOnline(t.m_ServerName)) { - this.m_Status[i].setBackground(Color.GREEN); - } - else { - this.m_Status[i].setBackground(Color.RED); - } - this.m_ServerList.add(this.m_Status[i], gbc); - // the server name - gbc = new GridBagConstraints(); - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 1, 80); - this.m_Names[i] = new JTextField(""+t.m_ServerName); - this.m_Names[i].addKeyListener(serverNameListener); - this.m_ServerList.add(this.m_Names[i], gbc); - // the number of CPUs - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 2, 10); - this.m_CPUs[i] = new JComboBox(cups); - this.m_CPUs[i].setSelectedIndex(t.m_CPUs-1); - this.m_CPUs[i].addItemListener(cpuStateListener); - this.m_ServerList.add(this.m_CPUs[i], gbc); - // The delete button - setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.REMAINDER, 3, 10); - bytes = BasicResourceLoader.instance().getBytesFromResourceLocation("images/Sub24.gif", true); - this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes))); - this.m_Delete[i].addActionListener(deleteServer); - this.m_ServerList.add(this.m_Delete[i], gbc); - } - String[] h = this.m_RemoteServers.getCheckedServerNodes(); -// System.out.println("My active nodes: "); -// for (int i = 0; i < h.length; i++) { -// System.out.println(""+h[i]); -// } - this.m_ServerList.repaint(); - this.m_ServerList.validate(); - } - - private void setGBC(GridBagConstraints gbc, int anchor, int fill, int gridx, int weightx) { - gbc.anchor = anchor; - gbc.fill = fill; - gbc.gridx = gridx; - gbc.weightx = weightx; - } - - private void setGBC(GridBagConstraints gbc, int anchor, int fill, int gridwidth, int gridx, int gridy, int weightx) { - setGBC(gbc, anchor, fill, gridx, weightx); - gbc.gridwidth = gridwidth; - gbc.gridy = gridy; - } - - /** This action listener,... - */ - ActionListener saveServers = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - String text = m_RemoteServers.writeToText(); - JFileChooser saver = new JFileChooser(); - int option = saver.showSaveDialog(m_Editor); - if (option == JFileChooser.APPROVE_OPTION) { - // now save the stuff to the file - File file = saver.getSelectedFile(); - try { - BufferedWriter OutputFile = new BufferedWriter(new OutputStreamWriter (new FileOutputStream (file.getAbsolutePath()))); - OutputFile.write(text); - OutputFile.close(); - } catch (FileNotFoundException t) { - System.err.println("Could not open output file! Filename: " + file.getName()); - } catch (java.io.IOException t) { - System.err.println("Could not write to output file! Filename: " + file.getName()); - } - } - } - }; - - - /** This action listener,... - */ - ActionListener killServers = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - m_RemoteServers.killServers(); - updateServerList(); - } - }; - - /** This action listener,... - */ - ActionListener startServers = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - m_RemoteServers.startServers(); - updateServerList(); - } - }; - - /** This action listener,... - */ - ActionListener updateServers = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - updateServerList(); - } - }; - - /** This action listener,... - */ - ActionListener addServer = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - m_RemoteServers.addServerNode("noname-"+m_RemoteServers.size(), 1); - updateServerList(); - updateEditor(); - } - }; - - /** This action listener,... - */ - ActionListener deleteServer = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - for (int i = 0; i < m_Delete.length; i++) { - if (event.getSource().equals(m_Delete[i])) { - m_RemoteServers.removeServerNode(m_RemoteServers.get(i).m_ServerName); - } - } - updateServerList(); - updateEditor(); - } - }; - - /** This action listener,... - */ - ActionListener loadServers = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - String text = ""; - JFileChooser reader = new JFileChooser(); - int option = reader.showOpenDialog(m_Editor); - if (option == JFileChooser.APPROVE_OPTION) { - // now save the stuff to the file - File file = reader.getSelectedFile(); - try { - BufferedReader inputFile = new BufferedReader(new FileReader(file.getAbsolutePath())); - String line; - while ((line = inputFile.readLine()) != null) { - text += line +"\n"; - } - inputFile.close(); - m_RemoteServers.readFromText(text); -// text = inputFile.readLine().read(); -// OutputFile.close(); - } catch (FileNotFoundException t) { - System.out.println("Could not open output file! Filename: " + file.getName()); - } catch (java.io.IOException t) { - System.out.println("Could not write to output file! Filename: " + file.getName()); - } - } - updateServerList(); - } - }; - - /** This action listener reads all values - */ - KeyListener loginListener = new KeyListener() { - @Override - public void keyPressed(KeyEvent event) { - } - @Override - public void keyTyped(KeyEvent event) { - } - @Override - public void keyReleased(KeyEvent event) { - m_RemoteServers.setLogin(m_Login.getText()); - } - }; - - /** This action listener reads all values - */ - KeyListener passwordListener = new KeyListener() { - @Override - public void keyPressed(KeyEvent event) { - } - @Override - public void keyTyped(KeyEvent event) { - } - @Override - public void keyReleased(KeyEvent event) { - m_RemoteServers.setPassword(m_Password.getPassword()); - } - }; - - /** This action listener reads all values - */ - KeyListener serverNameListener = new KeyListener() { - @Override - public void keyPressed(KeyEvent event) { - } - @Override - public void keyTyped(KeyEvent event) { - } - @Override - public void keyReleased(KeyEvent event) { - for (int i = 0; i < m_Names.length; i++) { - if (event.getSource().equals(m_Names[i])) { - m_RemoteServers.setNameFor(i, m_Names[i].getText()); - } - } - } - }; - - /** This action listener adds an element to DoubleArray - */ - ItemListener cpuStateListener = new ItemListener() { - @Override - public void itemStateChanged(ItemEvent event) { - for (int i = 0; i < m_CPUs.length; i++) { - if (event.getSource().equals(m_CPUs[i])) { - m_RemoteServers.setCPUsFor(i, m_CPUs[i].getSelectedIndex()+1); - } - } - } - }; - - /** The object may have changed update the editor. - */ - private void updateEditor() { - if (this.m_Editor != null) { - this.m_Editor.validate(); - this.m_Editor.repaint(); - } - } - - - /** This method will set the value of object that is to be edited. - * @param o an object that must be an array. - */ - @Override - public void setValue(Object o) { - if (o instanceof PropertyRemoteServers) { - this.m_RemoteServers = (PropertyRemoteServers) o; - this.updateEditor(); - } - } - - /** Returns the current object. - * @return the current object - */ - @Override - public Object getValue() { - return this.m_RemoteServers; - } - - @Override - public String getJavaInitializationString() { - return "TEST"; - } - - /** - * - */ - @Override - public String getAsText() { - return null; - } - - /** - * - */ - @Override - public void setAsText(String text) throws IllegalArgumentException { - throw new IllegalArgumentException(text); - } - - /** - * - */ - @Override - public String[] getTags() { - return null; - } - - @Override - public void addPropertyChangeListener(PropertyChangeListener l) { - if (m_Support == null) { - m_Support = new PropertyChangeSupport(this); - } - m_Support.addPropertyChangeListener(l); - } - - @Override - public void removePropertyChangeListener(PropertyChangeListener l) { - if (m_Support == null) { - m_Support = new PropertyChangeSupport(this); - } - m_Support.removePropertyChangeListener(l); - } - - /** This is used to hook an action listener to the ok button - * @param a The action listener. - */ - public void addOkListener(ActionListener a) { - //m_OKButton.addActionListener(a); - } - - /** This is used to remove an action listener from the ok button - * @param a The action listener - */ - public void removeOkListener(ActionListener a) { - //m_OKButton.removeActionListener(a); - } - - /** Returns true since the Object can be shown - * @return true - */ - @Override - public boolean isPaintable() { - return true; - } - - /** Paints a representation of the current classifier. - * - * @param gfx the graphics context to use - * @param box the area we are allowed to paint into - */ - @Override - public void paintValue(Graphics gfx, Rectangle box) { - FontMetrics fm = gfx.getFontMetrics(); - int vpad = (box.height - fm.getAscent()) / 2; - String rep = "Remote Servers"; - gfx.drawString(rep, 2, fm.getHeight() + vpad - 3 ); - } - - /** Returns true because we do support a custom editor. - * @return true - */ - @Override - public boolean supportsCustomEditor() { - return true; - } - - /** Returns the array editing component. - * @return a value of type 'java.awt.Component' - */ - @Override - public Component getCustomEditor() { - if (this.m_Editor == null) { - this.initCustomEditor(); - } - return m_Editor; - } -} \ No newline at end of file diff --git a/src/eva2/gui/GraphWindow.java b/src/eva2/gui/GraphWindow.java index ba7c4034..13889f90 100644 --- a/src/eva2/gui/GraphWindow.java +++ b/src/eva2/gui/GraphWindow.java @@ -5,9 +5,6 @@ package eva2.gui; * $ $Date: 2007-12-06 16:05:11 +0100 (Thu, 06 Dec 2007) $ $Author: mkron $ */ -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.RMIProxyRemote; -import java.net.InetAddress; import java.util.ArrayList; /** @@ -18,14 +15,13 @@ public class GraphWindow { public static boolean TRACE = false; static private int graphCounter = -1; static private PlotContainer plotContainer; - private MainAdapterClient mainAdapterClient; private PlotInterface plotter; private String name; /** * */ - public static GraphWindow getInstance(MainAdapterClient client, String graphWindowName, + public static GraphWindow getInstance(String graphWindowName, String strx, String stry) { if (plotContainer == null) { plotContainer = new PlotContainer(); @@ -39,7 +35,7 @@ public class GraphWindow { if (ret != null) { plotContainer.remove(ret); // remove if not valid any more } - ret = new GraphWindow(client, graphWindowName, strx, stry); + ret = new GraphWindow(graphWindowName, strx, stry); plotContainer.add(ret); } } catch (Exception ee) { @@ -60,28 +56,12 @@ public class GraphWindow { /** * */ - private GraphWindow(MainAdapterClient client, String plotName, String strx, String stry) { + private GraphWindow(String plotName, String strx, String stry) { if (TRACE) { System.out.println("Constructor GraphWindow"); } - mainAdapterClient = client; name = plotName; - try { - if ((client == null) || client.getHostName().equals(InetAddress.getLocalHost().getHostName())) { - if (TRACE) { - System.out.println("no RMI"); - } - plotter = new Plot(plotName, strx, stry, true); - } else { - plotter = (PlotInterface) RMIProxyRemote.newInstance(new Plot(plotName, strx, stry, false), mainAdapterClient); - plotter.init(); - if (TRACE) { - System.out.println("with RMI"); - } - } - } catch (Exception e) { - System.err.println("InetAddress.getLocalHost().getHostAddress() --> ERROR" + e.getMessage()); - } + plotter = new Plot(plotName, strx, stry, true); } /** diff --git a/src/eva2/gui/PropertyEditorProvider.java b/src/eva2/gui/PropertyEditorProvider.java index 67cbc8a5..5fcaa62f 100644 --- a/src/eva2/gui/PropertyEditorProvider.java +++ b/src/eva2/gui/PropertyEditorProvider.java @@ -226,7 +226,6 @@ public class PropertyEditorProvider { PropertyEditorManager.registerEditor(PropertyWeightedLPTchebycheff.class, GenericWeigthedLPTchebycheffEditor.class); // PropertyEditorManager.registerEditor(PropertyStringList.class , GenericStringListSelectionEditor.class); PropertyEditorManager.registerEditor(PropertyFilePath.class , GenericFilePathEditor.class); - PropertyEditorManager.registerEditor(PropertyRemoteServers.class , GenericRemoteServersEditor.class); PropertyEditorManager.registerEditor(PropertyOptimizationObjectives.class , GenericOptimizationObjectivesEditor.class); PropertyEditorManager.registerEditor(PropertyOptimizationObjectivesWithParam.class , GenericOptimizationObjectivesWithParamEditor.class); PropertyEditorManager.registerEditor(eva2.gui.MultiLineString.class, eva2.gui.MultiLineStringEditor.class); diff --git a/src/eva2/gui/PropertyRemoteServers.java b/src/eva2/gui/PropertyRemoteServers.java deleted file mode 100644 index 58c8d5be..00000000 --- a/src/eva2/gui/PropertyRemoteServers.java +++ /dev/null @@ -1,312 +0,0 @@ -package eva2.gui; - -import eva2.tools.jproxy.RMIInvocationHandler; -import java.rmi.Naming; -import java.util.ArrayList; - - -/** - * Created by IntelliJ IDEA. - * User: streiche - * Date: 14.12.2004 - * Time: 11:33:10 - * To change this template use File | Settings | File Templates. - */ - -class ServerNode implements java.io.Serializable { - public String m_ServerName; - public int m_CPUs; - - public ServerNode(String name, int cpus) { - m_ServerName = name; - m_CPUs = cpus; - } - public ServerNode(ServerNode a) { - this.m_CPUs = a.m_CPUs; - this.m_ServerName = a.m_ServerName; - } - @Override - public Object clone() { - return (Object) new ServerNode(this); - } -} - -public class PropertyRemoteServers implements java.io.Serializable { - - private ServerNode[] m_AvailableNodes=null; -// private String m_ClassToStart = "eva2.tools.jproxy.RMIServer"; - private transient String m_password = ""; - private String m_Login = ""; -// private boolean m_DeployJar = true; -// private String m_JarToDeploy = "JOpt.jar"; - - public PropertyRemoteServers() { - this.m_AvailableNodes = new ServerNode[0]; - this.addServerNode("exampleNode.uni-tuebingen.de", 2); - this.setLogin("username"); - this.setPassword(""); - } - - public PropertyRemoteServers(PropertyRemoteServers e) { - this(); - if (e.m_AvailableNodes != null) { - this.m_AvailableNodes = new ServerNode[e.m_AvailableNodes.length]; - for (int i = 0; i < e.m_AvailableNodes.length; i++) { - this.m_AvailableNodes[i] = (ServerNode)e.m_AvailableNodes[i].clone(); - } - } - } - - @Override - public Object clone() { - return (Object) new PropertyRemoteServers(this); - } - - /** This method adds a server to the server nodes list - * It will check whether or not the given name is already - * in the current list of nodes is so it breaks. - * @param name The name of the server - * @param cpus The number of cpus on the server - */ - - public void addServerNode(String name, int cpus) { - // first check for double instances - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - if (this.m_AvailableNodes[i].m_ServerName.equalsIgnoreCase(name)) { - if (cpus > this.m_AvailableNodes[i].m_CPUs) { - this.m_AvailableNodes[i].m_CPUs = cpus; - } - return; - } - } - - // now add the guy - ServerNode[] newList = new ServerNode[this.m_AvailableNodes.length+1]; - ServerNode newNode = new ServerNode(name, cpus); - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - newList[i] = this.m_AvailableNodes[i]; - } - newList[this.m_AvailableNodes.length] = newNode; - this.m_AvailableNodes = newList; - } - - /** This method removes a surplus node from the current list - * @param name The name of the server to remove - */ - public void removeServerNode(String name) { - ArrayList newList = new ArrayList(); - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - if (!this.m_AvailableNodes[i].m_ServerName.equalsIgnoreCase(name)) { - newList.add(this.m_AvailableNodes[i]); - } else { - this.killServer(this.m_AvailableNodes[i].m_ServerName); - } - } - this.m_AvailableNodes = new ServerNode[newList.size()]; - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - this.m_AvailableNodes[i] = (ServerNode)newList.get(i); - } - } - - /** This method removes and deactivates all servers - * - */ - public void removeAll() { - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - this.killServer(this.m_AvailableNodes[i].m_ServerName); - } - this.m_AvailableNodes = new ServerNode[0]; - } - - /** This method returns an unchecked list of server instances - * an server with n nodes will occur n times in the returned - * server list - * @return A list of server instances, with double instances. - */ - public String[] getServerNodes() { - String[] result; - ArrayList tmpList = new ArrayList(); - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - for (int j = 0; j < this.m_AvailableNodes[i].m_CPUs; j++) { - tmpList.add(this.m_AvailableNodes[i].m_ServerName); - } - } - result = new String[tmpList.size()]; - for (int i = 0; i < result.length; i++) { - result[i] = (String) tmpList.get(i); - } - return result; - } - - /** This method returns an checked list of server instances - * an server with n nodes will occur n times in the returned - * server list - * @return A list of server instances, with double instances. - */ - public String[] getCheckedServerNodes() { - String[] result; - ArrayList tmpList = new ArrayList(); - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - if (this.isServerOnline(this.m_AvailableNodes[i].m_ServerName)) { - for (int j = 0; j < this.m_AvailableNodes[i].m_CPUs; j++) { - tmpList.add(this.m_AvailableNodes[i].m_ServerName); - } - } - } - result = new String[tmpList.size()]; - for (int i = 0; i < result.length; i++) { - result[i] = (String) tmpList.get(i); - } - return result; - } - - /** This method will check whether or not a given server is online - * @param name The name of the server to check - * @return true if server is online, false else - */ - public boolean isServerOnline(String name) { - try { - String[] list = Naming.list("rmi://" + name + ":" + 1099); - if (list == null) { - return false; - } - else { - return true; - } - } catch (Exception et) { - return false; - } - } - - /** This method will try to start all server in the current list - */ - public void startServers() { - /* ServerStarter serverstarter; - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - if (!this.isServerOnline(this.m_AvailableNodes[i].m_ServerName)) { - serverstarter = new ServerStarter(); - serverstarter.setPasswd(this.m_password); - serverstarter.setClass2Run(this.m_ClassToStart); - serverstarter.setDeployJarFile(this.m_DeployJar); - serverstarter.setJarfilename(this.m_JarToDeploy); - serverstarter.setHostname(this.m_AvailableNodes[i].m_ServerName); - serverstarter.setLogin(this.m_Login); - try { - serverstarter.startServer(); - } catch (Exception e) { - System.out.println("Problems starting the server: " + e.getMessage()); - } - } - }*/ - } - - /** This method kills the servers - * previously started - */ - public void killServers() { - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - this.killServer(this.m_AvailableNodes[i].m_ServerName); - } - } - - /** This method kills a single server - * @param name The name of the server to kill - */ - public void killServer(String name) { - if (this.isServerOnline(name)) { - try { - String[] list = Naming.list("rmi://" + name + ":" + 1099); - for (int j = 0; j < list.length; j++) { - System.out.println(""+list[j]); - if (list[j].indexOf(this.m_Login) > 0) { - RMIInvocationHandler x = (RMIInvocationHandler) Naming.lookup("rmi:"+list[j]); - //x.invoke("killThread", null); - } - } - } catch (Exception e) { - System.out.println("Error : "+e.getMessage()); - } - } - } - - /** This method returns the number of servers - * @return the size - */ - public int size() { - return this.m_AvailableNodes.length; - } - - public ServerNode get(int i) { - if ((i >= 0) && (i < this.m_AvailableNodes.length)) { - return this.m_AvailableNodes[i]; - } - else { - return null; - } - } - - public String writeToText() { - String result = ""; - for (int i = 0; i < this.m_AvailableNodes.length; i++) { - result += this.m_AvailableNodes[i].m_ServerName +"\t"+this.m_AvailableNodes[i].m_CPUs+"\n"; - } - return result; - } - - public void setNameFor(int i, String name) { - if ((i >= 0) && (i < this.m_AvailableNodes.length)) { - this.m_AvailableNodes[i].m_ServerName = name; - } - } - - public void setCPUsFor(int i, int c) { - if ((i >= 0) && (i < this.m_AvailableNodes.length)) { - this.m_AvailableNodes[i].m_CPUs = c; - } - } - - public void readFromText(String text) { - String[] lines = text.split("\n"); - this.removeAll(); - for (int i = 0; i < lines.length; i++) { - String[] rickel = lines[i].split("\t"); - this.addServerNode(rickel[0].trim(), new Integer(rickel[1].trim()).intValue()); - } - } - - public static void main(String[] args) { - PropertyRemoteServers test = new PropertyRemoteServers(); - test.m_password = ""; - test.addServerNode("raold1.informatik.uni-tuebingen.de", 2); - //test.addServerNode("raold2.informatik.uni-tuebingen.de", 2); - System.out.println(" Getting running Servers:"); - String[] servers = test.getCheckedServerNodes(); - for (int i = 0; i < servers.length; i++) { - System.out.println("Server "+i+": "+servers[i]); - } - System.out.println("\n Starting Servers: "); - test.startServers(); - System.out.println(" Getting running Servers:"); - servers = test.getCheckedServerNodes(); - for (int i = 0; i < servers.length; i++) { - System.out.println("Server "+i+": "+servers[i]); - } - test.killServers(); - } - - public String getLogin() { - return this.m_Login; - } - public void setLogin(String l) { - this.m_Login = l; - } - public String getPassword() { - return this.m_password; - } - public void setPassword(String l) { - this.m_password = l; - } - public void setPassword(char[] l) { - this.m_password = new String(l); - } -} \ No newline at end of file diff --git a/src/eva2/optimization/OptimizationStateListener.java b/src/eva2/optimization/OptimizationStateListener.java new file mode 100644 index 00000000..04143209 --- /dev/null +++ b/src/eva2/optimization/OptimizationStateListener.java @@ -0,0 +1,16 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package eva2.optimization; + +/** + * + * @author becker + */ +public interface OptimizationStateListener { + void performedStop(); + void performedStart(String infoString); + void performedRestart(String infoString); + void updateProgress(final int percent, String msg); +} diff --git a/src/eva2/server/EvAMainAdapter.java b/src/eva2/server/EvAMainAdapter.java index 51ad30a2..784b157d 100644 --- a/src/eva2/server/EvAMainAdapter.java +++ b/src/eva2/server/EvAMainAdapter.java @@ -10,25 +10,15 @@ package eva2.server; */ import eva2.server.go.InterfaceGOParameters; import eva2.server.modules.ModuleAdapter; -import eva2.tools.jproxy.MainAdapter; -import eva2.tools.jproxy.MainAdapterClient; /** * */ -public interface EvAMainAdapter extends MainAdapter { +public interface EvAMainAdapter { public String[] getModuleNameList(); // returns the corresponding ModuleAdapter - public ModuleAdapter getModuleAdapter(String selectedModuleName, - boolean withoutRMI, - String hostAddress, - MainAdapterClient client); + ModuleAdapter getModuleAdapter(String selectedModuleName); - public ModuleAdapter getModuleAdapter(String selectedModuleName, - boolean withoutRMI, - String hostAddress, - InterfaceGOParameters goParams, - String noGuiStatsFile, - MainAdapterClient client); + ModuleAdapter getModuleAdapter(String selectedModuleName, InterfaceGOParameters goParams, String noGuiStatsFile); } diff --git a/src/eva2/server/EvAMainAdapterImpl.java b/src/eva2/server/EvAMainAdapterImpl.java index 0cdf0b44..7fc58ad1 100644 --- a/src/eva2/server/EvAMainAdapterImpl.java +++ b/src/eva2/server/EvAMainAdapterImpl.java @@ -12,12 +12,10 @@ package eva2.server; import eva2.EvAInfo; import eva2.server.go.InterfaceGOParameters; import eva2.server.modules.ModuleAdapter; -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.MainAdapterImpl; /** - * + * */ -public class EvAMainAdapterImpl extends MainAdapterImpl implements EvAMainAdapter { +public class EvAMainAdapterImpl implements EvAMainAdapter { private ModuleServer moduleServer = null; @@ -32,13 +30,13 @@ public class EvAMainAdapterImpl extends MainAdapterImpl implements EvAMainAdapte } @Override - public ModuleAdapter getModuleAdapter(String selectedModule, boolean withoutRMI, String hostAddress, MainAdapterClient client) { - return getModuleAdapter(selectedModule, withoutRMI, hostAddress, null, null, client); + public ModuleAdapter getModuleAdapter(String selectedModule) { + return getModuleAdapter(selectedModule); } @Override - public ModuleAdapter getModuleAdapter(String selectedModule, boolean withoutRMI, String hostAddress, InterfaceGOParameters goParams, String noGuiStatsFile, MainAdapterClient client) { - return moduleServer.createModuleAdapter(selectedModule, client, withoutRMI, hostAddress, goParams, noGuiStatsFile); + public ModuleAdapter getModuleAdapter(String selectedModule, InterfaceGOParameters goParams, String noGuiStatsFile) { + return moduleServer.createModuleAdapter(selectedModule, goParams, noGuiStatsFile); } } diff --git a/src/eva2/server/EvAServer.java b/src/eva2/server/EvAServer.java deleted file mode 100644 index 32cff982..00000000 --- a/src/eva2/server/EvAServer.java +++ /dev/null @@ -1,144 +0,0 @@ -package eva2.server; -/* - * Title: EvA2 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 $ - */ - -import eva2.EvAInfo; -import java.io.*; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * - */ -public class EvAServer { - /* - * MainAdapterImp object. This is need for the first connection between the - * server and the client program. - */ - private EvAMainAdapter mainRemoteObject; - //private EvAComAdapter m_ComAdapter; - private static String userName; - private RMIServerEvA rmiServer; - private static final Logger LOGGER = Logger.getLogger(EvAServer.class.getName()); - - /** - * Constructor of EvAServer. Calls RMIConnection(). - */ - public EvAServer(boolean insideClient, boolean restart) { - LOGGER.log(Level.INFO, "Number of CPUs :{0}", Runtime.getRuntime().availableProcessors()); - LOGGER.log(Level.INFO, "This is EvA Server Version: {0}", EvAInfo.getVersion()); - LOGGER.log(Level.INFO, "Java Version: {0}", System.getProperty("java.version")); - try { - userName = System.getProperty("user.name"); - } catch (SecurityException ex) { - /* - * This exception is expected to happen in Java WebStart - */ - LOGGER.log(Level.WARNING, "Could not fetch username property. Setting username to 'WebStart'", ex); - userName = "WebStart"; - } - - rmiServer = RMIServerEvA.getInstance(); - } - - /** - * Main method of this class. Is the starting point of the server - * application. - */ - public static void main(String[] args) { - boolean restart = false; - boolean noMulti = false; - for (int i = 0; i < args.length; i++) { - System.out.println("args = " + args[i]); - if (args[i].equals("restart")) { - restart = true; - } - if (args[i].equals("nomulti")) { - noMulti = true; - } - - } - //Runtime.getRuntime().addShutdownHook(new ExitThread()); - if (restart == true) { - String hostName = "Host"; - try { - hostName = InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - System.out.println("ERROR getting HostName (EvAServer.main) " + e.getMessage()); - } - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - System.out.println("Error in sleep of ExitThread"); - } - - try { - System.setOut(new PrintStream( - new FileOutputStream(hostName + "_server.txt"))); - } catch (FileNotFoundException e) { - System.out.println("System.setOut" + e.getMessage()); - } - } - EvAServer evaServer = new EvAServer(false, restart); // false => started not inside the client, solo server -// if (nomulti==false) -// evaServer.multiServers(1); - - - } - - /** - * - */ - public void multiServers(int size) { - for (int i = 0; i < size; i++) { - try { - Thread.sleep(4000); - } catch (InterruptedException e) { - System.out.println("Error in sleep of ExitThread"); - } - try { - String cmd = "java -cp \".\" eva2.server.EvAServer nomulti"; - System.out.println("Calling the command:" + cmd); - Process pro = Runtime.getRuntime().exec(cmd); - //Process pro = Runtime.getRuntime().exec("server"); - BufferedReader in = new BufferedReader(new InputStreamReader(pro.getInputStream())); - //pro - String line = null; - while (true) { - while ((line = in.readLine()) != null) { - System.out.println(line); - } - } - //System.out.println(""); - } catch (Exception e) { - System.out.println("Error in calling the command:" + e.getMessage()); - } - } - } - - /** - * - */ - public RMIServerEvA getRMIServer() { - return rmiServer; - } - - /** - * - */ - private int getNumberOfVM(String[] list) { - int ret = 0; - for (int i = 0; i < list.length; i++) { - if (list[i].indexOf(EvAMainAdapterImpl.MAIN_ADAPTER_NAME) != -1) { - ret++; - } - } - return ret; - } -} diff --git a/src/eva2/server/ModuleServer.java b/src/eva2/server/ModuleServer.java index 209387ef..73b24799 100644 --- a/src/eva2/server/ModuleServer.java +++ b/src/eva2/server/ModuleServer.java @@ -15,8 +15,6 @@ import eva2.server.modules.GOModuleAdapter; import eva2.server.modules.ModuleAdapter; import eva2.tools.EVAERROR; import eva2.tools.ReflectPackage; -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.RMIProxyLocal; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.ArrayList; @@ -29,50 +27,50 @@ import java.util.logging.Logger; * Collect available ModuleAdapter implementations and load them on request. */ public class ModuleServer { - private static final Logger LOGGER = Logger.getLogger(ModuleServer.class.getName()); - private static int instanceCounter = 0; - private List> moduleClassList; - private ModuleAdapter moduleAdapter; - private int moduleAdapterCounter = 0; - /** - * - */ - public ModuleServer(Properties EvAProps) { - if (instanceCounter > 0) { - EVAERROR.EXIT("ModuleServer created twice"); - } - moduleClassList = new ArrayList>(); + private static final Logger LOGGER = Logger.getLogger(ModuleServer.class.getName()); + private static int instanceCounter = 0; + private List> moduleClassList; + private ModuleAdapter moduleAdapter; + private int moduleAdapterCounter = 0; - String modulePckg = null; - Class filterBy = null; - try { + /** + * + */ + public ModuleServer(Properties EvAProps) { + if (instanceCounter > 0) { + EVAERROR.EXIT("ModuleServer created twice"); + } + moduleClassList = new ArrayList>(); + + String modulePckg = null; + Class filterBy = null; + try { /* Fetch the name of the package containing the modules */ - modulePckg = EvAProps.getProperty("ModulePackage"); + modulePckg = EvAProps.getProperty("ModulePackage"); /* Fetch the the super class for all modules */ - filterBy = Class.forName(EvAProps.getProperty("ModuleFilterClass")); - } catch (Exception ex) { - System.err.println("Creating ModuleServer failed: couldnt load modules:" + ex.getMessage()); - System.err.println("module path was " + modulePckg + ", is it valid?"); - System.err.println("filter class path was " + ((filterBy == null) ? "null" : filterBy.getName())); - } + filterBy = Class.forName(EvAProps.getProperty("ModuleFilterClass")); + } catch (Exception ex) { + System.err.println("Creating ModuleServer failed: couldnt load modules:" + ex.getMessage()); + System.err.println("module path was " + modulePckg + ", is it valid?"); + System.err.println("filter class path was " + ((filterBy == null) ? "null" : filterBy.getName())); + } - // this gets a list of all valid modules from the package - Class[] classes = ReflectPackage.getAssignableClassesInPackage(modulePckg, filterBy, true, true); - for (Object cls : classes) { - moduleClassList.add((Class) cls); - } + // this gets a list of all valid modules from the package + Class[] classes = ReflectPackage.getAssignableClassesInPackage(modulePckg, filterBy, true, true); + for (Object cls : classes) { + moduleClassList.add((Class) cls); + } - instanceCounter++; - } + instanceCounter++; + } - /** - * Iterates over the list of available modules and fetches - * the name of the module by calling the static getName() - * method. - * + /** + * Iterates over the list of available modules and fetches the name of the + * module by calling the static getName() method. + * * @return Array of available modules - */ + */ public String[] getModuleNameList() { List moduleNameList = new ArrayList(); for (Class module : moduleClassList) { @@ -113,86 +111,71 @@ public class ModuleServer { return x; } - /** - * Load the module indicated by the selectedModuleName from all available - * module classes; if necessary through a remote proxy. Try to load a given - * parameter file in case its a GOModuleAdapter. - * - * @return the loaded module adapter instance - */ - public ModuleAdapter createModuleAdapter(String selectedModuleName, - MainAdapterClient Client, boolean runWithoutRMI, - String hostAddress, InterfaceGOParameters goParams, String noGuiLogFile) { - moduleAdapterCounter++; - String adapterName = "ERROR MODULADAPTER !!"; - String moduleName = null; - Method[] methods; + /** + * Load the module indicated by the selectedModuleName from all available + * module classes; if necessary through a remote proxy. Try to load a given + * parameter file in case its a GOModuleAdapter. + * + * @return the loaded module adapter instance + */ + public ModuleAdapter createModuleAdapter(String selectedModuleName, InterfaceGOParameters goParams, String noGuiLogFile) { + moduleAdapterCounter++; + String adapterName = "ERROR MODULADAPTER !!"; + String moduleName = null; + Method[] methods; for (Class module : moduleClassList) { - try { - methods = module.getDeclaredMethods(); + try { + methods = module.getDeclaredMethods(); for (Method method : methods) { - if (method.getName().equals("getName")) { - moduleName = (String) method.invoke((Object[]) null, (Object[]) null); - } - } - } - catch (Exception ex) { - LOGGER.log(Level.WARNING, ex.getMessage(), ex); - } - if ((moduleName != null) && (selectedModuleName.equals(moduleName))) { - try { - adapterName = moduleAdapterCounter + "_Running_" + selectedModuleName; + if (method.getName().equals("getName")) { + moduleName = (String) method.invoke((Object[]) null, (Object[]) null); + } + } + } catch (Exception ex) { + LOGGER.log(Level.WARNING, ex.getMessage(), ex); + } + if ((moduleName != null) && (selectedModuleName.equals(moduleName))) { + try { + adapterName = moduleAdapterCounter + "_Running_" + selectedModuleName; - Constructor[] constructorArr = module.getConstructors(); - /* create a module instance */ - int constrIndex = 0; - - if ((goParams==null && noGuiLogFile==null) || !module.equals(GOModuleAdapter.class)) { - if (goParams != null) { - System.err.println("Cant set params - no matching constructor found for " + adapterName + " (ModuleServer)"); - } - if (noGuiLogFile != null) { - System.err.println("Cant deactivate GUI - no matching constructor found for " + adapterName + " (ModuleServer)"); - } - Object[] Para = new Object[2]; - while ((constructorArr[constrIndex].getParameterTypes().length!=2) && (constrIndex < constructorArr.length)) { - constrIndex++; - } - Class paramTypes[] = (constructorArr[constrIndex]).getParameterTypes(); - Para[0] = paramTypes[0].cast(adapterName); - Para[1] = paramTypes[1].cast(Client); - moduleAdapter = (ModuleAdapter) constructorArr[constrIndex].newInstance(Para); - } else { - Object[] param = new Object[4]; - param[0] = (String) adapterName; - param[1] = (InterfaceGOParameters) goParams; - param[2] = (String) noGuiLogFile; - param[3] = (MainAdapterClient) Client; - while ((constructorArr[constrIndex].getParameterTypes().length!=4) && (constrIndex < constructorArr.length)) { - constrIndex++; - } - moduleAdapter = (ModuleAdapter) constructorArr[constrIndex].newInstance(param); - } - if (!runWithoutRMI) { - /* if we're using RMI, send the object to a remote server - * for this to work the class of moduleAdapter itself must - * implement the ModuleAdapter interface for a strange reason, - * it is _not_ enough if a superclass implements the same interface! - */ - moduleAdapter = (ModuleAdapter) RMIProxyLocal.newInstance(moduleAdapter, adapterName); - (moduleAdapter).setRemoteThis(moduleAdapter); - } - // m_RunnungModules.add(m_ModuleAdapter); - } - catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Error in RMI-Moduladapter initialization", ex); - EVAERROR.EXIT("Error in RMI-Moduladapter initialization: " + ex.getMessage()); - return null; - } - return (ModuleAdapter) moduleAdapter; - } - } + Constructor[] constructorArr = module.getConstructors(); + /* create a module instance */ + int constrIndex = 0; + + if ((goParams == null && noGuiLogFile == null) || !module.equals(GOModuleAdapter.class)) { + if (goParams != null) { + System.err.println("Cant set params - no matching constructor found for " + adapterName + " (ModuleServer)"); + } + if (noGuiLogFile != null) { + System.err.println("Cant deactivate GUI - no matching constructor found for " + adapterName + " (ModuleServer)"); + } + Object[] Para = new Object[1]; + while ((constructorArr[constrIndex].getParameterTypes().length != 1) && (constrIndex < constructorArr.length)) { + constrIndex++; + } + Class paramTypes[] = (constructorArr[constrIndex]).getParameterTypes(); + Para[0] = paramTypes[0].cast(adapterName); + moduleAdapter = (ModuleAdapter) constructorArr[constrIndex].newInstance(Para); + } else { + Object[] param = new Object[4]; + param[0] = (String) adapterName; + param[1] = (InterfaceGOParameters) goParams; + param[2] = (String) noGuiLogFile; + while ((constructorArr[constrIndex].getParameterTypes().length != 4) && (constrIndex < constructorArr.length)) { + constrIndex++; + } + moduleAdapter = (ModuleAdapter) constructorArr[constrIndex].newInstance(param); + } + // m_RunnungModules.add(m_ModuleAdapter); + } catch (Exception ex) { + LOGGER.log(Level.SEVERE, "Error in RMI-Moduladapter initialization", ex); + EVAERROR.EXIT("Error in RMI-Moduladapter initialization: " + ex.getMessage()); + return null; + } + return (ModuleAdapter) moduleAdapter; + } + } // // @todo running modules sind gerade noch abgeschaltet // for (int i = 0; i < m_RunnungModules.size(); i++) { // try { @@ -209,7 +192,7 @@ public class ModuleServer { // } // } - LOGGER.log(Level.SEVERE, "No valid module defined: {0}", selectedModuleName); - return null; - } + LOGGER.log(Level.SEVERE, "No valid module defined: {0}", selectedModuleName); + return null; + } } \ No newline at end of file diff --git a/src/eva2/server/RMIServerEvA.java b/src/eva2/server/RMIServerEvA.java deleted file mode 100644 index 036049b1..00000000 --- a/src/eva2/server/RMIServerEvA.java +++ /dev/null @@ -1,45 +0,0 @@ -package eva2.server; -/** - * Title: The JProxy Framework - * Description: API for distributed and parallel computing. - * Copyright: Copyright (c) 2004 - * Company: University of Tuebingen - * @version: $Revision: 250 $ - * $Date: 2007-11-13 10:32:19 +0100 (Tue, 13 Nov 2007) $ - * $Author: mkron $ - */ -/*==========================================================================* - * IMPORTS - *==========================================================================*/ -import eva2.tools.jproxy.RMIProxyLocal; -import eva2.tools.jproxy.RMIServer; -import java.util.logging.Level; - -/** - * - */ -public class RMIServerEvA extends RMIServer { - - public static RMIServerEvA getInstance() { - if (instance==null) { - instance = new RMIServerEvA(); - } - return (RMIServerEvA)instance; - } - - @Override - protected void createMainRemoteObject(String mainAdapterName) { - try { - mainRemoteObject = new EvAMainAdapterImpl(); - mainRemoteObject = - (EvAMainAdapter) RMIProxyLocal.newInstance( - mainRemoteObject, - mainAdapterName + "_" + numberOfVM); - mainRemoteObject.setRemoteThis(mainRemoteObject); - } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not create main remote object!", ex); - } - } -} - - diff --git a/src/eva2/server/go/GOStandaloneVersion.java b/src/eva2/server/go/GOStandaloneVersion.java index 8b3776fb..35c9047a 100644 --- a/src/eva2/server/go/GOStandaloneVersion.java +++ b/src/eva2/server/go/GOStandaloneVersion.java @@ -18,7 +18,6 @@ import eva2.server.go.strategies.EvolutionStrategies; import eva2.server.go.strategies.GeneticAlgorithm; import eva2.server.go.strategies.InterfaceOptimizer; import eva2.server.modules.GOParameters; -import eva2.tools.jproxy.ThreadProxy; import eva2.tools.math.RNG; import java.awt.BorderLayout; import java.awt.List; @@ -34,60 +33,54 @@ import java.util.Date; import javax.swing.*; /** - * Created by IntelliJ IDEA. - * User: streiche - * Copyright: Copyright (c) 2003 - * Company: University of Tuebingen, Computer Architecture + * Created by IntelliJ IDEA. User: streiche Copyright: Copyright (c) 2003 + * Company: University of Tuebingen, Computer Architecture + * * @author Holger Ulmer, Felix Streichert, Hannes Planatscher - * @version: $Revision: 306 $ - * $Date: 2007-12-04 14:22:52 +0100 (Tue, 04 Dec 2007) $ - * $Author: mkron $ + * @version: $Revision: 306 $ $Date: 2007-12-04 14:22:52 +0100 (Tue, 04 Dec + * 2007) $ $Author: mkron $ */ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopulationChangedEventListener, java.io.Serializable { // Interface GUI Stuff - transient private JFrame m_Frame; - transient private JPanel m_MainPanel; - transient private JPanel m_ButtonPanel; - transient private JButton m_RunButton, m_StopButton, m_Continue, m_ShowSolution; - transient private JComponent m_OptionsPanel, m_O1, m_O2; - transient private JComponent m_StatusPanel; - transient private JLabel m_StatusField; - transient private JProgressBar m_ProgressBar; - transient private SwingWorker worker; - transient private boolean show = false; + transient private JFrame m_Frame; + transient private JPanel m_MainPanel; + transient private JPanel m_ButtonPanel; + transient private JButton m_RunButton, m_StopButton, m_Continue, m_ShowSolution; + transient private JComponent m_OptionsPanel, m_O1, m_O2; + transient private JComponent m_StatusPanel; + transient private JLabel m_StatusField; + transient private JProgressBar m_ProgressBar; + transient private SwingWorker worker; + transient private boolean show = false; // transient private InterfaceTest test = new Test1(); - // Opt. Algorithms and Parameters //transient private InterfaceOptimizer m_Optimizer = new EvolutionaryMultiObjectiveOptimization(); //transient private InterfaceOptimizationProblem m_Problem = new TF1Problem(); //transient private int m_FunctionCalls = 1000; - private GOParameters m_GO; - transient private int m_MultiRuns = 1; - transient private int m_RecentFC; - transient private int currentExperiment = 0; - transient private int currentRun; - transient private int currentProgress; - transient private String m_ExperimentName; - transient private String m_OutputPath = ""; - transient private String m_OutputFileName = "none"; + private GOParameters m_GO; + transient private int m_MultiRuns = 1; + transient private int m_RecentFC; + transient private int currentExperiment = 0; + transient private int currentRun; + transient private int currentProgress; + transient private String m_ExperimentName; + transient private String m_OutputPath = ""; + transient private String m_OutputFileName = "none"; // transient private GOStandaloneVersion m_yself; - // these parameters are for the continue option - transient private Population m_Backup; - transient private boolean m_ContinueFlag; - + transient private Population m_Backup; + transient private boolean m_ContinueFlag; // Plot Panel stuff - transient private eva2.gui.Plot m_Plot; - transient private ArrayList m_PerformedRuns = new ArrayList(); - transient private ArrayList m_TmpData; - transient private BufferedWriter m_OutputFile; - + transient private eva2.gui.Plot m_Plot; + transient private ArrayList m_PerformedRuns = new ArrayList(); + transient private ArrayList m_TmpData; + transient private BufferedWriter m_OutputFile; // Test - transient private List m_List; + transient private List m_List; - - /** Create a new EALectureGUI. + /** + * Create a new EALectureGUI. */ public GOStandaloneVersion() { // this.m_List = new List(); @@ -95,25 +88,27 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu // this.m_List.add("Test2"); // this.m_List.add("Test3"); // this.m_yself = this; - this.m_GO = GOParameters.getInstance(); - this.m_ExperimentName = this.m_GO.getOptimizer().getName()+"-"+this.m_PerformedRuns.size(); + this.m_GO = GOParameters.getInstance(); + this.m_ExperimentName = this.m_GO.getOptimizer().getName() + "-" + this.m_PerformedRuns.size(); this.m_GO.addPopulationChangedEventListener(this); RNG.setRandomSeed(m_GO.getSeed()); } - /** This method allows you to get the current GO parameters + /** + * This method allows you to get the current GO parameters * */ public GOParameters getGOParameters() { return this.m_GO; } - /** This method will generate a Plot Frame and a main Editing Frame + /** + * This method will generate a Plot Frame and a main Editing Frame */ public void initFrame() { this.m_ProgressBar = new JProgressBar(); // init the main frame - this.m_Frame = new JFrame(); + this.m_Frame = new JFrame(); this.m_Frame.setTitle("Genetic Optimizing"); this.m_Frame.setSize(500, 400); this.m_Frame.setLocation(530, 50); @@ -124,7 +119,7 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu } }); // build the main panel - this.m_MainPanel = new JPanel(); + this.m_MainPanel = new JPanel(); this.m_Frame.getContentPane().add(this.m_MainPanel); this.m_MainPanel.setLayout(new BorderLayout()); // build the button panel @@ -157,13 +152,13 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu String tmp = "eva2.server.oa.go.Tools.InterfaceTest"; try { object = Class.forName(tmp); - } catch(java.lang.ClassNotFoundException e) { + } catch (java.lang.ClassNotFoundException e) { System.out.println("No Class found for " + tmp); } tmp = "eva2.gui.GenericObjectEditor"; try { editor = Class.forName(tmp); - } catch(java.lang.ClassNotFoundException e) { + } catch (java.lang.ClassNotFoundException e) { System.out.println("No Class found for " + tmp); } if ((object != null) && (editor != null)) { @@ -175,8 +170,8 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu this.m_OptionsPanel = new JTabbedPane(); JParaPanel paraPanel2 = new JParaPanel(this.m_GO, "MyGUI"); this.m_O2 = (paraPanel2.makePanel()); - ((JTabbedPane)this.m_OptionsPanel).addTab("GO Parameters", this.m_O2); - ((JTabbedPane)this.m_OptionsPanel).addTab("GO Statistics", this.m_O1); + ((JTabbedPane) this.m_OptionsPanel).addTab("GO Parameters", this.m_O2); + ((JTabbedPane) this.m_OptionsPanel).addTab("GO Statistics", this.m_O1); this.m_MainPanel.add(this.m_OptionsPanel, BorderLayout.CENTER); // build the Status Panel @@ -196,8 +191,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu this.m_Frame.validate(); this.m_Frame.setVisible(true); } - - /** This action listener, called by the "Run/Restart" button, will init the problem and start the computation. + /** + * This action listener, called by the "Run/Restart" button, will init the + * problem and start the computation. */ ActionListener runListener = new ActionListener() { @Override @@ -207,12 +203,13 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu public Object construct() { return doWork(); } + @Override public void finished() { m_RunButton.setEnabled(true); m_Continue.setEnabled(true); m_StopButton.setEnabled(false); - m_Backup = (Population) m_GO.getOptimizer().getPopulation().clone(); + m_Backup = (Population) m_GO.getOptimizer().getPopulation().clone(); } }; worker.start(); @@ -221,10 +218,10 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu m_StopButton.setEnabled(true); } }; - - /** This action listener, called by the "Cancel" button, interrupts - * the worker thread which is running this.doWork(). Note that - * the doWork() method handles InterruptedExceptions cleanly. + /** + * This action listener, called by the "Cancel" button, interrupts the + * worker thread which is running this.doWork(). Note that the doWork() + * method handles InterruptedExceptions cleanly. */ ActionListener stopListener = new ActionListener() { @Override @@ -234,14 +231,14 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu m_StopButton.setEnabled(false); worker.interrupt(); for (int i = 0; i < m_MultiRuns; i++) { - m_Plot.clearGraph(1000 +i); + m_Plot.clearGraph(1000 + i); } } }; - - /** This action listener, called by the "Cancel" button, interrupts - * the worker thread which is running this.doWork(). Note that - * the doWork() method handles InterruptedExceptions cleanly. + /** + * This action listener, called by the "Cancel" button, interrupts the + * worker thread which is running this.doWork(). Note that the doWork() + * method handles InterruptedExceptions cleanly. */ ActionListener continueListener = new ActionListener() { @Override @@ -252,34 +249,35 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu public Object construct() { return doWork(); } + @Override public void finished() { m_RunButton.setEnabled(true); m_Continue.setEnabled(true); m_StopButton.setEnabled(false); - m_Backup = (Population) m_GO.getOptimizer().getPopulation().clone(); - m_ContinueFlag = false; + m_Backup = (Population) m_GO.getOptimizer().getPopulation().clone(); + m_ContinueFlag = false; } }; // also mal ganz anders ich gehe davon aus, dass der Benutzer das Ding parametrisiert hat // setze einfach die Backup population ein... - m_ContinueFlag = true; - m_MultiRuns = 1; // multiruns machen bei continue einfach keinen Sinn... + m_ContinueFlag = true; + m_MultiRuns = 1; // multiruns machen bei continue einfach keinen Sinn... worker.start(); m_RunButton.setEnabled(false); m_Continue.setEnabled(false); m_StopButton.setEnabled(true); } }; - - /** This action listener, called by the "show" button will show the - * currently best solution in a frame. + /** + * This action listener, called by the "show" button will show the currently + * best solution in a frame. */ ActionListener showSolListener = new ActionListener() { @Override public void actionPerformed(ActionEvent event) { JFrame frame = new JFrame(); - frame.setTitle("The current best solution for "+m_GO.getProblem().getName()); + frame.setTitle("The current best solution for " + m_GO.getProblem().getName()); frame.setSize(400, 300); frame.setLocation(450, 250); Population pop = m_GO.getOptimizer().getPopulation(); @@ -289,7 +287,8 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu } }; - /** This method gives the experimental settings and starts the work. + /** + * This method gives the experimental settings and starts the work. */ @Override public void startExperiment() { @@ -299,21 +298,21 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu EvaluationTerminator terminator = new EvaluationTerminator(); terminator.setFitnessCalls(50000); this.m_GO.setTerminator(terminator); - this.m_MultiRuns = 10; - int experimentType = 0; - this.m_ExperimentName = "InferringGRN"; + this.m_MultiRuns = 10; + int experimentType = 0; + this.m_ExperimentName = "InferringGRN"; this.m_OutputFileName = "Result"; - this.m_OutputPath = "results/"; + this.m_OutputPath = "results/"; // These are some tmp Variables - InterfaceDataTypeDouble tmpIndy = new ESIndividualDoubleData(); - InterfaceMutation tmpMut = new MutateESFixedStepSize(); + InterfaceDataTypeDouble tmpIndy = new ESIndividualDoubleData(); + InterfaceMutation tmpMut = new MutateESFixedStepSize(); switch (experimentType) { - case 0 : { + case 0: { // use the Struture Skeletalizing with GA this.m_OutputFileName = "Prim4_StructSkelGATESTIT"; - GeneticAlgorithm ga = new GeneticAlgorithm(); - SelectTournament tour = new SelectTournament(); + GeneticAlgorithm ga = new GeneticAlgorithm(); + SelectTournament tour = new SelectTournament(); tour.setTournamentSize(10); ga.setParentSelection(tour); ga.setPartnerSelection(tour); @@ -321,26 +320,26 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu this.m_GO.getOptimizer().getPopulation().setTargetSize(100); F1Problem problem = new F1Problem(); tmpIndy = new GAIndividualDoubleData(); - ((GAIndividualDoubleData)tmpIndy).setCrossoverOperator(new CrossoverGAGINPoint()); - ((GAIndividualDoubleData)tmpIndy).setCrossoverProbability(1.0); - ((GAIndividualDoubleData)tmpIndy).setMutationProbability(1.0); - ((F1Problem)problem).setEAIndividual(tmpIndy); + ((GAIndividualDoubleData) tmpIndy).setCrossoverOperator(new CrossoverGAGINPoint()); + ((GAIndividualDoubleData) tmpIndy).setCrossoverProbability(1.0); + ((GAIndividualDoubleData) tmpIndy).setMutationProbability(1.0); + ((F1Problem) problem).setEAIndividual(tmpIndy); //((FGRNInferringProblem)this.m_Problem).setStructreSkelInterval(1); this.m_GO.getOptimizer().setProblem(problem); this.m_GO.getOptimizer().addPopulationChangedEventListener(this); this.doWork(); break; } - case 1 : { + case 1: { // use the simple ES Local - this.m_OutputFileName = "X360_StandardES"; + this.m_OutputFileName = "X360_StandardES"; EvolutionStrategies es = new EvolutionStrategies(); this.m_GO.setOptimizer(es); this.m_GO.getOptimizer().getPopulation().setTargetSize(50); F1Problem problem = new F1Problem(); tmpIndy = new ESIndividualDoubleData(); - ((AbstractEAIndividual)tmpIndy).setMutationOperator(new MutateESLocal()); - ((F1Problem)problem).setEAIndividual(tmpIndy); + ((AbstractEAIndividual) tmpIndy).setMutationOperator(new MutateESLocal()); + ((F1Problem) problem).setEAIndividual(tmpIndy); //((FGRNInferringProblem)this.m_Problem).setUseHEigenMatrix(true); //((FGRNInferringProblem)this.m_Problem).setUseOnlyPositiveNumbers(true); this.m_GO.getOptimizer().setProblem(problem); @@ -360,15 +359,14 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu } /** - * This method represents the application code that we'd like to - * run on a separate thread. It simulates slowly computing - * a value, in this case just a string 'All Done'. It updates the - * progress bar every half second to remind the user that - * we're still busy. + * This method represents the application code that we'd like to run on a + * separate thread. It simulates slowly computing a value, in this case just + * a string 'All Done'. It updates the progress bar every half second to + * remind the user that we're still busy. */ public Object doWork() { try { - this.m_GO.saveInstance(); + this.m_GO.saveInstance(); if (this.show) { this.m_StatusField.setText("Optimizing..."); } @@ -379,9 +377,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu String name = ""; SimpleDateFormat formatter = new SimpleDateFormat("E'_'yyyy.MM.dd'_'HH.mm.ss"); String m_StartDate = formatter.format(new Date()); - name = this.m_OutputPath + this.m_OutputFileName +"_"+this.m_ExperimentName+"_"+m_StartDate+".dat"; + name = this.m_OutputPath + this.m_OutputFileName + "_" + this.m_ExperimentName + "_" + m_StartDate + ".dat"; try { - this.m_OutputFile = new BufferedWriter(new OutputStreamWriter (new FileOutputStream (name))); + this.m_OutputFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name))); } catch (FileNotFoundException e) { System.out.println("Could not open output file! Filename: " + name); } @@ -405,10 +403,10 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu for (int j = 0; j < this.m_MultiRuns; j++) { this.m_GO.getProblem().initProblem(); // in the loop as well, dynamic probs may need that (MK) - this.m_TmpData = new ArrayList(); + this.m_TmpData = new ArrayList(); this.currentRun = j; if (this.show) { - this.m_StatusField.setText("Optimizing Run " + (j+1) + " of " + this.m_MultiRuns + " Multi Runs..."); + this.m_StatusField.setText("Optimizing Run " + (j + 1) + " of " + this.m_MultiRuns + " Multi Runs..."); } if (Thread.interrupted()) { throw new InterruptedException(); @@ -448,9 +446,8 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu if (this.show) { this.draw(); } - this.m_ExperimentName = this.m_GO.getOptimizer().getName()+"-"+this.m_PerformedRuns.size(); - } - catch (InterruptedException e) { + this.m_ExperimentName = this.m_GO.getOptimizer().getName() + "-" + this.m_PerformedRuns.size(); + } catch (InterruptedException e) { updateStatus(0); if (this.show) { this.m_StatusField.setText("Interrupted..."); @@ -466,8 +463,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu } if (this.show) { for (int i = 0; i < this.m_MultiRuns; i++) { - this.m_Plot.clearGraph(1000 +i); -} } + this.m_Plot.clearGraph(1000 + i); + } + } updateStatus(0); if (this.show) { this.m_StatusField.setText("Finished..."); @@ -475,20 +473,21 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu return "All Done"; } - /** This method refreshes the plot + /** + * This method refreshes the plot */ private void draw() { - ArrayList multiRuns, singleRun; - Double[] tmpD; - double[][] data; + ArrayList multiRuns, singleRun; + Double[] tmpD; + double[][] data; // Color tmpColor; - for (int i = this.m_PerformedRuns.size()-1; i < this.m_PerformedRuns.size(); i++) { - multiRuns = (ArrayList)this.m_PerformedRuns.get(i); + for (int i = this.m_PerformedRuns.size() - 1; i < this.m_PerformedRuns.size(); i++) { + multiRuns = (ArrayList) this.m_PerformedRuns.get(i); // determine minimum run length int minRunLen = Integer.MAX_VALUE; for (int j = 0; j < multiRuns.size(); j++) { - singleRun = (ArrayList)multiRuns.get(j); + singleRun = (ArrayList) multiRuns.get(j); // tmpD = (Double[])singleRun.get(singleRun.size()-1); minRunLen = Math.min(minRunLen, singleRun.size()); } @@ -496,19 +495,19 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu data = new double[minRunLen][3]; // First run to determine mean for (int j = 0; j < multiRuns.size(); j++) { - singleRun = (ArrayList)multiRuns.get(j); + singleRun = (ArrayList) multiRuns.get(j); for (int p = 0; p < data.length; p++) { - tmpD = (Double[])singleRun.get(p); + tmpD = (Double[]) singleRun.get(p); data[p][0] = tmpD[0].doubleValue(); - data[p][1] += tmpD[1].doubleValue()/multiRuns.size(); + data[p][1] += tmpD[1].doubleValue() / multiRuns.size(); } } // Second run to determine variance for (int j = 0; j < multiRuns.size(); j++) { - singleRun = (ArrayList)multiRuns.get(j); + singleRun = (ArrayList) multiRuns.get(j); for (int p = 0; p < data.length; p++) { - tmpD = (Double[])singleRun.get(p); - data[p][2] += Math.pow(data[p][1] - tmpD[1].doubleValue(),2)/multiRuns.size(); + tmpD = (Double[]) singleRun.get(p); + data[p][2] += Math.pow(data[p][1] - tmpD[1].doubleValue(), 2) / multiRuns.size(); } } // Now enter this stuff into the graph @@ -524,9 +523,8 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu for (int j = 0; j < data.length; j++) { if (this.m_ContinueFlag) { - this.m_Plot.setConnectedPoint(data[j][0]+this.m_RecentFC, data[j][1], this.currentExperiment); - } - else { + this.m_Plot.setConnectedPoint(data[j][0] + this.m_RecentFC, data[j][1], this.currentExperiment); + } else { this.m_Plot.setConnectedPoint(data[j][0], data[j][1], this.currentExperiment); } } @@ -535,10 +533,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu } /** - * When the worker needs to update the GUI we do so by queuing - * a Runnable for the event dispatching thread with - * SwingUtilities.invokeLater(). In this case we're just - * changing the progress bars value. + * When the worker needs to update the GUI we do so by queuing a Runnable + * for the event dispatching thread with SwingUtilities.invokeLater(). In + * this case we're just changing the progress bars value. */ void updateStatus(final int i) { if (this.m_ProgressBar != null) { @@ -552,21 +549,17 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu } } - /** This method will create a new instance of LectureGUI and will call show() to create - * the necessary frames. This method will ignore all arguments. + /** + * This method will create a new instance of LectureGUI and will call show() + * to create the necessary frames. This method will ignore all arguments. + * * @param args */ public static void main(String[] args) { - if (false) { - InterfaceGOStandalone app = (InterfaceGOStandalone)ThreadProxy.newInstance(new GOStandaloneVersion()); - app.startExperiment(); - app.setShow(false); - } else { - GOStandaloneVersion program = new GOStandaloneVersion(); - RNG.setRandomSeed(1); - program.initFrame(); - program.setShow(true); - } + GOStandaloneVersion program = new GOStandaloneVersion(); + RNG.setRandomSeed(1); + program.initFrame(); + program.setShow(true); } @Override @@ -574,59 +567,62 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu this.show = t; } - /** This method allows an optimizer to register a change in the optimizer. - * @param source The source of the event. - * @param name Could be used to indicate the nature of the event. + /** + * This method allows an optimizer to register a change in the optimizer. + * + * @param source The source of the event. + * @param name Could be used to indicate the nature of the event. */ @Override public void registerPopulationStateChanged(Object source, String name) { - if (name.equals(Population.nextGenerationPerformed)) { - Population population = ((InterfaceOptimizer)source).getPopulation(); - double x = 100/this.m_MultiRuns; - if (this.m_GO.getTerminator() instanceof EvaluationTerminator) { - double y = x/(double)((EvaluationTerminator)this.m_GO.getTerminator()).getFitnessCalls(); - currentProgress = (int)(this.currentRun * x + population.getFunctionCalls()*y); - } else { - currentProgress = (int)(this.currentRun * x); - } - updateStatus(currentProgress); - - // data to be stored in file - double tmpd = 0; - StringBuffer tmpLine = new StringBuffer(""); - tmpLine.append(population.getFunctionCalls()); - tmpLine.append("\t"); - tmpLine.append(population.getBestEAIndividual().getFitness(0)); - tmpLine.append("\t"); - for (int i = 0; i < population.size(); i++) { - tmpd += ((AbstractEAIndividual)population.get(i)).getFitness(0)/(double)population.size(); + if (name.equals(Population.nextGenerationPerformed)) { + Population population = ((InterfaceOptimizer) source).getPopulation(); + double x = 100 / this.m_MultiRuns; + if (this.m_GO.getTerminator() instanceof EvaluationTerminator) { + double y = x / (double) ((EvaluationTerminator) this.m_GO.getTerminator()).getFitnessCalls(); + currentProgress = (int) (this.currentRun * x + population.getFunctionCalls() * y); + } else { + currentProgress = (int) (this.currentRun * x); } - tmpLine.append("\t"); - tmpLine.append(tmpd); - tmpLine.append("\t"); - tmpLine.append(population.getWorstEAIndividual().getFitness(0)); - //tmpLine.append("\t"); - //tmpLine.append(this.m_GO.getProblem().getAdditionalDataValue(population)); - this.writeToFile(tmpLine.toString()); + updateStatus(currentProgress); - Double[] tmpData = new Double[2]; - tmpData[0] = new Double(population.getFunctionCalls()); - // instead of adding simply the best fitness value i'll ask the problem what to show - tmpData[1] = this.m_GO.getProblem().getDoublePlotValue(population); - if (this.m_Plot != null) { - if (this.m_ContinueFlag) { - this.m_Plot.setConnectedPoint(tmpData[0].doubleValue()+this.m_RecentFC, tmpData[1].doubleValue(), 1000+this.currentRun); - } - else { - this.m_Plot.setConnectedPoint(tmpData[0].doubleValue(), tmpData[1].doubleValue(), 1000+this.currentRun); - } - } - this.m_TmpData.add(tmpData); - } + // data to be stored in file + double tmpd = 0; + StringBuffer tmpLine = new StringBuffer(""); + tmpLine.append(population.getFunctionCalls()); + tmpLine.append("\t"); + tmpLine.append(population.getBestEAIndividual().getFitness(0)); + tmpLine.append("\t"); + for (int i = 0; i < population.size(); i++) { + tmpd += ((AbstractEAIndividual) population.get(i)).getFitness(0) / (double) population.size(); + } + tmpLine.append("\t"); + tmpLine.append(tmpd); + tmpLine.append("\t"); + tmpLine.append(population.getWorstEAIndividual().getFitness(0)); + //tmpLine.append("\t"); + //tmpLine.append(this.m_GO.getProblem().getAdditionalDataValue(population)); + this.writeToFile(tmpLine.toString()); + + Double[] tmpData = new Double[2]; + tmpData[0] = new Double(population.getFunctionCalls()); + // instead of adding simply the best fitness value i'll ask the problem what to show + tmpData[1] = this.m_GO.getProblem().getDoublePlotValue(population); + if (this.m_Plot != null) { + if (this.m_ContinueFlag) { + this.m_Plot.setConnectedPoint(tmpData[0].doubleValue() + this.m_RecentFC, tmpData[1].doubleValue(), 1000 + this.currentRun); + } else { + this.m_Plot.setConnectedPoint(tmpData[0].doubleValue(), tmpData[1].doubleValue(), 1000 + this.currentRun); + } + } + this.m_TmpData.add(tmpData); + } } - /** This method writes Data to file. - * @param line The line that is to be added to the file + /** + * This method writes Data to file. + * + * @param line The line that is to be added to the file */ private void writeToFile(String line) { String write = line + "\n"; @@ -641,41 +637,51 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu } } - /** This method allows the CommonJavaObjectEditorPanel to read the - * name to the current object. + /** + * This method allows the CommonJavaObjectEditorPanel to read the name to + * the current object. + * * @return The name. */ public String getName() { return "EA Lecture GUI"; } -/********************************************************************************************************************** - * These are for GUI - */ - - /** This method returns a global info string + /** + * ******************************************************************************************************************** + * These are for GUI + */ + /** + * This method returns a global info string + * * @return description */ public static String globalInfo() { return "This is a simple example framework for Evolutionary Algorithms."; } - /** This method allows you to set the number of mulitruns that are to be performed, - * necessary for stochastic optimizers to ensure reliable results. + /** + * This method allows you to set the number of mulitruns that are to be + * performed, necessary for stochastic optimizers to ensure reliable + * results. + * * @param multiruns The number of multiruns that are to be performed */ public void setMultiRuns(int multiruns) { this.m_MultiRuns = multiruns; } + public int getMultiRuns() { return this.m_MultiRuns; } + public String multiRunsTipText() { return "Multiple runs may be necessary to produce reliable results for stochastic optimizing algorithms."; } - /** This method allows you to set the seed for the random number - * generator. + /** + * This method allows you to set the seed for the random number generator. + * * @param seed The seed for the random number generator */ // MK: These methods have nothing to do with the seed parameter from the m_GO object which is actually used, so I comment them out @@ -688,47 +694,57 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu // public String seedTipText() { // return "Choose the seed for the random number generator."; // } - - /** This method sets the name of the current experiment as it will occur in the - * plot legend. + /** + * This method sets the name of the current experiment as it will occur in + * the plot legend. + * * @param experimentName The experiment name */ public void setExpName(String experimentName) { this.m_ExperimentName = experimentName; } + public String getExpName() { return this.m_ExperimentName; } + public String expNameTipText() { return "Set the name of the experiment as it will occur in the legend."; } - /** This method will set the output filename + /** + * This method will set the output filename + * * @param name */ - public void setOutputFileName (String name) { + public void setOutputFileName(String name) { this.m_OutputFileName = name; } - public String getOutputFileName () { + + public String getOutputFileName() { return this.m_OutputFileName; } + public String outputFileNameTipText() { return "Set the name for the output file, if 'none' no output file will be created."; } - /** This method will set the output filename + /** + * This method will set the output filename + * * @param name */ - public void setList (List name) { + public void setList(List name) { this.m_List = name; } - public List getListe () { + + public List getListe() { return this.m_List; } + public String listTipText() { return "Set the name for the output file, if 'none' no output file will be created."; } - // /** This method allows you to set the number of functions calls that are to // * be evaluated. Note generational optimizers may exceed this number since // * they allways evaluate the complete population @@ -759,7 +775,6 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu // public String optimizerTipText() { // return "Choose a optimizing strategies."; // } - // /** This method will set the problem that is to be optimized // * @param problem // */ @@ -773,8 +788,6 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu // public String problemTipText() { // return "Choose the problem that is to optimize and the EA individual parameters."; // } - - // public void setTest(InterfaceTest v) { // this.test = v; // } diff --git a/src/eva2/server/go/InterfaceProcessor.java b/src/eva2/server/go/InterfaceProcessor.java index 702cd97d..292da26c 100644 --- a/src/eva2/server/go/InterfaceProcessor.java +++ b/src/eva2/server/go/InterfaceProcessor.java @@ -1,17 +1,7 @@ package eva2.server.go; -import eva2.tools.jproxy.RemoteStateListener; +import eva2.optimization.OptimizationStateListener; -/* - * Title: EvA2 - * Description: - * Copyright: Copyright (c) 2003 - * Company: University of Tuebingen, Computer Architecture - * @author Holger Ulmer, Felix Streichert, Hannes Planatscher - * @version: $Revision: 306 $ - * $Date: 2007-12-04 14:22:52 +0100 (Tue, 04 Dec 2007) $ - * $Author: mkron $ - */ /** * Interface for Optimization Processor. @@ -34,11 +24,11 @@ public interface InterfaceProcessor { void stopOpt(); /** - * Adds a new RemoteStateListener. + * Adds a new OptimizationStateListener. * * @param module The module to add. */ - void addListener(RemoteStateListener module); + void addListener(OptimizationStateListener module); /** * Get Info String about the Optimization. diff --git a/src/eva2/server/go/mocco/MOCCOParameterizeRefPoint.java b/src/eva2/server/go/mocco/MOCCOParameterizeRefPoint.java index 9e61e462..a8afc761 100644 --- a/src/eva2/server/go/mocco/MOCCOParameterizeRefPoint.java +++ b/src/eva2/server/go/mocco/MOCCOParameterizeRefPoint.java @@ -3,7 +3,6 @@ package eva2.server.go.mocco; import eva2.gui.GenericObjectEditor; import eva2.gui.PropertyEditorProvider; -import eva2.gui.PropertyRemoteServers; import eva2.server.go.InterfaceTerminator; import eva2.server.go.MOCCOStandalone; import eva2.server.go.operators.migration.SOBestMigration; @@ -240,12 +239,13 @@ public class MOCCOParameterizeRefPoint extends MOCCOPhase implements InterfacePr } // then set the values // if (!m_Island.getLocalOnly()) { - PropertyRemoteServers t = m_Island.getServers(); + // ToDo: Think of new ways to do this! + /*PropertyRemoteServers t = m_Island.getServers(); String[] servers = t.getServerNodes(); if (servers.length != m_Perturbations) { System.out.println("Warning: Number of servers overrides number of perturbations!"); m_Perturbations = servers.length; - } + }*/ // } else { // m_Island.setNumberLocalCPUs(m_Perturbations); // } diff --git a/src/eva2/server/go/mocco/MOCCOParameterizeTchebycheff.java b/src/eva2/server/go/mocco/MOCCOParameterizeTchebycheff.java index 8118687b..ee9f4b72 100644 --- a/src/eva2/server/go/mocco/MOCCOParameterizeTchebycheff.java +++ b/src/eva2/server/go/mocco/MOCCOParameterizeTchebycheff.java @@ -3,7 +3,6 @@ package eva2.server.go.mocco; import eva2.gui.GenericObjectEditor; import eva2.gui.PropertyEditorProvider; -import eva2.gui.PropertyRemoteServers; import eva2.server.go.InterfaceTerminator; import eva2.server.go.MOCCOStandalone; import eva2.server.go.operators.migration.SOBestMigration; @@ -241,12 +240,13 @@ public class MOCCOParameterizeTchebycheff extends MOCCOPhase implements Interfac } // then set the values // if (!m_Island.getLocalOnly()) { - PropertyRemoteServers servs = m_Island.getServers(); + // ToDo: Think of new ways to do this! +/* PropertyRemoteServers servs = m_Island.getServers(); String[] servers = servs.getServerNodes(); if (servers.length != m_Perturbations) { System.out.println("Warning: Number of servers overrides number of perturbations!"); m_Perturbations = servers.length; - } + }*/ // } else { // m_Island.setNumberLocalCPUs(m_Perturbations); // } diff --git a/src/eva2/server/go/problems/AbstractParallelOptimizationProblem.java b/src/eva2/server/go/problems/AbstractParallelOptimizationProblem.java index 702322c3..b65ce9ca 100644 --- a/src/eva2/server/go/problems/AbstractParallelOptimizationProblem.java +++ b/src/eva2/server/go/problems/AbstractParallelOptimizationProblem.java @@ -1,8 +1,5 @@ package eva2.server.go.problems; -import eva2.gui.PropertyRemoteServers; -import eva2.tools.jproxy.RMIProxyRemoteThread; - /** * This class is under construction. * @@ -14,14 +11,14 @@ import eva2.tools.jproxy.RMIProxyRemoteThread; */ public abstract class AbstractParallelOptimizationProblem extends AbstractOptimizationProblem { - private PropertyRemoteServers m_Servers = new PropertyRemoteServers(); +// private PropertyRemoteServers m_Servers = new PropertyRemoteServers(); private int m_LocalCPUs = 4; private boolean m_Parallelize = false; private AbstractOptimizationProblem[] m_Slaves; @Override public void initProblem() { - if (this.m_Parallelize) { + /* if (this.m_Parallelize) { // this is running on remote maschines String[] nodesList = this.m_Servers.getCheckedServerNodes(); if ((nodesList == null) || (nodesList.length == 0)) { @@ -37,23 +34,9 @@ public abstract class AbstractParallelOptimizationProblem extends AbstractOptimi for (int i = 0; i < this.m_LocalCPUs; i++) { this.m_Slaves[i] = (AbstractOptimizationProblem) this.clone(); } - } + }*/ } -// /** This method evaluates a given population and set the fitness values -// * accordingly -// * @param population The population that is to be evaluated. -// */ -// public void evaluate(Population population) { -// AbstractEAIndividual tmpIndy; -// int curIndex = 0; -// -// while (curIndex < population.size()) { -// what the ?? is this?? -// } -// -// } - /********************************************************************************************************************** * These are for GUI */ @@ -88,7 +71,7 @@ public abstract class AbstractParallelOptimizationProblem extends AbstractOptimi /** This method allows you to managae the available servers * @return The current servers */ - public PropertyRemoteServers getServers() { + /* public PropertyRemoteServers getServers() { return this.m_Servers; } public void setServers(PropertyRemoteServers b){ @@ -97,7 +80,7 @@ public abstract class AbstractParallelOptimizationProblem extends AbstractOptimi public String serversTipText() { return "Choose and manage the servers (only active in parallelized mode)."; } - +*/ /** This method allows you to set the number of processors in local mode * @param n Number of processors. */ diff --git a/src/eva2/server/go/strategies/IslandModelEA.java b/src/eva2/server/go/strategies/IslandModelEA.java index 3fba9f22..35f0cbcb 100644 --- a/src/eva2/server/go/strategies/IslandModelEA.java +++ b/src/eva2/server/go/strategies/IslandModelEA.java @@ -2,7 +2,6 @@ package eva2.server.go.strategies; import eva2.gui.BeanInspector; import eva2.gui.Plot; -import eva2.gui.PropertyRemoteServers; import eva2.server.go.InterfacePopulationChangedEventListener; import eva2.server.go.individuals.ESIndividualDoubleData; import eva2.server.go.operators.migration.InterfaceMigration; @@ -17,9 +16,6 @@ import eva2.server.go.problems.F1Problem; import eva2.server.go.problems.F8Problem; import eva2.server.go.problems.InterfaceOptimizationProblem; import eva2.server.go.problems.TF1Problem; -import eva2.tools.jproxy.RMIProxyLocal; -import eva2.tools.jproxy.RMIProxyRemoteThread; -import eva2.tools.jproxy.RMIServer; /** The one and only island model for parallelization. Since parallelization based * on the RMIProxyRemoteThread is on the one hand much slower than benchmark function @@ -41,6 +37,7 @@ import eva2.tools.jproxy.RMIServer; * Time: 14:48:20 * To change this template use File | Settings | File Templates. */ + public class IslandModelEA implements InterfacePopulationChangedEventListener, InterfaceOptimizer, java.io.Serializable { private Population m_Population = new Population(); @@ -50,14 +47,12 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I // private String[] m_NodesList; private int m_MigrationRate = 10; private boolean m_HeterogenuousProblems = false; - private PropertyRemoteServers m_Servers = new PropertyRemoteServers(); // These are the processor to run on private int m_numLocalCPUs = 1; private boolean m_localOnly = false; transient private InterfaceOptimizer[] m_Islands; - transient private RMIServer m_LocalServer = null; - + // This is for debugging private boolean m_LogLocalChanges = true; private boolean m_Show = false; @@ -76,7 +71,6 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I this.m_Problem = (InterfaceOptimizationProblem)a.m_Problem.clone(); this.m_Optimizer = (InterfaceOptimizer)a.m_Optimizer.clone(); this.m_Migration = (InterfaceMigration)a.m_Migration.clone(); - this.m_Servers = (PropertyRemoteServers)a.m_Servers.clone(); this.m_MigrationRate = a.m_MigrationRate; this.m_HeterogenuousProblems = a.m_HeterogenuousProblems; this.m_numLocalCPUs = a.m_numLocalCPUs; @@ -119,7 +113,8 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I } } else { // this is running on remote machines - if (this.m_LocalServer == null) { + // ToDo: Parallelize with Threads?!? + /*if (this.m_LocalServer == null) { this.m_LocalServer = RMIServer.getInstance(); } try { @@ -139,7 +134,7 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I if (this.m_LogLocalChanges) { this.m_Islands[i].addPopulationChangedEventListener(myLocal); } - } + }*/ } this.m_Migration.initMigration(this.m_Islands); @@ -193,6 +188,8 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I } } else { // this is running on remote machines + // ToDo: Parallellize with threads?!? + /* if (this.m_LocalServer == null) { this.m_LocalServer = RMIServer.getInstance(); } @@ -213,7 +210,7 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I if (this.m_LogLocalChanges) { this.m_Islands[i].addPopulationChangedEventListener(myLocal); } - } + }*/ } this.m_Migration.initMigration(this.m_Islands); @@ -282,7 +279,7 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I } } this.m_Population.clear(); - this.m_Population.SetFunctionCalls(0); + this.m_Population.setFunctionCalls(0); Population pop; for (int i = 0; i < this.m_Islands.length; i++) { pop = (Population)this.m_Islands[i].getPopulation().clone(); @@ -372,16 +369,9 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I public static void main(String[] args) { // @todo die ServerStarter muss ich noch hin kriegen // @todo Wichtig ich brauche den eva2.tools.jproxy.RMIServer! - PropertyRemoteServers s = new PropertyRemoteServers(); - s.addServerNode("raold1.informatik.uni-tuebingen.de", 2); - s.addServerNode("raold2.informatik.uni-tuebingen.de", 2); - s.addServerNode("raold3.informatik.uni-tuebingen.de", 2); - s.setPassword("KozeOpL;"); - s.startServers(); IslandModelEA imea = new IslandModelEA(); imea.m_Show = true; imea.m_localOnly = false; - imea.setServers(s); if (false) { imea.m_Optimizer = new MultiObjectiveEA(); ((MultiObjectiveEA)imea.m_Optimizer).setArchiveSize(25); @@ -565,15 +555,6 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I return "Set the migration rate for communication between islands."; } - /** This method allows you to managae the available servers - * @return The current servers - */ - public PropertyRemoteServers getServers() { - return this.m_Servers; - } - public void setServers(PropertyRemoteServers b){ - this.m_Servers = b; - } public String serversTipText() { return "Choose and manage the servers (only active in parallelized mode)."; } diff --git a/src/eva2/server/modules/AbstractModuleAdapter.java b/src/eva2/server/modules/AbstractModuleAdapter.java index 782322f7..ef7df3cf 100644 --- a/src/eva2/server/modules/AbstractModuleAdapter.java +++ b/src/eva2/server/modules/AbstractModuleAdapter.java @@ -11,10 +11,8 @@ package eva2.server.modules; */ import eva2.server.go.InterfaceGOParameters; import eva2.server.go.InterfaceProcessor; -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.RemoteStateListener; +import eva2.optimization.OptimizationStateListener; import java.io.Serializable; -import java.net.InetAddress; import java.util.ArrayList; import java.util.List; @@ -32,39 +30,20 @@ abstract public class AbstractModuleAdapter implements ModuleAdapter, Serializab protected String hostName = "not defined"; protected boolean hasConnection = true; protected ModuleAdapter remoteModuleAdapter = null; - protected boolean useRMI = true; - protected MainAdapterClient mainAdapterClient; // connection to client - private List remoteStateListeners; + private List optimizationStateListeners; - protected AbstractModuleAdapter(MainAdapterClient client) { + protected AbstractModuleAdapter() { instanceCounter++; instanceNumber = instanceCounter; - - if (client != null) { - try { - hostName = InetAddress.getLocalHost().getHostName(); - } catch (Exception e) { - System.out.println("InetAddress.getLocalHost().getHostAddress() --> ERROR" + e.getMessage()); - } - } else { - hostName = "localhost"; - } - - if ((client == null) || client.getHostName().equals(hostName)) { - useRMI = false; - } else { - /* we use RMI */ - useRMI = true; - } - remoteStateListeners = new ArrayList(); + optimizationStateListeners = new ArrayList(); } /** - * From the interface RemoteStateListener. Added this method to make progress bar possible. + * From the interface OptimizationStateListener. Added this method to make progress bar possible. */ @Override public void updateProgress(final int percent, String msg) { - for (RemoteStateListener listener : remoteStateListeners) { + for (OptimizationStateListener listener : optimizationStateListeners) { listener.updateProgress(percent, msg); } } @@ -155,8 +134,8 @@ abstract public class AbstractModuleAdapter implements ModuleAdapter, Serializab * Adds a remote state listener. */ @Override - public void addRemoteStateListener(RemoteStateListener remoteListener) { - remoteStateListeners.add(remoteListener); + public void addOptimizationStateListener(OptimizationStateListener remoteListener) { + optimizationStateListeners.add(remoteListener); } /** @@ -200,21 +179,21 @@ abstract public class AbstractModuleAdapter implements ModuleAdapter, Serializab */ @Override public void performedStop() { - for (RemoteStateListener listener : remoteStateListeners) { + for (OptimizationStateListener listener : optimizationStateListeners) { listener.performedStop(); } } @Override public void performedStart(String infoString) { - for (RemoteStateListener listener : remoteStateListeners) { + for (OptimizationStateListener listener : optimizationStateListeners) { listener.performedStart(infoString); } } @Override public void performedRestart(String infoString) { - for (RemoteStateListener listener : remoteStateListeners) { + for (OptimizationStateListener listener : optimizationStateListeners) { listener.performedRestart(infoString); } } diff --git a/src/eva2/server/modules/DEModuleAdapter.java b/src/eva2/server/modules/DEModuleAdapter.java index b117490c..33611d2e 100644 --- a/src/eva2/server/modules/DEModuleAdapter.java +++ b/src/eva2/server/modules/DEModuleAdapter.java @@ -1,8 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; - - /** * This the DE module adapter necessary to access this implementation from the EvA top level. */ @@ -10,8 +7,8 @@ public class DEModuleAdapter extends GenericModuleAdapter implements ModuleAdapt private static final String moduleName = "Differential_Evolution"; - public DEModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "DE.html", client, DEParameters.getInstance(), true); + public DEModuleAdapter(String adapterName) { + super(adapterName, "DE.html", DEParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/EPModuleAdapter.java b/src/eva2/server/modules/EPModuleAdapter.java index 39155264..7dc77884 100644 --- a/src/eva2/server/modules/EPModuleAdapter.java +++ b/src/eva2/server/modules/EPModuleAdapter.java @@ -1,7 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; - /** * This the EP module adapter necessary to access this implementation from the EvA top level. */ @@ -9,8 +7,8 @@ public class EPModuleAdapter extends GenericModuleAdapter implements ModuleAdapt private static final String moduleName = "Evolutionary_Programming"; - public EPModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "EP.html", client, EPParameters.getInstance(), true); + public EPModuleAdapter(String adapterName) { + super(adapterName, "EP.html", EPParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/GAModuleAdapter.java b/src/eva2/server/modules/GAModuleAdapter.java index 06f51c2a..1cb7c832 100644 --- a/src/eva2/server/modules/GAModuleAdapter.java +++ b/src/eva2/server/modules/GAModuleAdapter.java @@ -1,6 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; /** * This the GA module adapter necessary to access this implementation from the EvA top level. @@ -9,8 +8,8 @@ public class GAModuleAdapter extends GenericModuleAdapter implements ModuleAdapt private static final String moduleName = "Genetic_Algorithm"; - public GAModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "GA.html", client, GAParameters.getInstance(), true); + public GAModuleAdapter(String adapterName) { + super(adapterName, "GA.html", GAParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/GOModuleAdapter.java b/src/eva2/server/modules/GOModuleAdapter.java index 4b7d99f7..09ce1c82 100644 --- a/src/eva2/server/modules/GOModuleAdapter.java +++ b/src/eva2/server/modules/GOModuleAdapter.java @@ -1,7 +1,6 @@ package eva2.server.modules; import eva2.server.go.InterfaceGOParameters; -import eva2.tools.jproxy.MainAdapterClient; import java.io.Serializable; @@ -25,8 +24,8 @@ public class GOModuleAdapter extends GenericModuleAdapter implements ModuleAdapt * @param AdapterName the title of the ModulAdapter * @param Client the client instance */ - public GOModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "", client, GOParameters.getInstance(), false); + public GOModuleAdapter(String adapterName) { + super(adapterName, "", GOParameters.getInstance(), false); } /** @@ -35,9 +34,8 @@ public class GOModuleAdapter extends GenericModuleAdapter implements ModuleAdapt * @param AdapterName the title of the ModulAdapter * @param Client the client instance */ - public GOModuleAdapter(String adapterName, InterfaceGOParameters goParams, String noGuiLogFile, MainAdapterClient client) { - //super(adapterName, "", client, GOParameters.getInstance(serParamsFile, false), false); - super(adapterName, "", client, goParams, false, noGuiLogFile); + public GOModuleAdapter(String adapterName, InterfaceGOParameters goParams, String noGuiLogFile) { + super(adapterName, "", goParams, false, noGuiLogFile); } // /** // * Starts a statistics GUI and the GOProcessor thread with a given GOParameters file. diff --git a/src/eva2/server/modules/GenericModuleAdapter.java b/src/eva2/server/modules/GenericModuleAdapter.java index bcd1400c..3937c3b2 100644 --- a/src/eva2/server/modules/GenericModuleAdapter.java +++ b/src/eva2/server/modules/GenericModuleAdapter.java @@ -12,8 +12,6 @@ import eva2.server.stat.EvAJobList; import eva2.server.stat.InterfaceStatisticsParameter; import eva2.server.stat.StatisticsStandalone; import eva2.server.stat.StatisticsWithGUI; -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.RMIProxyLocal; import java.io.Serializable; import java.lang.reflect.Proxy; @@ -29,22 +27,19 @@ public class GenericModuleAdapter extends AbstractModuleAdapter implements Seria * * @param adapterName The AdapterName * @param helperFName Name of a HTML help file name - * @param adapterClient The client to serve * @param params A parameter set describing the optimizer module * @param optimizerExpert Set to true if setting the optimizer is an expert option being hidden * from the gui * @param noGUIStatOut If null, statistics with GUI are used, else the standalone statistics * with given output filename. */ - public GenericModuleAdapter(String adapterName, String helperFName, MainAdapterClient adapterClient, InterfaceGOParameters params, boolean optimizerExpert, String noGUIStatOut) { - super(adapterClient); + public GenericModuleAdapter(String adapterName, String helperFName, InterfaceGOParameters params, boolean optimizerExpert, String noGUIStatOut) { remoteModuleAdapter = this; this.adapterName = adapterName; - mainAdapterClient = adapterClient; helperFilename = helperFName; if (noGUIStatOut==null) { - statisticsModule = new StatisticsWithGUI(adapterClient); + statisticsModule = new StatisticsWithGUI(); } else { statisticsModule = new StatisticsStandalone(noGUIStatOut); } @@ -69,8 +64,8 @@ public class GenericModuleAdapter extends AbstractModuleAdapter implements Seria * @param params a parameter set describing the optimizer module * @param optimizerExpert set to true if setting the optimizer is an expert option being hidden from the gui */ - public GenericModuleAdapter(String adapterName, String helperFName, MainAdapterClient Client, InterfaceGOParameters params, boolean optimizerExpert) { - this(adapterName, helperFName, Client, params, optimizerExpert, null); + public GenericModuleAdapter(String adapterName, String helperFName, InterfaceGOParameters params, boolean optimizerExpert) { + this(adapterName, helperFName, params, optimizerExpert, null); } /** @@ -98,27 +93,17 @@ public class GenericModuleAdapter extends AbstractModuleAdapter implements Seria ButtonPanel.setHelperFilename(helperFilename); frmMkr.addPanelMaker(ButtonPanel); InterfaceGOParameters goParams = ((Processor) processor).getGOParams(); - // TODO do we really need proxies here? - if (useRMI && !Proxy.isProxyClass(goParams.getClass())) { - frmMkr.addPanelMaker(paramPanel = new JParaPanel(RMIProxyLocal.newInstance(goParams), goParams.getName())); - } else { + frmMkr.addPanelMaker(paramPanel = new JParaPanel(goParams, goParams.getName())); - } - if (useRMI && !Proxy.isProxyClass(Stat.getClass())) { - frmMkr.addPanelMaker(new JParaPanel(RMIProxyLocal.newInstance(Stat), Stat.getName())); - } else { + frmMkr.addPanelMaker(new JParaPanel(Stat, Stat.getName())); - } jobList = new EvAJobList(new EvAJob[]{}); jobList.setModule(this); jobList.addTextListener((AbstractStatistics) ((Processor) processor).getStatistics()); - if (useRMI && !Proxy.isProxyClass(Stat.getClass())) { - jobPanel = new JParaPanel(RMIProxyLocal.newInstance(jobList), jobList.getName()); - } else { + jobPanel = new JParaPanel(jobList, jobList.getName()); - } frmMkr.addPanelMaker(jobPanel); diff --git a/src/eva2/server/modules/HCModuleAdapter.java b/src/eva2/server/modules/HCModuleAdapter.java index dc2a4e94..736c4605 100644 --- a/src/eva2/server/modules/HCModuleAdapter.java +++ b/src/eva2/server/modules/HCModuleAdapter.java @@ -1,7 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; - /** * This the HC module adapter necessary to access this implementation from the EvA top level. */ @@ -15,8 +13,8 @@ public class HCModuleAdapter extends GenericModuleAdapter implements ModuleAdapt * @param AdapterName The AdapterName * @param Client The client to serve */ - public HCModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "HC.html", client, HCParameters.getInstance(), true); + public HCModuleAdapter(String adapterName) { + super(adapterName, "HC.html", HCParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/MCModuleAdapter.java b/src/eva2/server/modules/MCModuleAdapter.java index 378d563c..2f7efe94 100644 --- a/src/eva2/server/modules/MCModuleAdapter.java +++ b/src/eva2/server/modules/MCModuleAdapter.java @@ -1,7 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; - /** * This the MC module adapter necessary to access this implementation from the EvA top level. */ @@ -15,8 +13,8 @@ public class MCModuleAdapter extends GenericModuleAdapter implements ModuleAdapt * @param adapterName The AdapterName * @param client The client to serve */ - public MCModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "MC.html", client, MCParameters.getInstance(), true); + public MCModuleAdapter(String adapterName) { + super(adapterName, "MC.html", MCParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/MOEAModuleAdapter.java b/src/eva2/server/modules/MOEAModuleAdapter.java index 2db70b74..ebc95cbc 100644 --- a/src/eva2/server/modules/MOEAModuleAdapter.java +++ b/src/eva2/server/modules/MOEAModuleAdapter.java @@ -1,6 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; import java.io.Serializable; @@ -12,13 +11,13 @@ public class MOEAModuleAdapter extends GenericModuleAdapter implements Serializa private static final String moduleName = "Multi-Objective_Evolutionary_Algorithms"; /** - * Constructor of the ModuleAdapter + * Constructor of the ModuleAdapter. * * @param AdapterName The AdapterName * @param Client The client to serve */ - public MOEAModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "MOEA.html", client, MOEAParameters.getInstance(), true); + public MOEAModuleAdapter(String adapterName) { + super(adapterName, "MOEA.html", MOEAParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/ModuleAdapter.java b/src/eva2/server/modules/ModuleAdapter.java index d83cb1be..4d9142a7 100644 --- a/src/eva2/server/modules/ModuleAdapter.java +++ b/src/eva2/server/modules/ModuleAdapter.java @@ -10,12 +10,12 @@ package eva2.server.modules; * $Author: mkron $ */ import eva2.gui.EvATabbedFrameMaker; +import eva2.optimization.OptimizationStateListener; import eva2.server.stat.EvAJob; -import eva2.tools.jproxy.RemoteStateListener; /** * */ -public interface ModuleAdapter extends RemoteStateListener { +public interface ModuleAdapter extends OptimizationStateListener { EvATabbedFrameMaker getModuleFrame(); @@ -48,7 +48,7 @@ public interface ModuleAdapter extends RemoteStateListener { */ boolean startPostProcessing(); - void addRemoteStateListener(RemoteStateListener x); + void addOptimizationStateListener(OptimizationStateListener x); String getAdapterName(); diff --git a/src/eva2/server/modules/PBILModuleAdapter.java b/src/eva2/server/modules/PBILModuleAdapter.java index b1fe3cac..dc4e7cb1 100644 --- a/src/eva2/server/modules/PBILModuleAdapter.java +++ b/src/eva2/server/modules/PBILModuleAdapter.java @@ -1,6 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; /** * This the PBIL module adapter necessary to access this implementation from the EvA top level. @@ -15,8 +14,8 @@ public class PBILModuleAdapter extends GenericModuleAdapter implements ModuleAda * @param AdapterName The AdapterName * @param Client The client to serve */ - public PBILModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "PBIL.html", client, PBILParameters.getInstance(), true); + public PBILModuleAdapter(String adapterName) { + super(adapterName, "PBIL.html", PBILParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/PSOModuleAdapter.java b/src/eva2/server/modules/PSOModuleAdapter.java index a9456fa5..bdad7289 100644 --- a/src/eva2/server/modules/PSOModuleAdapter.java +++ b/src/eva2/server/modules/PSOModuleAdapter.java @@ -1,6 +1,5 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; /** * This the PSO module adapter necessary to access this implementation from the EvA top level. @@ -10,13 +9,13 @@ public class PSOModuleAdapter extends GenericModuleAdapter implements ModuleAdap private static final String moduleName = "Particle_Swarm_Optimization"; /** - * Constructor of the Moduladapter + * Constructor of the ModulAdapter. * * @param AdapterName The AdapterName * @param Client The client to serve */ - public PSOModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "PSO.html", client, PSOParameters.getInstance(), true); + public PSOModuleAdapter(String adapterName) { + super(adapterName, "PSO.html", PSOParameters.getInstance(), true); } /** diff --git a/src/eva2/server/modules/Processor.java b/src/eva2/server/modules/Processor.java index 51e219fc..607b36f6 100644 --- a/src/eva2/server/modules/Processor.java +++ b/src/eva2/server/modules/Processor.java @@ -1,6 +1,7 @@ package eva2.server.modules; import eva2.gui.BeanInspector; +import eva2.optimization.OptimizationStateListener; import eva2.server.go.*; import eva2.server.go.operators.paramcontrol.ConstantParameters; import eva2.server.go.operators.paramcontrol.InterfaceParameterControl; @@ -19,7 +20,6 @@ import eva2.server.stat.StatisticsWithGUI; import eva2.tools.EVAERROR; import eva2.tools.EVAHELP; import eva2.tools.StringTools; -import eva2.tools.jproxy.RemoteStateListener; import eva2.tools.math.RNG; import java.util.ArrayList; import java.util.List; @@ -28,15 +28,16 @@ import java.util.logging.Logger; import javax.swing.JOptionPane; /** - * The Processor may run as a thread permanently (GenericModuleAdapter) and is then stopped and started - * by a switch in startOpt/stopOpt. - * - * Processor also handles adaptive parameter control by checking for the method getParamControl in (so far) - * Optimizer and Problem instances. The return-value may be InterfaceParameterControl or an array of Objects. - * If it is a control interface, it is applied to the instance that returned it directly. For arrays of objects - * each array entry is again handled by checking for getParamControl, thus recursive controllable structures - * are possible. - * + * The Processor may run as a thread permanently (GenericModuleAdapter) and is + * then stopped and started by a switch in startOpt/stopOpt. + * + * Processor also handles adaptive parameter control by checking for the method + * getParamControl in (so far) Optimizer and Problem instances. The return-value + * may be InterfaceParameterControl or an array of Objects. If it is a control + * interface, it is applied to the instance that returned it directly. For + * arrays of objects each array entry is again handled by checking for + * getParamControl, thus recursive controllable structures are possible. + * * @author mkron * */ @@ -48,32 +49,32 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo private InterfaceGOParameters goParams; private boolean m_createInitialPopulations = true; private boolean saveParams = true; - private RemoteStateListener remoteStateListener; + private OptimizationStateListener optimizationStateListener; private boolean wasRestarted = false; private int runCounter = 0; private Population resPop = null; private boolean userAborted = false; @Override - public void addListener(RemoteStateListener module) { + public void addListener(OptimizationStateListener module) { LOGGER.log( Level.FINEST, "Processor: setting module as listener: " + ((module == null) ? "null" : module.toString())); - remoteStateListener = module; + optimizationStateListener = module; } /** - * Construct a Processor instance and make statistics instance informable of the parameters, - * such they can by dynamically show additional information. - * + * Construct a Processor instance and make statistics instance informable of + * the parameters, such they can by dynamically show additional information. + * * @see InterfaceNotifyOnInformers */ public Processor(InterfaceStatistics Stat, ModuleAdapter moduleAdapter, InterfaceGOParameters params) { goParams = params; m_Statistics = Stat; - remoteStateListener = moduleAdapter; + optimizationStateListener = moduleAdapter; // the statistics want to be informed if the strategy or the optimizer (which provide statistical data as InterfaceAdditionalInformer) change. if (Stat != null && (params != null)) { @@ -94,7 +95,7 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo /** * If set to true, before every run the parameters will be stored to a file. - * + * * @param doSave */ public void setSaveParams(boolean doSave) { @@ -106,7 +107,7 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo */ @Override public void startOpt() { - m_createInitialPopulations = true; + m_createInitialPopulations = true; if (isOptRunning()) { LOGGER.log(Level.SEVERE, "Processor is already running."); return; @@ -118,9 +119,9 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo } /** - * Return true if the optimization was stopped by the user instead of - * the termination criterion. - * + * Return true if the optimization was stopped by the user instead of the + * termination criterion. + * * @return */ public boolean wasAborted() { @@ -132,7 +133,7 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo */ @Override public void restartOpt() { - m_createInitialPopulations = false; + m_createInitialPopulations = false; if (isOptRunning()) { LOGGER.log(Level.SEVERE, "Processor is already running."); return; @@ -195,17 +196,17 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo } //m_Statistics.stopOptPerformed(false); setOptRunning(false); // normal finish - if (remoteStateListener != null) { - remoteStateListener.performedStop(); // is only needed in client server mode - remoteStateListener.updateProgress(0, errMsg); + if (optimizationStateListener != null) { + optimizationStateListener.performedStop(); // is only needed in client server mode + optimizationStateListener.updateProgress(0, errMsg); } } return resPop; } /** - * Main optimization loop. - * Return a population containing the solutions of the last run if there were multiple. + * Main optimization loop. Return a population containing the solutions of + * the last run if there were multiple. */ protected Population optimize(String infoString) { Population resultPop = null; @@ -217,11 +218,11 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo RNG.setRandomSeed(goParams.getSeed()); - if (remoteStateListener != null) { + if (optimizationStateListener != null) { if (wasRestarted) { - remoteStateListener.performedRestart(getInfoString()); + optimizationStateListener.performedRestart(getInfoString()); } else { - remoteStateListener.performedStart(getInfoString()); + optimizationStateListener.performedStart(getInfoString()); } } @@ -242,8 +243,8 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo } //m_Statistics.createNextGenerationPerformed((PopulationInterface)this.m_ModulParameter.getOptimizer().getPopulation()); - if (remoteStateListener != null) { - remoteStateListener.updateProgress(getStatusPercent(goParams.getOptimizer().getPopulation(), runCounter, m_Statistics.getStatisticsParameter().getMultiRuns()), null); + if (optimizationStateListener != null) { + optimizationStateListener.updateProgress(getStatusPercent(goParams.getOptimizer().getPopulation(), runCounter, m_Statistics.getStatisticsParameter().getMultiRuns()), null); } if (popLog != null) { EVAHELP.clearLog(popLog); @@ -278,11 +279,11 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo } setOptRunning(false); // normal finish - if (remoteStateListener != null) { - remoteStateListener.performedStop(); // is only needed in client server mode + if (optimizationStateListener != null) { + optimizationStateListener.performedStop(); // is only needed in client server mode } - if (remoteStateListener != null) { - remoteStateListener.updateProgress(0, null); + if (optimizationStateListener != null) { + optimizationStateListener.updateProgress(0, null); } goParams.getOptimizer().removePopulationChangedEventListener(this); return resultPop; @@ -331,14 +332,13 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo InterfaceOptimizer optimizer = goParams.getOptimizer(); if (terminator instanceof GenerationTerminator) { args = new Object[]{optimizer, optimizer.getPopulation(), optimizer.getPopulation().getGeneration(), ((GenerationTerminator) terminator).getGenerations()}; - } // ((InterfaceParameterControl)paramCtrl).updateParameters(optimizer, optimizer.getPopulation().getGeneration(), ((GenerationTerminator)terminator).getGenerations()); + } else if (terminator instanceof EvaluationTerminator) { args = new Object[]{optimizer, optimizer.getPopulation(), optimizer.getPopulation().getFunctionCalls(), ((EvaluationTerminator) terminator).getFitnessCalls()}; - } // ((InterfaceParameterControl)paramCtrl).updateParameters(optimizer, optimizer.getPopulation().getFunctionCalls(), ((EvaluationTerminator)terminator).getFitnessCalls()); + } else { args = new Object[]{optimizer}; } -// ((InterfaceParameterControl)paramCtrl).updateParameters(optimizer); if (args != null) { // only if iteration counting is available iterateParamCtrl(optimizer, "updateParameters", args); @@ -348,9 +348,10 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo } /** - * Calculate the percentage of current (multi-)run already performed, based on evaluations/generations - * for the EvaluationTerminator/GenerationTerminator or multi-runs only. - * + * Calculate the percentage of current (multi-)run already performed, based + * on evaluations/generations for the + * EvaluationTerminator/GenerationTerminator or multi-runs only. + * * @param pop * @param currentRun * @param multiRuns @@ -371,22 +372,22 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo return curProgress; } - /** + /** * This method allows an optimizer to register a change in the optimizer. * Send some information to the statistics module and update the progress. - * @param source The source of the event. - * @param name Could be used to indicate the nature of the event. + * + * @param source The source of the event. + * @param name Could be used to indicate the nature of the event. */ @Override public void registerPopulationStateChanged(Object source, String name) { if (name.equals(Population.nextGenerationPerformed)) { -// System.out.println(getGOParams().getOptimizer().getPopulation().getFunctionCalls() + " " + getGOParams().getOptimizer().getPopulation().getBestFitness()[0]); m_Statistics.createNextGenerationPerformed( (PopulationInterface) this.goParams.getOptimizer().getPopulation(), this.goParams.getOptimizer(), getInformerList()); - if (remoteStateListener != null) { - remoteStateListener.updateProgress( + if (optimizationStateListener != null) { + optimizationStateListener.updateProgress( getStatusPercent( goParams.getOptimizer().getPopulation(), runCounter, @@ -405,8 +406,10 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo return informerList; } - /** This method writes Data to file. - * @param line The line that is to be added to the file + /** + * This method writes Data to file. + * + * @param line The line that is to be added to the file */ // private void writeToFile(String line) { // //String write = line + "\n"; @@ -433,14 +436,14 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo return sb.toString(); } - /** + /** * This method return the Statistics object. */ public InterfaceStatistics getStatistics() { return m_Statistics; } - /** + /** * These methods allow you to get and set the Module Parameters. */ public InterfaceGOParameters getGOParams() { @@ -455,9 +458,9 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo } } - /** + /** * Return the last solution population or null if there is none available. - * + * * @return the last solution population or null */ public Population getResultPopulation() { @@ -469,9 +472,10 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo } /** - * Perform a post processing step with given parameters, based on all solutions found by the optimizer. - * Use getResultPopulation() to retrieve results. - * + * Perform a post processing step with given parameters, based on all + * solutions found by the optimizer. Use getResultPopulation() to retrieve + * results. + * * @param ppp * @param listener */ @@ -487,7 +491,7 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo Population resultPop = (Population) (goParams.getOptimizer().getAllSolutions().getSolutions().clone()); if (resultPop.getFunctionCalls() != goParams.getOptimizer().getPopulation().getFunctionCalls()) { // System.err.println("bad case in Processor::performNewPostProcessing "); - resultPop.SetFunctionCalls(goParams.getOptimizer().getPopulation().getFunctionCalls()); + resultPop.setFunctionCalls(goParams.getOptimizer().getPopulation().getFunctionCalls()); } // if (!resultPop.contains(m_Statistics.getBestSolution())) { // resultPop.add(m_Statistics.getBestSolution()); diff --git a/src/eva2/server/modules/SAModuleAdapter.java b/src/eva2/server/modules/SAModuleAdapter.java index 6b483452..5e29fc57 100644 --- a/src/eva2/server/modules/SAModuleAdapter.java +++ b/src/eva2/server/modules/SAModuleAdapter.java @@ -1,25 +1,26 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; - /** - * This the SA module adapter necessary to access this implementation from the EvA top level. + * This the SA module adapter necessary to access this implementation from the + * EvA top level. */ public class SAModuleAdapter extends GenericModuleAdapter implements ModuleAdapter { private static final String moduleName = "Simulated_Annealing"; - /** Constructor of the Moduladapter - * @param AdapterName The AdapterName - * @param Client The client to serve - */ - - public SAModuleAdapter(String adapterName, MainAdapterClient client) { - super (adapterName, "SA.html", client, SAParameters.getInstance(), true); - } - - /** + /** + * Constructor of the ModulAdapter. + * + * @param AdapterName The AdapterName + * @param Client The client to serve + */ + public SAModuleAdapter(String adapterName) { + super(adapterName, "SA.html", SAParameters.getInstance(), true); + } + + /** * This method returns the name of the ModulAdapter + * * @return The name */ public static String getName() { diff --git a/src/eva2/server/modules/SSGAModuleAdapter.java b/src/eva2/server/modules/SSGAModuleAdapter.java index 4087aa7f..0fe1aca4 100644 --- a/src/eva2/server/modules/SSGAModuleAdapter.java +++ b/src/eva2/server/modules/SSGAModuleAdapter.java @@ -1,22 +1,21 @@ package eva2.server.modules; -import eva2.tools.jproxy.MainAdapterClient; - /** - * This the SSGA module adapter necessary to access this implementation from the EvA top level. + * This the SSGA module adapter necessary to access this implementation from the + * EvA top level. */ public class SSGAModuleAdapter extends GenericModuleAdapter implements ModuleAdapter { private static final String moduleName = "Steady_State_Genetic_Algorithm"; /** - * Constructor of the ModuleAdapter + * Constructor of the ModuleAdapter. * * @param AdapterName The AdapterName * @param Client The client to serve */ - public SSGAModuleAdapter(String adapterName, MainAdapterClient client) { - super(adapterName, "SSGA.html", client, SSGAParameters.getInstance(), true); + public SSGAModuleAdapter(String adapterName) { + super(adapterName, "SSGA.html", SSGAParameters.getInstance(), true); } /** diff --git a/src/eva2/server/stat/GenericStatistics.java b/src/eva2/server/stat/GenericStatistics.java index 5053c6f3..c7d37fae 100644 --- a/src/eva2/server/stat/GenericStatistics.java +++ b/src/eva2/server/stat/GenericStatistics.java @@ -9,13 +9,9 @@ package eva2.server.stat; * $Date: 2007-12-06 16:05:11 +0100 (Thu, 06 Dec 2007) $ * $Author: mkron $ */ -/*==========================================================================* - * IMPORTS - *==========================================================================*/ import eva2.gui.DataViewer; import eva2.gui.DataViewerInterface; import eva2.gui.Graph; -import eva2.tools.jproxy.MainAdapterClient; import java.io.Serializable; import java.lang.reflect.Field; import java.util.logging.Logger; @@ -33,14 +29,6 @@ public class GenericStatistics implements Serializable { private transient Field[] fields; private DataViewerInterface viewer; private Graph graph; - private static MainAdapterClient mainAdapterClient; - - /** - * - */ - public static void setMainAdapterClient(MainAdapterClient adapter) { - mainAdapterClient = adapter; - } /** * @@ -131,7 +119,7 @@ public class GenericStatistics implements Serializable { * */ public void initViewer() { - viewer = DataViewer.getInstance(mainAdapterClient, "test"); + viewer = DataViewer.getInstance("test"); graph = viewer.getNewGraph("test"); } diff --git a/src/eva2/server/stat/StatisticsWithGUI.java b/src/eva2/server/stat/StatisticsWithGUI.java index f3ade91e..139ba1bd 100644 --- a/src/eva2/server/stat/StatisticsWithGUI.java +++ b/src/eva2/server/stat/StatisticsWithGUI.java @@ -10,9 +10,6 @@ package eva2.server.stat; * $Date: 2007-12-11 17:24:07 +0100 (Tue, 11 Dec 2007) $ * $Author: mkron $ */ -/*==========================================================================* - * IMPORTS - *==========================================================================*/ import eva2.gui.BeanInspector; import eva2.gui.Graph; import eva2.gui.GraphWindow; @@ -24,9 +21,6 @@ import eva2.server.go.PopulationInterface; import eva2.server.go.problems.InterfaceAdditionalPopulationInformer; import eva2.tools.EVAERROR; import eva2.tools.Pair; -import eva2.tools.jproxy.MainAdapterClient; -import eva2.tools.jproxy.RMIProxyLocal; -import eva2.tools.jproxy.RMIProxyRemote; import java.io.Serializable; import java.net.InetAddress; import java.util.ArrayList; @@ -35,10 +29,10 @@ import java.util.logging.Level; import java.util.logging.Logger; /** - * A statistics class to plot fitness curves in client-server mode. Mainly, arrays of GraphWindows - * and Graphs are managed and the selected data fields are plotted. - * TODO: this could finally be cleanly reduced to an InterfaceStatisticsListener - without inheriting - * from AbstractStatistics. + * A statistics class to plot fitness curves in client-server mode. Mainly, + * arrays of GraphWindows and Graphs are managed and the selected data fields + * are plotted. TODO: this could finally be cleanly reduced to an + * InterfaceStatisticsListener - without inheriting from AbstractStatistics. */ public class StatisticsWithGUI extends AbstractStatistics implements Serializable, InterfaceStatistics { @@ -50,7 +44,6 @@ public class StatisticsWithGUI extends AbstractStatistics implements Serializabl private Graph[][] statGraph; private String graphInfoString; protected int plotCounter; - private MainAdapterClient mainAdapterClient; // the connection to the client MainAdapter private JTextoutputFrameInterface proxyPrinter; /* * List of descriptor strings and optional indices. strictly its redundant @@ -63,35 +56,9 @@ public class StatisticsWithGUI extends AbstractStatistics implements Serializabl /** * */ - public MainAdapterClient getMainAdapterClient() { - return mainAdapterClient; - } - - /** - * - */ - public StatisticsWithGUI(MainAdapterClient client) { - mainAdapterClient = client; - if (client != null) { // We are probably in rmi mode - try { - hostName = InetAddress.getLocalHost().getHostName(); - } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not retrieve hostname.", ex); - } - } else { - hostName = "localhost"; - } - - - if ((client == null) || client.getHostName().equals(hostName)) { - m_StatsParams = StatisticsParameter.getInstance(true); - proxyPrinter = new JTextoutputFrame("TextOutput of " + hostName); - } else { // we use RMI - m_StatsParams = (InterfaceStatisticsParameter) RMIProxyLocal.newInstance( - StatisticsParameter.getInstance(true)); - proxyPrinter = (JTextoutputFrameInterface) RMIProxyRemote.newInstance(new JTextoutputFrame("TextOutput " + hostName), - mainAdapterClient); - } + public StatisticsWithGUI() { + m_StatsParams = StatisticsParameter.getInstance(true); + proxyPrinter = new JTextoutputFrame("TextOutput of " + hostName); addTextListener(proxyPrinter); } @@ -170,10 +137,9 @@ public class StatisticsWithGUI extends AbstractStatistics implements Serializabl maybeShowProxyPrinter(); int windowCount = 1; // TODO this was earlier description.length for the 2-D String-Array returned by m_StatsParams.getPlotDescriptions, which however always returned an array of length 1 (in the first dim). int graphCount = graphDesc.size(); -// System.out.println("Initializing " + graphCount + " plots (StatisticsWithGUI)"); fitnessFrame = new GraphWindow[windowCount]; for (int i = 0; i < fitnessFrame.length; i++) { - fitnessFrame[i] = GraphWindow.getInstance(mainAdapterClient, "Optimization " + i + " " + " on " + hostName, "function calls", "fitness"); + fitnessFrame[i] = GraphWindow.getInstance("Optimization " + i, "function calls", "fitness"); } fitnessGraph = new Graph[windowCount][]; diff --git a/src/eva2/tools/ServerPingThread.java b/src/eva2/tools/ServerPingThread.java deleted file mode 100644 index fa33902e..00000000 --- a/src/eva2/tools/ServerPingThread.java +++ /dev/null @@ -1,70 +0,0 @@ -package eva2.tools; - -import eva2.server.EvAMainAdapter; -import eva2.server.EvAMainAdapterImpl; -import eva2.tools.jproxy.RMIInvocationHandler; -import java.rmi.Naming; -import java.util.StringTokenizer; - -/** - *

Title: EvA2

- *

Description:

- *

Copyright: Copyright (c) 2003

- *

Company:

- * @author planatsc - * @version 1.0 - */ - -public class ServerPingThread extends Thread { - - boolean isServerAlive; - String hostname; - - public ServerPingThread(String hostname) { - this.isServerAlive = false; - this.hostname = hostname; - } - - @Override - public void run() { - while (true) { - try { - isServerAlive = rmiPing(hostname); - this.sleep(3000); - } catch (Exception ex) { - System.out.println(ex); - } - } - } - - public static void main(String[] args) { - } - - public boolean rmiPing(String testurl) { - EvAMainAdapter Test = null; - String SEP = "_"; - int len = testurl.indexOf(SEP); - String Host = testurl; - String Number = "_0"; - if (len != -1) { - StringTokenizer st = new StringTokenizer(testurl, SEP); - Host = st.nextToken().trim(); - Number = SEP + st.nextToken().trim(); - } - String UserName = System.getProperty("user.name"); - String MainAdapterName = UserName + EvAMainAdapterImpl.MAIN_ADAPTER_NAME + Number; - try { - RMIInvocationHandler x = (RMIInvocationHandler) Naming.lookup("rmi://" + Host + ":" + EvAMainAdapterImpl.PORT + "/" + MainAdapterName); // attention !! - Test = (EvAMainAdapter) x.getWrapper(); - } - catch (Exception e) { - return false; - } - return true; - } - public boolean isServerAlive() { - return isServerAlive; - } - - -}