private Expression parseSelectElementsExp()

in src/main/java/com/epam/eco/commons/avro/avpath/PathParser.java [92:123]


    private Expression<?> parseSelectElementsExp() {
        StringBuilder selectCriteriaBuilder = new StringBuilder();
        int ch;
        while (!PathUtils.isSelectElementsEndCh(ch = read())) {
            if (ch == -1) {
                throw new PathParseException(
                        path,
                        String.format(
                                "no closing ']' symbol for select criteria '%s'",
                                selectCriteriaBuilder.toString()));
            }

            selectCriteriaBuilder.append((char)ch);
        }

        String selectCriteria = selectCriteriaBuilder.toString();
        if (PathUtils.isSelectCriteriaMatchAll(selectCriteria)) {
            return new SelectAllElements();
        } else if (PathUtils.isSelectCriteriaByNullKey(selectCriteria)) {
            return new SelectElementByKey(null);
        } else if (PathUtils.isSelectCriteriaByNumericKey(selectCriteria)) {
            Number key = PathUtils.parseSelectCriteriaAsNumericKey(selectCriteria);
            return new SelectElementByKey(key);
        } else if (PathUtils.isSelectCriteriaByLiteralKey(selectCriteria)) {
            String key = PathUtils.parseSelectCriteriaAsLiteralKey(selectCriteria);
            return new SelectElementByKey(key);
        } else {
            throw new PathParseException(
                    path,
                    String.format("select criteria '%s' is invalid", selectCriteria));
        }
    }