/** Returns a collection of dataSetUI elements in the given extension. */
  private Hashtable getDataSetUIElements(IExtension extension) throws OdaException {
    Hashtable dataSetElements = new Hashtable();
    IConfigurationElement[] configElements =
        UIManifestExplorer.getNamedElements(extension, DATA_SET_ELEMENT_NAME);
    for (int i = 0, size = configElements.length; i < size; i++) {
      IConfigurationElement configElement = configElements[i];

      String dataSetId = configElement.getAttribute("id"); // $NON-NLS-1$

      // if duplicated data set ids exist in the extension,
      // only the last one applies
      dataSetElements.put(dataSetId, new DataSetUIElement(configElement));
    }

    if (dataSetElements.size() < 1) // expects one or more
    throw new OdaException(
          Messages.bind(Messages.manifest_dataSetUi_missingElement, DATA_SET_ELEMENT_NAME));

    return dataSetElements;
  }