package org.forgerock.openicf.connectors.xml.query; import org.forgerock.openicf.connectors.xml.query.abstracts.QueryPart; public class ContainsQuery implements QueryPart { private String prefixedName; private String value; private boolean not; public ContainsQuery(String prefixedName, String value, boolean not) { this.prefixedName = prefixedName; this.value = value; this.not = not; } public String getExpression() { if (not) { return createFalseExpression(); } else { return createTrueExpression(); } } public String createFalseExpression() { // format: prefixedName[contains(., 'value')] StringBuilder sb = new StringBuilder(); sb.append("fn:not("); sb.append("$x/"); sb.append(this.prefixedName); sb.append("[contains(.,"); sb.append("'"); sb.append(value); sb.append("'"); sb.append(")]"); sb.append(")"); return sb.toString(); } public String createTrueExpression() { // format: fn:not(prefixedName[contains(., 'value')]) StringBuilder sb = new StringBuilder(); sb.append("$x/"); sb.append(this.prefixedName); sb.append("[contains(.,"); sb.append("'"); sb.append(value); sb.append("'"); sb.append(")]"); return sb.toString(); } }