/** * 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 column hint values by given output element attributes. * * @param outputAttrs the latest output element attributes * @param cachedOutputAttrs the last(cached) output element attributes * @param newHint the column hint */ private static void updateColumnHintFromUsageHints( OutputElementAttributes outputAttrs, OutputElementAttributes cachedOutputAttrs, ColumnHint newHint, OdaResultSetColumn column) { if (outputAttrs == null) return; // help text and key Object oldValue = cachedOutputAttrs == null ? null : cachedOutputAttrs.getHelpText(); Object newValue = outputAttrs.getHelpText(); if (!CompareUtil.isEquals(oldValue, newValue)) { newHint.setProperty(ColumnHint.HELP_TEXT_MEMBER, newValue); } oldValue = cachedOutputAttrs == null ? null : cachedOutputAttrs.getHelpTextKey(); newValue = outputAttrs.getHelpTextKey(); if (!CompareUtil.isEquals(oldValue, newValue)) { newHint.setProperty(ColumnHint.HELP_TEXT_ID_MEMBER, newValue); } // m_label maps to heading oldValue = cachedOutputAttrs == null ? null : cachedOutputAttrs.getLabel(); newValue = outputAttrs.getLabel(); if (!CompareUtil.isEquals(oldValue, newValue)) { newHint.setProperty(ColumnHint.HEADING_MEMBER, newValue); } oldValue = cachedOutputAttrs == null ? null : cachedOutputAttrs.getLabelKey(); newValue = outputAttrs.getLabelKey(); if (!CompareUtil.isEquals(oldValue, newValue)) { newHint.setProperty(ColumnHint.HEADING_ID_MEMBER, newValue); } // for values in formatting. ValueFormatHints formatHints = outputAttrs.getFormattingHints(); if (formatHints == null) return; ValueFormatHints cachedFormatHints = cachedOutputAttrs == null ? null : cachedOutputAttrs.getFormattingHints(); oldValue = cachedFormatHints == null ? null : cachedFormatHints.getDisplayFormat(); // convert display format in oda to pattern part of value-format member newValue = formatHints.getDisplayFormat(); if (!CompareUtil.isEquals(oldValue, newValue)) { FormatValue format = (FormatValue) newHint.getProperty(null, ColumnHint.VALUE_FORMAT_MEMBER); if (format == null && newValue != null) { format = StructureFactory.newFormatValue(); newHint.setProperty(ColumnHint.VALUE_FORMAT_MEMBER, format); } // add logic to fix 32742: if the column is date-time, then do some // special handle for the format string in IO if (newValue != null && (column != null && DesignChoiceConstants.COLUMN_DATA_TYPE_DATETIME.equals(column.getDataType()))) { String formatValue = (String) newValue; newValue = formatValue.replaceFirst("mm/", "MM/"); // $NON-NLS-1$//$NON-NLS-2$ } if (format != null) format.setPattern((String) newValue); } // not support display length /* * newValue = formatHints.getDisplaySize( ); oldValue = * cachedFormatHints == null ? null : cachedFormatHints .getDisplaySize( * ); if ( oldValue == null || !oldValue.equals( newValue ) ) { * newHint.setProperty( ColumnHint.DISPLAY_LENGTH_MEMBER, newValue ); } */ newValue = formatHints.getHorizontalAlignment(); oldValue = cachedFormatHints == null ? null : cachedFormatHints.getHorizontalAlignment(); if (formatHints.isSetHorizontalAlignment() && !CompareUtil.isEquals(oldValue, newValue)) { newHint.setProperty( ColumnHint.HORIZONTAL_ALIGN_MEMBER, convertToROMHorizontalAlignment((HorizontalAlignment) newValue)); } // not support word-wrap /* * newValue = formatHints.getTextWrapType( ); oldValue = * cachedFormatHints == null ? null : cachedFormatHints * .getTextWrapType( ); * * if ( oldValue == null || !oldValue.equals( newValue ) ) { * newHint.setProperty( ColumnHint.WORD_WRAP_MEMBER, * convertToROMWordWrap( (TextWrapType) newValue ) ); } */ // cannot handle text format since two objects in ODA and ROM are // different. }