The beans encapsulate common tasks such as selecting a station from
nested database, region, and station controls, or choosing an interval
for which data is required. The beans are summarised in the following table:
| Bean | Picture | Purpose |
| MetBroker | Manages link to MetBroker | |
| MetSource | Select database from list | |
| MetRegion | Select database region | |
| MetStation | Select station within region | |
| StationDates | ![]() |
Show period of operation of station |
| MetLogin | Log user into database if required. | |
| TimeZone | Select query and result time zone | |
| Interval | Select request interval | |
| ElementAndResolution | ![]() |
Show data elements available from station and their resolution. Allow selection of elements to retrieve and their resolution |
| StationRequest | Get station data | |
| SpatialRequest | Get spatial data |
The figure below shows the beans and the interfaces and events used to link them together. We use the alternative UML “lollypop” notation for the interfaces. The beans use custom events to link to one another. As an example of how this mechanism works, the MetSourceBean notifies other beans when the user selects a new database. To be notified, beans must implement the interface MetSourceListener, and must register their interest by calling MetSourceBean’s addMetSourceListener method. The MetSourceEvent method sent by the MetSourceBean to the listening beans contains details about the newly selected database. In response to this event beans may request further information by querying MetBroker directly, for example the RegionBean would request a list of regions in the database, and then display and “announce” the first region in the list by broadcasting a RegionEvent to its listeners.