diff --git a/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java b/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java index 9b3fc57a4ff9bb52a721d620389b4b282ba86125..e345b297775e9c1bff4f829cb5168cbb2712fbc4 100644 --- a/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java +++ b/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java @@ -122,7 +122,7 @@ public class DeviceAttributeWrapper { return this.attribute.getQuality(); } - public DevState extractState() throws DevFailed { - return attribute.extractState(); + public DevState[] extractDevStateArray() throws DevFailed { + return attribute.extractDevStateArray(); } } diff --git a/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java b/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java index a18dca1d68f71263e35faea0d721b10e5a29a654..aae5838113ddc47b42648ee0187d0c5d20ba4a3e 100644 --- a/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java +++ b/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java @@ -1,3 +1,27 @@ +/* Synchrotron Soleil + * + * File : AnyAttribute.java + * + * Project : TangoParser + * + * Description : + * + * Author : CLAISSE + * + * Original : 17 janv. 07 + * + * Revision: Author: + * Date: State: + * + * Log: AnyAttribute.java,v + * + */ +/* + * Created on 17 janv. 07 + * + * To change the template for this generated file go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ package fr.soleil.actiongroup.collectiveaction.onattributes.plugin.persistance; import org.slf4j.Logger; @@ -14,9 +38,8 @@ import fr.soleil.actiongroup.collectiveaction.components.tangowrapping.TangoCons * @author CLAISSE */ public class AnyAttribute { - - private static final Logger LOGGER = LoggerFactory.getLogger(AnyAttribute.class); - + final static Logger logger = LoggerFactory.getLogger(AnyAttribute.class); + private static final String SPECTRUM_SEPARATOR = ","; /** @@ -88,7 +111,7 @@ public class AnyAttribute { /** * The attribute's State value */ - private DevState rawValueState; + private DevState[] rawValueState; private final int numberOfComponents; @@ -130,130 +153,130 @@ public class AnyAttribute { private int extractValue(final DeviceAttributeWrapper attribute) throws Exception { int _numberOfComponents = 0; switch (getType()) { + case TangoConst.Tango_DEV_BOOLEAN: + rawValueBoolean = attribute.extractBooleanArray(); + _numberOfComponents = rawValueBoolean == null ? 0 : rawValueBoolean.length; + break; + + case TangoConst.Tango_DEV_DOUBLE: + rawValueDouble = attribute.extractDoubleArray(); + _numberOfComponents = rawValueDouble == null ? 0 : rawValueDouble.length; + break; + + case TangoConst.Tango_DEV_FLOAT: + rawValueFloat = attribute.extractFloatArray(); + _numberOfComponents = rawValueFloat == null ? 0 : rawValueFloat.length; + break; + case TangoConst.Tango_DEV_LONG: + case TangoConst.Tango_DEV_INT: + rawValueInt = attribute.extractLongArray(); + _numberOfComponents = rawValueInt == null ? 0 : rawValueInt.length; + break; + case TangoConst.Tango_DEV_ULONG: + rawValueLong = attribute.extractULongArray(); + _numberOfComponents = rawValueLong == null ? 0 : rawValueLong.length; + break; + case TangoConst.Tango_DEV_LONG64: + rawValueLong = attribute.extractLong64Array(); + _numberOfComponents = rawValueLong == null ? 0 : rawValueLong.length; + break; + case TangoConst.Tango_DEV_ULONG64: + rawValueLong = attribute.extractULong64Array(); + _numberOfComponents = rawValueLong == null ? 0 : rawValueLong.length; + break; + case TangoConst.Tango_DEV_USHORT: + rawValueInt = attribute.extractUShortArray(); + _numberOfComponents = rawValueInt == null ? 0 : rawValueInt.length; + break; + case TangoConst.Tango_DEV_SHORT: + case TangoConst.Tango_DEV_CHAR: + rawValueShort = attribute.extractShortArray(); + _numberOfComponents = rawValueShort == null ? 0 : rawValueShort.length; + break; + case TangoConst.Tango_DEV_UCHAR: + rawValueShort = attribute.extractUCharArray(); + _numberOfComponents = rawValueShort == null ? 0 : rawValueShort.length; + break; + + case TangoConst.Tango_DEV_STATE: + rawValueState = attribute.extractDevStateArray(); + _numberOfComponents = rawValueState == null ? 0 : rawValueState.length; + break; + + case TangoConst.Tango_DEV_STRING: + rawValueString = attribute.extractStringArray(); + _numberOfComponents = rawValueString == null ? 0 : rawValueString.length; + break; + default: + logger.error("NO EXTRACTION " + attribute.getName()); + } + return _numberOfComponents; + } + + private void buildPersistableValue() { + if (numberOfComponents == 0) { + return; + } + convertedStringValuesTable = new String[numberOfComponents]; + convertedNumericValuesTable = new double[numberOfComponents]; + + for (int i = 0; i < numberOfComponents; i++) { + switch (getType()) { case TangoConst.Tango_DEV_BOOLEAN: - rawValueBoolean = attribute.extractBooleanArray(); - _numberOfComponents = rawValueBoolean == null ? 0 : rawValueBoolean.length; + convertedNumericValuesTable[i] = rawValueBoolean[i] ? 1 : 0; // for + // scalars + // which + // are + // stored + // as + // 0/1 + convertedStringValuesTable[i] = rawValueBoolean[i] + ""; // for + // spectrums + // which + // are + // stored + // as + // true,false,false,... break; case TangoConst.Tango_DEV_DOUBLE: - rawValueDouble = attribute.extractDoubleArray(); - _numberOfComponents = rawValueDouble == null ? 0 : rawValueDouble.length; + convertedNumericValuesTable[i] = rawValueDouble[i]; + convertedStringValuesTable[i] = rawValueDouble[i] + ""; break; case TangoConst.Tango_DEV_FLOAT: - rawValueFloat = attribute.extractFloatArray(); - _numberOfComponents = rawValueFloat == null ? 0 : rawValueFloat.length; + convertedNumericValuesTable[i] = rawValueFloat[i]; + convertedStringValuesTable[i] = rawValueFloat[i] + ""; break; + case TangoConst.Tango_DEV_LONG: case TangoConst.Tango_DEV_INT: - rawValueInt = attribute.extractLongArray(); - _numberOfComponents = rawValueInt == null ? 0 : rawValueInt.length; + case TangoConst.Tango_DEV_USHORT: + convertedNumericValuesTable[i] = rawValueInt[i]; + convertedStringValuesTable[i] = rawValueInt[i] + ""; break; case TangoConst.Tango_DEV_ULONG: - rawValueLong = attribute.extractULongArray(); - _numberOfComponents = rawValueLong == null ? 0 : rawValueLong.length; - break; - case TangoConst.Tango_DEV_LONG64: - rawValueLong = attribute.extractLong64Array(); - _numberOfComponents = rawValueLong == null ? 0 : rawValueLong.length; - break; case TangoConst.Tango_DEV_ULONG64: - rawValueLong = attribute.extractULong64Array(); - _numberOfComponents = rawValueLong == null ? 0 : rawValueLong.length; - break; - case TangoConst.Tango_DEV_USHORT: - rawValueInt = attribute.extractUShortArray(); - _numberOfComponents = rawValueInt == null ? 0 : rawValueInt.length; + case TangoConst.Tango_DEV_LONG64: + convertedNumericValuesTable[i] = rawValueLong[i]; + convertedStringValuesTable[i] = rawValueLong[i] + ""; break; + case TangoConst.Tango_DEV_SHORT: case TangoConst.Tango_DEV_CHAR: - rawValueShort = attribute.extractShortArray(); - _numberOfComponents = rawValueShort == null ? 0 : rawValueShort.length; - break; case TangoConst.Tango_DEV_UCHAR: - rawValueShort = attribute.extractUCharArray(); - _numberOfComponents = rawValueShort == null ? 0 : rawValueShort.length; + convertedNumericValuesTable[i] = rawValueShort[i]; + convertedStringValuesTable[i] = rawValueShort[i] + ""; break; case TangoConst.Tango_DEV_STATE: - rawValueState = attribute.extractState(); - _numberOfComponents = 1; + convertedNumericValuesTable[i] = rawValueState[i].value(); + convertedStringValuesTable[i] = rawValueState[i].value()+""; break; case TangoConst.Tango_DEV_STRING: - rawValueString = attribute.extractStringArray(); - _numberOfComponents = rawValueString == null ? 0 : rawValueString.length; + convertedStringValuesTable[i] = rawValueString[i]; break; - default: - LOGGER.error("NO EXTRACTION " + attribute.getName()); - } - return _numberOfComponents; - } - - private void buildPersistableValue() { - if (numberOfComponents == 0) { - return; - } - convertedStringValuesTable = new String[numberOfComponents]; - convertedNumericValuesTable = new double[numberOfComponents]; - - for (int i = 0; i < numberOfComponents; i++) { - switch (getType()) { - case TangoConst.Tango_DEV_BOOLEAN: - convertedNumericValuesTable[i] = rawValueBoolean[i] ? 1 : 0; // for - // scalars - // which - // are - // stored - // as - // 0/1 - convertedStringValuesTable[i] = Boolean.toString(rawValueBoolean[i]); // for - // spectrums - // which - // are - // stored - // as - // true,false,false,... - break; - - case TangoConst.Tango_DEV_DOUBLE: - convertedNumericValuesTable[i] = rawValueDouble[i]; - convertedStringValuesTable[i] = Double.toString(rawValueDouble[i]); - break; - - case TangoConst.Tango_DEV_FLOAT: - convertedNumericValuesTable[i] = rawValueFloat[i]; - convertedStringValuesTable[i] = Float.toString(rawValueFloat[i]); - break; - - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_INT: - case TangoConst.Tango_DEV_USHORT: - convertedNumericValuesTable[i] = rawValueInt[i]; - convertedStringValuesTable[i] = Integer.toString(rawValueInt[i]); - break; - case TangoConst.Tango_DEV_ULONG: - case TangoConst.Tango_DEV_ULONG64: - case TangoConst.Tango_DEV_LONG64: - convertedNumericValuesTable[i] = rawValueLong[i]; - convertedStringValuesTable[i] = Long.toString(rawValueLong[i]); - break; - - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_CHAR: - case TangoConst.Tango_DEV_UCHAR: - convertedNumericValuesTable[i] = rawValueShort[i]; - convertedStringValuesTable[i] = Short.toString(rawValueShort[i]); - break; - - case TangoConst.Tango_DEV_STATE: - convertedNumericValuesTable[i] = rawValueState.value(); - convertedStringValuesTable[i] = TangoConst.Tango_DevStateName[rawValueState.value()]; - break; - - case TangoConst.Tango_DEV_STRING: - convertedStringValuesTable[i] = rawValueString[i]; - break; } } }