Package gda.device.enumpositioner
Class MapperBasedEnumPositionerBase<T>
java.lang.Object
gda.factory.ConfigurableBase
gda.factory.FindableConfigurableBase
gda.device.DeviceBase
gda.device.scannable.ScannableBase
gda.device.enumpositioner.EnumPositionerBase
gda.device.enumpositioner.MapperBasedEnumPositionerBase<T>
- All Implemented Interfaces:
Device,EnumPositioner,Scannable,Configurable,Findable,gda.observable.IObservable,org.springframework.beans.factory.InitializingBean
- Direct Known Subclasses:
IntegerMapperBasedEnumPositioner,StringMapperBasedEnumPositioner
public abstract class MapperBasedEnumPositionerBase<T>
extends EnumPositionerBase
implements org.springframework.beans.factory.InitializingBean
A class that acts as an EnumPositioner. It monitors a scannable that gives the current value of the 'hardware' in
internal form. The class uses EnumValueMapper to map the external to internal forms moveTo accepts the position in
external form. If a control scannable is provided then the moveTo calls moveTo on the control scannable with position
set to the value in internal form If setCmdTemplate is provided then moveTo evaluates the command :
String.format(getSetCmdTemplate(),newExternalValue, getInternalValue(newExternalValue)) Only one of control or
setCmdTemplate can be set
-
Field Summary
Fields inherited from class gda.device.scannable.ScannableBase
__doc__, DEFAULT_INPUT_NAME, DEFAULT_OUTPUT_FORMAT, extraNames, inputNames, level, outputFormatFields inherited from class gda.device.DeviceBase
DEFAULT_PROTECTION_LEVEL_PROPERTYFields inherited from interface gda.device.Scannable
ATTR_NEXUS_CATEGORY, ATTR_NX_CLASS, DEFAULT_INPUT_NAME, VALUE_UNAVAILABLE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcheckPositionValid(Object position) This default behaviour should be extended by most subclasses! This default behaviour should be extended by most subclasses! Tests if the given object is meaningful to this Scannable and so could be used by one of the move commands.voidDefault implementation for classes that do not have to do any specific configuration.
Classes that do their own configuration should *not* call this superclass function, as it may cause the object to appear configured before it really is.getExternalValue(T internalValue) protected abstract StringgetInternalValue(String externalValue) Returns the current position of the Scannable.String[]Returns an array of the positions which this device can be moved to.protected abstract ScannablePositionChangeEventgetScannablePositionChangeEvent(Object source, Object arg) Returns the current statusvoidrawAsynchronousMoveTo(Object position) [Consider abstract] Trigger a move/operation to an internal/hardware position and return immediately.voidsetControl(Scannable control) voidsetMapper(EnumValueMapper<T> mapper) voidsetMonitor(Scannable monitor) voidsetSetCmdTemplate(String setCmdTemplate) Methods inherited from class gda.device.enumpositioner.EnumPositionerBase
addPosition, addPositions, clearPositions, containsPosition, createFormattedListAcceptablePositions, getNumberOfPositions, getPosition, getPositionerStatus, getPositionIndex, getPositionsList, isBusy, isInPos, setPositionerStatus, setPositionsInternal, toFormattedStringMethods inherited from class gda.device.scannable.ScannableBase
__call__, __call__, __doc__, __getitem__, __len__, __repr__, __str__, asynchronousMoveTo, atCommandFailure, atLevelEnd, atLevelMoveStart, atLevelStart, atPointEnd, atPointStart, atScanEnd, atScanLineEnd, atScanLineStart, atScanStart, externalToInternal, getExtraNames, getInputNames, getLevel, getOutputFormat, getScanMetadataAttribute, getScanMetadataAttributeNames, getScanMetadataAttributes, internalToExternal, isAt, moveTo, rawGetPosition, setExtraNames, setInputNames, setLevel, setOutputFormat, setScanMetadataAttribute, setScanMetadataAttributes, stop, throwExceptionIfInvalidTarget, toString, validateScannable, valueUnavailableString, waitWhileBusy, waitWhileBusyMethods inherited from class gda.device.DeviceBase
addIObserver, close, deleteIObserver, deleteIObservers, getAttribute, getName, getProtectionLevel, isBeingObserved, isConfigureAtStartup, notifyIObservers, setAttribute, setConfigureAtStartup, setName, setProtectionLevelMethods inherited from class gda.factory.ConfigurableBase
isConfigured, reconfigure, setConfiguredMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface gda.factory.Configurable
isConfigureAtStartup, isConfigured, reconfigureMethods inherited from interface gda.device.Device
close, getAttribute, getProtectionLevel, setAttribute, setProtectionLevelMethods inherited from interface gda.observable.IObservable
addIObserver, deleteIObserver, deleteIObserversMethods inherited from interface gda.device.Scannable
asynchronousMoveTo, atCommandFailure, atLevelEnd, atLevelMoveStart, atLevelStart, atPointEnd, atPointStart, atScanEnd, atScanLineEnd, atScanLineStart, atScanStart, getExtraNames, getInputNames, getLevel, getOutputFormat, getScanMetadataAttribute, getScanMetadataAttributeNames, getScanMetadataAttributes, isAt, moveTo, setExtraNames, setInputNames, setLevel, setOutputFormat, setScanMetadataAttribute, setScanMetadataAttributes, stop, waitWhileBusy
-
Constructor Details
-
MapperBasedEnumPositionerBase
public MapperBasedEnumPositionerBase()
-
-
Method Details
-
getMapper
-
setMapper
-
setSetCmdTemplate
-
setMonitor
- Parameters:
monitor- Scannable getPosition returns Integer and notifies observers with arg set to Integer
-
getMonitor
-
setControl
- Parameters:
control- Scannable whose moveTo accepts an Integer
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
configure
Description copied from class:ConfigurableBaseDefault implementation for classes that do not have to do any specific configuration.
Classes that do their own configuration should *not* call this superclass function, as it may cause the object to appear configured before it really is.- Specified by:
configurein interfaceConfigurable- Overrides:
configurein classConfigurableBase- Throws:
FactoryException- if there is an error in configuration e.g. required variable not set or cannot connect to device
-
getScannablePositionChangeEvent
protected abstract ScannablePositionChangeEvent getScannablePositionChangeEvent(Object source, Object arg) -
checkPositionValid
Description copied from class:ScannableBaseThis default behaviour should be extended by most subclasses! Tests if the given object is meaningful to this Scannable and so could be used by one of the move commands. May check limits and other things too. This is the method called by scans on all points before the scan is run.- Specified by:
checkPositionValidin interfaceScannable- Overrides:
checkPositionValidin classEnumPositionerBase- Parameters:
position-- Returns:
- null if position is valid, or returns a description if not.
- See Also:
-
getStatus
Description copied from interface:EnumPositionerReturns the current status- Specified by:
getStatusin interfaceEnumPositioner- Overrides:
getStatusin classEnumPositionerBase- Returns:
- the status
- Throws:
DeviceException
-
rawAsynchronousMoveTo
Description copied from class:ScannableBase[Consider abstract] Trigger a move/operation to an internal/hardware position and return immediately.- Overrides:
rawAsynchronousMoveToin classScannableBase- Parameters:
position- Position in its internal/hardware representation. e.g. with units and offsets removed- Throws:
DeviceException- See Also:
-
getPosition
Description copied from class:ScannableBaseReturns the current position of the Scannable. Called by ConcurentScan at the end of the point. Reads an internal (hardware) position from rawGetPosition, converts this to an external (user) position and returns it.- Specified by:
getPositionin interfaceScannable- Overrides:
getPositionin classScannableBase- Returns:
- Current position with an element for each input and extra field. null if their are no fields.
- Throws:
DeviceException
-
getExternalValueFromMonitor
protected abstract String getExternalValueFromMonitor() throws IllegalArgumentException, DeviceException -
getInternalValue
- Throws:
IllegalArgumentException
-
getExternalValue
- Throws:
IllegalArgumentException
-
getPositions
Description copied from interface:EnumPositionerReturns an array of the positions which this device can be moved to.- Specified by:
getPositionsin interfaceEnumPositioner- Overrides:
getPositionsin classEnumPositionerBase- Returns:
- an array of positions
- Throws:
DeviceException
-