boolean filteringDirectObjects = ((filterValue != null) && (filterValue.indexOf(PropertyNames.DIRECT_OBJECT) >= 0));
  private void makePlanGraph() {    // get community<->agent mapping    getCommunities();     if (communityToAgents == null || communityToAgents.size() == 0)      return; // nothing to graph    // get filter    ULPlanFilter filter = new ULPlanFilter(communityToAgents);    if (!filter.preFilter())      return; // user cancelled filter    // get the list of agents    Vector agentsToContact = filter.getAgentsSelected();    if (agentsToContact == null || agentsToContact.size() == 0)      return;    Vector agentURLs = new Vector();    for (int i = 0; i < agentsToContact.size(); i++) {      String URL =   	(String)agentToURL.get((String)agentsToContact.elementAt(i));      if (URL != null)  	agentURLs.add(URL);    }    String PSPId = PSP_PLAN;    String filterValue = filter.getIgnoreObjectTypes();    int filterLimit  = filter.getNumberOfObjects();    boolean filteringDirectObjects =      ((filterValue != null) &&       (filterValue.indexOf(PropertyNames.DIRECT_OBJECT) >= 0));    String baseURL =      PSPId + "?" +      PropertyNames.PLAN_OBJECTS_TO_IGNORE +      "=" +      filterValue;    // query    Collection objectsFromPSP =      Util.getCollectionFromClusters(agentURLs, 				     baseURL,				     null,				     filterLimit);    int nObjs =       ((objectsFromPSP != null) ?        objectsFromPSP.size() :        (0));    //    System.out.println("Received plan objects: "+nObjs);    if (nObjs <= 0) {      // no response?      return;    }    if (nObjs > filterLimit) {      // exceeded limit by one.      //      // Util.getCol.. did the popup warning    }    // a Vector of ULPlanNodes    Vector nodeObjects = new Vector();    int nDuplicates = 0;    Set UIDs = new HashSet();    Iterator iter = objectsFromPSP.iterator();    for (int i = 0; i < nObjs; i++) {      PropertyTree properties = (PropertyTree)iter.next();      // get the UID      String UID = (String)properties.get(PropertyNames.UID_ATTR);      // filter duplicates by UID      if (!(UIDs.contains(UID))) {	String agentName = (String)properties.get(PropertyNames.AGENT_ATTR);	String communityName =	  ((agentName != null) ?	   ((String)agentToCommunity.get(agentName)) :           "");	nodeObjects.add(new ULPlanNode(properties, communityName));	UIDs.add(UID);      } else {	nDuplicates++;      }      // for debugging      //      Set keys = properties.keySet();      //      System.out.println("Property names/values........");      //      for (Iterator j = keys.iterator(); j.hasNext(); ) {      //	String s = (String)j.next();      //	System.out.println(s + "," + properties.get(s));      //      }      // end for debugging    }    //    System.out.println("Duplicates: " + nDuplicates);    // if not filtering out direct objects, then handle their links specially    if (!(filteringDirectObjects)) {      nodeObjects = processDirectObjects(nodeObjects);    }    // only create popup if objects were found?    if (nodeObjects.size() != 0) {      Window w = 	(Window)new ULPlanFrame(NamedFrame.PLAN, 				new CSMARTGraph(nodeObjects, 						CSMARTGraph.GRAPH_TYPE_PLAN),				filter);      myWindows.add(w);    }  }