CMIS — свойства списка поиска

С помощью CMIS я могу добавить свойство к объекту. Свойство может иметь одно значение или может быть свойством с несколькими значениями. Когда у вас есть свойство с несколькими значениями для нескольких объектов, как вы ищете все объекты, которые имеют это свойство, и свойство содержит определенное значение или ряд определенных значений?

Например. (Пример взят из здесь)

CmisObject cmisobject = ....

Map<String, Object> updateProperties = new HashMap<String, Object>();

List<String> shoppingList = new ArrayList<String>();
shoppingList.add("milk");
shoppingList.add("bread");
shoppingList.add("cheese");
updateProperties.put("my:shopping.list", shoppingList); // multi-value property

cmisobject.updateProperties(updateProperties);

Теперь, если я хочу выполнить запрос для всех объектов, у которых есть свойство my:shopping.list и где свойство содержит значение bread или значения milk И сыр, как мне это сделать?


person Community    schedule 02.11.2014    source источник
comment
Что произойдет, если вы сделаете запрос cmis, такой как my:shopping.list = "bread" OR (my:shopping.list = "cheese" and my:shopping.list = "milk") - это не сработает?   -  person Gagravarr    schedule 03.11.2014


Ответы (1)


Попробуй это:

boolean isPropertyPresent(Map<String, Object> updateProperties) {//should use List<String> instead of Object
    List<String> shoppingList = (List<String>) updateProperties.get("my:shopping.list");
    if (shoppingList != null) {
         return shoppingList.contains("bread") || (shoppingList.contains("milk") && shoppingList.contains("cheese"));
    }
    return false;
}
person SMA    schedule 02.11.2014
comment
Это решение означает сначала получение всех объектов репозиториев, а затем итерацию по ним для определения конкретных объектов, которые меня интересуют. Если у меня есть репозиторий с десятками тысяч объектов, мне нужно будет сначала получить ВСЕ из них, что делает это очень непрактичное решение. - person ; 02.11.2014
comment
если у вас нет дубликатов, используйте HashSet вместо списка, и это будет означать, что вы можете сказать, что содержит с O (1) - person SMA; 02.11.2014