next up previous contents
Next: F Listing des AgentSystemApplets Up: No Title Previous: D Listing des RegionManagementAgenten

E Listing von CommonAppletHelpers

package __MASA_PACKAGE_agentSystem;

import __MASA_PACKAGE_agent__(AgentApplet);
import __MASA_PACKAGE__(tools.NameWrapper);
import __MASA_PACKAGE_CfMAF__(AgentStatus);


import java.awt.*;
import java.applet.*;
import java.util.*;


import java.awt.event.*;
import com.sun.java.swing.*; 
import com.sun.java.swing.text.*;
import com.sun.java.swing.table.*;
import com.sun.java.swing.event.*;
import com.sun.java.swing.JOptionPane;

import org.omg.CosEventComm.*;
import org.omg.CosEventChannelAdmin.*;
import org.omg.CosNaming.*;



/**
 * This class contains some methods which are used by both AgentSystemApplet and ASManagementAgentApplet.
 * <br>All methods are declared public static, so they can be called from every other class without even
 * creating an instance of CommonAppletHelpers.
 *
 * @author Stefan Gerber
 * @author extended by Harald Roelle
 * @see AgentSystemApplet
 * @see de.unimuenchen.informatik.mnm.masa.agent.asmanagementagent.ASManagementAgentApplet
 */

public class CommonAppletHelpers {

    /**
     * Returns the URL of an agent specified by "identity" on the agent system "host".
     * <br>The URL is resolved using the Webserveragent by sending a request for "identity.url" to it.
     *
     * @param identity name of agent
     * @param host URL of agent system
     * @return URL of the agent
     */

    public static java.net.URL getAgentURL(String identity, String host) 
        throws java.net.MalformedURLException, java.io.IOException {
        System.err.println("\n\nCommonAppletHelpers.getAgentURL: host = "+host);
        // create URL of the webserver-agent and url request:
        // e.g.: http://sunhegering2:4300/FOO.url
        // if identity is FOO.  
        String urlname= new String(host+"/"+identity+".url");

        // send the request
        java.net.URL urlIOR= new java.net.URL(urlname);
        java.net.URLConnection con= urlIOR.openConnection();

        // getting the answer
        java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream()));
        String inputLine;
        String urlstring=new String();
    
        while ((inputLine = in.readLine()) != null) 
            urlstring=urlstring.concat(inputLine);
        in.close();
        System.err.println("CommonAppletHelpers.getAgentURL: urlstring = "+urlstring);
        return (new java.net.URL(urlstring));
    }


    /**
     * Shows a ComboBox from which the user can select the target agent system for an agent transfer.
     * <br>The possible alternatives are defined by the Vector as_names. "parentComponent" is needed
     * for JOptionPane.showInputDialog().
     *
     * @param parentComponent parent applet
     * @param agent_identity name of agent to be transferred
     * @param as_names vector containing the names of possible target agent systems
     * @return String containing the name of the target agent system
     */

    public static String show_migrate_menu(Component parentComponent, String agent_identity, java.util.Vector as_names) {

        //specify the size str_as_names will have
        //Both "global" and "voyager" are no agent systems a MASA agent can be transferred to.
        int size = 0;
        if (as_names.contains("voyager")) {
            size = as_names.size() - 2; //-2 because of "global" and "voyager"
        }
        else {
            size = as_names.size() - 1; //-1 because of "global"
        }
      
        String[] str_as_names = new String[size];
        //copy names of all agent systems except "global" and "voyager"
        int j =0;
        String n;
        for (int i = 0; i < as_names.size(); i++) {
            n = (String) as_names.elementAt(i);
            if (!((n.equals("global")) || (n.equals("voyager")))) {
                str_as_names[j++] = n;
            }
        }
    
        String target = (String) JOptionPane.showInputDialog(parentComponent,
                                                             "Migrating agent \""+ agent_identity + 
                                                             "\"\n" + "Select the target agent system",
                                                             "Migrate agent dialog",
                                                             JOptionPane.QUESTION_MESSAGE,
                                                             null,
                                                             str_as_names,
                                                             str_as_names[0]);

        return(target);
    }


    /**
     * Retrieve a list of implemented agents from the Webserver agent
     * <br>The file "ImplementedAgents.txt" contains a list of agents that are ready to load. It
     * provides the name, the package and the type (mobile/stationary) of the agents. Itīs location
     * is defined by the MASA properties of the agent system, therefore it is read by
     * the webserver agent and provided via HTTP request.
     *
     * @see de.unimuenchen.informatik.mnm.masa.agent.webserver.WebserverStationaryAgent
     */

    public static String retrieve_implemented_agents_file(String host) {
        //prepare the request for the list of implemented agents
        String urlname = new String(host+"/"+"ImplementedAgents");

        java.net.URL urlIOR = null;
        java.net.URLConnection con = null;
        String string_file = new String();  //will contain the answer of the webserver
        try {
            // send the request
            urlIOR= new java.net.URL(urlname);
            con= urlIOR.openConnection();
            
            // getting the answer
            java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream()));
            String inputLine;

            //put the answer into string_file
            while ((inputLine = in.readLine()) != null) 
                string_file = string_file.concat(inputLine)+ " ";
            in.close();
        } catch (Exception e1) {
                System.err.println( "get_impl_agents urlname="+urlname);
            e1.printStackTrace();
        }
        return string_file;
    }

        public static org.omg.CORBA.ORB initialize_orb_for_push_consumer()
        {
#ifdef VISIBROKER30
                org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
#endif
#ifdef ORBACUS311
                java.util.Properties props = new java.util.Properties();
                props.put( "ooc.orb.conc_model",              "threaded");
                props.put( "ooc.boa.conc_model",              "thread_per_request");
                props.put( "org.omg.CORBA.ORBClass",          "com.ooc.CORBA.ORB");
                props.put( "org.omg.CORBA.ORBSingletonClass", "com.ooc.CORBA.ORBSingleton");
                org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init( new String[0], props);
                // with Orbacus we still need the BOA for the event channel, sorry
                org.omg.CORBA.BOA boa = ((com.ooc.CORBA.ORB)orb).BOA_init( new String[0], props);
                ((com.ooc.CORBA.BOA)boa).init_servers();
#endif

                return orb;
        }

}



Copyright Munich Network Management Team