Я пытаюсь реализовать метод, который заменяет все значения в 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
), я бы не смог - по крайней мере, не прямым путем.