Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
gpalos committed Apr 4, 2019
2 parents e10b78b + c54ee1b commit 28f6013
Show file tree
Hide file tree
Showing 107 changed files with 2,111 additions and 589 deletions.
4 changes: 2 additions & 2 deletions build-system/pom.xml
Expand Up @@ -684,7 +684,7 @@
<dependency>
<groupId>com.evolveum.polygon</groupId>
<artifactId>connector-ldap</artifactId>
<version>2.0</version>
<version>2.1-SNAPSHOT</version>
</dependency>
<!-- End connectors -->
<dependency>
Expand Down Expand Up @@ -1226,7 +1226,7 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.4.11.v20180605</version>
<version>9.4.12.v20180830</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
Expand Down
Expand Up @@ -3435,4 +3435,16 @@ public static String getDisplayPolyStringValue(PolyStringType polyString, PageBa
}
return polyString.getOrig();
}

public static <T> List<T> sortDropDownChoices(IModel<? extends List<? extends T>> choicesModel, IChoiceRenderer<T> renderer){
List<T> sortedList = choicesModel.getObject().stream().sorted((choice1, choice2) -> {
Validate.notNull(choice1);
Validate.notNull(choice2);

return String.CASE_INSENSITIVE_ORDER.compare(renderer.getDisplayValue(choice1).toString(), renderer.getDisplayValue(choice2).toString());


}).collect(Collectors.toList());
return sortedList;
}
}
Expand Up @@ -55,7 +55,7 @@ protected void onInitialize() {
private void initLayout(){
DropDownFormGroup<QName> type = new DropDownFormGroup<QName>(ID_OBJECT_TYPE, Model.of(getDefaultObjectType()), Model.ofList(getSupportedObjectTypes()),
new QNameObjectTypeChoiceRenderer(), createStringResource("chooseFocusTypeAndRelationDialogPanel.type"),
"chooseFocusTypeAndRelationDialogPanel.tooltip.type", true, "col-md-4", "col-md-8", false);
"chooseFocusTypeAndRelationDialogPanel.tooltip.type", true, "col-md-4", "col-md-8", true);
type.getInput().add(new EmptyOnChangeAjaxFormUpdatingBehavior());
type.setOutputMarkupId(true);
type.add(new VisibleBehaviour(() -> isFocusTypeSelectorVisible()));
Expand Down
Expand Up @@ -17,6 +17,7 @@
package com.evolveum.midpoint.web.component.form;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
Expand Down Expand Up @@ -166,13 +167,13 @@ public Component getAdditionalInfoComponent() {

protected DropDownChoice<T> createDropDown(String id, IModel<List<T>> choices, IChoiceRenderer<T> renderer,
boolean required) {
DropDownChoice<T> choice = new DropDownChoice<T>(id, getModel(), choices, renderer){
DropDownChoice<T> choice = new DropDownChoice<T>(id, getModel(), Model.ofList(WebComponentUtil.sortDropDownChoices(choices, renderer)), renderer){

private static final long serialVersionUID = 1L;

@Override
protected String getNullValidDisplayValue() {
return getString("DropDownChoicePanel.empty");
return DropDownFormGroup.this.getNullValidDisplayValue();
}
};
choice.setNullValid(!required);
Expand All @@ -183,4 +184,8 @@ protected String getNullValidDisplayValue() {
public DropDownChoice<T> getInput() {
return (DropDownChoice<T>) get(createComponentPath(ID_PROPERTY_LABEL, ID_ROW, ID_SELECT_WRAPPER, ID_SELECT));
}

protected String getNullValidDisplayValue(){
return getString("DropDownChoicePanel.empty");
}
}
Expand Up @@ -17,12 +17,10 @@
package com.evolveum.midpoint.web.component.input;

import java.util.List;
import java.util.stream.Collectors;

import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.web.component.prism.InputPanel;

import org.apache.commons.lang.Validate;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
Expand Down Expand Up @@ -54,7 +52,7 @@ public DropDownChoicePanel(String id, IModel<T> model, IModel<? extends List<? e
super(id);

DropDownChoice<T> input = new DropDownChoice<T>(ID_INPUT, model,
Model.ofList(sortChoices(choices, renderer)), renderer) {
Model.ofList(WebComponentUtil.sortDropDownChoices(choices, renderer)), renderer) {

private static final long serialVersionUID = 1L;

Expand All @@ -76,18 +74,6 @@ protected String getNullValidDisplayValue() {
add(input);
}

private List<T> sortChoices(IModel<? extends List<? extends T>> choicesModel, IChoiceRenderer<T> renderer){
List<T> sortedList = choicesModel.getObject().stream().sorted((choice1, choice2) -> {
Validate.notNull(choice1);
Validate.notNull(choice2);

return String.CASE_INSENSITIVE_ORDER.compare(renderer.getDisplayValue(choice1).toString(), renderer.getDisplayValue(choice2).toString());


}).collect(Collectors.toList());
return sortedList;
}

@Override
public DropDownChoice<T> getBaseFormComponent() {
return (DropDownChoice) get("input");
Expand Down
Expand Up @@ -286,10 +286,7 @@ public AbstractRoleMemberPanel<R> createMemberPanel(String panelId) {

@Override
protected List<QName> getSupportedRelations() {
List<QName> relations = WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.ADMINISTRATION, getDetailsPage());
List<QName> governance = WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.GOVERNANCE, getDetailsPage());
governance.forEach(r -> relations.remove(r));
return relations;
return getSupportedMembersTabRelations();
}

};
Expand All @@ -304,16 +301,31 @@ public AbstractRoleMemberPanel<R> createGovernancePanel(String panelId) {

@Override
protected List<QName> getSupportedRelations() {
return WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.GOVERNANCE, getDetailsPage());
return getSupportedGovernanceTabRelations();
}

@Override
protected Map<String, String> getAuthorizations(QName complexType) {
return GuiAuthorizationConstants.GOVERNANCE_MEMBERS_AUTHORIZATIONS;
return getGovernanceTabAuthorizations();
}

};
}

protected List<QName> getSupportedMembersTabRelations(){
List<QName> relations = WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.ADMINISTRATION, getDetailsPage());
List<QName> governance = WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.GOVERNANCE, getDetailsPage());
governance.forEach(r -> relations.remove(r));
return relations;
}

protected List<QName> getSupportedGovernanceTabRelations(){
return WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.GOVERNANCE, getDetailsPage());
}

protected Map<String, String> getGovernanceTabAuthorizations(){
return GuiAuthorizationConstants.GOVERNANCE_MEMBERS_AUTHORIZATIONS;
}

private boolean isAllowedToReadRoleMembership(String abstractRoleOid, PageBase parentPage){
return isAllowedToReadRoleMembershipItemForType(abstractRoleOid, UserType.class, parentPage)
Expand Down
Expand Up @@ -89,6 +89,7 @@
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.security.GuiAuthorizationConstants;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
import org.apache.wicket.model.ResourceModel;

public abstract class AbstractRoleMemberPanel<R extends AbstractRoleType> extends BasePanel<R> {

Expand Down Expand Up @@ -567,7 +568,7 @@ protected void createFocusMemberPerformed(AjaxRequestTarget target) {

@Override
protected List<QName> getSupportedObjectTypes() {
return AbstractRoleMemberPanel.this.getSupportedObjectTypes(false);
return AbstractRoleMemberPanel.this.getNewMemberObjectTypes();
}

@Override
Expand All @@ -576,6 +577,12 @@ protected List<QName> getSupportedRelations() {
}

protected void okPerformed(QName type, Collection<QName> relations, AjaxRequestTarget target) {
if (type == null){
getSession().warn("No type was selected. Cannot create member");
target.add(this);
target.add(getPageBase().getFeedbackPanel());
return;
}
if (relations == null || relations.isEmpty()) {
getSession().warn("No relation was selected. Cannot create member");
target.add(this);
Expand Down Expand Up @@ -641,14 +648,36 @@ protected void initSearch(Form<?> form) {
Model.of(getMemberPanelStorage() != null ? getMemberPanelStorage().getOrgSearchScope() : scopeDefaultValue),
scopeValues,
WebComponentUtil.getEnumChoiceRenderer(AbstractRoleMemberPanel.this),
"abstractRoleMemberPanel.searchScope", "abstractRoleMemberPanel.searchScope.tooltip");
"abstractRoleMemberPanel.searchScope", "abstractRoleMemberPanel.searchScope.tooltip", true);
searchScrope.add(new VisibleBehaviour(() -> getModelObject() instanceof OrgType));
form.add(searchScrope);


List<QName> supportedTypes = getSupportedObjectTypes(false);
DropDownFormGroup<QName> typeSelect = createDropDown(ID_OBJECT_TYPE,
Model.of(getMemberPanelStorage() != null ? getMemberPanelStorage().getType().getTypeQName() : WebComponentUtil.classToQName(getPrismContext(), getDefaultObjectType())),
getSupportedObjectTypes(true), new QNameObjectTypeChoiceRenderer(),
"abstractRoleMemberPanel.type", "abstractRoleMemberPanel.type.tooltip");
supportedTypes, new QNameObjectTypeChoiceRenderer(){
private static final long serialVersionUID = 1L;

@Override
public Object getDisplayValue(QName qname) {
if (qname == null || AssignmentHolderType.COMPLEX_TYPE.equals(qname)){
return StringUtils.leftPad(createStringResource("ObjectTypes.all").getString(), 1);
} else {
return super.getDisplayValue(qname);
}
}

@Override
public QName getObject(String id, IModel<? extends List<? extends QName>> choices) {
QName qname = super.getObject(id, choices);
if (qname == null){
return AssignmentHolderType.COMPLEX_TYPE;
}
return qname;
}

},
"abstractRoleMemberPanel.type", "abstractRoleMemberPanel.type.tooltip", false);
form.add(typeSelect);

RelationDropDownChoicePanel relationSelector = new RelationDropDownChoicePanel(ID_SEARCH_BY_RELATION,
Expand Down Expand Up @@ -695,6 +724,10 @@ protected List<QName> getSupportedObjectTypes(boolean includeAbstractTypes) {
return WebComponentUtil.createFocusTypeList(includeAbstractTypes);
}

protected List<QName> getNewMemberObjectTypes() {
return WebComponentUtil.createFocusTypeList();
}

private ChooseTypePanel<OrgType> createParameterPanel(String id, boolean isTenant) {

ChooseTypePanel<OrgType> orgSelector = new ChooseTypePanel<OrgType>(id, Model.of(new ObjectViewDto())) {
Expand Down Expand Up @@ -744,9 +777,16 @@ protected AttributeAppender getInputStyleClass(){
}

private <V> DropDownFormGroup<V> createDropDown(String id, IModel<V> defaultModel, final List<V> values,
IChoiceRenderer<V> renderer, String labelKey, String tooltipKey) {
IChoiceRenderer<V> renderer, String labelKey, String tooltipKey, boolean required) {
DropDownFormGroup<V> listSelect = new DropDownFormGroup<V>(id, defaultModel, Model.ofList(values), renderer, createStringResource(labelKey),
tooltipKey, false, "col-md-4", "col-md-8", true);
tooltipKey, false, "col-md-4", "col-md-8", required){
private static final long serialVersionUID = 1L;

@Override
protected String getNullValidDisplayValue(){
return getString("ObjectTypes.all");
}
};

listSelect.getInput().add(new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 1L;
Expand Down
Expand Up @@ -16,6 +16,7 @@
package com.evolveum.midpoint.web.page.admin.users;

import java.util.List;
import java.util.Map;

import javax.xml.namespace.QName;

Expand Down Expand Up @@ -116,6 +117,42 @@ protected void viewObjectHistoricalDataPerformed(AjaxRequestTarget target, Prism
PageOrgUnit.this.navigateToNext(new PageOrgUnitHistory(object, date));
}

@Override
public OrgMemberPanel createMemberPanel(String panelId) {

return new OrgMemberPanel(panelId, new Model<>(getObject().asObjectable())) {

private static final long serialVersionUID = 1L;

@Override
protected List<QName> getSupportedRelations() {
return getSupportedMembersTabRelations();
}

};
}

@Override
public OrgMemberPanel createGovernancePanel(String panelId) {

return new OrgMemberPanel(panelId, new Model<>(getObject().asObjectable())) {

private static final long serialVersionUID = 1L;

@Override
protected List<QName> getSupportedRelations() {
return getSupportedGovernanceTabRelations();
}

@Override
protected Map<String, String> getAuthorizations(QName complexType) {
return getGovernanceTabAuthorizations();
}

};
}


};
}

Expand Down
Expand Up @@ -112,9 +112,19 @@ protected void assignMembers(AjaxRequestTarget target, List<QName> availableRela

@Override
protected List<QName> getSupportedObjectTypes(boolean includeAbstractTypes) {
List<QName> objectTypes = WebComponentUtil.createAssignmentHolderTypeQnamesList();
objectTypes.remove(ShadowType.COMPLEX_TYPE);
objectTypes.remove(ObjectType.COMPLEX_TYPE);
List<QName> objectTypes = WebComponentUtil.createAssignmentHolderTypeQnamesList();
objectTypes.remove(ShadowType.COMPLEX_TYPE);
objectTypes.remove(ObjectType.COMPLEX_TYPE);
if (!includeAbstractTypes){
objectTypes.remove(AssignmentHolderType.COMPLEX_TYPE);
}
return objectTypes;
}

@Override
protected List<QName> getNewMemberObjectTypes() {
List<QName> objectTypes = WebComponentUtil.createFocusTypeList();
objectTypes.add(ResourceType.COMPLEX_TYPE);
return objectTypes;
}

Expand Down
Expand Up @@ -200,7 +200,7 @@ protected void onEvent(final AjaxRequestTarget target) {
} else if (passwordAccountDto.getCssClass().equals(DESELECTED_ACCOUNT_ICON_CSS)) {
passwordAccountDto.setCssClass(SELECTED_ACCOUNT_ICON_CSS);
}
target.add(imagePanel);
target.add(imagePanel.findParent(SelectableDataTable.class));
} else {
midpointAccountSelected = !midpointAccountSelected;
if (passwordAccountDto.getCssClass().equals(SELECTED_ACCOUNT_ICON_CSS)) {
Expand Down
Expand Up @@ -3503,6 +3503,8 @@ chooseMemberForOrgPopup.otherTypesLabel=Ostatní
AssignmentPanel.newAssignmentParameters=Parametry
AssignmentPanel.allLabel=Vše
AssignmentPanel.viewTargetObject=Zobrazit cílový objekt
AssignmentPanel.newAssignmentTitle=Nové přiřazení
AssignmentPanel.newInducementTitle=Nová indukce
SearchPanel.more=Více...
SearchPanel.add=Vložit
SearchPanel.close=Zavřít
Expand Down
Expand Up @@ -3503,6 +3503,8 @@ chooseMemberForOrgPopup.otherTypesLabel=Others
AssignmentPanel.newAssignmentParameters=Parameter
AssignmentPanel.allLabel=alle
AssignmentPanel.viewTargetObject=View target object
AssignmentPanel.newAssignmentTitle=New assignment
AssignmentPanel.newInducementTitle=New inducement
SearchPanel.more=mehr...
SearchPanel.add=hinzufügen
SearchPanel.close=schließen
Expand Down
Expand Up @@ -3503,6 +3503,8 @@ chooseMemberForOrgPopup.otherTypesLabel=Others
AssignmentPanel.newAssignmentParameters=Parameters
AssignmentPanel.allLabel=All
AssignmentPanel.viewTargetObject=View target object
AssignmentPanel.newAssignmentTitle=New 'assignment' constraint
AssignmentPanel.newInducementTitle=New inducement
SearchPanel.more=More...
SearchPanel.add=Add
SearchPanel.close=Close
Expand Down
Expand Up @@ -3503,6 +3503,8 @@ chooseMemberForOrgPopup.otherTypesLabel=Others
AssignmentPanel.newAssignmentParameters=Parametros
AssignmentPanel.allLabel=Todo
AssignmentPanel.viewTargetObject=View target object
AssignmentPanel.newAssignmentTitle=New assignment
AssignmentPanel.newInducementTitle=New inducement
SearchPanel.more=Más...
SearchPanel.add=Agregar
SearchPanel.close=Cerrar
Expand Down
Expand Up @@ -3503,6 +3503,8 @@ chooseMemberForOrgPopup.otherTypesLabel=Others
AssignmentPanel.newAssignmentParameters=Parameetrid
AssignmentPanel.allLabel=Kõik
AssignmentPanel.viewTargetObject=View target object
AssignmentPanel.newAssignmentTitle=New assignment
AssignmentPanel.newInducementTitle=New inducement
SearchPanel.more=Rohkem...
SearchPanel.add=Lisa
SearchPanel.close=Sulge
Expand Down

0 comments on commit 28f6013

Please sign in to comment.