Skip to content

Commit

Permalink
Fixing QueryConvertor: serialization of ALL, NONE and ORG filters (MI…
Browse files Browse the repository at this point in the history
…D-2400)
  • Loading branch information
semancik committed Jun 16, 2015
1 parent b1d1fd5 commit c4f4c1b
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
Expand Up @@ -44,9 +44,11 @@
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.AllFilter;
import com.evolveum.midpoint.prism.query.AndFilter;
import com.evolveum.midpoint.prism.query.EqualFilter;
import com.evolveum.midpoint.prism.query.InOidFilter;
import com.evolveum.midpoint.prism.query.NoneFilter;
import com.evolveum.midpoint.prism.query.NotFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
Expand Down Expand Up @@ -90,6 +92,8 @@ public class QueryConvertor {
public static final QName KEY_FILTER_ORG = new QName(NS_QUERY, "org");
public static final QName KEY_FILTER_TYPE = new QName(NS_QUERY, "type");
public static final QName KEY_FILTER_IN_OID = new QName(NS_QUERY, "inOid");
public static final QName KEY_FILTER_NONE = new QName(NS_QUERY, "none");
public static final QName KEY_FILTER_ALL = new QName(NS_QUERY, "all");

private static final QName KEY_FILTER_EQUAL_PATH = new QName(NS_QUERY, "path");
private static final QName KEY_FILTER_EQUAL_MATCHING = new QName(NS_QUERY, "matching");
Expand Down Expand Up @@ -652,6 +656,14 @@ public static MapXNode serializeFilter(ObjectFilter filter, XNodeSerializer xnod
if (filter instanceof TypeFilter) {
return serializeTypeFilter((TypeFilter) filter, xnodeSerilizer);
}

if (filter instanceof NoneFilter) {
return serializeNoneFilter((NoneFilter) filter, xnodeSerilizer);
}

if (filter instanceof AllFilter) {
return serializeAllFilter((AllFilter) filter, xnodeSerilizer);
}

throw new UnsupportedOperationException("Unsupported filter type: " + filter);
}
Expand Down Expand Up @@ -756,8 +768,27 @@ private static MapXNode serializeTypeFilter(TypeFilter filter, XNodeSerializer x
}

private static MapXNode serializeOrgFilter(OrgFilter filter, XNodeSerializer xnodeSerializer) {
// TODO
return null;
MapXNode map = new MapXNode();
map.put(KEY_FILTER_ORG_REF_OID, createPrimitiveXNode(filter.getOrgRef().getOid(), DOMUtil.XSD_STRING));
map.put(KEY_FILTER_ORG_SCOPE, createPrimitiveXNode(filter.getScope().name(), DOMUtil.XSD_STRING));

MapXNode xtypeFilter= new MapXNode();
xtypeFilter.put(KEY_FILTER_ORG, map);
return xtypeFilter;
}

private static MapXNode serializeNoneFilter(NoneFilter filter, XNodeSerializer xnodeSerializer) throws SchemaException{
MapXNode xtypeFilter= new MapXNode();
xtypeFilter.put(KEY_FILTER_NONE, null);
return xtypeFilter;

}

private static MapXNode serializeAllFilter(AllFilter filter, XNodeSerializer xnodeSerializer) throws SchemaException{
MapXNode xtypeFilter= new MapXNode();
xtypeFilter.put(KEY_FILTER_ALL, null);
return xtypeFilter;

}

private static void serializeMatchingRule(ValueFilter filter, MapXNode map){
Expand Down
3 changes: 3 additions & 0 deletions infra/prism/src/main/resources/xml/ns/public/query-3.xsd
Expand Up @@ -313,6 +313,9 @@

<xsd:element name="present" substitutionGroup="tns:filterClause" type="tns:PropertyNoValueFilterClauseType"/>
<xsd:element name="true" substitutionGroup="tns:filterClause" type="tns:PropertyNoValueFilterClauseType"/>

<xsd:element name="all" substitutionGroup="tns:filterClause" type="tns:FilterClauseType"/>
<xsd:element name="none" substitutionGroup="tns:filterClause" type="tns:FilterClauseType"/>

<xsd:complexType name="LogicalOperatorFilterClauseType" abstract="true">
<xsd:complexContent>
Expand Down

0 comments on commit c4f4c1b

Please sign in to comment.