Skip to content
Snippets Groups Projects
Commit 1f6fc1e9 authored by gwen-soleil's avatar gwen-soleil
Browse files

fix extraction for WRITE only attributes

parent 04acebec
No related branches found
No related tags found
No related merge requests found
......@@ -18,14 +18,24 @@ public class DbDataMapper {
public static AttributeValues mapAttributeValues(String attributeName, DbData[] data) {
AttributeValues result = null;
if (data == null || data[0] == null) {
if (data == null) {
throw new RuntimeException("No data");
}
DbData toExtract;
if (data[0] != null) {
toExtract = data[0];
} else if (data[0] == null && data[1] != null) {
toExtract = data[1];
} else {
throw new RuntimeException("No data");
}
int writable = data[0].getWritable();
result = convertDbDataToAttributesValues(attributeName, data);
if (data[0].getDataType() == TangoConst.Tango_DEV_STATE) {
if (data[0].getDataFormat() == AttrDataFormat._SCALAR) {
int writable = toExtract.getWritable();
result = convertDbDataToAttributesValues(attributeName, data, writable);
if (toExtract.getDataType() == TangoConst.Tango_DEV_STATE) {
if (toExtract.getDataFormat() == AttrDataFormat._SCALAR) {
if (result.getRead() != null) {
result.setRead(Arrays.stream((Object[]) result.getRead())
.map(i -> i != null ? DevState.from_int((int) i).toString() : null)
......@@ -35,7 +45,7 @@ public class DbDataMapper {
result.setWrite(Arrays.stream((Object[]) result.getWrite())
.map(i -> i != null ? DevState.from_int((int) i).toString() : null).toArray(String[]::new));
}
} else if (data[0].getDataFormat() == AttrDataFormat._SPECTRUM) {
} else if (toExtract.getDataFormat() == AttrDataFormat._SPECTRUM) {
if (result.getRead() != null) {
String[][] map = new String[((Object[]) result.getRead()).length][];
int index = 0;
......@@ -66,19 +76,29 @@ public class DbDataMapper {
TangoAttributeInfo info = new TangoAttributeInfo();
info.setName(attributeName);
if(data[0]!=null) {
info.setType(TangoConst.Tango_CmdArgTypeName[data[0].getDataType()]);
info.setFormat(TangoAttributeFormat.build(data[0].getDataFormat()));
}else{
info.setType(TangoConst.Tango_CmdArgTypeName[data[1].getDataType()]);
info.setFormat(TangoAttributeFormat.build(data[1].getDataFormat()));
}
info.setWriteType(TangoWriteType.build(writable));
result.setInfo(info);
return result;
}
protected static AttributeValues convertDbDataToAttributesValues(String attributeName, DbData[] dbData) {
protected static AttributeValues convertDbDataToAttributesValues(String attributeName, DbData[] dbData, int writable ) {
AttributeValues result = null;
Object[] readValues = null, writeValues = null;
long[] timestamps = Arrays.stream(dbData[0].getTimedData()).mapToLong(data -> data.getTime()).toArray();
switch (dbData[0].getWritable()) {
long[] timestamps;
if (dbData[0] != null) {
timestamps = Arrays.stream(dbData[0].getTimedData()).mapToLong(data -> data.getTime()).toArray();
}else{
timestamps = Arrays.stream(dbData[1].getTimedData()).mapToLong(data -> data.getTime()).toArray();
}
switch (writable) {
case AttrWriteType._READ:
if (dbData[0].getDataFormat() == AttrDataFormat._SCALAR) {
readValues = Arrays.stream(dbData[0].getTimedData()).map(data ->
......@@ -90,10 +110,10 @@ public class DbDataMapper {
}
break;
case AttrWriteType._WRITE:
if (dbData[0].getDataFormat() == AttrDataFormat._SCALAR) {
writeValues = Arrays.stream(dbData[0].getTimedData()).map(data -> data.getValue() != null ? Array.get(data.getValue(), 0) : defaultValue(dbData[0])).toArray();
if (dbData[1].getDataFormat() == AttrDataFormat._SCALAR) {
writeValues = Arrays.stream(dbData[1].getTimedData()).map(data -> data.getValue() != null ? Array.get(data.getValue(), 0) : defaultValue(dbData[0])).toArray();
} else {
writeValues = Arrays.stream(dbData[0].getTimedData()).map(data -> data.getValue()).toArray();
writeValues = Arrays.stream(dbData[1].getTimedData()).map(data -> data.getValue()).toArray();
}
break;
case AttrWriteType._READ_WITH_WRITE:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment