Skip to content

Commit

Permalink
fixing query construction for org memebers (oneLevel vs. subtree ) MI…
Browse files Browse the repository at this point in the history
…D-3049
  • Loading branch information
katkav committed May 19, 2016
1 parent a76c121 commit a647712
Showing 1 changed file with 49 additions and 63 deletions.
Expand Up @@ -103,7 +103,7 @@ public class OrgMemberPanel extends AbstractRoleMemberPanel<OrgType> {

protected static final String ID_MANAGER_MENU = "managerMenu";
protected static final String ID_MANAGER_MENU_BODY = "managerMenuBody";

protected static final String SEARCH_SCOPE_SUBTREE = "subtree";
protected static final String SEARCH_SCOPE_ONE = "one";

Expand All @@ -130,24 +130,23 @@ protected void initSearch(Form form) {
/// TODO: move to utils class??
List<ObjectTypes> objectTypes = Arrays.asList(ObjectTypes.values());
Collections.sort(objectTypes, new Comparator<ObjectTypes>() {

@Override
public int compare(ObjectTypes o1, ObjectTypes o2) {
Validate.notNull(o1);
Validate.notNull(o2);

String type1 = o1.getValue();
String type2 = o2.getValue();

return String.CASE_INSENSITIVE_ORDER.compare(type1, type2);

}
});
////////////

DropDownChoice<ObjectTypes> objectType = new DropDownChoice<ObjectTypes>(ID_SEARCH_BY_TYPE,
Model.of(OBJECT_TYPES_DEFAULT), objectTypes,
new EnumChoiceRenderer<ObjectTypes>());
Model.of(OBJECT_TYPES_DEFAULT), objectTypes, new EnumChoiceRenderer<ObjectTypes>());
objectType.add(new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 1L;

Expand All @@ -161,11 +160,11 @@ protected void onUpdate(AjaxRequestTarget target) {
form.add(objectType);

DropDownChoice<String> seachScrope = new DropDownChoice<String>(ID_SEARCH_SCOPE,
Model.of(SEARCH_SCOPE_SUBTREE), SEARCH_SCOPE_VALUES,
Model.of(SEARCH_SCOPE_ONE), SEARCH_SCOPE_VALUES,
new StringResourceChoiceRenderer("TreeTablePanel.search.scope"));
seachScrope.add(new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 1L;

@Override
protected void onUpdate(AjaxRequestTarget target) {
refreshTable(target);
Expand Down Expand Up @@ -204,7 +203,7 @@ private WebMarkupContainer createManagerContainer() {

AjaxLink<String> link = new AjaxLink<String>(ID_EDIT_MANAGER) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
FocusSummaryPanel<FocusType> summary = (FocusSummaryPanel<FocusType>) getParent()
Expand All @@ -214,17 +213,17 @@ public void onClick(AjaxRequestTarget target) {
}
};
if (manager.getCompileTimeClass().equals(UserType.class)) {
managerMarkup.add(new UserSummaryPanel(ID_MANAGER_SUMMARY, new Model<ObjectWrapper<UserType>>(
(ObjectWrapper)managerWrapper)));
managerMarkup.add(new UserSummaryPanel(ID_MANAGER_SUMMARY,
new Model<ObjectWrapper<UserType>>((ObjectWrapper) managerWrapper)));
} else if (manager.getCompileTimeClass().equals(RoleType.class)) {
managerMarkup.add(new RoleSummaryPanel(ID_MANAGER_SUMMARY, new Model<ObjectWrapper<RoleType>>(
(ObjectWrapper)managerWrapper)));
managerMarkup.add(new RoleSummaryPanel(ID_MANAGER_SUMMARY,
new Model<ObjectWrapper<RoleType>>((ObjectWrapper) managerWrapper)));
} else if (manager.getCompileTimeClass().equals(OrgType.class)) {
managerMarkup.add(new OrgSummaryPanel(ID_MANAGER_SUMMARY, new Model<ObjectWrapper<OrgType>>(
(ObjectWrapper)managerWrapper)));
managerMarkup.add(new OrgSummaryPanel(ID_MANAGER_SUMMARY,
new Model<ObjectWrapper<OrgType>>((ObjectWrapper) managerWrapper)));
} else if (manager.getCompileTimeClass().equals(ServiceType.class)) {
managerMarkup.add(new ServiceSummaryPanel(ID_MANAGER_SUMMARY, new Model<ObjectWrapper<ServiceType>>(
(ObjectWrapper)managerWrapper)));
managerMarkup.add(new ServiceSummaryPanel(ID_MANAGER_SUMMARY,
new Model<ObjectWrapper<ServiceType>>((ObjectWrapper) managerWrapper)));
}
link.setOutputMarkupId(true);
managerMarkup.setOutputMarkupId(true);
Expand All @@ -248,13 +247,14 @@ public void onClick(AjaxRequestTarget target) {
}

managerContainer.add(view);

InlineMenu menupanel = new InlineMenu(ID_MANAGER_MENU, new Model<Serializable>((Serializable)createManagersHeaderInlineMenu()));

add(menupanel);
InlineMenu menupanel = new InlineMenu(ID_MANAGER_MENU,
new Model<Serializable>((Serializable) createManagersHeaderInlineMenu()));

add(menupanel);
menupanel.setOutputMarkupId(true);
managerContainer.add(menupanel);

return managerContainer;
}

Expand All @@ -265,9 +265,7 @@ private void removeManagerPerformed(FocusType manager, AjaxRequestTarget target)

ObjectDelta delta = ObjectDelta.createModificationDeleteContainer(
manager.asPrismObject().getCompileTimeClass(), manager.getOid(), FocusType.F_ASSIGNMENT,
getPageBase().getPrismContext(),
createAssignmentToModify(
SchemaConstants.ORG_MANAGER));
getPageBase().getPrismContext(), createAssignmentToModify(SchemaConstants.ORG_MANAGER));

getPageBase().getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta),
null, task, parentResult);
Expand Down Expand Up @@ -339,7 +337,8 @@ protected void refreshTable(AjaxRequestTarget target) {
ObjectTypes type = typeChoice.getModelObject();
target.add(get(createComponentPath(ID_FORM, ID_SEARCH_SCOPE)));
getMemberTable().clearCache();
getMemberTable().refreshTable((Class<ObjectType>) WebComponentUtil.qnameToClass(getPageBase().getPrismContext(), type.getTypeQName()), target);
getMemberTable().refreshTable((Class<ObjectType>) WebComponentUtil
.qnameToClass(getPageBase().getPrismContext(), type.getTypeQName()), target);
}

private MainObjectListPanel<ObjectType> getMemberTable() {
Expand Down Expand Up @@ -391,7 +390,9 @@ private ObjectDelta prepareDelta(MemberOperation operaton, QName type, QName rel

@Override
protected void addMembersPerformed(QName type, QName relation, List selected, AjaxRequestTarget target) {
// "Add managers: " + WebComponentUtil.getEffectiveName(getModelObject(), AbstractRoleType.F_DISPLAY_NAME)
// "Add managers: " +
// WebComponentUtil.getEffectiveName(getModelObject(),
// AbstractRoleType.F_DISPLAY_NAME)
Task operationalTask = getPageBase().createSimpleTask(getTaskName("Add", null, false));
ObjectDelta delta = prepareDelta(MemberOperation.ADD, type, relation, operationalTask.getResult(),
target);
Expand Down Expand Up @@ -466,8 +467,6 @@ protected void recomputeManagersPerformed(QueryScope scope, AjaxRequestTarget ta
TaskCategory.RECOMPUTATION, target);
}



@Override
protected ObjectQuery createMemberQuery() {
ObjectQuery query = null;
Expand All @@ -482,30 +481,17 @@ protected ObjectQuery createMemberQuery() {

QName searchType = getSearchType();

try {
OrgFilter org;
if (OrgType.COMPLEX_TYPE.equals(searchType)) {
if (SEARCH_SCOPE_ONE.equals(scope)) {
filters.add(OrgFilter.createOrg(oid, OrgFilter.Scope.ONE_LEVEL));
} else {
filters.add(OrgFilter.createOrg(oid, OrgFilter.Scope.SUBTREE));
}
}
PrismReferenceValue referenceFilter = new PrismReferenceValue();
referenceFilter.setOid(oid);
RefFilter referenceOidFilter = RefFilter.createReferenceEqual(
new ItemPath(FocusType.F_PARENT_ORG_REF), UserType.class, getPageBase().getPrismContext(),
referenceFilter);
filters.add(referenceOidFilter);

query = ObjectQuery.createObjectQuery(AndFilter.createAnd(filters));
OrgFilter org;
if (SEARCH_SCOPE_ONE.equals(scope)) {
filters.add(OrgFilter.createOrg(oid, OrgFilter.Scope.ONE_LEVEL));
} else {
filters.add(OrgFilter.createOrg(oid, OrgFilter.Scope.SUBTREE));
}

if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Searching members of org {} with query:\n{}", oid, query.debugDump());
}
query = ObjectQuery.createObjectQuery(AndFilter.createAnd(filters));

} catch (SchemaException e) {
LoggingUtils.logException(LOGGER, "Couldn't prepare query for org. members.", e);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Searching members of org {} with query:\n{}", oid, query.debugDump());
}

if (searchType.equals(ObjectType.COMPLEX_TYPE)) {
Expand Down Expand Up @@ -581,17 +567,17 @@ private ObjectQuery createQueryForAll(boolean isFocus, QName relation) {

}

// private ObjectQuery createQueryForRecompute() {
//
// List<ObjectType> objects = getMemberTable().getSelectedObjects();
// List<String> oids = new ArrayList<>();
// for (ObjectType object : objects) {
// oids.add(object.getOid());
//
// }
//
// return ObjectQuery.createObjectQuery(InOidFilter.createInOid(oids));
// }
// private ObjectQuery createQueryForRecompute() {
//
// List<ObjectType> objects = getMemberTable().getSelectedObjects();
// List<String> oids = new ArrayList<>();
// for (ObjectType object : objects) {
// oids.add(object.getOid());
//
// }
//
// return ObjectQuery.createObjectQuery(InOidFilter.createInOid(oids));
// }

protected ObjectDelta createMemberDelta(MemberOperation operation, QName type, QName relation)
throws SchemaException {
Expand Down

0 comments on commit a647712

Please sign in to comment.