protected void processGlobalResourceList(Sim_event ev)
    {
        /***
        NOTE: possible cases are
        - if there is only 1 local GIS and no other regional GISes
        - if there is only 1 user queries for this
        - if there are 2 or more users query at different time
        ****/

        LinkedList regionalList = null;   // regional GIS list
        int eventTag = AbstractGIS.GIS_INQUIRY_RESOURCE_LIST;
        boolean result = false;

        // for a first time request, it needs to call the system GIS first,
        // then asks each regional GIS for its resource IDs.
        if (globalResList_ == null)
        {
            // get regional GIS list from system GIS first
            regionalList = requestFromSystemGIS();

            // ask a resource list from each regional GIS
            result = getListFromOtherRegional(regionalList, eventTag);
            if (result == true)
            {
                globalResList_ = new ArrayList();    // storing global resources
                numRes_ = regionalList.size() - 1;   // excluding itself

                // then store the user ID
                Integer id = (Integer) ev.get_data();
                userList_ = new ArrayList();
                userList_.add(id);
                return;     // then exit
            }
        }

        // cache the request and store the user ID if it is already sent
        if (numRes_ > 0 && userList_ != null && userList_.size() > 0)
        {
            Integer id = (Integer) ev.get_data();
            userList_.add(id);
            return;     // then exit
        }

        // send the result back to sender, where the list could be empty
        result = sendListToSender(ev, globalResList_);
        if (result == false)
        {
            System.out.println(super.get_name() +
                ".processGlobalResourceList(): Warning - can't send a " +
                "resource list to sender.");
        }
    }