import org.kuali.rice.kns.web.ui.Column; //导入方法依赖的package包/类
public static Column constructColumnFromAttributeField(RemotableAttributeField attributeField) {
if (attributeField == null) {
throw new IllegalArgumentException("attributeField was null");
}
DataType dataType = DataType.STRING;
if (attributeField.getDataType() != null) {
dataType = attributeField.getDataType();
}
Column column = new Column();
String columnTitle = "";
if (StringUtils.isBlank(attributeField.getShortLabel())) {
if (StringUtils.isBlank(attributeField.getLongLabel())) {
columnTitle = attributeField.getName();
} else {
columnTitle = attributeField.getLongLabel();
}
} else {
columnTitle = attributeField.getShortLabel();
}
column.setColumnTitle(columnTitle);
column.setSortable(Boolean.TRUE.toString());
// TODO - KULRICE-5743 - maybe need this to be smaller than the actual attribute's max length?
if (attributeField.getMaxLength() != null) {
column.setMaxLength(attributeField.getMaxLength());
}
column.setPropertyName(attributeField.getName());
if (attributeField.getDataType() == DataType.MARKUP) {
column.setEscapeXMLValue(false);
// since the field is a markup type, set the action href
column.setColumnAnchor(new AnchorHtmlData());
} else {
column.setEscapeXMLValue(true);
}
column.setComparator(CellComparatorHelper.getAppropriateComparatorForPropertyClass(dataType.getType()));
column.setValueComparator(CellComparatorHelper.getAppropriateValueComparatorForPropertyClass(dataType.getType()));
if(StringUtils.isNotEmpty(attributeField.getFormatterName())) {
try {
column.setFormatter(Formatter.getFormatter(Class.forName(attributeField.getFormatterName())));
} catch (ClassNotFoundException e) {
LOG.error("Unable to find formatter class: " + attributeField.getFormatterName());
// Fall back to datatype based formatter
column.setFormatter(FieldUtils.getFormatterForDataType(dataType));
}
} else {
column.setFormatter(FieldUtils.getFormatterForDataType(dataType));
}
return column;
}