public void removeManagedApp(ClientAppInfo appInfo) {
   if (appInfo != null) {
     synchronized (_managedAppsMap) {
       if (null == _managedAppsMap.remove(appInfo)) {
         Logger.w(TAG, "_managedAppsMap return NULL for AppInfo " + appInfo.getAppClassname());
       }
     }
   } else {
     Logger.w(TAG, "Input parameter ClientAppInfo is NULL!");
   }
 }
  @Override
  public String toString() {
    StringBuffer buff = new StringBuffer();
    buff.append("\nCate ID: " + _id).append("\tCate Name: " + _name);
    for (AccessRule rule : _rulesList) {
      buff.append("\nRule auth type: " + rule.getAccessType())
          .append("\nRule recur type: " + rule.getRecurrence().getName())
          .append("\tRecur value: " + rule.getRecurrence().getRecurValue());

      for (TimeRange tr : rule.getTimeRangeList()) {
        buff.append("\nStart Time: " + tr.getStartTime().toString())
            .append("\tEnd Time: " + tr.getEndTime().toString());
      }
    }

    for (ClientAppInfo appInfo : _managedAppsMap.keySet()) {
      buff.append("\nManaged App: " + appInfo.getAppName())
          .append(", " + appInfo.getAppPkgname())
          .append(", " + appInfo.getAppClassname());
    }

    return buff.toString();
  }