Как я могу отформатировать contentSize в результатах поиска Content Navigator? - PullRequest
0 голосов
/ 25 мая 2018

Я пишу фильтр ответов Content Navigator, который будет форматировать два поля в результатах поиска:

  • Поле даты

    ПРИМЕР: 2018-04-03T00: 00: 00 -> 04-03-2018

  • Поле размера контента:

    ПРИМЕР: 14859 -> 14,5 кБ

Поле «date» не было проблемой - оно работало нормально.

Поле «content size» не работает.Нет ошибок или предупреждений - ICN просто не отображает отформатированное значение.

Проблема может в том, что ICN объявляет 'contentSize' равным xs:long ... и "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 голосов
/ 17 декабря 2018

Используйте это, установите формат как "fileSize".

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