report.setReadable(readable);
report.setWriteable(writeable);
// Data and data format.
try {
TangoAttribute tangoAttribute = new TangoAttribute(name);
double[] rawData;
switch (info.data_format.value()) {
case AttrDataFormat._SCALAR:
report.setDimensionType(DimensionType.SCALAR);
rawData = AttributeHelper.extractToDoubleArray(attribute);
if (readable) {
report.setReadScalarData(rawData[0]);
}
else {
report.setReadScalarData(null);
}
if (writeable) {
Double dataWritten = tangoAttribute.readWritten(Double.class);
report.setWriteScalarData(dataWritten);
}
else {
report.setWriteScalarData(null);
}
report.setReadSpectrumData(null);
report.setWriteSpectrumData(null);
report.setReadImageData(null);
report.setWriteImageData(null);
break;
case AttrDataFormat._SPECTRUM:
report.setDimensionType(DimensionType.SPECTRUM);
rawData = AttributeHelper.extractToDoubleArray(attribute);
int spectrumLength = attribute.getDimX();
Double[] readSpectrumData = null;
Double[] writeSpectrumData = null;
if (readable) {
readSpectrumData = new Double[spectrumLength];
writeSpectrumData = null;
for (int index = 0; index < spectrumLength; ++index) {
readSpectrumData[index] = rawData[index];
}
}
if (writeable) {
writeSpectrumData = new Double[spectrumLength];
for (int index = 0; index < spectrumLength; ++index) {
writeSpectrumData = tangoAttribute.readSpecOrImage(Double.class);
}
}
report.setReadScalarData(null);
report.setWriteScalarData(null);
report.setReadSpectrumData(readSpectrumData);
report.setWriteSpectrumData(writeSpectrumData);
report.setReadImageData(null);
report.setWriteImageData(null);
break;
case AttrDataFormat._IMAGE:
report.setDimensionType(DimensionType.IMAGE);
rawData = AttributeHelper.extractToDoubleArray(attribute);
int xDim = attribute.getDimX();
int yDim = attribute.getDimY();
Double[][] readImageData;
Double[][] writeImageData;
Double[] writtenImage = tangoAttribute.readSpecOrImage(Double.class);
int yOffset;
if (readable) {
readImageData = new Double[yDim][xDim];
if (writeable) {
writeImageData = new Double[yDim][xDim];