Программно проверить, является ли поле в документе домино Text или TextList - возможно ли это? - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь реализовать метод, который заменяет все значения в Hashmap на все значения в документе.

Идея заключается в том, что я перебираю все items, полученные из Document.getItems() и просто используйте метод Item.getType(), чтобы я мог решить, какой тип я использую для какого поля.

Примерно так:

private void replace(SomeClass model, Document document) {
    Map<String, Object> objectsMap = model.getObjectsMap();

    Vector<Item> items = document.getItems();

    for(Item item : items) {
        if(item.getType() == Item.TEXT) {
            model.add(item.getName(), item.getValueString()); // model.add(...) is basically a Map.put(String key, Object value);
        } else if(item.getType() == Item.AUTHORS) {
            // ...
        } else if(/*...*/) {
            // ...
        }
    }
}

Теперь моя проблема в том, что я не могу различитьText и TextList, потому что getType() возвращает 1280 для обоих.

Кто-нибудь уже пробовал что-то подобное или, может быть, подскажет, какой подход может быть обходным путем?

РЕДАКТИРОВАТЬ

Что касается идеи из одного из комментариев, использовать TextList, когда item.getValues().size() > 1 и Text в противном случае: как уже упоминалось в комментарии, проблема в том, что яЯ хочу иметь возможность использовать это поле позже.

Например: если у меня есть поле TextList с одним элементом в документе, и я бы использовал описанный выше подход, я бы поставил строкувнутри Map для этого поля.Если я захочу добавить больше элементов в это поле (которое должно быть Vector, поскольку изначально оно было TextList), я бы не смог - по крайней мере, не прямым путем.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

NotesItems всегда возвращают Вектор для значений.Нет никакого различия между text и textList.Однако, что вы можете сделать: получить объект формы и проверить свойства поля.Если установлен флажок allow multi, вы можете предположить, что он был задан как textList, а не как текст.Это должно отсортировать ваше решение о конверсии.Вы также можете пометить элементы с более чем одним значением, для которых в поле не разрешено использование нескольких значений - код сделал бы это

0 голосов
/ 21 ноября 2018

Вы можете проверить размер item.getValues ​​() - который возвращает Vector.Если размер вектора> 0, это текстовое поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...