Йена — Сортировать элементы

Доброе утро,

В настоящее время я разрабатываю средство просмотра созданных мной онтологий. Я хочу раскрасить элементы (OntPropery, ObjectProperty, Individuals, …) в зависимости от их типов. Вот моя идея реализовать это:

public Paint transform(RDFNode i) {
    if(OntProperty) return Color.RED;
    if(ObjectProperty) return Color.BLUE;
    if(Individuals) return Color.GREEN;
    return Color.GRAY;
}

Я использую для этого библиотеки JenaJung.

Проблема в том, что я не могу найти правильное условие для ifs. У кого-нибудь есть идея?

Спасибо за все.


person Gilles-Antoine Nys    schedule 20.02.2017    source источник


Ответы (1)


Вот решение, которое я нашел!

@Override
    public Paint transform(RDFNode i) {

        OntModel model = (OntModel) i.getModel();
        Collection classes = JenaJungGraph.asCollection(model.listClasses());

        if(classes.stream().anyMatch(x -> x.toString() == i.asResource().toString())) return ontPropertyColor;

        return Color.GRAY;
    }

И так далее для остальных элементов.

Надеюсь, это поможет кому-то еще!

Функция asCollection() используется для формирования Iterator в Collection.

static <T> Collection<T> asCollection(final ClosableIterator<? extends T> it) {
    Collection<T> toReturn = new HashSet<>();
    while (it.hasNext())
        if(true)
            toReturn.add((T) it.next());

    it.close();

    return toReturn;
}
person Gilles-Antoine Nys    schedule 21.02.2017