/* (non-Javadoc)
   * @see de.uka.ipd.idaho.goldenGateScf.uaa.webClient.AuthenticatedWebClientModul#handleRequest(de.uka.ipd.idaho.goldenGateScf.uaa.client.AuthenticatedClient, javax.servlet.http.HttpServletRequest)
   */
  public String[] handleRequest(AuthenticatedClient authClient, HttpServletRequest request)
      throws IOException {
    GoldenGateUpsClient upsc = this.getUpsClient(authClient);
    StringVector messageCollector = new StringVector();

    String command = request.getParameter(COMMAND_PARAMETER);

    //	create role
    if (CREATE_ROLE.equals(command)) {

      //	get parameters
      String roleName = request.getParameter(ROLE_NAME_PARAMETER);

      //	create role
      upsc.createRole(roleName);
      messageCollector.addElement("Role '" + roleName + "' created successfully.");
    }

    //	delete role
    else if (DELETE_ROLE.equals(command)) {

      //	get parameters
      String roleName = request.getParameter(ROLE_NAME_PARAMETER);

      //	delete role
      upsc.deleteRole(roleName);
      messageCollector.addElement("Role '" + roleName + "' deleted successfully.");
    }

    //	edit a user's roles and permissions
    else if (EDIT_USER.equals(command)) {

      //	get parameters
      String userName = request.getParameter(USER_NAME_PARAMETER);
      String[] roles = request.getParameterValues(ROLE_PARAMETER);

      //	set roles
      upsc.setUserRoles(userName, roles);
      messageCollector.addElement("Roles of user '" + userName + "' changed successfully.");
    }

    //	edit a role's roles and permissions
    else if (EDIT_ROLE.equals(command)) {

      //	get parameters
      String roleName = request.getParameter(ROLE_NAME_PARAMETER);
      String[] roles = request.getParameterValues(ROLE_PARAMETER);
      String[] permissions = request.getParameterValues(PERMISSION_PARAMETER);

      //	set roles
      upsc.setRoleRoles(roleName, roles);
      messageCollector.addElement(
          "Inherited roles of role '" + roleName + "' changed successfully.");

      //	set permissions
      upsc.setRolePermissions(roleName, permissions);
      messageCollector.addElement("Permissions of role '" + roleName + "' changed successfully.");
    }

    return messageCollector.toStringArray();
  }