in core/org.openjdk.jmc.common/src/main/java/org/openjdk/jmc/common/item/PersistableItemFilter.java [144:195]
public static IItemFilter readFrom(IState memento) {
Kind kind = Kind.valueOf(memento.getAttribute(KEY_KIND));
if (kind == null) {
return null;
}
switch (kind) {
case AND:
return ItemFilters.and(readFrom(memento.getChildren(KEY_FILTER)));
case OR:
return ItemFilters.or(readFrom(memento.getChildren(KEY_FILTER)));
case NOT:
return ItemFilters.not(readFrom(memento.getChildren(KEY_FILTER)[0]));
case MATCHES:
return ItemFilters.matches(readStringAttribute(memento), memento.getAttribute(KEY_VALUE));
case NOT_MATCHES:
return ItemFilters.notMatches(readStringAttribute(memento), memento.getAttribute(KEY_VALUE));
case CONTAINS:
return ItemFilters.contains(readStringAttribute(memento), memento.getAttribute(KEY_VALUE));
case NOT_CONTAINS:
return ItemFilters.notContains(readStringAttribute(memento), memento.getAttribute(KEY_VALUE));
case EQUALS:
return readEquals(readAttribute(memento), memento);
case NOT_EQUALS:
return readNotEquals(readAttribute(memento), memento);
case LESS:
case LESS_OR_EQUAL:
case MORE:
case MORE_OR_EQUAL:
return readComparableKindFrom(kind, memento);
case RANGE_INTERSECTS:
case RANGE_CONTAINED:
case CENTER_CONTAINED:
case RANGE_NOT_INTERSECTS:
case RANGE_NOT_CONTAINED:
case CENTER_NOT_CONTAINED:
return readRangeMatchesFrom(kind, memento);
case EXISTS:
return ItemFilters.hasAttribute(readAttribute(memento));
case NOT_EXISTS:
return ItemFilters.notHasAttribute(readAttribute(memento));
case TYPE:
return ItemFilters.type(memento.getAttribute(KEY_TYPE));
case TYPE_MATCHES:
return ItemFilters.typeMatches(memento.getAttribute(KEY_TYPE_MATCHES));
case IS_NULL:
return ItemFilters.isNull(readAttribute(memento));
case IS_NOT_NULL:
return ItemFilters.isNotNull(readAttribute(memento));
default:
return null;
}
}