boolean warn = false;
if (selEnc != null) enc = selEnc;
int len = 0;
byte[] data = null;
if (f.binaryValue() != null) {
BytesRef bytes = f.binaryValue();
data = new byte[bytes.length];
System.arraycopy(bytes.bytes, bytes.offset, data, 0,
bytes.length);
}
else if (f.stringValue() != null) {
try {
data = f.stringValue().getBytes("UTF-8");
} catch (UnsupportedEncodingException uee) {
warn = true;
uee.printStackTrace();
data = f.stringValue().getBytes();
}
}
if (data == null) data = new byte[0];
if (enc.equals("cbHex")) {
setString(find(dialog, "unit"), "text", " bytes");
value = Util.bytesToHex(data, 0, data.length, true);
len = data.length;
} else if (enc.equals("cbUtf")) {
setString(find(dialog, "unit"), "text", " UTF-8 characters");
value = f.stringValue();
if (value != null) len = value.length();
} else if (enc.equals("cbDef")) {
setString(find(dialog, "unit"), "text", " characters");
value = new String(data);
len = value.length();
} else if (enc.equals("cbDate")) {
try {
Date d = DateTools.stringToDate(f.stringValue());
value = d.toString();
len = 1;
} catch (Exception e) {
warn = true;
value = Util.bytesToHex(data, 0, data.length, true);
}
} else if (enc.equals("cbLong")) {
try {
long num = NumericUtils.prefixCodedToLong(new BytesRef(f.stringValue()));
value = String.valueOf(num);
len = 1;
} catch (Exception e) {
warn = true;
value = Util.bytesToHex(data, 0, data.length, true);