/**
   * Updates a oda result set definition.
   *
   * @param param
   */
  private void updateOrVerifyResultSetColumnAndHint(
      DataSetDesign setDesign, OdaDataSetHandle setHandle, boolean update)
      throws SemanticException {
    ResultSets sets = setDesign.getResultSets();
    ResultSetDefinition setDefn = (ResultSetDefinition) sets.getResultSetDefinitions().get(0);
    ColumnDefinition columnDef = setDefn.getResultSetColumns().getResultColumnDefinitions().get(0);

    DataElementAttributes dataAttrs = columnDef.getAttributes();
    DataElementUIHints dataUIHints = dataAttrs.getUiHints();
    OutputElementAttributes usageHints = columnDef.getUsageHints();
    if (columnDef.getMultiDimensionAttributes() == null) {
      columnDef.setMultiDimensionAttributes(DesignFactory.eINSTANCE.createAxisAttributes());
    }

    if (update) {
      dataAttrs.setNativeDataTypeCode(DataType.DECIMAL_TYPE);
      dataUIHints.setDisplayName("new display name for column 1"); // $NON-NLS-1$
      usageHints.setHelpText("new help text for column 1"); // $NON-NLS-1$
      ValueFormatHints format = DesignFactory.eINSTANCE.createValueFormatHints();
      format.setDisplayFormat("new format"); // $NON-NLS-1$
      usageHints.setFormattingHints(format);
      columnDef.setUsageHints(usageHints);
      columnDef.getMultiDimensionAttributes().setAxisType(AxisType.MEASURE_LITERAL);
      columnDef.getMultiDimensionAttributes().setOnColumnLayout(true);
    } else {
      assertEquals(DataType.DECIMAL_TYPE, dataAttrs.getNativeDataTypeCode());
      assertEquals("new display name for column 1", dataUIHints.getDisplayName());
      assertEquals("new help text for column 1", usageHints.getHelpText());
      assertEquals("new format", usageHints.getFormattingHints().getDisplayFormat());
      assertEquals(AxisType.MEASURE_LITERAL, columnDef.getMultiDimensionAttributes().getAxisType());
      assertTrue(columnDef.getMultiDimensionAttributes().isSetOnColumnLayout());
    }
  }
  /**
   * Creates an DataElementAttributes with the given ROM report parameter.
   *
   * @param paramHandle the ROM report parameter.
   * @return the created DataElementAttributes
   */
  private DataElementAttributes updateDataElementAttrs(
      DataElementAttributes dataAttrs, AbstractScalarParameterHandle paramHandle) {
    DataElementAttributes retDataAttrs = dataAttrs;

    if (retDataAttrs == null) retDataAttrs = designFactory.createDataElementAttributes();

    // retDataAttrs.setNullability( DataSetParameterAdapter
    // .newElementNullability( paramHandle.allowNll( ) ) );

    retDataAttrs.setNullability(
        DataSetParameterAdapter.newElementNullability(
            getReportParamAllowMumble(paramHandle, ALLOW_NULL_PROP_NAME)));

    DataElementUIHints uiHints = designFactory.createDataElementUIHints();

    String text = paramHandle.getPromptText();
    String textKey = paramHandle.getPromptTextID();

    if (text != null || textKey != null) {
      uiHints.setDisplayName(text);
      uiHints.setDisplayNameKey(textKey);
    }

    text = paramHandle.getHelpText();
    textKey = paramHandle.getHelpTextKey();

    if (text != null || textKey != null) {
      uiHints.setDescription(text);
      uiHints.setDescriptionKey(textKey);
    }

    retDataAttrs.setUiHints(uiHints);

    return retDataAttrs;
  }
  /**
   * Updates a oda result set definition.
   *
   * @param param
   */
  private void updateOrVerifyResultSetDefinition1(ResultSetDefinition setDefn, boolean update) {
    List columns = setDefn.getResultSetColumns().getResultColumnDefinitions();

    ColumnDefinition column1 = (ColumnDefinition) columns.get(0);
    ColumnDefinition column2 = (ColumnDefinition) columns.get(1);

    DataElementAttributes dataAttrs = column1.getAttributes();
    DataElementUIHints dataUIHints = dataAttrs.getUiHints();
    if (update) dataUIHints.setDisplayName("new display name for column 1"); // $NON-NLS-1$
    else assertEquals("new display name for column 1", dataUIHints.getDisplayName());

    OutputElementAttributes usageHints = column1.getUsageHints();
    if (update) usageHints.setHelpText("new help text for column 1"); // $NON-NLS-1$
    else assertEquals("new help text for column 1", usageHints.getHelpText());

    // Setting to null object
    if (update)
      usageHints.getFormattingHints().setDisplayFormat("new format for column 1"); // $NON-NLS-1$
    else assertEquals(null, usageHints.getFormattingHints().getDisplayFormat());

    if (update) {
      AxisAttributes axisAttrs = DesignFactory.eINSTANCE.createAxisAttributes();
      axisAttrs.setAxisType(AxisType.DIMENSION_MEMBER_LITERAL);
      axisAttrs.setOnColumnLayout(false);
      column1.setMultiDimensionAttributes(axisAttrs);
    } else {
      AxisAttributes axisAttrs = column1.getMultiDimensionAttributes();
      assertEquals(AxisType.DIMENSION_MEMBER_LITERAL, axisAttrs.getAxisType());
      assertFalse(axisAttrs.isOnColumnLayout());
    }

    // new display name and help text, etc.
    if (update) {
      dataUIHints = DesignFactory.eINSTANCE.createDataElementUIHints();
      dataUIHints.setDisplayName("new display name for column 2"); // $NON-NLS-1$
      dataAttrs = column2.getAttributes();
      dataAttrs.setUiHints(dataUIHints);
    } else {
      dataUIHints = column2.getAttributes().getUiHints();
      assertEquals("new display name for column 2", dataUIHints.getDisplayName());
    }

    if (update) {
      usageHints = DesignFactory.eINSTANCE.createOutputElementAttributes();
      usageHints.setHelpText("new help text for column 2"); // $NON-NLS-1$
      ValueFormatHints format = DesignFactory.eINSTANCE.createValueFormatHints();
      format.setDisplayFormat("new format for column 2"); // $NON-NLS-1$
      usageHints.setFormattingHints(format);
      column2.setUsageHints(usageHints);
    } else {
      usageHints = column2.getUsageHints();
      assertEquals("new help text for column 2", usageHints.getHelpText());
      ValueFormatHints format = usageHints.getFormattingHints();
      assertEquals("new format for column 2", format.getDisplayFormat());
    }
  }
  /**
   * Updates values in DataElementAttributes to the given report parameter.
   *
   * @param dataAttrs the latest data element attributes
   * @param cachedDataAttrs the cached data element attributes
   * @param reportParam the report parameter
   * @throws SemanticException
   */
  private void updateDataElementAttrsToReportParam(
      DataElementAttributes dataAttrs,
      DataElementAttributes cachedDataAttrs,
      AbstractScalarParameterHandle reportParam)
      throws SemanticException {

    if (dataAttrs == null) return;

    boolean allowsNull = dataAttrs.allowsNull();
    if (cachedDataAttrs == null || cachedDataAttrs.allowsNull() != allowsNull)
      setReportParamIsRequired(reportParam, ALLOW_NULL_PROP_NAME, dataAttrs.allowsNull());

    // reportParam.setAllowNull( dataAttrs.allowsNull( ) );

    DataElementUIHints dataUiHints = dataAttrs.getUiHints();
    DataElementUIHints cachedDataUiHints =
        (cachedDataAttrs == null ? null : cachedDataAttrs.getUiHints());
    if (dataUiHints != null) {
      String displayName = dataUiHints.getDisplayName();
      String cachedDisplayName =
          cachedDataUiHints == null ? null : cachedDataUiHints.getDisplayName();

      boolean isChanged = false;

      if (cachedDisplayName == null || !cachedDisplayName.equals(displayName)) {
        isChanged = true;
        reportParam.setPromptText(displayName);
        reportParam.setPromptTextID(dataUiHints.getDisplayNameKey());
      }
      if (!isChanged && cachedDataUiHints != null && cachedDisplayName != null) {
        reportParam.setPromptText(cachedDisplayName);
        reportParam.setPromptTextID(cachedDataUiHints.getDisplayNameKey());
      }

      isChanged = false;
      String description = dataUiHints.getDescription();
      String cachedDescription =
          cachedDataUiHints == null ? null : cachedDataUiHints.getDescription();
      if (cachedDescription == null || !cachedDescription.equals(description)) {
        isChanged = true;
        reportParam.setHelpText(description);
        reportParam.setHelpTextKey(dataUiHints.getDescriptionKey());
      }

      if (!isChanged && cachedDataUiHints != null && cachedDescription != null) {
        reportParam.setHelpText(cachedDescription);
        reportParam.setHelpTextKey(cachedDataUiHints.getDescriptionKey());
      }
    }
  }
예제 #5
0
  /**
   * Checks whether there are values for newly created column hint.
   *
   * @param dataUIHints the latest data ui hints
   * @param outputAttrs the latest output element attributes
   * @return <code>true</code> if no column hint value is set. Otherwise <code>false</code>.
   */
  private static boolean hasColumnHintValue(
      DataElementUIHints dataUIHints,
      OutputElementAttributes outputAttrs,
      AxisAttributes axisAttrs) {
    if (dataUIHints == null && outputAttrs == null && axisAttrs == null) return false;

    boolean isValueSet = false;
    if (dataUIHints != null) {
      if (dataUIHints.getDisplayName() != null) isValueSet = true;
    }

    if (!isValueSet && outputAttrs != null) {
      if (outputAttrs.getHelpText() != null) isValueSet = true;

      if (!isValueSet) {
        ValueFormatHints formatHints = outputAttrs.getFormattingHints();
        if (formatHints != null) isValueSet = true;
      }
    }

    if (!isValueSet && axisAttrs != null) {
      isValueSet = axisAttrs.isSetAxisType();

      if (!isValueSet) {
        isValueSet = axisAttrs.isSetOnColumnLayout();
      }
    }
    return isValueSet;
  }
예제 #6
0
  /**
   * Updates column hint values by given data element attributes.
   *
   * @param dataAttrs the latest data element attributes
   * @param cachedDataAttrs the last(cached) data element attributes
   * @param newHint the column hint
   */
  private static void updateColumnHintFromDataAttrs(
      DataElementAttributes dataAttrs,
      DataElementAttributes cachedDataAttrs,
      ColumnHint newHint,
      OdaResultSetColumn column) {
    if (dataAttrs == null) return;

    Object oldValue = cachedDataAttrs == null ? null : cachedDataAttrs.getName();
    Object newValue = dataAttrs.getName();
    // If column name in hint already matches column name in column, don't
    // update it even if
    // oda has a new column name. Column name in hint and column has to
    // match as model use column name
    // as identifier to relate column and hint
    if (!CompareUtil.isEquals(
            newHint.getProperty(null, ColumnHint.COLUMN_NAME_MEMBER), column.getColumnName())
        && !CompareUtil.isEquals(oldValue, newValue))
      newHint.setProperty(ColumnHint.COLUMN_NAME_MEMBER, newValue);

    DataElementUIHints dataUIHints = dataAttrs.getUiHints();
    if (dataUIHints == null) return;

    DataElementUIHints cachedDataUIHints =
        cachedDataAttrs == null ? null : cachedDataAttrs.getUiHints();
    oldValue = cachedDataUIHints == null ? null : cachedDataUIHints.getDisplayName();
    newValue = dataUIHints.getDisplayName();
    if (!CompareUtil.isEquals(oldValue, newValue)) {
      newHint.setProperty(ColumnHint.DISPLAY_NAME_MEMBER, newValue);
    }

    oldValue = cachedDataUIHints == null ? null : cachedDataUIHints.getDisplayNameKey();
    newValue = dataUIHints.getDisplayNameKey();
    if (!CompareUtil.isEquals(oldValue, newValue)) {
      newHint.setProperty(ColumnHint.DISPLAY_NAME_ID_MEMBER, newValue);
    }

    // description to description in data ui hints: not support now

    /*
     * oldValue = cachedDataUIHints == null ? null : cachedDataUIHints
     * .getDescription( ); newValue = dataUIHints.getDescription( ); if (
     * oldValue == null || !oldValue.equals( newValue ) ) {
     * newHint.setProperty( ColumnHint.DESCRIPTION_MEMBER, newValue ); }
     *
     * oldValue = cachedDataUIHints == null ? null : cachedDataUIHints
     * .getDescriptionKey( ); newValue = dataUIHints.getDescriptionKey( );
     * if ( oldValue == null || !oldValue.equals( newValue ) ) {
     * newHint.setProperty( ColumnHint.DESCRIPTION_ID_MEMBER, newValue ); }
     */

  }
예제 #7
0
  /**
   * Updates hint-related information on the ODA <code>columnDefn</code>.
   *
   * @param columnDefn
   * @param hint
   */
  private void updateOdaColumnHint(ColumnDefinition columnDefn, ColumnHintHandle hint) {
    DataElementAttributes dataAttrs = columnDefn.getAttributes();

    DataElementUIHints uiHints = null;
    // update display name

    String displayName = hint.getDisplayName();
    String displayNameKey = hint.getDisplayNameKey();

    if (displayName != null || displayNameKey != null) {
      uiHints = designFactory.createDataElementUIHints();

      uiHints.setDisplayName(displayName);
      uiHints.setDisplayNameKey(displayNameKey);
    }

    // description maps to the description in data element UI hints.
    // String desc = hint.getDescription( );
    // String descKey = hint.getDescriptionKey( );
    /*
     * if ( desc != null || descKey != null ) { if ( uiHints == null )
     * uiHints = designFactory.createDataElementUIHints( );
     *
     * uiHints.setDescription( desc ); uiHints.setDescriptionKey( descKey );
     * }
     */

    dataAttrs.setUiHints(uiHints);

    // update usage hints.

    OutputElementAttributes outputAttrs = null;

    String helpText = hint.getHelpText();
    String helpTextKey = hint.getHelpTextKey();

    if (helpText != null || helpTextKey != null) {
      outputAttrs = designFactory.createOutputElementAttributes();
      if (helpText != null || helpTextKey != null) {
        outputAttrs.setHelpText(helpText);
        outputAttrs.setHelpTextKey(helpTextKey);
      }
    }

    // heading maps to m_label

    String heading = hint.getHeading();
    String headingKey = hint.getHeadingKey();
    if (heading != null || headingKey != null) {
      if (outputAttrs == null) outputAttrs = designFactory.createOutputElementAttributes();
      if (heading != null || headingKey != null) {
        outputAttrs.setLabel(heading);
        outputAttrs.setLabelKey(headingKey);
      }
    }

    // formatting related.

    FormatValue format = hint.getValueFormat();
    // int displayLength = hint.getDisplayLength( );
    // boolean wordWrap = hint.wordWrap( );
    String horizontalAlign = hint.getHorizontalAlign();

    if ((format != null && format.getPattern() != null) || horizontalAlign != null) {
      if (outputAttrs == null) outputAttrs = designFactory.createOutputElementAttributes();

      ValueFormatHints formatHint = designFactory.createValueFormatHints();

      if (format != null) formatHint.setDisplayFormat(format.getPattern());
      // formatHint.setDisplaySize( displayLength );
      formatHint.setHorizontalAlignment(convertToOdaHorizontalAlignment(horizontalAlign));
      // formatHint.setTextWrapType( convertToROMWordWrap( wordWrap ) );

      // cannot handle text format since two objects in ODA and ROM are
      // different.

      outputAttrs.setFormattingHints(formatHint);
    }

    columnDefn.setUsageHints(outputAttrs);

    // update axis attributes

    AxisAttributes axisAttrs = null;

    String analysisType = hint.getAnalysis();
    AxisType axisType = convertAnalysisTypeToAxisType(analysisType);

    if (axisType != null) {
      axisAttrs = designFactory.createAxisAttributes();
      axisAttrs.setAxisType(axisType);
      axisAttrs.setOnColumnLayout(hint.isOnColumnLayout());
      String analysisColumnName = hint.getAnalysisColumn();
      if (!StringUtil.isBlank(analysisColumnName)) {
        ResultSubset relatedColumns = designFactory.createResultSubset();
        relatedColumns.addColumnIdentifier(analysisColumnName);
        axisAttrs.setRelatedColumns(relatedColumns);
      }
    }

    columnDefn.setMultiDimensionAttributes(axisAttrs);
  }