/** @see com.ardais.bigr.iltds.btx.BTXDetails#getDirectlyInvolvedObjects() */
 public Set getDirectlyInvolvedObjects() {
   Set set = new HashSet();
   if (Constants.OBJECT_TYPE_ACCOUNT.equalsIgnoreCase(getObjectType())) {
     set.add(getAccountData().getId());
   } else if (Constants.OBJECT_TYPE_USER.equalsIgnoreCase(getObjectType())) {
     set.add(getUserData().getUserId());
   }
   return set;
 }
  /** @see com.ardais.bigr.iltds.btx.BTXDetails#doGetDetailsAsHTML() */
  protected String doGetDetailsAsHTML() {
    // NOTE: This method must not make use of any fields that aren't
    // set by the populateFromHistoryRecord method.
    //
    // For this object type, the fields we can use here are:
    // setObjectType
    // one of the following, depending upon object type
    //   getUserData().setUserId
    //   getAccountData.setId
    // setAddedPrivileges
    // setRemovedPrivileges
    // setAssignedPrivileges - note this will be null
    // setAllPrivileges - note this will be null
    // setSelectedPrivileges - note this will be null
    // setRoleBasedPrivileges - note this will be null

    // The result has this form:
    //    User <userId> had access to the following privilege revoked: <privilege names>.
    //    They were granted access to the following privileges: <privilege names>.
    StringBuffer sb = new StringBuffer(512);
    if (Constants.OBJECT_TYPE_ACCOUNT.equalsIgnoreCase(getObjectType())) {
      sb.append("Account ");
      Escaper.htmlEscape(getAccountData().getId(), sb);
    } else if (Constants.OBJECT_TYPE_USER.equalsIgnoreCase(getObjectType())) {
      sb.append("User ");
      Escaper.htmlEscape(getUserData().getUserId(), sb);
    }
    // if no changes were made, say that
    if (getRemovedPrivileges().size() == 0 && getAddedPrivileges().size() == 0) {
      sb.append(" had no changes made to");
      if (Constants.OBJECT_TYPE_ACCOUNT.equalsIgnoreCase(getObjectType())) {
        sb.append(" its");
      } else if (Constants.OBJECT_TYPE_USER.equalsIgnoreCase(getObjectType())) {
        sb.append(" their");
      }
      sb.append(" privilege access.");
    } else {
      if (getRemovedPrivileges().size() > 0) {
        sb.append(" had access to the following privileges revoked: ");
        Iterator iterator = getRemovedPrivileges().iterator();
        boolean addComma = false;
        while (iterator.hasNext()) {
          if (addComma) {
            sb.append(", ");
          }
          addComma = true;
          sb.append(((PrivilegeDto) iterator.next()).getDescription());
        }
        sb.append(".");
      }
      if (getAddedPrivileges().size() > 0) {
        // if we said something about removed privileges, start a new sentence.
        if (getRemovedPrivileges().size() > 0) {
          if (Constants.OBJECT_TYPE_ACCOUNT.equalsIgnoreCase(getObjectType())) {
            sb.append(" It was");
          } else if (Constants.OBJECT_TYPE_USER.equalsIgnoreCase(getObjectType())) {
            sb.append(" They were ");
          }
        } else {
          sb.append(" was ");
        }
        sb.append("granted access to the following privileges: ");
        Iterator iterator = getAddedPrivileges().iterator();
        boolean addComma = false;
        while (iterator.hasNext()) {
          if (addComma) {
            sb.append(", ");
          }
          addComma = true;
          sb.append(((PrivilegeDto) iterator.next()).getDescription());
        }
        sb.append(".");
      }
    }
    return sb.toString();
  }