class SingleRowAttributeValueWrapper implements EditWindowUtils.AttributeValueWrapper {

    private final Element row;
    private final Column column;
    private final TimeFormat currentTimeFormat;
    private final DateTimeZone dateTimeZone;

    public SingleRowAttributeValueWrapper(Element row, Column column, TimeFormat currentTimeFormat,
                                          DateTimeZone dateTimeZone) {
        this.row = row;
        this.column = column;
        this.currentTimeFormat = currentTimeFormat;
        this.dateTimeZone = dateTimeZone;
    }

    private String convertToStringIfNotNull() {<FILL_FUNCTION_BODY>}

    @Override
    public Byte getValueByte() {
        return (Byte) row.getAttribute(column);
    }

    @Override
    public void setValueByte(Byte object) {
        row.setAttribute(column, object);
    }

    @Override
    public Short getValueShort() {
        return (Short) row.getAttribute(column);
    }

    @Override
    public void setValueShort(Short object) {
        row.setAttribute(column, object);
    }

    @Override
    public Character getValueCharacter() {
        return (Character) row.getAttribute(column);
    }

    @Override
    public void setValueCharacter(Character object) {
        row.setAttribute(column, object);
    }

    @Override
    public String getValueString() {
        return (String) row.getAttribute(column);
    }

    @Override
    public void setValueString(String object) {
        row.setAttribute(column, object);
    }

    @Override
    public Double getValueDouble() {
        return (Double) row.getAttribute(column);
    }

    @Override
    public void setValueDouble(Double object) {
        row.setAttribute(column, object);
    }

    @Override
    public Float getValueFloat() {
        return (Float) row.getAttribute(column);
    }

    @Override
    public void setValueFloat(Float object) {
        row.setAttribute(column, object);
    }

    @Override
    public Integer getValueInteger() {
        return (Integer) row.getAttribute(column);
    }

    @Override
    public void setValueInteger(Integer object) {
        row.setAttribute(column, object);
    }

    @Override
    public Boolean getValueBoolean() {
        return (Boolean) row.getAttribute(column);
    }

    @Override
    public void setValueBoolean(Boolean object) {
        row.setAttribute(column, object);
    }

    @Override
    public Long getValueLong() {
        return (Long) row.getAttribute(column);
    }

    @Override
    public void setValueLong(Long object) {
        row.setAttribute(column, object);
    }

    @Override
    public String getValueAsString() {
        return convertToStringIfNotNull();
    }

    @Override
    public void setValueAsString(String value) {
        row.setAttribute(column, AttributeUtils.parse(value, column.getTypeClass()));
    }
}

        Object value = row.getAttribute(column);
        if (value != null) {
            return AttributeUtils.print(value, currentTimeFormat, dateTimeZone);
        } else {
            return null;
        }
    
<no_super_class>