package org.basex.http.restxq; import java.util.*; import org.basex.query.expr.path.*; import org.basex.query.value.item.*; /** * This class catches RESTXQ errors with the same priority. * * @author BaseX Team 2005-17, BSD License * @author Christian Gruen */ final class RestXqError implements Comparable<RestXqError> { /** Error tests. */ private final ArrayList<NameTest> tests = new ArrayList<>(1); /** * Adds a test if it has not been specified before. * @param test test to be added * @return success flag */ boolean add(final NameTest test) { for(final NameTest t : tests) if(t.eq(test)) return false; tests.add(test); return true; } /** * Returns the test at the specified position, or {@code null}. * @param index test index * @return test */ NameTest get(final int index) { return index < tests.size() ? tests.get(index) : null; } /** * Checks if the specified name matches the test. * @param name name * @return result of check */ boolean matches(final QNm name) { for(final NameTest test : tests) if(test.eq(name)) return true; return false; } @Override public int compareTo(final RestXqError error) { final NameTest nt1 = tests.get(0), nt2 = error.tests.get(0); return nt1 == null || nt2 == null ? 0 : nt2.kind.ordinal() - nt1.kind.ordinal(); } @Override public String toString() { final StringBuilder sb = new StringBuilder(); for(final NameTest test : tests) { if(sb.length() != 0) sb.append(", "); sb.append(test); } return sb.toString(); } }