properties.put(PropertyNames.ORGANIZATION_LOCATIONS, locPTs);
includeStartEndTime = false;
  private Vector getSelfInformation(PlanServiceContext psc) {    Collection container =       psc.getServerPlugInSupport().queryForSubscriber(getSelfPred());    Iterator iter = container.iterator();    Vector results = new Vector(1);    int n = 0; // unique index for relationships    while (iter.hasNext()) {      Asset asset = (Asset)iter.next();      PropertyTree properties = new PropertyTree();      // treat this like an organization at the client end      properties.put(PropertyNames.OBJECT_TYPE, 		     PropertyNames.ORGANIZATION_OBJECT);      properties.put(PropertyNames.UID_ATTR,		     getUIDAsString(asset.getUID()));      String assetKeyName = asset.getKey().toString();      if (assetKeyName == null)	return results;      properties.put(PropertyNames.ORGANIZATION_KEY_NAME, TranslateUtils.trimAngles(assetKeyName));      properties.put(PropertyNames.ORGANIZATION_NAME,		     asset.getItemIdentificationPG().getNomenclature());      RelationshipSchedule schedule = 	((HasRelationships)asset).getRelationshipSchedule();      Iterator schedIter = new ArrayList(schedule).iterator();      PropertyTree uniqueRelationships = new PropertyTree();      while (schedIter.hasNext()) {	Relationship relationship = (Relationship)schedIter.next();	// skip relationships with self	if ((relationship.getRoleA().equals(SELF_ROLE)) ||	    (relationship.getRoleB().equals(SELF_ROLE)))	  continue;	Object otherObject = schedule.getOther(relationship);	// skip relationships with non-assets; does this occur???	if (!(otherObject instanceof Asset))	  continue;	// get the name of the organization this one is related to;	// on the client side, this is compared to organization name	// so use the same getter	String relatedTo = ((Asset)otherObject).getKey().toString();	if (relatedTo == null)	  continue;	// filter duplicates	relatedTo = TranslateUtils.trimAngles(relatedTo);	String rel = schedule.getOtherRole(relationship).getName();	String entry = (String)uniqueRelationships.get(rel+relatedTo);	if (entry != null && entry.equals(relatedTo))	  continue;	uniqueRelationships.put(rel+relatedTo, relatedTo);	// property is related_to_n_name	properties.put(PropertyNames.ORGANIZATION_RELATED_TO + 		       "_" + n++ + "_" + rel,		       relatedTo);      }      // add location schedule      LocationSchedulePG locSchedPG;      Schedule locSched;      if (((locSchedPG = asset.getLocationSchedulePG()) != null) &&          ((locSched = locSchedPG.getSchedule()) != null) &&          (!(locSched.isEmpty()))) {        List locPTs = new ArrayList();        Enumeration locSchedEn = locSched.getAllScheduleElements();        while (locSchedEn.hasMoreElements()) {          Object oi = locSchedEn.nextElement();          if (!(oi instanceof LocationScheduleElement)) {            continue;          }          LocationScheduleElement lse = (LocationScheduleElement)oi;          Location loc = lse.getLocation();          if (!(loc instanceof LatLonPoint)) {            continue;          }          LatLonPoint lseLoc = (LatLonPoint)loc;          if ((lseLoc.getLatitude() == null) ||              (lseLoc.getLongitude() == null)) {            continue;          }          PropertyTree locPT = new PropertyTree();          locPT.put(PropertyNames.ORGANIZATION_LOCATION_ELEMENT_START_TIME,                    new Long(lse.getStartTime()));          locPT.put(PropertyNames.ORGANIZATION_LOCATION_ELEMENT_END_TIME,                    new Long(lse.getEndTime()));          locPT.put(PropertyNames.ORGANIZATION_LOCATION_ELEMENT_LATITUDE,                    new Double(lseLoc.getLatitude().getDegrees()));          locPT.put(PropertyNames.ORGANIZATION_LOCATION_ELEMENT_LONGITUDE,                    new Double(lseLoc.getLongitude().getDegrees()));          locPT.put(PropertyNames.ORGANIZATION_LOCATION_ELEMENT_VERBOSE,                    lseLoc.toString());          locPTs.add(locPT);        }        if (locPTs.size() > 0) {          properties.put(PropertyNames.ORGANIZATION_LOCATION_START_TIME,                         new Long(locSched.getStartTime()));          properties.put(PropertyNames.ORGANIZATION_LOCATION_END_TIME,                         new Long(locSched.getEndTime()));          properties.put(PropertyNames.ORGANIZATION_LOCATIONS, locPTs);        }      }      results.add(properties);    }    return results;  }