Skip to content

Commit

Permalink
MID-4133 fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Sep 21, 2017
1 parent c10447f commit 476253a
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 74 deletions.
Expand Up @@ -18,6 +18,7 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -122,7 +123,7 @@ private void initUserSelectionPopup(AjaxRequestTarget target) {
supportedTypes.add(pageBase.getPrismContext().getSchemaRegistry()
.findObjectDefinitionByCompileTimeClass(UserType.class).getTypeName());
ObjectBrowserPanel<UserType> focusBrowser = new ObjectBrowserPanel<UserType>(pageBase.getMainPopupBodyId(),
UserType.class, supportedTypes, isMultiSelection, pageBase, null, getModelObject()) {
UserType.class, supportedTypes, isMultiSelection, pageBase, getUserQueryFilter(), getModelObject()) {

@Override
protected void onSelectPerformed(AjaxRequestTarget target, UserType object) {
Expand Down Expand Up @@ -179,4 +180,8 @@ public int compare(UserType u1, UserType u2) {
}
return titleModel.getString();
}

protected ObjectFilter getUserQueryFilter(){
return null;
}
}
Expand Up @@ -47,11 +47,8 @@
</div>
<div wicket:id="noCatalogRefDefinedLabel" class="col-md-12"/>

<div wicket:id="catalogItemsPanelContainer">
<div class="h3 col-md-12" wicket:id="assignmentsOwnerName"/>
<div wicket:id="catalogItemsGridPanel"/>
<div wicket:id="catalogItemsGridPanel"/>

</div>
</div>
</div>
</form>
Expand Down
Expand Up @@ -17,6 +17,7 @@

import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.ModelInteractionService;
import com.evolveum.midpoint.model.api.RoleSelectionSpecification;
import com.evolveum.midpoint.prism.PrismObject;
Expand Down Expand Up @@ -89,8 +90,6 @@ public class PageAssignmentShoppingKart extends PageSelf {
private static final String ID_NO_CATALOG_REF_DEFINED_LABEL = "noCatalogRefDefinedLabel";
private static final String ID_CATALOG_ITEMS_GRID_PANEL = "catalogItemsGridPanel";
private static final String ID_CONTENT_PANEL = "contentPanel";
private static final String ID_CATALOG_ITEMS_PANEL_CONTAINER = "catalogItemsPanelContainer";
private static final String ID_ASSIGNMENTS_OWNER_NAME = "assignmentsOwnerName";
private static final String ID_CART_BUTTON = "cartButton";
private static final String ID_CART_ITEMS_COUNT = "itemsCount";
private static final String ID_HEADER_PANEL = "headerPanel";
Expand Down Expand Up @@ -191,25 +190,6 @@ public Search load() {
}

private void initProvider() {
if (AssignmentViewType.USER_TYPE.equals(viewTypeModel.getObject())){
UserType assignmentsOwner = getRoleCatalogStorage().getAssignmentsUserOwner();
List<AssignmentEditorDto> listProviderData = new ArrayList<>();
if (assignmentsOwner != null) {
List<AssignmentType> assignments = assignmentsOwner.getAssignment();
for (AssignmentType assignment : assignments) {
if (!AssignmentsUtil.isPolicyRuleAssignment(assignment) && !AssignmentsUtil.isConsentAssignment(assignment)
&& AssignmentsUtil.isAssignmentRelevant(assignment)) {
assignment.setId(null);
listProviderData.add(new AssignmentEditorDto(UserDtoStatus.MODIFY, assignment, PageAssignmentShoppingKart.this));
}
}
Collections.sort(listProviderData);
}
provider = new ListDataProvider(this, Model.ofList(listProviderData));
provider.setQuery(null);
provider.getAvailableData().clear();
provider.getAvailableData().addAll(listProviderData);
} else {
provider = new ObjectDataProvider<AssignmentEditorDto, AbstractRoleType>(PageAssignmentShoppingKart.this, AbstractRoleType.class) {
private static final long serialVersionUID = 1L;

Expand All @@ -229,7 +209,6 @@ public ObjectQuery getQuery() {
return createContentQuery(null);
}
};
}
}

private void initHeaderPanel(Form mainForm){
Expand Down Expand Up @@ -289,31 +268,6 @@ public boolean isVisible(){
}

private void initCatalogItemsPanel(WebMarkupContainer panelContainer){
WebMarkupContainer catalogItemsPanelContainer = new WebMarkupContainer(ID_CATALOG_ITEMS_PANEL_CONTAINER);
catalogItemsPanelContainer.setOutputMarkupId(true);
catalogItemsPanelContainer.add(new VisibleEnableBehaviour(){
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible(){
return !(AssignmentViewType.ROLE_CATALOG_VIEW.equals(viewTypeModel.getObject()) &&
isCatalogOidEmpty());
}
});
panelContainer.add(catalogItemsPanelContainer);

Label assignmentsOwnerLabel = new Label(ID_ASSIGNMENTS_OWNER_NAME,
createStringResource("AssignmentCatalogPanel.assignmentsOwner",
getRoleCatalogStorage().getAssignmentsUserOwner() != null ?
getRoleCatalogStorage().getAssignmentsUserOwner().getName().getOrig() : "").getString());
assignmentsOwnerLabel.add(new VisibleEnableBehaviour(){
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible(){
return AssignmentViewType.USER_TYPE.equals(viewTypeModel.getObject());
}
});
catalogItemsPanelContainer.add(assignmentsOwnerLabel);

GridViewComponent<AssignmentEditorDto> catalogItemsGrid = new GridViewComponent(ID_CATALOG_ITEMS_GRID_PANEL,
new AbstractReadOnlyModel<IDataProvider>() {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -344,8 +298,16 @@ protected void assignmentAddedToShoppingCartPerformed(AjaxRequestTarget target){
});
}
};
catalogItemsGrid.add(new VisibleEnableBehaviour(){
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible(){
return !(AssignmentViewType.ROLE_CATALOG_VIEW.equals(viewTypeModel.getObject()) &&
isCatalogOidEmpty());
}
});
catalogItemsGrid.setOutputMarkupId(true);
catalogItemsPanelContainer.add(catalogItemsGrid);
panelContainer.add(catalogItemsGrid);
}

private void selectTreeItemPerformed(SelectableBean<OrgType> selected, AjaxRequestTarget target) {
Expand Down Expand Up @@ -410,16 +372,21 @@ public List<UserType> getObject() {
}, false, createStringResource("AssignmentCatalogPanel.selectSourceUser")){
private static final long serialVersionUID = 1L;

@Override
protected ObjectFilter getUserQueryFilter(){
return getAssignableRolesFilter();
}

@Override
protected void singleUserSelectionPerformed(AjaxRequestTarget target, UserType user){
super.singleUserSelectionPerformed(target, user);
viewTypeModel.setObject(AssignmentViewType.USER_TYPE);
getRoleCatalogStorage().setAssignmentsUserOwner(user);

initProvider();
//TODO don't remove component
getContentPanel().remove(ID_CATALOG_ITEMS_PANEL_CONTAINER);
initCatalogItemsPanel(getContentPanel());
// TODO don't remove component
// getContentPanel().remove(ID_CATALOG_ITEMS_PANEL_CONTAINER);
// initCatalogItemsPanel(getContentPanel());
searchModel.reset();

target.add(getContentPanel());
Expand All @@ -439,9 +406,6 @@ protected void onDeleteSelectedUsersPerformed(AjaxRequestTarget target){
viewTypeModel.setObject(getRoleCatalogStorage().getShoppingCartConfigurationDto().getViewTypeList().get(0));
}
initProvider();
//TODO don't remove component
getContentPanel().remove(ID_CATALOG_ITEMS_PANEL_CONTAINER);
initCatalogItemsPanel(getContentPanel());
searchModel.reset();

target.add(getContentPanel());
Expand Down Expand Up @@ -490,12 +454,6 @@ public boolean isEnabled(){

private void initSearchPanel(WebMarkupContainer headerPanel) {
final Form searchForm = new Form(ID_SEARCH_FORM);
searchForm.add(new VisibleEnableBehaviour() {
public boolean isVisible() {
return !(AssignmentViewType.ROLE_CATALOG_VIEW.equals(viewTypeModel.getObject()) && isCatalogOidEmpty())
&& !AssignmentViewType.USER_TYPE.equals(viewTypeModel.getObject());
}
});
searchForm.setOutputMarkupId(true);

SearchPanel search = new SearchPanel(ID_SEARCH, (IModel) searchModel, false) {
Expand All @@ -507,7 +465,7 @@ public void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
}
};
searchForm.add(search);
headerPanel.addOrReplace(searchForm);
headerPanel.add(searchForm);
}

private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
Expand All @@ -524,7 +482,13 @@ protected ObjectQuery createContentQuery(ObjectQuery searchQuery) {
}
addOrgMembersFilter(oid, memberQuery);
}
addAssignableRolesFilter(memberQuery);
if (AssignmentViewType.USER_TYPE.equals(viewTypeModel.getObject())) {
UserType assignmentsOwner = getRoleCatalogStorage().getAssignmentsUserOwner();
List<String> assignmentTargetObjectOidsList = collectTargetObjectOids(assignmentsOwner.getAssignment());
ObjectFilter oidsFilter = InOidFilter.createInOid(assignmentTargetObjectOidsList);
memberQuery.addFilter(oidsFilter);
}
memberQuery.addFilter(getAssignableRolesFilter());
addViewTypeFilter(memberQuery);
if (memberQuery == null) {
memberQuery = new ObjectQuery();
Expand Down Expand Up @@ -555,7 +519,7 @@ private void addViewTypeFilter(ObjectQuery query) {
}
}

private void addAssignableRolesFilter(ObjectQuery query) {
private ObjectFilter getAssignableRolesFilter() {
ObjectFilter filter = null;
LOGGER.debug("Loading roles which the current user has right to assign");
OperationResult result = new OperationResult(OPERATION_LOAD_ASSIGNABLE_ROLES);
Expand All @@ -573,10 +537,7 @@ private void addAssignableRolesFilter(ObjectQuery query) {
if (!result.isSuccess() && !result.isHandledError()) {
showResult(result);
}
if (query == null) {
query = new ObjectQuery();
}
query.addFilter(filter);
return filter;
}

private ObjectQuery addOrgMembersFilter(String oid, ObjectQuery query) {
Expand Down Expand Up @@ -634,7 +595,7 @@ private boolean isCatalogOidEmpty(){


private WebMarkupContainer getCatalogItemsPanelContainer(){
return (WebMarkupContainer)getContentPanel().get(ID_CATALOG_ITEMS_PANEL_CONTAINER);
return (WebMarkupContainer)getContentPanel().get(ID_CATALOG_ITEMS_GRID_PANEL);
}

private WebMarkupContainer getHeaderPanel(){
Expand Down Expand Up @@ -719,6 +680,18 @@ private String getSourceUserSelectionButtonLabel(UserType user){
}
}


private List<String> collectTargetObjectOids(List<AssignmentType> assignments){
List<String> oidsList = new ArrayList<>();
if (assignments == null){
return oidsList;
}
for (AssignmentType assignment : assignments){
if (assignment.getTargetRef() == null || assignment.getTargetRef().getOid() == null){
continue;
}
oidsList.add(assignment.getTargetRef().getOid());
}
return oidsList;
}

}

0 comments on commit 476253a

Please sign in to comment.