Package org.astrogrid.samp

# Class Subscriptions

java.lang.Object
java.util.AbstractMap
org.astrogrid.samp.SampMap
org.astrogrid.samp.Subscriptions

All Implemented Interfaces:
  `Map`

public class Subscriptions extends SampMap
Represents the set of subscribed messages for a SAMP client. This has the form of a Map in which each key is an MType (perhaps wildcarded) and the corresponding values are maps with keys which are so far undefined (thus typically empty).

Since:
  14 Jul 2008
Author:
  Mark Taylor

## Nested Class Summary

## Nested classes/interfaces inherited from class java.util.AbstractMap

`AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>`

## Nested classes/interfaces inherited from interface java.util.Map

`Map.Entry<K,V>`

## Field Summary

### Fields inherited from class org.astrogrid.samp.SampMap

`EMPTY`

## Constructor Summary

Constructors
Constructor
Description
`Subscriptions()`
Constructs an empty subscriptions object.
`Subscriptions(Map map)`
Constructs a subscriptions object based on an existing map.

## Method Summary

Modifier and Type
Method
Description
`void`
`addMType(String mtype)`
Adds a subscription to a given MType.
`static Subscriptions`
`asSubscriptions(Map map)`
Returns a given map in the form of a Subscriptions object.
`void`
`check()`
Checks that this object is ready for use with the SAMP toolkit.
`Map`
`getSubscription(String mtype)`
Returns the map which forms the value for a given MType key.
`boolean`
`isSubscribed(String mtype)`
Determines whether a given (non-wildcarded) MType is subscribed to by this object.
`static int`
`matchLevel(String pattern, String mtype)`
Performs wildcard matching of MTypes.

### Methods inherited from class org.astrogrid.samp.SampMap

`checkHasKeys, entrySet, getList, getMap, getString, getUrl, put`

### Methods inherited from class java.util.AbstractMap

`clear, clone, containsKey, containsValue, equals, get, hashCode, isEmpty, keySet, putAll, remove, size, toString, values`

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.util.Map

`compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll`

## Constructor Details

### Subscriptions

public Subscriptions()
Constructs an empty subscriptions object.

### Subscriptions

public Subscriptions(Map map)
Constructs a subscriptions object based on an existing map.

Parameters:
  `map` - map containing initial data for this object

## Method Details

### addMType

public void addMType(String mtype)
Adds a subscription to a given MType. `mtype` may include a wildcard according to the SAMP rules.

Parameters:
  `mtype` - subscribed MType, possibly wildcarded

### isSubscribed

public boolean isSubscribed(String mtype)
Determines whether a given (non-wildcarded) MType is subscribed to by this object.

Parameters:
  `mtype` - MType to test

### getSubscription

public Map getSubscription(String mtype)
Returns the map which forms the value for a given MType key. If a wildcarded subscription is recorded which matches `mtype`, the corresponding value is returned. If `mtype` is not subscribed to, `null` is returned.

Parameters:
  `mtype` - MType to query
Returns:
  map value corresponding to `mtype`, or null

### check

public void check()
Description copied from class: `SampMap`
Checks that this object is ready for use with the SAMP toolkit. As well as calling `SampUtils.checkMap(java.util.Map)` (ensuring that all keys are Strings, and all values Strings, Lists or Maps), subclass-specific invariants may be checked. In the case that there's something wrong, an informative `DataException` will be thrown.

Overrides:
  `check` in class `SampMap`

### asSubscriptions

public static Subscriptions asSubscriptions(Map map)
Returns a given map in the form of a Subscriptions object.

Parameters:
  `map` - map
Returns:
  subscriptions

### matchLevel

public static int matchLevel(String pattern, String mtype)
Performs wildcard matching of MTypes. The result is the number of dot-separated "atoms" which match between the two.

Parameters:
  `pattern` - MType pattern; may contain a wildcard
  `mtype` - unwildcarded MType for comparison with `pattern`
Returns:
  the number of atoms of `pattern` which match `mtype`; if `pattern`="*" the result is 0, and if there is no match the result is -1