我正在编写一个 Content Navigator 响应过滤器,它将格式化搜索结果中的两个字段:
日期字段
示例:2018-04-03T00:00:00 -> 04-03-2018
内容大小字段:
示例:14859 -> 14.5 kB
“日期”字段没问题——它工作得很好。
“内容大小”字段不起作用。没有错误或警告 - ICN 只是没有显示格式化的值。
问题可能是 ICN 将 'contentSize' 声明为xs:long
......并且“长”列不能包含像“kB”这样的字母或像“.”这样的标点符号。
这是我的代码:
private void filterSearch(JSONResultSetResponse jsonResultSetResponse) throws Exception {
// For each document returned by the search...
for (int i = 0; i < jsonResultSetResponse.getRowCount(); i++) {
JSONResultSetRow row = jsonResultSetResponse.getRow(i);
...
// contentSize
Long size = Long.parseLong((String)currentValue);
final String[] units = new String[] { "", "kB", "MB", "GB", "TB" };
int digitGroups = (int) (Math.log10(size)/Math.log10(1024));
String formattedSize = new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups)) + " " + units[digitGroups];
// EXAMPLE: change 14859 -> 14.5 kB
row.setAttributeType(symName, "xs:string");
row.setAttributeValue(symName, formattedSize);
...
问:有什么想法可以在 Content Navigator 搜索结果中正确格式化“长”值吗?