diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.html index 650231ac550..650f95ce2f1 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.html @@ -19,12 +19,27 @@ xmlns:wicket="http://wicket.apache.org"> +
+
+ - -
-
- - - - - -
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java index 2fbbf5a2638..4ae79c36781 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java @@ -70,8 +70,6 @@ public class CatalogItemsPanel extends BasePanel implements IPageableItems { private static final long serialVersionUID = 1L; private static final String ID_MULTI_BUTTON_TABLE = "multiButtonTable"; - private static final String ID_SEARCH_FORM = "searchForm"; - private static final String ID_SEARCH = "search"; private static final String ID_PAGING_FOOTER = "pagingFooter"; private static final String ID_PAGING = "paging"; private static final String ID_COUNT = "count"; @@ -79,22 +77,11 @@ public class CatalogItemsPanel extends BasePanel implements IPageableItems { private static final String ID_FOOTER_CONTAINER = "footerContainer"; private static final String ID_BUTTON_TOOLBAR = "buttonToolbar"; private static final String ID_FOOTER = "footer"; - 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"; - private static final String ID_VIEW_TYPE = "viewTypeSelect"; - private static final String DOT_CLASS = CatalogItemsPanel.class.getName(); - private static final Trace LOGGER = TraceManager.getTrace(CatalogItemsPanel.class); - private static final String OPERATION_LOAD_ASSIGNABLE_ROLES = DOT_CLASS + "loadAssignableRoles"; - private static final String OPERATION_LOAD_USER = DOT_CLASS + "loadUser"; - - private IModel searchModel; private ObjectDataProvider provider; private IModel> itemsListModel; - private IModel viewModel; - private long itemsPerRow = 4; + private int itemsPerRow = 4; private static final long DEFAULT_ROWS_COUNT = 5; private PageBase pageBase; private IModel catalogOidModel; @@ -105,50 +92,28 @@ public CatalogItemsPanel(String id) { } public CatalogItemsPanel(String id, IModel catalogOidModel, PageBase pageBase) { - this(id, catalogOidModel, pageBase, 0); + this(id, catalogOidModel, pageBase, 0, null); } - public CatalogItemsPanel(String id, IModel catalogOidModel, final PageBase pageBase, int itemsPerRow) { + public CatalogItemsPanel(String id, IModel catalogOidModel, final PageBase pageBase, int itemsPerRow, + ObjectDataProvider provider) { super(id); this.pageBase = pageBase; + this.provider = provider; this.catalogOidModel = catalogOidModel; if (itemsPerRow > 0){ this.itemsPerRow = itemsPerRow; } - viewModel = new IModel() { - @Override - public AssignmentViewType getObject() { - return AssignmentViewType.getViewTypeFromSession(pageBase); - } - - @Override - public void setObject(AssignmentViewType assignmentViewType) { - AssignmentViewType.saveViewTypeToSession(pageBase, assignmentViewType); - } - - @Override - public void detach() { - } - }; - initProvider(); - initSearchModel(); initItemListModel(); + setCurrentPage(0); initLayout(); } private void initLayout() { setOutputMarkupId(true); - WebMarkupContainer headerPanel = new WebMarkupContainer(ID_HEADER_PANEL); - headerPanel.setOutputMarkupId(true); - add(headerPanel); - - initViewSelector(headerPanel); - initCartButton(headerPanel); - initSearchPanel(headerPanel); - Component assignmentsTable; if (isCatalogOidEmpty()) { assignmentsTable = new Label(ID_MULTI_BUTTON_TABLE, createStringResource("PageAssignmentShoppingKart.roleCatalogIsNotConfigured")); @@ -162,49 +127,10 @@ private void initLayout() { } - protected void initProvider() { - if (isCatalogOidEmpty()){ - provider = null; - } else { - provider = new ObjectDataProvider(pageBase, AbstractRoleType.class) { - private static final long serialVersionUID = 1L; - - @Override - public AssignmentEditorDto createDataObjectWrapper(PrismObject obj) { - return AssignmentEditorDto.createDtoFromObject(obj.asObjectable(), UserDtoStatus.MODIFY, pageBase); - } - - @Override - public void setQuery(ObjectQuery query) { - - super.setQuery(query); - } - - @Override - public ObjectQuery getQuery() { - - return createContentQuery(null); - } - }; - setCurrentPage(0); - } - } - protected void refreshCatalogItemsPanel() { } - private void initSearchModel() { - searchModel = new LoadableModel(false) { - @Override - public Search load() { - Search search = SearchFactory.createSearch(AbstractRoleType.class, getPageBase().getPrismContext(), - getPageBase().getModelInteractionService()); - return search; - } - }; - } - private void initItemListModel() { itemsListModel = new IModel>() { @Override @@ -224,110 +150,6 @@ public void detach() { }; } - private void initViewSelector(WebMarkupContainer headerPanel){ - DropDownChoice viewSelect = new DropDownChoice(ID_VIEW_TYPE, viewModel, new ListModel(createAssignableTypesList()), - new EnumChoiceRenderer(this)); - viewSelect.add(new OnChangeAjaxBehavior() { - - @Override - protected void onUpdate(AjaxRequestTarget target) { - AssignmentCatalogPanel parentPanel = CatalogItemsPanel.this.findParent(AssignmentCatalogPanel.class); - parentPanel.addOrReplaceLayout(); - target.add(parentPanel); - } - }); - viewSelect.setOutputMarkupId(true); - headerPanel.add(viewSelect); - - } - - private void initSearchPanel(WebMarkupContainer headerPanel) { - final Form searchForm = new Form(ID_SEARCH_FORM); - headerPanel.add(searchForm); - searchForm.add(new VisibleEnableBehaviour(){ - public boolean isVisible(){ - return !isCatalogOidEmpty(); - } - }); - searchForm.setOutputMarkupId(true); - - SearchPanel search = new SearchPanel(ID_SEARCH, (IModel) searchModel, false) { - - @Override - public void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { - CatalogItemsPanel.this.searchPerformed(query, target); - } - }; - searchForm.add(search); - - } - - private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { - setCurrentPage(0); - provider.setQuery(createContentQuery(query)); - refreshItemsPanel(); - target.add(CatalogItemsPanel.this); - } - - protected ObjectQuery createContentQuery(ObjectQuery searchQuery) { - ObjectQuery memberQuery; - if (AssignmentViewType.ROLE_CATALOG_VIEW.equals(AssignmentViewType.getViewTypeFromSession(pageBase))){ - memberQuery = createMemberQuery(catalogOidModel.getObject()); - } else { - memberQuery = createMemberQuery(getViewTypeClass(AssignmentViewType.getViewTypeFromSession(pageBase))); - } - if (memberQuery == null) { - memberQuery = new ObjectQuery(); - } - if (searchQuery == null) { - if (searchModel != null && searchModel.getObject() != null) { - Search search = searchModel.getObject(); - searchQuery = search.createObjectQuery(pageBase.getPrismContext()); - } - } - if (searchQuery != null && searchQuery.getFilter() != null) { - memberQuery.addFilter(searchQuery.getFilter()); - } - return memberQuery; - } - - private ObjectQuery createMemberQuery(QName focusTypeClass) { - ObjectQuery query = new ObjectQuery(); - ObjectFilter filter = null; - if (focusTypeClass.equals(RoleType.COMPLEX_TYPE)) { - LOGGER.debug("Loading roles which the current user has right to assign"); - OperationResult result = new OperationResult(OPERATION_LOAD_ASSIGNABLE_ROLES); - try { - ModelInteractionService mis = pageBase.getModelInteractionService(); - RoleSelectionSpecification roleSpec = - mis.getAssignableRoleSpecification(SecurityUtils.getPrincipalUser().getUser().asPrismObject(), result); - filter = roleSpec.getFilter(); - } catch (Exception ex) { - LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load available roles", ex); - result.recordFatalError("Couldn't load available roles", ex); - } finally { - result.recomputeStatus(); - } - if (!result.isSuccess() && !result.isHandledError()) { - pageBase.showResult(result); - } - } - query.addFilter(TypeFilter.createType(focusTypeClass, filter)); - return query; - - } - - private ObjectQuery createMemberQuery(String oid) { - ObjectFilter filter = OrgFilter.createOrg(oid, OrgFilter.Scope.ONE_LEVEL); - - TypeFilter roleTypeFilter = TypeFilter.createType(RoleType.COMPLEX_TYPE, filter); - TypeFilter orgTypeFilter = TypeFilter.createType(OrgType.COMPLEX_TYPE, filter); - TypeFilter serviceTypeFilter = TypeFilter.createType(ServiceType.COMPLEX_TYPE, filter); - ObjectQuery query = ObjectQuery.createObjectQuery(OrFilter.createOr(roleTypeFilter, orgTypeFilter, serviceTypeFilter)); - return query; - - } - private void refreshItemsPanel() { if (provider != null) { if (provider.getAvailableData() != null){ @@ -481,116 +303,6 @@ public long getItemCount() { return 0l; } - private void initCartButton(WebMarkupContainer headerPanel){ - AjaxButton cartButton = new AjaxButton(ID_CART_BUTTON) { - @Override - public void onClick(AjaxRequestTarget ajaxRequestTarget) { - setResponsePage(new PageAssignmentsList(loadUser())); - } - }; - cartButton.add(new VisibleEnableBehaviour(){ - public boolean isVisible(){ - return !isCatalogOidEmpty(); - } - }); - cartButton.setOutputMarkupId(true); - headerPanel.add(cartButton); - - Label cartItemsCount = new Label(ID_CART_ITEMS_COUNT, new IModel() { - @Override - public String getObject() { - SessionStorage storage = pageBase.getSessionStorage(); - return Integer.toString(storage.getRoleCatalog().getAssignmentShoppingCart().size()); - } - - @Override - public void setObject(String s) { - - - } - - @Override - public void detach() { - - } - }); - cartItemsCount.add(new VisibleEnableBehaviour() { - @Override - public boolean isVisible() { - SessionStorage storage = pageBase.getSessionStorage(); - if (storage.getRoleCatalog().getAssignmentShoppingCart().size() == 0) { - return false; - } else { - return true; - } - } - }); - cartItemsCount.setOutputMarkupId(true); - cartButton.add(cartItemsCount); - } - - public void reloadCartButton(AjaxRequestTarget target) { - target.add(get(ID_HEADER_PANEL).get(ID_CART_BUTTON)); - } - - private PrismObject loadUser() { - LOGGER.debug("Loading user and accounts."); - OperationResult result = new OperationResult(OPERATION_LOAD_USER); - PrismObject user = null; - try { - String userOid = SecurityUtils.getPrincipalUser().getOid(); - Task task = pageBase.createSimpleTask(OPERATION_LOAD_USER); - user = WebModelServiceUtils.loadObject(UserType.class, userOid, null, (PageBase) getPage(), - task, result); - result.recordSuccessIfUnknown(); - - result.recordSuccessIfUnknown(); - } catch (Exception ex) { - LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load accounts", ex); - result.recordFatalError("Couldn't load accounts", ex); - } finally { - result.recomputeStatus(); - } - if (!result.isSuccess() && !result.isHandledError()) { - pageBase.showResult(result); - } - return user; - } - - private void setCurrentViewType(QName viewTypeClass){ - if (OrgType.COMPLEX_TYPE.equals(viewTypeClass)) { - AssignmentViewType.saveViewTypeToSession(pageBase, AssignmentViewType.ORG_TYPE) ; - } else if (RoleType.COMPLEX_TYPE.equals(viewTypeClass)) { - AssignmentViewType.saveViewTypeToSession(pageBase, AssignmentViewType.ROLE_TYPE) ; - } else if (ServiceType.COMPLEX_TYPE.equals(viewTypeClass)) { - AssignmentViewType.saveViewTypeToSession(pageBase, AssignmentViewType.SERVICE_TYPE) ; - } else { - AssignmentViewType.saveViewTypeToSession(pageBase, AssignmentViewType.ROLE_CATALOG_VIEW) ; - } - } - - private QName getViewTypeClass(AssignmentViewType viewType) { - if (AssignmentViewType.ORG_TYPE.equals(viewType)) { - return OrgType.COMPLEX_TYPE; - } else if (AssignmentViewType.ROLE_TYPE.equals(viewType)) { - return RoleType.COMPLEX_TYPE; - } else if (AssignmentViewType.SERVICE_TYPE.equals(viewType)) { - return ServiceType.COMPLEX_TYPE; - } - return null; - } - - public static List createAssignableTypesList() { - List focusTypeList = new ArrayList<>(); - - focusTypeList.add(AssignmentViewType.ROLE_CATALOG_VIEW); - focusTypeList.add(AssignmentViewType.ORG_TYPE); - focusTypeList.add(AssignmentViewType.ROLE_TYPE); - focusTypeList.add(AssignmentViewType.SERVICE_TYPE); - - return focusTypeList; - } - private boolean isCatalogOidEmpty(){ return AssignmentViewType.ROLE_CATALOG_VIEW.equals(AssignmentViewType.getViewTypeFromSession(pageBase)) && (catalogOidModel == null || StringUtils.isEmpty(catalogOidModel.getObject())); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java index ac77188e834..64444228224 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java @@ -225,16 +225,16 @@ private String getBackgroundClass(AssignmentEditorDtoType type){ } private void addAssignmentPerformed(AssignmentEditorDto assignment, AjaxRequestTarget target){ - plusIconClicked = true; - RoleCatalogStorage storage = getPageBase().getSessionStorage().getRoleCatalog(); - if (storage.getAssignmentShoppingCart() == null){ - storage.setAssignmentShoppingCart(new ArrayList()); - } - List assignmentsToAdd = storage.getAssignmentShoppingCart(); - assignmentsToAdd.add(assignment); - storage.setAssignmentShoppingCart(assignmentsToAdd); - CatalogItemsPanel parent = MultiButtonTable.this.findParent(CatalogItemsPanel.class); - parent.reloadCartButton(target); +// plusIconClicked = true; +// RoleCatalogStorage storage = getPageBase().getSessionStorage().getRoleCatalog(); +// if (storage.getAssignmentShoppingCart() == null){ +// storage.setAssignmentShoppingCart(new ArrayList()); +// } +// List assignmentsToAdd = storage.getAssignmentShoppingCart(); +// assignmentsToAdd.add(assignment); +// storage.setAssignmentShoppingCart(assignmentsToAdd); +// CatalogItemsPanel parent = MultiButtonTable.this.findParent(CatalogItemsPanel.class); +// parent.reloadCartButton(target); }