in plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java [136:193]
private static Object normalizeBasicTypes(final Object valueOriginal) {
if (valueOriginal == null)
return null;
if (valueOriginal instanceof PlcValue) {
PlcValue value = (PlcValue) valueOriginal;
// 8 bits
if (value instanceof PlcBOOL && value.isBoolean())
return value.getBoolean();
if (value instanceof PlcBYTE && (value.isByte() || value.isShort()))
return new byte[]{value.getByte()};
if (value instanceof PlcCHAR && value.isShort())
return value.getString();
if ((value instanceof PlcSINT || value instanceof PlcUSINT) && (value.isShort() || value.isInteger()))
return value.getShort();
// 16 bits
if (value instanceof PlcWORD && (value.isInteger() || value.isShort()))
return value.getString();
if (value instanceof PlcINT && value.isInteger())
return value.getInteger();
if (value instanceof PlcUINT && value.isInteger())
return value.getInteger();
if ((value instanceof PlcWCHAR || value instanceof PlcDWORD) && value.isInteger())
return value.getString();
// 32 bits
if (value instanceof PlcREAL && value.isFloat())
return value.getFloat();
if ((value instanceof PlcDINT || value instanceof PlcUDINT) && value.isInteger())
return value.getInteger();
if (value instanceof PlcDWORD && value.isInteger())
return value.getString();
// 64 bits
if ((value instanceof PlcLINT || value instanceof PlcULINT) && value.isLong())
return value.getLong();
if (value instanceof PlcLREAL && value.isDouble())
return value.getDouble();
if (value instanceof PlcLWORD && (value.isLong() || value.isBigInteger()))
return value.getString();
// Dates and time
if (value instanceof PlcDATE && value.isDate())
return value.getDate();
if (value instanceof PlcDATE_AND_TIME && value.isDateTime())
return value.getDateTime();
if (value instanceof PlcTIME && value.isTime())
return value.getTime();
if (value instanceof PlcTIME_OF_DAY && value.isTime())
return value.getTime();
// Everything else to string
return value.getString();
}
return valueOriginal;
}