/**
   * Updates values in InputParameterAttributes to the given report parameter.
   *
   * @param dataAttrs the latest input parameter attributes
   * @param cachedDataAttrs the cached input parameter attributes
   * @param reportParam the report parameter
   * @param setHandle the ROM data set that has the corresponding data set parameter
   * @throws SemanticException
   */
  private void updateInputParameterAttrsToReportParam(
      InputParameterAttributes inputParamAttrs,
      InputParameterAttributes cachedInputParamAttrs,
      AbstractScalarParameterHandle reportParam,
      OdaDataSetHandle setHandle)
      throws SemanticException {
    if (inputParamAttrs == null) return;

    InputParameterUIHints paramUiHints = inputParamAttrs.getUiHints();
    if (paramUiHints != null && reportParam.getContainer() instanceof ParameterGroupHandle) {
      ParameterGroupHandle paramGroup = (ParameterGroupHandle) reportParam.getContainer();

      InputParameterUIHints cachedParamUiHints =
          cachedInputParamAttrs == null ? null : cachedInputParamAttrs.getUiHints();

      String cachedGroupPromptDisplayName =
          cachedParamUiHints == null ? null : cachedParamUiHints.getGroupPromptDisplayName();

      String groupPromptDisplayName = paramUiHints.getGroupPromptDisplayName();

      if (cachedGroupPromptDisplayName == null
          || !cachedGroupPromptDisplayName.equals(groupPromptDisplayName)) {
        paramGroup.setDisplayName(groupPromptDisplayName);

        paramGroup.setDisplayNameKey(paramUiHints.getGroupPromptDisplayNameKey());
      }
    }

    updateInputElementAttrsToReportParam(
        inputParamAttrs.getElementAttributes(),
        cachedInputParamAttrs == null ? null : cachedInputParamAttrs.getElementAttributes(),
        reportParam,
        setHandle);
  }