public static final Object getDominantSortAttributeValueFromString( String v, DataField dominantAttr) { Object value; switch (dominantAttr.getDataType()) { case BINARY: throw new IllegalStateException("cannot sort on a binary field"); case LONG_STRING: throw new IllegalStateException("cannot sort on a long text field"); case URI: case STRING: { value = v; break; } case INTEGER: { if (v == null) { value = null; } else { value = Long.valueOf(v); } break; } case DECIMAL: { if (v == null) { value = null; } else { BigDecimal bd = new BigDecimal(v); value = bd.setScale(dominantAttr.getNumericScale(), BigDecimal.ROUND_HALF_UP); } break; } case BOOLEAN: { if (v == null) { value = null; } else { value = WebUtils.parseBoolean(v); } break; } case DATETIME: { if (v == null) { value = null; } else { value = WebUtils.parseDate(v); } break; } default: throw new IllegalStateException("datatype not handled"); } return value; }