private static DataType getDataType()

in plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java [80:134]


	private static DataType getDataType(final Object valueOriginal) {

		PlcValue value = (PlcValue) valueOriginal;
		// 8 bits
		if (value instanceof PlcBOOL && value.isBoolean())
			return RecordFieldType.BOOLEAN.getDataType();
		if (value instanceof PlcBYTE && (value.isByte() || value.isShort()))
			return RecordFieldType.SHORT.getDataType();
		if (value instanceof PlcCHAR && value.isShort())
			return RecordFieldType.STRING.getDataType();
		if ((value instanceof PlcSINT || value instanceof PlcUSINT) && (value.isShort() || value.isInteger()))
			return RecordFieldType.SHORT.getDataType();


		// 16 bits
		if (value instanceof PlcWORD && (value.isInteger() || value.isShort()))
			return RecordFieldType.STRING.getDataType();
		if (value instanceof PlcINT && value.isInteger())
			return RecordFieldType.INT.getDataType();
		if (value instanceof PlcUINT && value.isInteger())
			return RecordFieldType.INT.getDataType();
		if (value instanceof PlcWCHAR || value instanceof PlcDWORD)
			return RecordFieldType.STRING.getDataType();

		// 32 bits
		if (value instanceof PlcREAL && value.isFloat())
			return RecordFieldType.FLOAT.getDataType();
		if ((value instanceof PlcDINT) && value.isInteger())
			return RecordFieldType.INT.getDataType();
		if (value instanceof PlcDWORD && value.isInteger())
			return RecordFieldType.STRING.getDataType();
		
		// 64 bits
		if ((value instanceof PlcLINT || value instanceof PlcUDINT) && value.isLong())
			return RecordFieldType.LONG.getDataType();
		if (value instanceof PlcULINT) 
			return RecordFieldType.BIGINT.getDataType();
		if (value instanceof PlcLREAL && value.isDouble())
			return RecordFieldType.DOUBLE.getDataType();
		if (value instanceof PlcLWORD && (value.isLong() || value.isBigInteger()))
			return RecordFieldType.STRING.getDataType();

		// Dates and time
		if (value instanceof PlcDATE && value.isDate())
			return RecordFieldType.DATE.getDataType();
		if (value instanceof PlcDATE_AND_TIME && value.isDateTime())
			return RecordFieldType.TIME.getDataType();
		if (value instanceof PlcTIME && value.isTime())
			return RecordFieldType.TIME.getDataType();
		if (value instanceof PlcTIME_OF_DAY && value.isTime())
			return RecordFieldType.TIME.getDataType();

		// Everything else to string
		return RecordFieldType.STRING.getDataType();
	}