Class SystemPropertiesManager
- java.lang.Object
-
- com.inductiveautomation.ignition.gateway.model.SystemPropertiesManager
-
public class SystemPropertiesManager extends java.lang.Object
Manages access to the SystemPropertiesRecord. A lot of different systems need access to the data in the record, and it is better to consolidate access to the record in a single place. When first loaded, this class will read the underlying SystemPropertiesRecord and load all the values into a map. Other systems will then retrieve values using properties specified in the GatewaySystemProperties class. Other systems can also write a value through this manager, which will propagate the changed value into the underlying SystemPropertiesRecord.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SystemPropertiesManager.PropertyMap
Whenever a SystemPropertiesListener fires, this provides a read-only version of the system properties map that can be safely passed to listeners.
-
Constructor Summary
Constructors Constructor Description SystemPropertiesManager(GatewayContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addEdgeSystemPropsListener(SystemPropertiesListener listener)
Adds a listener that will fire whenever the edge-specific gateway system properties change.void
addSystemPropsListener(SystemPropertiesListener listener)
Adds a listener that will fire whenever the gateway system properties change.<T> T
getEdgePropertyValue(Property<T> property)
Retrieves an EdgeSystemPropertiesRecord value.<T> T
getPropertyValue(Property<T> property)
Retrieves a SystemPropertiesRecord value.SystemPropertiesManager.PropertyMap
getPropertyValues()
java.lang.String
getSystemName()
void
removeEdgeSystemPropsListener(SystemPropertiesListener listener)
void
removeSystemPropsListener(SystemPropertiesListener listener)
<T> void
setEdgePropertyValue(Property<T> property, T newPropValue, boolean notifyRecordUpdated)
Sets a value that will be propagated to the EdgeSystemPropertiesRecord.<T> void
setLocalPropertyValue(Property<T> property, T newPropValue, boolean notifyRecordUpdated)
Sets a value that will be propagated to the *local* SystemPropertiesRecord.<T> void
setPropertyValue(Property<T> property, T newPropValue, boolean notifyRecordUpdated)
Sets a value that will be propagated to the SystemPropertiesRecord.<T> void
setPropertyValue(Property<T> property, T newPropValue, PersistenceSession session)
Sets a value that will be propagated to the SystemPropertiesRecord.void
setPropertyValues(java.util.List<PropertyValue> propValues, boolean notifyRecordUpdated)
Sets a collection of PropertyValues that will be propagated to the SystemPropertiesRecord.void
setup()
-
-
-
Constructor Detail
-
SystemPropertiesManager
public SystemPropertiesManager(GatewayContext context)
-
-
Method Detail
-
setup
public void setup()
-
addSystemPropsListener
public void addSystemPropsListener(SystemPropertiesListener listener)
Adds a listener that will fire whenever the gateway system properties change. This is the modern equivalent to adding a listener to the SystemPropertiesRecord.META object.
-
removeSystemPropsListener
public void removeSystemPropsListener(SystemPropertiesListener listener)
-
addEdgeSystemPropsListener
public void addEdgeSystemPropsListener(SystemPropertiesListener listener)
Adds a listener that will fire whenever the edge-specific gateway system properties change. This is the modern equivalent to adding a listener to the EdgeSystemPropertiesRecord.META object.
-
removeEdgeSystemPropsListener
public void removeEdgeSystemPropsListener(SystemPropertiesListener listener)
-
getPropertyValue
@Nullable public <T> T getPropertyValue(Property<T> property)
Retrieves a SystemPropertiesRecord value. This method is safer than accessing the SystemPropertiesRecord directly. Look in the GatewaySystemProperties class to locate the property whose value you need to retrieve. WARNING: this function will return null if the value is null in the SystemPropertiesRecord
-
getEdgePropertyValue
@Nullable public <T> T getEdgePropertyValue(Property<T> property)
Retrieves an EdgeSystemPropertiesRecord value. This method is safer than accessing the EdgeSystemPropertiesRecord directly. Look in the EdgeSystemProperties class to locate the property whose value you need to retrieve. WARNING: this function will return null if the value is null in the EdgeSystemPropertiesRecord
-
getPropertyValues
public SystemPropertiesManager.PropertyMap getPropertyValues()
- Returns:
- All gateway system properties in a read-only map. Look in the GatewaySystemProperties class to retrieve properties that you need to get out of the map.
-
setPropertyValue
public <T> void setPropertyValue(Property<T> property, T newPropValue, boolean notifyRecordUpdated)
Sets a value that will be propagated to the SystemPropertiesRecord. Look in the GatewaySystemProperties class to locate the property whose value you need to set. If the notifyRecordUpdated parameter is set to true, all registered SystemPropertiesListener objects will be notified.
-
setEdgePropertyValue
public <T> void setEdgePropertyValue(Property<T> property, T newPropValue, boolean notifyRecordUpdated)
Sets a value that will be propagated to the EdgeSystemPropertiesRecord. Look in the EdgeSystemProperties class to locate the property whose value you need to set. If the notifyRecordUpdated parameter is set to true, all SystemPropertiesListener objects registered as Edge system properties listeners will be notified.
-
setPropertyValue
public <T> void setPropertyValue(Property<T> property, T newPropValue, PersistenceSession session)
Sets a value that will be propagated to the SystemPropertiesRecord. Look in the GatewaySystemProperties class to locate the property whose value you need to set. This method will use a PersistenceSession that is passed in to update the underlying SystemPropertiesRecord. Use this when you are already have a session open, as you can't open 2 sessions in the same thread. Note: if you use this method, you are responsible for committing the session yourself. You are also responsible for calling PersistenceInterface#notifyRecordUpdated(systemPropertiesRecord) after the session is committed (if calling notifyRecordUpdated() is needed).
-
setPropertyValues
public void setPropertyValues(java.util.List<PropertyValue> propValues, boolean notifyRecordUpdated)
Sets a collection of PropertyValues that will be propagated to the SystemPropertiesRecord. Look in the GatewaySystemProperties class to locate the properties whose values you need to set.
-
setLocalPropertyValue
public <T> void setLocalPropertyValue(Property<T> property, T newPropValue, boolean notifyRecordUpdated)
Sets a value that will be propagated to the *local* SystemPropertiesRecord. This means that the value will NOT be propagated to the other redundant node in a redundancy setup. In general, do NOT use this method except in specific circumstances where you know the SystemPropertiesRecord change needs to be kept local (one example is the demo timer reset). Instead, use setPropertyValue(). If the notifyRecordUpdated parameter is set to true, all registered SystemPropertiesListener objects will be notified.
-
getSystemName
public java.lang.String getSystemName()
- Returns:
- the gateway name
-
-