TermMatches termMatches(String... values) { TermMatches result = new TermMatches(); for (String value : values) { result.add(new TermMatch(new Term(null, value))); } return result; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Action other = (Action) obj; if (endPosition != other.endPosition) return false; if (instructions == null) { if (other.instructions != null) return false; } else if (!instructions.equals(other.instructions)) return false; if (startPosition != other.startPosition) return false; if (termMatches == null) { if (other.termMatches != null) return false; } else if (!termMatches.equals(other.termMatches)) return false; return true; }
public ComparableCharSequence fillPlaceholders(final TermMatches termMatches) { if (placeHolders == null || placeHolders.isEmpty()) { return this; } final List<ComparableCharSequence> parts = new LinkedList<>(); int pos = 0; for (final PlaceHolder placeHolder : placeHolders) { if (placeHolder.start > pos) { parts.add(subSequence(pos, placeHolder.start)); } parts.add(termMatches.getReplacement(placeHolder.ref)); pos = placeHolder.start + placeHolder.length; } if (pos < length) { parts.add(subSequence(pos, start + length)); } return new CompoundCharSequence(parts); }
@Test public void testReplacePlaceHolderAtBeginning() throws Exception { char[] chars = "$1a".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyza", filledPlaceholders)); }
result.add(new Action(stateExactMatch.value, new TermMatches(new TermMatch(term)), 0, 1)); result.add( new Action(stateForPrefix.value, new TermMatches( new TermMatch(term, true, if (stateExactMatch.isKnown()) { if (stateExactMatch.isFinal()) { final TermMatches matches = new TermMatches(prefix.matches); if (isTerm) { matches.add(new TermMatch((Term) element)); result.add(new Action( stateExactMatch.value, matches, pos - matches.size() + ofs, pos + ofs)); final TermMatches matches = new TermMatches(prefix.matches); if (isTerm) { final Term term = (Term) element; matches.add( new TermMatch(term, true, result.add(new Action( stateForPrefix.value, matches, pos - matches.size() + ofs, pos + ofs)); result.add(new Action( stateExactMatch.value, new TermMatches(new TermMatch((Term) element)), pos, pos + 1)); if (isTerm) { final Term term = (Term) element;
public TermMatches(final Collection<? extends TermMatch> c) { super(); for (final TermMatch match: c) { add(match); } }
@Override public boolean addAll(final Collection<? extends TermMatch> c) { for (final TermMatch match: c) { updateReplacements(match); } return super.addAll(c); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + endPosition; result = prime * result + ((instructions == null) ? 0 : instructions.hashCode()); result = prime * result + startPosition; result = prime * result + ((termMatches == null) ? 0 : termMatches.hashCode()); return result; }
@Test public void testRepeatedPlaceHoldersAtBeginning() throws Exception { char[] chars = "$1$1a".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyzxyza", filledPlaceholders)); }
public TermMatches(final TermMatch match) { super(); add(match); }
@Override public boolean add(final TermMatch match) { if (match.isPrefix) { updateReplacements(match); } return super.add(match); }
@Test public void testRepeatedPlaceHoldersOnly() throws Exception { char[] chars = "$1$1".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyzxyz", filledPlaceholders)); }
@Test public void test05() throws Exception { RulesCollection rules = createRulesFromResource("rules-test.txt", false); Term t1 = new Term(null, "tf2"); PositionSequence<InputSequenceElement> seq = new PositionSequence<>(); seq.nextPosition(); seq.addElement(t1); List<Action> actions = rules.getRewriteActions(seq); assertThat(actions, contains( new Action( Arrays.asList( new Instructions( Arrays.asList( (Instruction) new FilterInstruction(makeQueryUsingFactory("flt2 flt3"))) )), new TermMatches(new TermMatch(t1)), 0, 1) )); }
@Test public void test01() throws Exception { RulesCollection rules = createRulesFromResource("rules-test.txt", false); Term t1 = new Term(null, "aa"); Term t2 = new Term(null, "l"); PositionSequence<InputSequenceElement> seq = new PositionSequence<>(); seq.nextPosition(); seq.addElement(t1); seq.nextPosition(); seq.addElement(t2); List<Action> actions = rules.getRewriteActions(seq); assertThat(actions, contains( new Action( Arrays.asList( new Instructions(Arrays.asList((Instruction) new DeleteInstruction(Arrays.asList(mkTerm("aa")))))), new TermMatches(new TermMatch(t1)), 0, 1))); }
@Test public void testSamePlaceHolderAtBordersWithOtherInMiddle() throws Exception { char[] chars = "$1b$1".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyzbxyz", filledPlaceholders)); }
@Test public void testSamePlaceHolderWithOtherInMiddle() throws Exception { char[] chars = "a$1b$1c".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyzbxyzc", filledPlaceholders)); }
@Test public void testReplacePlaceHoldersInMiddle() throws Exception { char[] chars = "a$1b".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyzb", filledPlaceholders)); }
@Test public void testReplacePlaceHolderOnly() throws Exception { char[] chars = "$1".toCharArray(); Term term = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = term.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyz", filledPlaceholders)); }
@Test public void testReplacePlaceHolderAtEnd() throws Exception { char[] chars = "a$1".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyz", filledPlaceholders)); }