package org.csstudio.dal.simple.impl; import org.csstudio.dal.DynamicValueProperty; public final class StringAnyDataImpl extends AbstractAnyDataImpl<String> { public static final String UNINITIALIZED_STRING_VALUE = ""; public static final Double UNINITIALIZED_DOUBLE_VALUE = Double.NaN; public StringAnyDataImpl(DynamicValueProperty<String> property, long beamID) { super(property,beamID); } public StringAnyDataImpl(DynamicValueProperty<String> property) { super(property, Long.MIN_VALUE); } @Override public Object[] anySeqValue() { return new Object[]{response.getValue()}; } @Override public Object anyValue() { return response.getValue(); } @Override public double[] doubleSeqValue() { Double d = Double.NaN; try { d = DataUtil.castTo(response.getValue(), Double.class); } catch (Exception e) {} return new double[]{d}; } @Override public double doubleValue() { Double d = Double.NaN; try { d = DataUtil.castTo(response.getValue(), Double.class); } catch (Exception e) {} return d; } @Override public long[] longSeqValue() { try { Long d = DataUtil.castTo(response.getValue(), Long.class); return new long[]{d}; } catch (Exception e) { return new long[]{Long.MIN_VALUE}; } } @Override public long longValue() { try { return DataUtil.castTo(response.getValue(), Long.class); } catch (Exception e) { return Long.MIN_VALUE; // TODO any better idea? } } @Override public Number[] numberSeqValue() { return new Number[]{response.getNumber()}; } @Override public Number numberValue() { return response.getNumber(); } @Override public String[] stringSeqValue() { return new String[]{response.getValue()}; } @Override public String stringValue() { // return response.toString(); returns the response object 'as String' // return response.getValue(); does not work if value is Long! try { return DataUtil.castTo(response.getValue(), String.class); } catch (Exception e) { return UNINITIALIZED_STRING_VALUE; // TODO any better idea? } } @Override protected String confirmValue(String value) { if (value != null) return value; return UNINITIALIZED_STRING_VALUE; } }