use of org.identityconnectors.framework.common.objects.filter.Filter in project syncope by apache.
the class ConnectorFacadeProxy method filteredReconciliation.
@Transactional
@Override
public void filteredReconciliation(final ObjectClass objectClass, final ReconFilterBuilder filterBuilder, final SyncResultsHandler handler, final OperationOptions options) {
Filter filter = null;
OperationOptions actualOptions = options;
if (filterBuilder != null) {
filter = filterBuilder.build();
actualOptions = filterBuilder.build(actualOptions);
}
search(objectClass, filter, object -> handler.handle(new SyncDeltaBuilder().setObject(object).setUid(object.getUid()).setDeltaType(SyncDeltaType.CREATE_OR_UPDATE).setToken(new SyncToken("")).build()), actualOptions);
}
use of org.identityconnectors.framework.common.objects.filter.Filter in project CzechIdMng by bcvsolutions.
the class ConnIdIcConvertUtil method convertIcFilter.
public static Filter convertIcFilter(IcFilter filter) {
if (filter == null) {
return null;
}
if (filter instanceof IcAndFilter) {
List<IcFilter> subFilters = (List<IcFilter>) ((IcAndFilter) filter).getFilters();
LinkedList<Filter> subFiltersConnId = new LinkedList<>();
if (!subFilters.isEmpty()) {
subFilters.forEach(subFilter -> {
subFiltersConnId.add(ConnIdIcConvertUtil.convertIcFilter(subFilter));
});
}
return new AndFilter(subFiltersConnId);
}
if (filter instanceof IcOrFilter) {
List<IcFilter> subFilters = (List<IcFilter>) ((IcOrFilter) filter).getFilters();
LinkedList<Filter> subFiltersConnId = new LinkedList<>();
if (!subFilters.isEmpty()) {
subFilters.forEach(subFilter -> {
subFiltersConnId.add(ConnIdIcConvertUtil.convertIcFilter(subFilter));
});
}
return new OrFilter(subFiltersConnId);
}
if (filter instanceof IcNotFilter) {
return new NotFilter(ConnIdIcConvertUtil.convertIcFilter(((IcNotFilter) filter).getFilter()));
}
if (filter instanceof IcAttributeFilter) {
Attribute attr = ConnIdIcConvertUtil.convertIcAttribute(((IcAttributeFilter) filter).getAttribute());
if (filter instanceof IcEqualsFilter) {
return new EqualsFilter(attr);
}
if (filter instanceof IcContainsFilter) {
return new ContainsFilter(attr);
}
if (filter instanceof IcEndsWithFilter) {
return new EndsWithFilter(attr);
}
if (filter instanceof IcContainsAllValuesFilter) {
return new ContainsAllValuesFilter(attr);
}
if (filter instanceof IcStartsWithFilter) {
return new StartsWithFilter(attr);
}
if (filter instanceof IcGreaterThanFilter) {
return new GreaterThanFilter(attr);
}
if (filter instanceof IcLessThanFilter) {
return new LessThanFilter(attr);
}
}
return null;
}
use of org.identityconnectors.framework.common.objects.filter.Filter in project CzechIdMng by bcvsolutions.
the class ConnIdIcConnectorService method search.
@Override
public void search(IcConnectorInstance connectorInstance, IcConnectorConfiguration connectorConfiguration, IcObjectClass objectClass, IcFilter filter, IcResultsHandler handler) {
Assert.notNull(connectorInstance, "Connector instance is required.");
Assert.notNull(connectorInstance.getConnectorKey(), "Connector key is required.");
Assert.notNull(connectorConfiguration, "Configuration is required.");
Assert.notNull(objectClass, "Object class is required.");
Assert.notNull(handler, "Handler is required.");
LOG.debug("Start search for connector {} and objectClass {} and filter {} - ConnId", connectorInstance.getConnectorKey().toString(), objectClass.getDisplayName(), filter);
ConnectorFacade conn = facadeFactory.getConnectorFacade(connectorInstance, connectorConfiguration);
ObjectClass objectClassConnId = ConnIdIcConvertUtil.convertIcObjectClass(objectClass);
if (objectClassConnId == null) {
objectClassConnId = ObjectClass.ACCOUNT;
}
final SearchResultsHandler handlerConnId = new SearchResultsHandler() {
@Override
public boolean handle(ConnectorObject connectorObject) {
return handler.handle(ConnIdIcConvertUtil.convertConnIdConnectorObject(connectorObject));
}
@Override
public void handleResult(SearchResult result) {
// VS TODO: For all my tests was search result Null and this method (handle result) was not called!
LOG.debug("SearchResul was returned (pagination): cookie: {} --- remaining paged results: {}", result.getPagedResultsCookie(), result.getRemainingPagedResults());
}
};
Filter filterConnId = ConnIdIcConvertUtil.convertIcFilter(filter);
this.pageSearch(conn, objectClassConnId, filterConnId, handlerConnId, new OperationOptions(connectorConfiguration.getSystemOperationOptions()));
}
use of org.identityconnectors.framework.common.objects.filter.Filter in project midpoint by Evolveum.
the class ConnectorInstanceConnIdImpl method convertFilterToIcf.
Filter convertFilterToIcf(ObjectQuery query, ResourceObjectDefinition objectDefinition) throws SchemaException {
ObjectFilter prismFilter = query != null ? query.getFilter() : null;
if (prismFilter != null) {
LOGGER.trace("Start to convert filter: {}", prismFilter.debugDumpLazily());
FilterInterpreter interpreter = new FilterInterpreter(objectDefinition);
Filter connIdFilter = interpreter.interpret(prismFilter, connIdNameMapper);
LOGGER.trace("ConnId filter: {}", lazy(() -> ConnIdUtil.dump(connIdFilter)));
return connIdFilter;
} else {
return null;
}
}
use of org.identityconnectors.framework.common.objects.filter.Filter in project midpoint by Evolveum.
the class LogicalOperation method interpret.
@Override
public <T> Filter interpret(ObjectFilter objectFilter, ConnIdNameMapper icfNameMapper) throws SchemaException {
if (objectFilter instanceof NotFilter) {
NotFilter not = (NotFilter) objectFilter;
if (not.getFilter() == null) {
LOGGER.debug("Not filter does not contain any condition. Skipping processing not filter.");
return null;
}
Filter f = getInterpreter().interpret(not.getFilter(), icfNameMapper);
return FilterBuilder.not(f);
} else {
NaryLogicalFilter nAry = (NaryLogicalFilter) objectFilter;
List<? extends ObjectFilter> conditions = nAry.getConditions();
if (conditions == null || conditions.isEmpty()) {
LOGGER.debug("No conditions specified for logical filter. Skipping processing logical filter.");
return null;
}
if (conditions.size() < 2) {
LOGGER.debug("Logical filter contains only one condition. Skipping processing logical filter and process simple operation of type {}.", conditions.get(0).getClass().getSimpleName());
return getInterpreter().interpret(conditions.get(0), icfNameMapper);
}
List<Filter> filters = new ArrayList<>();
for (ObjectFilter objFilter : nAry.getConditions()) {
Filter f = getInterpreter().interpret(objFilter, icfNameMapper);
filters.add(f);
}
Filter nAryFilter = null;
if (filters.size() >= 2) {
if (nAry instanceof AndFilter) {
nAryFilter = interpretAnd(filters.get(0), filters.subList(1, filters.size()));
} else if (nAry instanceof OrFilter) {
nAryFilter = interpretOr(filters.get(0), filters.subList(1, filters.size()));
}
}
return nAryFilter;
}
}
Aggregations