/** * Updates a structure list with the corresponding property handle. * * @param propHandle the property handle * @param structList the structure list * @throws SemanticException if any structure has invalid value. */ private void updateROMResultSets( OdaDataSetHandle setHandle, ResultSetsAdapter tmpAdapter, ResultSetDefinition cachedResultDefn) throws SemanticException { List structList = tmpAdapter.newROMResultSets(cachedResultDefn); List columns = new ArrayList(); List hints = new ArrayList(); ResultSetColumnInfo.updateResultSetColumnList(structList, columns, hints); PropertyHandle propHandle = setHandle.getPropertyHandle(OdaDataSetHandle.RESULT_SET_PROP); propHandle.clearValue(); if (!columns.isEmpty()) { for (int i = 0; i < columns.size(); i++) propHandle.addItem(columns.get(i)); } propHandle = setHandle.getPropertyHandle(OdaDataSetHandle.COLUMN_HINTS_PROP); propHandle.clearValue(); if (!hints.isEmpty()) { for (int i = 0; i < hints.size(); i++) { ColumnHint hint = (ColumnHint) hints.get(i); ColumnHintHandle oldHint = AdapterUtil.findColumnHint( (String) hint.getProperty(null, ColumnHint.COLUMN_NAME_MEMBER), setHandle.columnHintsIterator()); if (oldHint == null) propHandle.addItem(hints.get(i)); else { oldHint.setDisplayName((String) hint.getProperty(null, ColumnHint.DISPLAY_NAME_MEMBER)); oldHint.setDisplayNameKey( (String) hint.getProperty(null, ColumnHint.DISPLAY_NAME_ID_MEMBER)); oldHint.setHelpText((String) hint.getProperty(null, ColumnHint.HELP_TEXT_MEMBER)); oldHint.setHelpTextKey((String) hint.getProperty(null, ColumnHint.HELP_TEXT_ID_MEMBER)); oldHint.setFormat((String) hint.getProperty(null, ColumnHint.FORMAT_MEMBER)); } } } // add column hints for the computed column List hints4ComputedColumn = tmpAdapter.getHintsForComputedColumn(); for (int i = 0; i < hints4ComputedColumn.size(); i++) { propHandle.addItem((ColumnHint) hints4ComputedColumn.get(i)); } // add filter condition for the result set tmpAdapter.updateROMFilterCondition(); }
/** * Copies values of <code>setDesign</code> to <code>setHandle</code>. Values in <code>setDesign * </code> are validated before maps to values in OdaDataSetHandle. * * @param setDesign the ODA data set design * @param setHandle the Model handle * @throws SemanticException if any value is invalid. */ private void adaptDataSetDesign(DataSetDesign setDesign, OdaDataSetHandle setHandle) throws SemanticException { Object value = null; // properties on ReportElement, like name, displayNames, etc. value = setDesign.getName(); PropertyValueValidationUtil.validateProperty(setHandle, OdaDataSetHandle.NAME_PROP, value); setHandle.getElement().setName(setDesign.getName()); // properties on ReportElement, like name, displayNames, etc. value = setDesign.getDisplayName(); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.DISPLAY_NAME_PROP, value); setHandle.getElement().setProperty(OdaDataSetHandle.DISPLAY_NAME_PROP, value); value = setDesign.getDisplayNameKey(); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.DISPLAY_NAME_ID_PROP, value); setHandle.getElement().setProperty(OdaDataSetHandle.DISPLAY_NAME_ID_PROP, value); // properties such as comments, extends, etc are kept in // DataSourceHandle, not DataSourceDesign. // scripts of DataSource are kept in // DataSourceHandle, not DataSourceDesign. // set null or empty list if the return list is empty. value = newROMPrivateProperties(setDesign.getPrivateProperties()); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.PRIVATE_DRIVER_PROPERTIES_PROP, value); setHandle.getElement().setProperty(OdaDataSetHandle.PRIVATE_DRIVER_PROPERTIES_PROP, value); updateROMPublicProperties(setDesign.getPublicProperties(), setHandle); DataSourceDesign sourceDesign = setDesign.getDataSourceDesign(); String dataSourceName = null; if (sourceDesign != null) { dataSourceName = sourceDesign.getName(); ModuleHandle moduleHandle = setHandle.getModuleHandle(); DataSourceHandle sourceHandle = null; if (isLinkedParameter) { sourceHandle = moduleHandle .getElementFactory() .newOdaDataSource(dataSourceName, sourceDesign.getOdaExtensionDataSourceId()); moduleHandle.getDataSources().add(sourceHandle); } else sourceHandle = moduleHandle.findDataSource(dataSourceName); if (sourceHandle != null && sourceHandle instanceof OdaDataSourceHandle) { new DataSourceAdapter() .updateDataSourceHandle(sourceDesign, (OdaDataSourceHandle) sourceHandle); dataSourceName = sourceHandle.getName(); } } else dataSourceName = defaultDataSourceName; setHandle .getElement() .setProperty( OdaDataSetHandle.DATA_SOURCE_PROP, PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.DATA_SOURCE_PROP, dataSourceName)); // set the data set parameter list. setHandle.getElement().clearProperty(OdaDataSetHandle.PARAMETERS_PROP); List dataSetParams = new DataSetParameterAdapter(setHandle, setDesign).newROMSetParams(null); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.PARAMETERS_PROP, dataSetParams); setHandle.getElement().setProperty(OdaDataSetHandle.PARAMETERS_PROP, dataSetParams); // set the result sets ResultSetsAdapter tmpAdapter = new ResultSetsAdapter(setHandle, setDesign); List resultRetColumns = tmpAdapter.newROMResultSets(null); // add filter condition for the result set tmpAdapter.updateROMFilterCondition(); List columns = null; List hints = null; // if the return value is null, do not create an empty list. if (resultRetColumns != null) { columns = new ArrayList(); hints = new ArrayList(); ResultSetColumnInfo.updateResultSetColumnList(resultRetColumns, columns, hints); if (hints.isEmpty()) hints = null; PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.RESULT_SET_PROP, columns); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.COLUMN_HINTS_PROP, hints); } setHandle.getElement().setProperty(OdaDataSetHandle.COLUMN_HINTS_PROP, hints); setHandle.getElement().setProperty(OdaDataSetHandle.RESULT_SET_PROP, columns); // set the query text. String queryText = setDesign.getQueryText(); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.QUERY_TEXT_PROP, queryText); setHandle.getElement().setProperty(OdaDataSetHandle.QUERY_TEXT_PROP, queryText); // set the result name String resultSetName = setDesign.getPrimaryResultSetName(); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.RESULT_SET_NAME_PROP, queryText); setHandle.getElement().setProperty(OdaDataSetHandle.RESULT_SET_NAME_PROP, resultSetName); // convert data set paramters and result set columns first. Then update // designer values. String odaValues = serializeOdaValues(setDesign); PropertyValueValidationUtil.validateProperty( setHandle, OdaDataSetHandle.DESIGNER_VALUES_PROP, odaValues); setHandle.getElement().setProperty(OdaDataSetHandle.DESIGNER_VALUES_PROP, odaValues); updateROMMessageFile(setDesign.getDataSourceDesign(), setHandle.getModuleHandle()); }