/* (non-Javadoc)
   * @see org.jasig.portal.layout.om.IStylesheetUserPreferences#removeStylesheetParameter(java.lang.String)
   */
  @Override
  public String removeStylesheetParameter(String name) {
    final IStylesheetParameterDescriptor stylesheetParameterDescriptor =
        this.stylesheetDescriptor.getStylesheetParameterDescriptor(name);
    if (stylesheetParameterDescriptor == null) {
      logger.warn(
          "Attempted to remove stylesheet parameter {} but no such stylesheet parameter is defined in stylesheet descriptor {}. It will be ignored",
          new Object[] {name, this.stylesheetDescriptor.getName()});
      return null;
    }

    final Scope scope = this.getWriteScope(stylesheetParameterDescriptor);
    final IStylesheetUserPreferences stylesheetUserPreferences =
        this.getStylesheetUserPreferences(scope, false);
    if (stylesheetUserPreferences == null) {
      return null;
    }

    return stylesheetUserPreferences.removeStylesheetParameter(name);
  }
  /* (non-Javadoc)
   * @see org.jasig.portal.layout.om.IStylesheetUserPreferences#setStylesheetParameter(java.lang.String, java.lang.String)
   */
  @Override
  public String setStylesheetParameter(String name, String value) {
    final IStylesheetParameterDescriptor stylesheetParameterDescriptor =
        this.stylesheetDescriptor.getStylesheetParameterDescriptor(name);
    if (stylesheetParameterDescriptor == null) {
      logger.warn(
          "Attempted to set stylesheet parameter {}={} but no such stylesheet parameter is defined in stylesheet descriptor {}. It will be ignored",
          new Object[] {name, value, this.stylesheetDescriptor.getName()});
      return null;
    }

    final Scope scope = this.getWriteScope(stylesheetParameterDescriptor);
    final IStylesheetUserPreferences stylesheetUserPreferences =
        this.getStylesheetUserPreferences(scope, true);

    final String defaultValue = stylesheetParameterDescriptor.getDefaultValue();
    if (this.compareValues(value, defaultValue)) {
      return stylesheetUserPreferences.removeStylesheetParameter(name);
    }

    return stylesheetUserPreferences.setStylesheetParameter(name, value);
  }