All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.soleil.tango.clientapi.util.ObjectToDevStateConverter Maven / Gradle / Ivy

There is a newer version: 10.0.0
Show newest version
package fr.soleil.tango.clientapi.util;

import net.entropysoft.transmorph.ConversionContext;
import net.entropysoft.transmorph.ConverterException;
import net.entropysoft.transmorph.IConverter;
import net.entropysoft.transmorph.type.TypeReference;

import org.tango.DeviceState;

import fr.esrf.Tango.DevState;

public final class ObjectToDevStateConverter implements IConverter {
    @Override
    public Object convert(final ConversionContext context, final Object sourceObject,
	    final TypeReference destinationType) throws ConverterException {
	if (sourceObject == null) {
	    if (destinationType.isPrimitive()) {
		throw new ConverterException("Cannot convert null to primitive number");
	    } else {
		return null;
	    }
	}
	Object result;
	if (sourceObject instanceof String) {
	    final String state = (String) sourceObject;
	    result = DeviceState.toDevState(state);
	} else {
	    final Number state = (Number) sourceObject;
	    result = DevState.from_int(state.intValue());
	}
	return result;
    }

    @Override
    public boolean canHandle(final ConversionContext context, final Object sourceObject,
	    final TypeReference destinationType) {
	boolean canHandle = false;
	if ((sourceObject instanceof String || sourceObject instanceof Number)
		&& destinationType.isType(DevState.class)) {
	    canHandle = true;
	}
	return canHandle;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy