use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.
the class AssociationValueChoicePanel method createChooseQuery.
protected ObjectQuery createChooseQuery(List<PrismPropertyValue> values) {
ArrayList<String> oidList = new ArrayList<>();
ObjectQuery query = new ObjectQuery();
if (oidList.isEmpty()) {
return null;
}
ObjectFilter oidFilter = InOidFilter.createInOid(oidList);
query.setFilter(NotFilter.createNot(oidFilter));
return query;
}
use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.
the class ResourceContentPanel method initLayout.
private void initLayout() {
WebMarkupContainer totals = new WebMarkupContainer(ID_TOTALS);
totals.setOutputMarkupId(true);
add(totals);
initShadowStatistics(totals);
MainObjectListPanel<ShadowType> shadowListPanel = new MainObjectListPanel<ShadowType>(ID_TABLE, ShadowType.class, getTableId(), null, pageBase) {
private static final long serialVersionUID = 1L;
@Override
protected List<InlineMenuItem> createInlineMenu() {
return ResourceContentPanel.this.createRowMenuItems();
}
@Override
protected List<IColumn<SelectableBean<ShadowType>, String>> createColumns() {
return ResourceContentPanel.this.initColumns();
}
@Override
protected IColumn<SelectableBean<ShadowType>, String> createActionsColumn() {
return new InlineMenuHeaderColumn(createHeaderMenuItems());
}
@Override
protected void objectDetailsPerformed(AjaxRequestTarget target, ShadowType object) {
shadowDetailsPerformed(target, WebComponentUtil.getName(object), object.getOid());
}
@Override
protected void newObjectPerformed(AjaxRequestTarget target) {
// TODO Auto-generated method stub
}
@Override
protected BaseSortableDataProvider<SelectableBean<ShadowType>> initProvider() {
provider = (SelectableBeanObjectDataProvider<ShadowType>) super.initProvider();
provider.setEmptyListOnNullQuery(true);
provider.setSort(null);
createSearchOptions(provider);
return provider;
}
@Override
protected ObjectQuery createContentQuery() {
ObjectQuery parentQuery = super.createContentQuery();
List<ObjectFilter> filters = new ArrayList<>();
if (parentQuery != null) {
filters.add(parentQuery.getFilter());
}
ObjectQuery customQuery = ResourceContentPanel.this.createQuery();
if (customQuery != null && customQuery.getFilter() != null) {
filters.add(customQuery.getFilter());
}
ObjectQuery query = new ObjectQuery();
if (filters.size() == 1) {
query = ObjectQuery.createObjectQuery(filters.iterator().next());
// setProviderAvailableDataSize(query);
return query;
}
if (filters.size() == 0) {
// setProviderAvailableDataSize(query);
return null;
}
query = ObjectQuery.createObjectQuery(AndFilter.createAnd(filters));
// setProviderAvailableDataSize(query);
return query;
}
@Override
protected Search createSearch() {
return ResourceContentPanel.this.createSearch();
}
};
shadowListPanel.setOutputMarkupId(true);
shadowListPanel.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return createQuery() != null;
}
});
shadowListPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_SHADOW_BOX_CSS_CLASSES);
add(shadowListPanel);
Label label = new Label(ID_LABEL, "Nothing to show. Select intent to search");
add(label);
label.setOutputMarkupId(true);
label.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return createQuery() == null;
}
});
OperationResult result = new OperationResult(OPERATION_SEARCH_TASKS_FOR_RESOURCE);
List<PrismObject<TaskType>> tasks = WebModelServiceUtils.searchObjects(TaskType.class, QueryBuilder.queryFor(TaskType.class, getPageBase().getPrismContext()).item(TaskType.F_OBJECT_REF).ref(getResourceModel().getObject().getOid()).build(), result, getPageBase());
List<TaskType> tasksForKind = getTasksForKind(tasks);
List<TaskType> importTasks = new ArrayList<>();
List<TaskType> syncTasks = new ArrayList<>();
List<TaskType> reconTasks = new ArrayList<>();
for (TaskType task : tasksForKind) {
if (TaskCategory.RECONCILIATION.equals(task.getCategory())) {
reconTasks.add(task);
} else if (TaskCategory.LIVE_SYNCHRONIZATION.equals(task.getCategory())) {
syncTasks.add(task);
} else if (TaskCategory.IMPORTING_ACCOUNTS.equals(task.getCategory())) {
importTasks.add(task);
}
}
initButton(ID_IMPORT, "Import", " fa-download", TaskCategory.IMPORTING_ACCOUNTS, importTasks);
initButton(ID_RECONCILIATION, "Reconciliation", " fa-link", TaskCategory.RECONCILIATION, reconTasks);
initButton(ID_LIVE_SYNC, "Live Sync", " fa-refresh", TaskCategory.LIVE_SYNCHRONIZATION, syncTasks);
initCustomLayout();
}
use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.
the class SqlRepositoryServiceImpl method selectorMatches.
@Override
public <O extends ObjectType> boolean selectorMatches(ObjectSelectorType objectSelector, PrismObject<O> object, Trace logger, String logMessagePrefix) throws SchemaException {
if (objectSelector == null) {
logger.trace("{} null object specification", logMessagePrefix);
return false;
}
SearchFilterType specFilterType = objectSelector.getFilter();
ObjectReferenceType specOrgRef = objectSelector.getOrgRef();
// now it does not matter if it's unqualified
QName specTypeQName = objectSelector.getType();
PrismObjectDefinition<O> objectDefinition = object.getDefinition();
// Type
if (specTypeQName != null && !QNameUtil.match(specTypeQName, objectDefinition.getTypeName())) {
logger.trace("{} type mismatch, expected {}, was {}", logMessagePrefix, specTypeQName, objectDefinition.getTypeName());
return false;
}
// Filter
if (specFilterType != null) {
ObjectFilter specFilter = QueryJaxbConvertor.createObjectFilter(object.getCompileTimeClass(), specFilterType, object.getPrismContext());
// we assume object is already normalized
ObjectTypeUtil.normalizeFilter(specFilter);
if (specFilter != null) {
ObjectQueryUtil.assertPropertyOnly(specFilter, logMessagePrefix + " filter is not property-only filter");
}
try {
if (!ObjectQuery.match(object, specFilter, matchingRuleRegistry)) {
logger.trace("{} object OID {}", logMessagePrefix, object.getOid());
return false;
}
} catch (SchemaException ex) {
throw new SchemaException(logMessagePrefix + "could not apply for " + object + ": " + ex.getMessage(), ex);
}
}
// Org
if (specOrgRef != null) {
if (!isDescendant(object, specOrgRef.getOid())) {
LOGGER.trace("{} object OID {} (org={})", logMessagePrefix, object.getOid(), specOrgRef.getOid());
return false;
}
}
return true;
}
use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.
the class SqlRepositoryServiceImpl method searchContainers.
@Override
public <T extends Containerable> SearchResultList<T> searchContainers(Class<T> type, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult) throws SchemaException {
Validate.notNull(type, "Object type must not be null.");
Validate.notNull(parentResult, "Operation result must not be null.");
logSearchInputParameters(type, query, false, null);
OperationResult result = parentResult.createSubresult(SEARCH_CONTAINERS);
result.addParam("type", type.getName());
result.addParam("query", query);
if (query != null) {
ObjectFilter filter = query.getFilter();
filter = ObjectQueryUtil.simplify(filter);
if (filter instanceof NoneFilter) {
result.recordSuccess();
return new SearchResultList<>(new ArrayList<T>(0));
} else {
query = replaceSimplifiedFilter(query, filter);
}
}
SqlPerformanceMonitor pm = getPerformanceMonitor();
long opHandle = pm.registerOperationStart("searchContainers");
final String operation = "searching";
int attempt = 1;
try {
while (true) {
try {
return objectRetriever.searchContainersAttempt(type, query, options, result);
} catch (RuntimeException ex) {
attempt = baseHelper.logOperationAttempt(null, operation, attempt, ex, result);
pm.registerOperationNewTrial(opHandle, attempt);
}
}
} finally {
pm.registerOperationFinish(opHandle, attempt);
}
}
use of com.evolveum.midpoint.prism.query.ObjectFilter in project midpoint by Evolveum.
the class SqlRepositoryServiceImpl method countObjects.
public <T extends ObjectType> int countObjects(Class<T> type, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult result) {
Validate.notNull(type, "Object type must not be null.");
Validate.notNull(result, "Operation result must not be null.");
LOGGER.debug("Counting objects of type '{}', query (on trace level).", new Object[] { type.getSimpleName() });
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Full query\n{}", new Object[] { (query == null ? "undefined" : query.debugDump()) });
}
OperationResult subResult = result.createMinorSubresult(COUNT_OBJECTS);
subResult.addParam("type", type.getName());
subResult.addParam("query", query);
if (query != null) {
ObjectFilter filter = query.getFilter();
filter = ObjectQueryUtil.simplify(filter);
if (filter instanceof NoneFilter) {
subResult.recordSuccess();
return 0;
}
query = query.cloneEmpty();
query.setFilter(filter);
}
final String operation = "counting";
int attempt = 1;
while (true) {
try {
return objectRetriever.countObjectsAttempt(type, query, options, subResult);
} catch (RuntimeException ex) {
attempt = baseHelper.logOperationAttempt(null, operation, attempt, ex, subResult);
}
}
}
Aggregations