如何在Content Navigator搜索结果中格式化contentSize?

时间:2018-05-25 02:00:49

标签: java ibm-content-navigator

我正在编写一个Content Navigator响应过滤器,它将格式化搜索结果中的两个字段:

  • 日期字段

    示例:2018-04-03T00:00:00 - > 2018年4月3日

  • 内容大小字段:

    示例: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搜索结果中正确格式化“长”值?

1 个答案:

答案 0 :(得分:0)

使用此格式,将格式设置为“ fileSize”。

row.addAttribute(title, (Double)value, JSONResultSetRow.TYPE_INTEGER, "fileSize", null);