# Infrastructure

In addition to scopes there are several other important structural elements for organizing and maintaining setup information.

## 1 Index

An `index` is a `container` for product catalogs as well as a `container` for project catalogs. It also `provides access` to all task models. All available products and projects are reachable from the index. All the setup wizards are driven by this information. The index also `maintains references` to dynamic Ecore models that provide additional task implementations. It is stored in the installation resource.

## 2 Location Catalog

A `location catalog` maintains an index of all installations and workspaces installed and provisioned by Oomph, including any installation where Oomph is installed, and any workspace opened by any installation with Oomph installed. It maintains a two-way map, i.e., for each installation, the workspaces it has opened are `recorded` and for each workspace, the installations that have opened it are `recorded`. Each time a product with Oomph installed is started, its installation-workspace pair is added to the maps. The installation-to-workspace map is ordered, so the most recently installed or started installation is moved to the front and its workspace is moved to the front of the list associated with that installation. Similarly, the workspace-to-installation map is ordered, so the most recently provisioned or opened workspace is moved to the front and the installation that opened it is moved to the front of the list associated with that workspace. It is stored in the location resource.

## 3 Catalog Selection

A `catalog selection` maintains an installation and provisioning history for the setup wizards. It maintains the following:

- The `selected subset` of the index's available product catalogs displayed in the product page.
The `most recently selected` product version of each product displayed in the product product page.
- The `selected subset` of the index's available project catalogs displayed in the project page.
The `most recently selected` stream of each project ever chosen in the project page. The `most recently selected` streams chosen by the project page.

In other words, it maintains a persistent initial state for all the setup wizards. It is stored in the catalog selection resource.

Copyright (c) 2014 Eike Stepper (Loehne, Germany) and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v2.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v20.html