package com.revolsys.swing.field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
import com.revolsys.datatype.DataTypes;
import com.revolsys.identifier.Identifier;
import com.revolsys.record.Record;
import com.revolsys.util.Property;
import com.revolsys.util.Strings;
public class RecordToStringConverter extends ObjectToStringConverter {
private final List<String> fieldNames;
public RecordToStringConverter(final List<String> fieldNames) {
super();
this.fieldNames = fieldNames;
}
public RecordToStringConverter(final String... fieldNames) {
this(Arrays.asList(fieldNames));
}
@Override
public String getPreferredStringForItem(final Object value) {
if (value == null || value == Identifier.NULL) {
return "";
} else if (value instanceof Record) {
final Record object = (Record)value;
final List<String> values = new ArrayList<>();
for (final String fieldName : this.fieldNames) {
final String text = DataTypes.toString(Property.get(object, fieldName));
values.add(text);
}
return Strings.toString(values);
} else {
return DataTypes.toString(value);
}
}
}